+21
README.md
+21
README.md
···
134
134
135
135
The server will serve the Patchbay Lite UI and expose the necessary endpoints for the client. You can now browse and publish messages from your browser.
136
136
137
+
## Decent Bundle
138
+
139
+
The Decent bundle is served on its own port so it does not conflict with `ssb-ws` (default 8989). Start your sbot (`npm start`) and visit:
140
+
141
+
- **http://127.0.0.1:8888/**
142
+
143
+
The view is served by `plugins/decent-ui.js` and is backed by the assets in `decent/`. You can override the host/port in `~/.ssb/config`:
144
+
145
+
```json
146
+
{
147
+
"decent": {
148
+
"host": "127.0.0.1",
149
+
"port": 8888
150
+
}
151
+
}
152
+
```
153
+
154
+
Picking another `port` keeps the Decent bundle running alongside Patchbay or other services.
155
+
137
156
## Phoenix Feed View
157
+
158
+
Warning: the Phoenix client is not fully implemented and does not work.
138
159
139
160
If you want a static recreation of the classic Phoenix feed layout, the server now hosts that interface on its own port so it never collides with `ssb-ws` (default 8989) or the helper endpoints. Start your sbot (`npm start`) and visit:
140
161
+1
-2
bin.js
+1
-2
bin.js
···
166
166
.use(require('./plugins/friends'))
167
167
.use(require('ssb-blobs'))
168
168
.use(require('./plugins/invite'))
169
-
.use(require('./plugins/rest-bridge'))
170
-
.use(require('./plugins/phoenix-ui'))
169
+
.use(require('./plugins/decent-ui'))
171
170
.use(require('ssb-local'))
172
171
.use(require('ssb-logging'))
173
172
.use(require('ssb-query'))
+6
decent/.gitignore
+6
decent/.gitignore
+22
decent/LICENSE
+22
decent/LICENSE
···
1
+
Copyright (c) 2016 Dominic Tarr
2
+
3
+
Permission is hereby granted, free of charge,
4
+
to any person obtaining a copy of this software and
5
+
associated documentation files (the "Software"), to
6
+
deal in the Software without restriction, including
7
+
without limitation the rights to use, copy, modify,
8
+
merge, publish, distribute, sublicense, and/or sell
9
+
copies of the Software, and to permit persons to whom
10
+
the Software is furnished to do so,
11
+
subject to the following conditions:
12
+
13
+
The above copyright notice and this permission notice
14
+
shall be included in all copies or substantial portions of the Software.
15
+
16
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
20
+
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+96
decent/README.md
+96
decent/README.md
···
1
+
# patchbay
2
+
3
+
Prototype of a pluggable patchwork.
4
+
5
+
`patchbay` is an secure-scuttlebutt client interface
6
+
that is fully compatible with [patchwork](https://github.com/ssbc/patchwork)
7
+
8
+
I started `patchbay` to experiment with a different internal architecture
9
+
based on [depject](https://github.com/dominictarr/depject). The goal was
10
+
to make it easier to develop new features, and enable or disable features.
11
+
This has so far been quite successful!
12
+
13
+
This makes in very easy to create say, a renderer for a new message type,
14
+
or switch to a different method for choosing user names.
15
+
16
+
## Installing dependencies without native builds
17
+
18
+
In this repo, Patchbay is used only as a browser bundle (Patchbay Lite), so you can install its dependencies without compiling native modules by using:
19
+
20
+
```
21
+
npm install --ignore-scripts
22
+
```
23
+
24
+
This is enough to run `npm run lite` and regenerate `build/index.html` without requiring a full native toolchain.
25
+
26
+
## Running
27
+
28
+
```
29
+
npm install scuttlebot@latest -g
30
+
# make sure you have secure-scuttlebutt@15.2.0
31
+
npm ls secure-scuttlebutt -g
32
+
sbot server
33
+
# if you are already running patchwork, that also works.
34
+
# (must have at least >= 2.8)
35
+
36
+
# then in another tab (these must be 3 separate commands)
37
+
sbot plugins.install ssb-links
38
+
sbot plugins.install ssb-query
39
+
sbot plugins.install ssb-ws
40
+
# restart sbot server (go back to previous tab and kill it)
41
+
```
42
+
now clone and run patchbay.
43
+
```
44
+
git clone https://github.com/dominictarr/patchbay.git
45
+
cd patchbay
46
+
npm install
47
+
npm run rebuild
48
+
npm run bundle
49
+
npm start
50
+
```
51
+
52
+
## Lite
53
+
54
+
To run a lite client in the browser instead of using electron, use npm
55
+
run lite from the prompt instead of run bundle. After that you need to
56
+
generate a modern invite:
57
+
58
+
```
59
+
sbot invite.create --modern
60
+
```
61
+
62
+
Also set up sbot to allow these connections with:
63
+
64
+
```
65
+
sbot server --allowPrivate
66
+
```
67
+
68
+
Lastly open build/index.html in a browser and append the invite
69
+
created above using: index.html#ws://localhost:8989....
70
+
71
+
## how to add a feature
72
+
73
+
To add a new message type, add add a js to `./modules/` that
74
+
exports a function named `message_content` (it should return an html element)
75
+
To add a new tab, export a function named `screen_view` (returns an html element)
76
+
77
+
To add a new detail, that appears above a message,
78
+
export a function named `message_meta`.
79
+
80
+
see the code for more examples.
81
+
82
+
## module graph
83
+
84
+
patchbay uses [depject](http://github.com/dominictarr/depject) to manage it's modules.
85
+
here is a graph of the current connections between them. (round shows module,
86
+
square shows api, arrow direction points from user to provider)
87
+
88
+
[module graph](./graph.svg)
89
+
90
+
## License
91
+
92
+
MIT
93
+
94
+
95
+
96
+
+6
decent/basic.js
+6
decent/basic.js
+66
decent/config.js
+66
decent/config.js
···
1
+
2
+
var URL = require('url')
3
+
4
+
function loadRemote () {
5
+
var remote = null
6
+
7
+
if (typeof window !== 'undefined' && window.PATCHBAY_REMOTE) {
8
+
remote = window.PATCHBAY_REMOTE
9
+
}
10
+
11
+
return remote
12
+
}
13
+
14
+
function rewriteRemoteForLocation (remote) {
15
+
if (!remote || typeof window === 'undefined' || !window.location) return remote
16
+
17
+
try {
18
+
var shsIndex = remote.indexOf('~shs:')
19
+
if (shsIndex === -1) return remote
20
+
21
+
var base = remote.substring(0, shsIndex)
22
+
var parsed = URL.parse(base)
23
+
var key = remote.substring(shsIndex + 5)
24
+
var loc = window.location
25
+
26
+
var proto = loc.protocol === 'https:' ? 'wss' : 'ws'
27
+
var hostname = loc.hostname || loc.host
28
+
if (hostname && hostname.indexOf(':') !== -1 && hostname[0] !== '[')
29
+
hostname = '[' + hostname + ']'
30
+
var port = parsed && parsed.port ? parsed.port : loc.port
31
+
var host = hostname + (port ? ':' + port : '')
32
+
33
+
return proto + '://' + host + '~shs:' + key
34
+
} catch (e) {
35
+
return remote
36
+
}
37
+
}
38
+
39
+
module.exports = function () {
40
+
var remote = loadRemote()
41
+
42
+
// In the browser, rewrite localhost remotes to match the page host,
43
+
// while preserving the pubkey and port from the original remote.
44
+
remote = rewriteRemoteForLocation(remote)
45
+
46
+
//TODO: use _several_ remotes, so if one goes down,
47
+
// you can still communicate via another...
48
+
// also, if a blob does not load, use another pub...
49
+
50
+
//if we are the light client, get our blobs from the same domain.
51
+
var blobsUrl
52
+
if (remote) {
53
+
var r = URL.parse(remote.split('~')[0])
54
+
//this will work for ws and wss.
55
+
r.protocol = r.protocol.replace('ws', 'http')
56
+
r.pathname = '/blobs/get'
57
+
blobsUrl = URL.format(r)
58
+
}
59
+
else
60
+
blobsUrl = 'http://localhost:8989/blobs/get'
61
+
62
+
return {
63
+
remote: remote,
64
+
blobsUrl: blobsUrl
65
+
}
66
+
}
+19
decent/electron-shim.js
+19
decent/electron-shim.js
···
1
+
function Menu () {}
2
+
3
+
Menu.prototype.append = function () {}
4
+
Menu.prototype.popup = function () {}
5
+
6
+
function MenuItem () {}
7
+
8
+
module.exports = {
9
+
remote: {
10
+
Menu: Menu,
11
+
MenuItem: MenuItem,
12
+
getCurrentWindow: function () {
13
+
return {
14
+
inspectElement: function () {}
15
+
}
16
+
}
17
+
}
18
+
}
19
+
+9
decent/embedded.js
+9
decent/embedded.js
+853
decent/graph.svg
+853
decent/graph.svg
···
1
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
5
+
-->
6
+
<!-- Title: depject Pages: 1 -->
7
+
<svg width="1551pt" height="1340pt"
8
+
viewBox="0.00 0.00 1551.12 1340.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1336)">
10
+
<title>depject</title>
11
+
<polygon fill="white" stroke="none" points="-4,4 -4,-1336 1547.12,-1336 1547.12,4 -4,4"/>
12
+
<!-- about_JS -->
13
+
<g id="node1" class="node"><title>about_JS</title>
14
+
<ellipse fill="none" stroke="black" cx="840.118" cy="-450" rx="38.1938" ry="18"/>
15
+
<text text-anchor="middle" x="840.118" y="-446.3" font-family="Times,serif" font-size="14.00">about.js</text>
16
+
</g>
17
+
<!-- avatar_image_JS -->
18
+
<g id="node2" class="node"><title>avatar_image_JS</title>
19
+
<ellipse fill="none" stroke="black" cx="934.118" cy="-162" rx="65.7887" ry="18"/>
20
+
<text text-anchor="middle" x="934.118" y="-158.3" font-family="Times,serif" font-size="14.00">avatar-image.js</text>
21
+
</g>
22
+
<!-- sbot_whoami -->
23
+
<g id="node32" class="node"><title>sbot_whoami</title>
24
+
<polygon fill="none" stroke="black" points="1126.62,-108 1035.62,-108 1035.62,-72 1126.62,-72 1126.62,-108"/>
25
+
<text text-anchor="middle" x="1081.12" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_whoami</text>
26
+
</g>
27
+
<!-- avatar_image_JS->sbot_whoami -->
28
+
<g id="edge1" class="edge"><title>avatar_image_JS->sbot_whoami</title>
29
+
<path fill="none" stroke="black" d="M965.292,-146.155C985.885,-136.349 1013.2,-123.341 1036.13,-112.421"/>
30
+
<polygon fill="black" stroke="black" points="1037.81,-115.499 1045.33,-108.04 1034.8,-109.179 1037.81,-115.499"/>
31
+
</g>
32
+
<!-- sbot_links -->
33
+
<g id="node33" class="node"><title>sbot_links</title>
34
+
<polygon fill="none" stroke="black" points="707.118,-108 633.118,-108 633.118,-72 707.118,-72 707.118,-108"/>
35
+
<text text-anchor="middle" x="670.118" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_links</text>
36
+
</g>
37
+
<!-- avatar_image_JS->sbot_links -->
38
+
<g id="edge3" class="edge"><title>avatar_image_JS->sbot_links</title>
39
+
<path fill="none" stroke="black" d="M888.734,-148.967C840.837,-136.267 765.699,-116.344 717.178,-103.478"/>
40
+
<polygon fill="black" stroke="black" points="717.81,-100.025 707.247,-100.845 716.016,-106.791 717.81,-100.025"/>
41
+
</g>
42
+
<!-- avatar_profile_JS -->
43
+
<g id="node3" class="node"><title>avatar_profile_JS</title>
44
+
<ellipse fill="none" stroke="black" cx="1170.12" cy="-594" rx="67.6881" ry="18"/>
45
+
<text text-anchor="middle" x="1170.12" y="-590.3" font-family="Times,serif" font-size="14.00">avatar-profile.js</text>
46
+
</g>
47
+
<!-- avatar_image -->
48
+
<g id="node34" class="node"><title>avatar_image</title>
49
+
<polygon fill="none" stroke="black" points="994.618,-252 903.618,-252 903.618,-216 994.618,-216 994.618,-252"/>
50
+
<text text-anchor="middle" x="949.118" y="-230.3" font-family="Times,serif" font-size="14.00">avatar_image</text>
51
+
</g>
52
+
<!-- avatar_profile_JS->avatar_image -->
53
+
<g id="edge5" class="edge"><title>avatar_profile_JS->avatar_image</title>
54
+
<path fill="none" stroke="black" d="M1150.33,-576.625C1139.16,-566.75 1125.41,-553.5 1115.12,-540 1043.39,-445.882 984.069,-316.788 960.294,-261.682"/>
55
+
<polygon fill="black" stroke="black" points="963.423,-260.098 956.273,-252.279 956.986,-262.85 963.423,-260.098"/>
56
+
</g>
57
+
<!-- avatar_action -->
58
+
<g id="node35" class="node"><title>avatar_action</title>
59
+
<polygon fill="none" stroke="black" points="1216.12,-540 1124.12,-540 1124.12,-504 1216.12,-504 1216.12,-540"/>
60
+
<text text-anchor="middle" x="1170.12" y="-518.3" font-family="Times,serif" font-size="14.00">avatar_action</text>
61
+
</g>
62
+
<!-- avatar_profile_JS->avatar_action -->
63
+
<g id="edge7" class="edge"><title>avatar_profile_JS->avatar_action</title>
64
+
<path fill="none" stroke="black" d="M1170.12,-575.697C1170.12,-567.983 1170.12,-558.712 1170.12,-550.112"/>
65
+
<polygon fill="black" stroke="black" points="1173.62,-550.104 1170.12,-540.104 1166.62,-550.104 1173.62,-550.104"/>
66
+
</g>
67
+
<!-- avatar_JS -->
68
+
<g id="node4" class="node"><title>avatar_JS</title>
69
+
<ellipse fill="none" stroke="black" cx="1061.12" cy="-306" rx="40.8928" ry="18"/>
70
+
<text text-anchor="middle" x="1061.12" y="-302.3" font-family="Times,serif" font-size="14.00">avatar.js</text>
71
+
</g>
72
+
<!-- avatar_JS->avatar_image -->
73
+
<g id="edge11" class="edge"><title>avatar_JS->avatar_image</title>
74
+
<path fill="none" stroke="black" d="M1038.45,-290.834C1023.21,-281.309 1002.79,-268.546 985.322,-257.628"/>
75
+
<polygon fill="black" stroke="black" points="986.833,-254.445 976.498,-252.113 983.123,-260.381 986.833,-254.445"/>
76
+
</g>
77
+
<!-- avatar_name -->
78
+
<g id="node36" class="node"><title>avatar_name</title>
79
+
<polygon fill="none" stroke="black" points="1101.62,-252 1012.62,-252 1012.62,-216 1101.62,-216 1101.62,-252"/>
80
+
<text text-anchor="middle" x="1057.12" y="-230.3" font-family="Times,serif" font-size="14.00">avatar_name</text>
81
+
</g>
82
+
<!-- avatar_JS->avatar_name -->
83
+
<g id="edge9" class="edge"><title>avatar_JS->avatar_name</title>
84
+
<path fill="none" stroke="black" d="M1060.13,-287.697C1059.69,-279.983 1059.16,-270.712 1058.67,-262.112"/>
85
+
<polygon fill="black" stroke="black" points="1062.16,-261.888 1058.09,-252.104 1055.17,-262.288 1062.16,-261.888"/>
86
+
</g>
87
+
<!-- channel_JS -->
88
+
<g id="node5" class="node"><title>channel_JS</title>
89
+
<ellipse fill="none" stroke="black" cx="1062.12" cy="-738" rx="47.3916" ry="18"/>
90
+
<text text-anchor="middle" x="1062.12" y="-734.3" font-family="Times,serif" font-size="14.00">channel.js</text>
91
+
</g>
92
+
<!-- message_render -->
93
+
<g id="node37" class="node"><title>message_render</title>
94
+
<polygon fill="none" stroke="black" points="1033.12,-972 927.118,-972 927.118,-936 1033.12,-936 1033.12,-972"/>
95
+
<text text-anchor="middle" x="980.118" y="-950.3" font-family="Times,serif" font-size="14.00">message_render</text>
96
+
</g>
97
+
<!-- channel_JS->message_render -->
98
+
<g id="edge12" class="edge"><title>channel_JS->message_render</title>
99
+
<path fill="none" stroke="black" d="M1055.63,-755.935C1041.42,-793.003 1007.49,-881.57 990.367,-926.252"/>
100
+
<polygon fill="black" stroke="black" points="986.999,-925.259 986.689,-935.849 993.536,-927.764 986.999,-925.259"/>
101
+
</g>
102
+
<!-- message_compose -->
103
+
<g id="node38" class="node"><title>message_compose</title>
104
+
<polygon fill="none" stroke="black" points="672.118,-684 554.118,-684 554.118,-648 672.118,-648 672.118,-684"/>
105
+
<text text-anchor="middle" x="613.118" y="-662.3" font-family="Times,serif" font-size="14.00">message_compose</text>
106
+
</g>
107
+
<!-- channel_JS->message_compose -->
108
+
<g id="edge14" class="edge"><title>channel_JS->message_compose</title>
109
+
<path fill="none" stroke="black" d="M1019.07,-730.288C941.131,-718.138 776.062,-692.403 682.19,-677.769"/>
110
+
<polygon fill="black" stroke="black" points="682.64,-674.297 672.22,-676.214 681.562,-681.213 682.64,-674.297"/>
111
+
</g>
112
+
<!-- sbot_log -->
113
+
<g id="node39" class="node"><title>sbot_log</title>
114
+
<polygon fill="none" stroke="black" points="1090.62,-684 1027.62,-684 1027.62,-648 1090.62,-648 1090.62,-684"/>
115
+
<text text-anchor="middle" x="1059.12" y="-662.3" font-family="Times,serif" font-size="14.00">sbot_log</text>
116
+
</g>
117
+
<!-- channel_JS->sbot_log -->
118
+
<g id="edge16" class="edge"><title>channel_JS->sbot_log</title>
119
+
<path fill="none" stroke="black" d="M1061.38,-719.697C1061.05,-711.983 1060.65,-702.712 1060.28,-694.112"/>
120
+
<polygon fill="black" stroke="black" points="1063.78,-693.945 1059.85,-684.104 1056.78,-694.245 1063.78,-693.945"/>
121
+
</g>
122
+
<!-- sbot_query -->
123
+
<g id="node40" class="node"><title>sbot_query</title>
124
+
<polygon fill="none" stroke="black" points="1433.62,-684 1356.62,-684 1356.62,-648 1433.62,-648 1433.62,-684"/>
125
+
<text text-anchor="middle" x="1395.12" y="-662.3" font-family="Times,serif" font-size="14.00">sbot_query</text>
126
+
</g>
127
+
<!-- channel_JS->sbot_query -->
128
+
<g id="edge18" class="edge"><title>channel_JS->sbot_query</title>
129
+
<path fill="none" stroke="black" d="M1102.62,-728.487C1163.99,-715.586 1280.35,-691.125 1346.31,-677.26"/>
130
+
<polygon fill="black" stroke="black" points="1347.38,-680.612 1356.44,-675.13 1345.94,-673.762 1347.38,-680.612"/>
131
+
</g>
132
+
<!-- compose_JS -->
133
+
<g id="node6" class="node"><title>compose_JS</title>
134
+
<ellipse fill="none" stroke="black" cx="622.118" cy="-594" rx="50.0912" ry="18"/>
135
+
<text text-anchor="middle" x="622.118" y="-590.3" font-family="Times,serif" font-size="14.00">compose.js</text>
136
+
</g>
137
+
<!-- sbot_publish -->
138
+
<g id="node41" class="node"><title>sbot_publish</title>
139
+
<polygon fill="none" stroke="black" points="845.618,-252 758.618,-252 758.618,-216 845.618,-216 845.618,-252"/>
140
+
<text text-anchor="middle" x="802.118" y="-230.3" font-family="Times,serif" font-size="14.00">sbot_publish</text>
141
+
</g>
142
+
<!-- compose_JS->sbot_publish -->
143
+
<g id="edge20" class="edge"><title>compose_JS->sbot_publish</title>
144
+
<path fill="none" stroke="black" d="M622.575,-575.906C624.438,-518.421 633.168,-333.168 669.118,-288 688.487,-263.664 720.698,-250.456 748.569,-243.311"/>
145
+
<polygon fill="black" stroke="black" points="749.679,-246.646 758.609,-240.944 748.072,-239.833 749.679,-246.646"/>
146
+
</g>
147
+
<!-- message_content -->
148
+
<g id="node42" class="node"><title>message_content</title>
149
+
<polygon fill="none" stroke="black" points="804.118,-540 692.118,-540 692.118,-504 804.118,-504 804.118,-540"/>
150
+
<text text-anchor="middle" x="748.118" y="-518.3" font-family="Times,serif" font-size="14.00">message_content</text>
151
+
</g>
152
+
<!-- compose_JS->message_content -->
153
+
<g id="edge22" class="edge"><title>compose_JS->message_content</title>
154
+
<path fill="none" stroke="black" d="M648.225,-578.496C665.602,-568.842 688.762,-555.975 708.406,-545.062"/>
155
+
<polygon fill="black" stroke="black" points="710.109,-548.12 717.151,-540.204 706.709,-542.001 710.109,-548.12"/>
156
+
</g>
157
+
<!-- message_confirm -->
158
+
<g id="node43" class="node"><title>message_confirm</title>
159
+
<polygon fill="none" stroke="black" points="784.118,-396 670.118,-396 670.118,-360 784.118,-360 784.118,-396"/>
160
+
<text text-anchor="middle" x="727.118" y="-374.3" font-family="Times,serif" font-size="14.00">message_confirm</text>
161
+
</g>
162
+
<!-- compose_JS->message_confirm -->
163
+
<g id="edge27" class="edge"><title>compose_JS->message_confirm</title>
164
+
<path fill="none" stroke="black" d="M630.357,-576.208C648.598,-539.03 692.503,-449.548 714.34,-405.042"/>
165
+
<polygon fill="black" stroke="black" points="717.509,-406.53 718.771,-396.01 711.224,-403.446 717.509,-406.53"/>
166
+
</g>
167
+
<!-- file_input -->
168
+
<g id="node44" class="node"><title>file_input</title>
169
+
<polygon fill="none" stroke="black" points="597.618,-540 526.618,-540 526.618,-504 597.618,-504 597.618,-540"/>
170
+
<text text-anchor="middle" x="562.118" y="-518.3" font-family="Times,serif" font-size="14.00">file_input</text>
171
+
</g>
172
+
<!-- compose_JS->file_input -->
173
+
<g id="edge29" class="edge"><title>compose_JS->file_input</title>
174
+
<path fill="none" stroke="black" d="M607.898,-576.411C600.643,-567.946 591.665,-557.472 583.588,-548.049"/>
175
+
<polygon fill="black" stroke="black" points="586.237,-545.762 577.072,-540.447 580.922,-550.317 586.237,-545.762"/>
176
+
</g>
177
+
<!-- suggest -->
178
+
<g id="node45" class="node"><title>suggest</title>
179
+
<polygon fill="none" stroke="black" points="878.118,-540 822.118,-540 822.118,-504 878.118,-504 878.118,-540"/>
180
+
<text text-anchor="middle" x="850.118" y="-518.3" font-family="Times,serif" font-size="14.00">suggest</text>
181
+
</g>
182
+
<!-- compose_JS->suggest -->
183
+
<g id="edge31" class="edge"><title>compose_JS->suggest</title>
184
+
<path fill="none" stroke="black" d="M663.327,-583.589C700.359,-574.685 756.257,-560.139 812.617,-539.901"/>
185
+
<polygon fill="black" stroke="black" points="813.835,-543.182 822.031,-536.468 811.437,-536.605 813.835,-543.182"/>
186
+
</g>
187
+
<!-- crypto_JS -->
188
+
<g id="node7" class="node"><title>crypto_JS</title>
189
+
<ellipse fill="none" stroke="black" cx="852.118" cy="-594" rx="41.6928" ry="18"/>
190
+
<text text-anchor="middle" x="852.118" y="-590.3" font-family="Times,serif" font-size="14.00">crypto.js</text>
191
+
</g>
192
+
<!-- crypto_JS->sbot_publish -->
193
+
<g id="edge33" class="edge"><title>crypto_JS->sbot_publish</title>
194
+
<path fill="none" stroke="black" d="M866.572,-576.638C874.307,-566.767 883.057,-553.517 887.118,-540 900.927,-494.029 893.293,-479.601 887.118,-432 878.602,-366.359 880.37,-346.348 849.118,-288 843.605,-277.708 835.717,-267.76 827.974,-259.317"/>
195
+
<polygon fill="black" stroke="black" points="830.423,-256.815 820.976,-252.02 825.371,-261.66 830.423,-256.815"/>
196
+
</g>
197
+
<!-- feed_JS -->
198
+
<g id="node8" class="node"><title>feed_JS</title>
199
+
<ellipse fill="none" stroke="black" cx="1355.12" cy="-1026" rx="33.5952" ry="18"/>
200
+
<text text-anchor="middle" x="1355.12" y="-1022.3" font-family="Times,serif" font-size="14.00">feed.js</text>
201
+
</g>
202
+
<!-- feed_JS->message_render -->
203
+
<g id="edge36" class="edge"><title>feed_JS->message_render</title>
204
+
<path fill="none" stroke="black" d="M1323.79,-1019.15C1262.26,-1007.67 1124.56,-981.962 1043.37,-966.808"/>
205
+
<polygon fill="black" stroke="black" points="1043.75,-963.317 1033.28,-964.923 1042.46,-970.199 1043.75,-963.317"/>
206
+
</g>
207
+
<!-- sbot_user_feed -->
208
+
<g id="node46" class="node"><title>sbot_user_feed</title>
209
+
<polygon fill="none" stroke="black" points="1439.12,-972 1339.12,-972 1339.12,-936 1439.12,-936 1439.12,-972"/>
210
+
<text text-anchor="middle" x="1389.12" y="-950.3" font-family="Times,serif" font-size="14.00">sbot_user_feed</text>
211
+
</g>
212
+
<!-- feed_JS->sbot_user_feed -->
213
+
<g id="edge34" class="edge"><title>feed_JS->sbot_user_feed</title>
214
+
<path fill="none" stroke="black" d="M1363.18,-1008.41C1367.08,-1000.37 1371.87,-990.515 1376.26,-981.47"/>
215
+
<polygon fill="black" stroke="black" points="1379.42,-982.971 1380.64,-972.447 1373.13,-979.913 1379.42,-982.971"/>
216
+
</g>
217
+
<!-- avatar_profile -->
218
+
<g id="node47" class="node"><title>avatar_profile</title>
219
+
<polygon fill="none" stroke="black" points="1425.62,-900 1330.62,-900 1330.62,-864 1425.62,-864 1425.62,-900"/>
220
+
<text text-anchor="middle" x="1378.12" y="-878.3" font-family="Times,serif" font-size="14.00">avatar_profile</text>
221
+
</g>
222
+
<!-- feed_JS->avatar_profile -->
223
+
<g id="edge37" class="edge"><title>feed_JS->avatar_profile</title>
224
+
<path fill="none" stroke="black" d="M1384.77,-1016.89C1406.54,-1009.21 1434.58,-995.298 1448.12,-972 1456.16,-958.166 1455.24,-950.327 1448.12,-936 1442.12,-923.927 1431.9,-913.869 1421.11,-905.876"/>
225
+
<polygon fill="black" stroke="black" points="1423.02,-902.945 1412.8,-900.166 1419.06,-908.714 1423.02,-902.945"/>
226
+
</g>
227
+
<!-- file_input_JS -->
228
+
<g id="node9" class="node"><title>file_input_JS</title>
229
+
<ellipse fill="none" stroke="black" cx="562.118" cy="-450" rx="51.9908" ry="18"/>
230
+
<text text-anchor="middle" x="562.118" y="-446.3" font-family="Times,serif" font-size="14.00">file-input.js</text>
231
+
</g>
232
+
<!-- sbot_blobs_add -->
233
+
<g id="node48" class="node"><title>sbot_blobs_add</title>
234
+
<polygon fill="none" stroke="black" points="576.118,-180 474.118,-180 474.118,-144 576.118,-144 576.118,-180"/>
235
+
<text text-anchor="middle" x="525.118" y="-158.3" font-family="Times,serif" font-size="14.00">sbot_blobs_add</text>
236
+
</g>
237
+
<!-- file_input_JS->sbot_blobs_add -->
238
+
<g id="edge39" class="edge"><title>file_input_JS->sbot_blobs_add</title>
239
+
<path fill="none" stroke="black" d="M559.914,-431.966C553.733,-384.192 536.195,-248.623 528.645,-190.266"/>
240
+
<polygon fill="black" stroke="black" points="532.111,-189.775 527.357,-180.306 525.169,-190.673 532.111,-189.775"/>
241
+
</g>
242
+
<!-- follow_JS -->
243
+
<g id="node10" class="node"><title>follow_JS</title>
244
+
<ellipse fill="none" stroke="black" cx="1167.12" cy="-450" rx="40.8928" ry="18"/>
245
+
<text text-anchor="middle" x="1167.12" y="-446.3" font-family="Times,serif" font-size="14.00">follow.js</text>
246
+
</g>
247
+
<!-- follow_JS->sbot_whoami -->
248
+
<g id="edge45" class="edge"><title>follow_JS->sbot_whoami</title>
249
+
<path fill="none" stroke="black" d="M1167.32,-431.951C1167.61,-405.292 1168.12,-352.116 1168.12,-307 1168.12,-307 1168.12,-307 1168.12,-233 1168.12,-192.031 1166.14,-178.549 1144.12,-144 1136.97,-132.777 1126.68,-122.707 1116.49,-114.435"/>
250
+
<polygon fill="black" stroke="black" points="1118.46,-111.532 1108.4,-108.2 1114.18,-117.076 1118.46,-111.532"/>
251
+
</g>
252
+
<!-- follow_JS->message_confirm -->
253
+
<g id="edge46" class="edge"><title>follow_JS->message_confirm</title>
254
+
<path fill="none" stroke="black" d="M1129.22,-442.971C1054.61,-431.1 887.778,-404.56 794.148,-389.664"/>
255
+
<polygon fill="black" stroke="black" points="794.638,-386.198 784.213,-388.083 793.538,-393.111 794.638,-386.198"/>
256
+
</g>
257
+
<!-- avatar -->
258
+
<g id="node49" class="node"><title>avatar</title>
259
+
<polygon fill="none" stroke="black" points="1140.12,-396 1086.12,-396 1086.12,-360 1140.12,-360 1140.12,-396"/>
260
+
<text text-anchor="middle" x="1113.12" y="-374.3" font-family="Times,serif" font-size="14.00">avatar</text>
261
+
</g>
262
+
<!-- follow_JS->avatar -->
263
+
<g id="edge41" class="edge"><title>follow_JS->avatar</title>
264
+
<path fill="none" stroke="black" d="M1154.59,-432.765C1148.04,-424.268 1139.87,-413.677 1132.52,-404.146"/>
265
+
<polygon fill="black" stroke="black" points="1135.21,-401.904 1126.33,-396.124 1129.66,-406.18 1135.21,-401.904"/>
266
+
</g>
267
+
<!-- sbot_links2 -->
268
+
<g id="node50" class="node"><title>sbot_links2</title>
269
+
<polygon fill="none" stroke="black" points="1246.12,-108 1166.12,-108 1166.12,-72 1246.12,-72 1246.12,-108"/>
270
+
<text text-anchor="middle" x="1206.12" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_links2</text>
271
+
</g>
272
+
<!-- follow_JS->sbot_links2 -->
273
+
<g id="edge43" class="edge"><title>follow_JS->sbot_links2</title>
274
+
<path fill="none" stroke="black" d="M1175.01,-431.928C1186.41,-405.671 1206.12,-353.53 1206.12,-307 1206.12,-307 1206.12,-307 1206.12,-233 1206.12,-192.996 1206.12,-146.653 1206.12,-118.08"/>
275
+
<polygon fill="black" stroke="black" points="1209.62,-118.049 1206.12,-108.049 1202.62,-118.049 1209.62,-118.049"/>
276
+
</g>
277
+
<!-- invite_JS -->
278
+
<g id="node11" class="node"><title>invite_JS</title>
279
+
<ellipse fill="none" stroke="black" cx="1281.12" cy="-954" rx="39.7935" ry="18"/>
280
+
<text text-anchor="middle" x="1281.12" y="-950.3" font-family="Times,serif" font-size="14.00">invite.js</text>
281
+
</g>
282
+
<!-- invite_JS->sbot_publish -->
283
+
<g id="edge47" class="edge"><title>invite_JS->sbot_publish</title>
284
+
<path fill="none" stroke="black" d="M1274.64,-936.027C1259.36,-896.749 1218.87,-797.058 1173.12,-720 1142.62,-668.637 1127.73,-660.683 1093.12,-612 992.111,-469.939 992.288,-414.264 872.118,-288 861.716,-277.071 848.894,-266.671 837.078,-258.024"/>
285
+
<polygon fill="black" stroke="black" points="838.876,-255.007 828.701,-252.055 834.814,-260.708 838.876,-255.007"/>
286
+
</g>
287
+
<!-- like_JS -->
288
+
<g id="node12" class="node"><title>like_JS</title>
289
+
<ellipse fill="none" stroke="black" cx="374.118" cy="-450" rx="31.6951" ry="18"/>
290
+
<text text-anchor="middle" x="374.118" y="-446.3" font-family="Times,serif" font-size="14.00">like.js</text>
291
+
</g>
292
+
<!-- like_JS->sbot_links -->
293
+
<g id="edge51" class="edge"><title>like_JS->sbot_links</title>
294
+
<path fill="none" stroke="black" d="M397.437,-437.417C455.91,-408.014 604.118,-331.109 604.118,-307 604.118,-307 604.118,-307 604.118,-233 604.118,-188.845 630.685,-143.558 650.108,-116.35"/>
295
+
<polygon fill="black" stroke="black" points="653.015,-118.306 656.121,-108.176 647.376,-114.158 653.015,-118.306"/>
296
+
</g>
297
+
<!-- like_JS->message_confirm -->
298
+
<g id="edge48" class="edge"><title>like_JS->message_confirm</title>
299
+
<path fill="none" stroke="black" d="M398.077,-438.011C403.591,-435.779 409.49,-433.622 415.118,-432 438.2,-425.346 575.36,-403.048 659.956,-389.586"/>
300
+
<polygon fill="black" stroke="black" points="660.674,-393.016 670.001,-387.99 659.576,-386.102 660.674,-393.016"/>
301
+
</g>
302
+
<!-- message_link -->
303
+
<g id="node51" class="node"><title>message_link</title>
304
+
<polygon fill="none" stroke="black" points="413.618,-396 322.618,-396 322.618,-360 413.618,-360 413.618,-396"/>
305
+
<text text-anchor="middle" x="368.118" y="-374.3" font-family="Times,serif" font-size="14.00">message_link</text>
306
+
</g>
307
+
<!-- like_JS->message_link -->
308
+
<g id="edge49" class="edge"><title>like_JS->message_link</title>
309
+
<path fill="none" stroke="black" d="M372.634,-431.697C371.973,-423.983 371.179,-414.712 370.441,-406.112"/>
310
+
<polygon fill="black" stroke="black" points="373.925,-405.769 369.584,-396.104 366.951,-406.367 373.925,-405.769"/>
311
+
</g>
312
+
<!-- markdown_JS -->
313
+
<g id="node13" class="node"><title>markdown_JS</title>
314
+
<ellipse fill="none" stroke="black" cx="1149.12" cy="-1314" rx="57.3905" ry="18"/>
315
+
<text text-anchor="middle" x="1149.12" y="-1310.3" font-family="Times,serif" font-size="14.00">markdown.js</text>
316
+
</g>
317
+
<!-- message_confirm_JS -->
318
+
<g id="node14" class="node"><title>message_confirm_JS</title>
319
+
<ellipse fill="none" stroke="black" cx="759.118" cy="-306" rx="80.6858" ry="18"/>
320
+
<text text-anchor="middle" x="759.118" y="-302.3" font-family="Times,serif" font-size="14.00">message-confirm.js</text>
321
+
</g>
322
+
<!-- message_confirm_JS->sbot_publish -->
323
+
<g id="edge52" class="edge"><title>message_confirm_JS->sbot_publish</title>
324
+
<path fill="none" stroke="black" d="M769.527,-288.055C774.523,-279.922 780.619,-269.998 786.181,-260.943"/>
325
+
<polygon fill="black" stroke="black" points="789.254,-262.628 791.506,-252.275 783.289,-258.964 789.254,-262.628"/>
326
+
</g>
327
+
<!-- message_confirm_JS->message_content -->
328
+
<g id="edge53" class="edge"><title>message_confirm_JS->message_content</title>
329
+
<path fill="none" stroke="black" d="M773.518,-323.895C780.945,-333.736 789.242,-346.782 793.118,-360 807.015,-407.401 782.543,-462.938 764.577,-494.841"/>
330
+
<polygon fill="black" stroke="black" points="761.503,-493.165 759.49,-503.567 767.55,-496.69 761.503,-493.165"/>
331
+
</g>
332
+
<!-- message_link_JS -->
333
+
<g id="node15" class="node"><title>message_link_JS</title>
334
+
<ellipse fill="none" stroke="black" cx="294.118" cy="-306" rx="65.7887" ry="18"/>
335
+
<text text-anchor="middle" x="294.118" y="-302.3" font-family="Times,serif" font-size="14.00">message-link.js</text>
336
+
</g>
337
+
<!-- sbot_get -->
338
+
<g id="node52" class="node"><title>sbot_get</title>
339
+
<polygon fill="none" stroke="black" points="231.618,-252 168.618,-252 168.618,-216 231.618,-216 231.618,-252"/>
340
+
<text text-anchor="middle" x="200.118" y="-230.3" font-family="Times,serif" font-size="14.00">sbot_get</text>
341
+
</g>
342
+
<!-- message_link_JS->sbot_get -->
343
+
<g id="edge54" class="edge"><title>message_link_JS->sbot_get</title>
344
+
<path fill="none" stroke="black" d="M272.316,-288.765C260.099,-279.667 244.658,-268.168 231.194,-258.142"/>
345
+
<polygon fill="black" stroke="black" points="233.223,-255.289 223.113,-252.124 229.043,-260.904 233.223,-255.289"/>
346
+
</g>
347
+
<!-- message_name_JS -->
348
+
<g id="node16" class="node"><title>message_name_JS</title>
349
+
<ellipse fill="none" stroke="black" cx="101.118" cy="-306" rx="71.4873" ry="18"/>
350
+
<text text-anchor="middle" x="101.118" y="-302.3" font-family="Times,serif" font-size="14.00">message-name.js</text>
351
+
</g>
352
+
<!-- message_name_JS->sbot_get -->
353
+
<g id="edge56" class="edge"><title>message_name_JS->sbot_get</title>
354
+
<path fill="none" stroke="black" d="M124.079,-288.765C136.945,-279.667 153.208,-268.168 167.388,-258.142"/>
355
+
<polygon fill="black" stroke="black" points="169.755,-260.755 175.899,-252.124 165.714,-255.039 169.755,-260.755"/>
356
+
</g>
357
+
<!-- message_JS -->
358
+
<g id="node17" class="node"><title>message_JS</title>
359
+
<ellipse fill="none" stroke="black" cx="544.118" cy="-882" rx="48.1917" ry="18"/>
360
+
<text text-anchor="middle" x="544.118" y="-878.3" font-family="Times,serif" font-size="14.00">message.js</text>
361
+
</g>
362
+
<!-- message_JS->sbot_links -->
363
+
<g id="edge67" class="edge"><title>message_JS->sbot_links</title>
364
+
<path fill="none" stroke="black" d="M504.525,-871.697C446.744,-855.496 346.118,-816.2 346.118,-739 346.118,-739 346.118,-739 346.118,-665 346.118,-528.653 236.896,-473.052 313.118,-360 336.971,-324.621 372.674,-354.882 402.118,-324 460.605,-262.654 402.73,-201.374 465.118,-144 487.995,-122.961 570.097,-106.591 623.199,-97.902"/>
365
+
<polygon fill="black" stroke="black" points="623.761,-101.357 633.081,-96.3185 622.653,-94.4449 623.761,-101.357"/>
366
+
</g>
367
+
<!-- message_JS->message_content -->
368
+
<g id="edge57" class="edge"><title>message_JS->message_content</title>
369
+
<path fill="none" stroke="black" d="M550.988,-864.037C554.958,-853.744 559.806,-840.268 563.118,-828 575.84,-780.871 551.635,-757.307 583.118,-720 613.043,-684.538 647.62,-716.109 681.118,-684 719.345,-647.357 736.612,-585.63 743.715,-550.2"/>
370
+
<polygon fill="black" stroke="black" points="747.205,-550.58 745.606,-540.106 740.325,-549.291 747.205,-550.58"/>
371
+
</g>
372
+
<!-- message_JS->avatar -->
373
+
<g id="edge58" class="edge"><title>message_JS->avatar</title>
374
+
<path fill="none" stroke="black" d="M589.391,-875.661C661.547,-864.984 803.506,-834.832 892.118,-756 1008.31,-652.634 1080.12,-473.098 1104.13,-405.639"/>
375
+
<polygon fill="black" stroke="black" points="1107.44,-406.757 1107.45,-396.162 1100.84,-404.443 1107.44,-406.757"/>
376
+
</g>
377
+
<!-- message_JS->message_link -->
378
+
<g id="edge66" class="edge"><title>message_JS->message_link</title>
379
+
<path fill="none" stroke="black" d="M502.379,-872.922C444.161,-861.304 344.3,-839.96 332.118,-828 302.883,-799.299 308.118,-779.969 308.118,-739 308.118,-739 308.118,-739 308.118,-665 308.118,-560.85 297.869,-530.004 333.118,-432 336.607,-422.297 342.218,-412.61 347.934,-404.223"/>
380
+
<polygon fill="black" stroke="black" points="350.846,-406.169 353.845,-396.007 345.164,-402.081 350.846,-406.169"/>
381
+
</g>
382
+
<!-- message_meta -->
383
+
<g id="node53" class="node"><title>message_meta</title>
384
+
<polygon fill="none" stroke="black" points="745.618,-828 648.618,-828 648.618,-792 745.618,-792 745.618,-828"/>
385
+
<text text-anchor="middle" x="697.118" y="-806.3" font-family="Times,serif" font-size="14.00">message_meta</text>
386
+
</g>
387
+
<!-- message_JS->message_meta -->
388
+
<g id="edge59" class="edge"><title>message_JS->message_meta</title>
389
+
<path fill="none" stroke="black" d="M573.256,-867.669C595.09,-857.679 625.41,-843.807 650.587,-832.289"/>
390
+
<polygon fill="black" stroke="black" points="652.318,-835.345 659.955,-828.002 649.406,-828.98 652.318,-835.345"/>
391
+
</g>
392
+
<!-- message_action -->
393
+
<g id="node54" class="node"><title>message_action</title>
394
+
<polygon fill="none" stroke="black" points="554.118,-828 450.118,-828 450.118,-792 554.118,-792 554.118,-828"/>
395
+
<text text-anchor="middle" x="502.118" y="-806.3" font-family="Times,serif" font-size="14.00">message_action</text>
396
+
</g>
397
+
<!-- message_JS->message_action -->
398
+
<g id="edge64" class="edge"><title>message_JS->message_action</title>
399
+
<path fill="none" stroke="black" d="M533.951,-864.055C529.071,-855.922 523.116,-845.998 517.683,-836.943"/>
400
+
<polygon fill="black" stroke="black" points="520.629,-835.049 512.483,-828.275 514.627,-838.651 520.629,-835.049"/>
401
+
</g>
402
+
<!-- names_JS -->
403
+
<g id="node18" class="node"><title>names_JS</title>
404
+
<ellipse fill="none" stroke="black" cx="1060.12" cy="-162" rx="42.4939" ry="18"/>
405
+
<text text-anchor="middle" x="1060.12" y="-158.3" font-family="Times,serif" font-size="14.00">names.js</text>
406
+
</g>
407
+
<!-- names_JS->sbot_whoami -->
408
+
<g id="edge70" class="edge"><title>names_JS->sbot_whoami</title>
409
+
<path fill="none" stroke="black" d="M1065.2,-144.055C1067.54,-136.261 1070.37,-126.822 1072.99,-118.079"/>
410
+
<polygon fill="black" stroke="black" points="1076.41,-118.859 1075.93,-108.275 1069.71,-116.848 1076.41,-118.859"/>
411
+
</g>
412
+
<!-- names_JS->sbot_links -->
413
+
<g id="edge69" class="edge"><title>names_JS->sbot_links</title>
414
+
<path fill="none" stroke="black" d="M1029.07,-149.737C1022.54,-147.626 1015.65,-145.587 1009.12,-144 906.371,-119.028 783.128,-103.205 717.209,-95.8498"/>
415
+
<polygon fill="black" stroke="black" points="717.456,-92.3559 707.133,-94.7418 716.691,-99.314 717.456,-92.3559"/>
416
+
</g>
417
+
<!-- names_JS->sbot_links2 -->
418
+
<g id="edge68" class="edge"><title>names_JS->sbot_links2</title>
419
+
<path fill="none" stroke="black" d="M1087.24,-147.998C1108.08,-138.006 1137.31,-123.991 1161.57,-112.36"/>
420
+
<polygon fill="black" stroke="black" points="1163.09,-115.511 1170.59,-108.032 1160.06,-109.199 1163.09,-115.511"/>
421
+
</g>
422
+
<!-- notifications_JS -->
423
+
<g id="node19" class="node"><title>notifications_JS</title>
424
+
<ellipse fill="none" stroke="black" cx="1105.12" cy="-1026" rx="64.189" ry="18"/>
425
+
<text text-anchor="middle" x="1105.12" y="-1022.3" font-family="Times,serif" font-size="14.00">notifications.js</text>
426
+
</g>
427
+
<!-- notifications_JS->sbot_whoami -->
428
+
<g id="edge73" class="edge"><title>notifications_JS->sbot_whoami</title>
429
+
<path fill="none" stroke="black" d="M1128.55,-1009.24C1160.32,-985.776 1213.12,-938.442 1213.12,-883 1213.12,-883 1213.12,-883 1213.12,-809 1213.12,-591.965 1492.79,-558.537 1405.12,-360 1350.31,-235.897 1204.72,-150.371 1128.76,-112.702"/>
430
+
<polygon fill="black" stroke="black" points="1129.93,-109.377 1119.4,-108.132 1126.85,-115.667 1129.93,-109.377"/>
431
+
</g>
432
+
<!-- notifications_JS->message_render -->
433
+
<g id="edge71" class="edge"><title>notifications_JS->message_render</title>
434
+
<path fill="none" stroke="black" d="M1077.69,-1009.64C1060.56,-1000.05 1038.25,-987.552 1019.28,-976.931"/>
435
+
<polygon fill="black" stroke="black" points="1020.99,-973.877 1010.55,-972.044 1017.57,-979.984 1020.99,-973.877"/>
436
+
</g>
437
+
<!-- notifications_JS->sbot_log -->
438
+
<g id="edge72" class="edge"><title>notifications_JS->sbot_log</title>
439
+
<path fill="none" stroke="black" d="M1114.68,-1008.08C1140.71,-959.548 1207.26,-817.131 1151.12,-720 1140.07,-700.886 1119.22,-688.057 1100.16,-679.815"/>
440
+
<polygon fill="black" stroke="black" points="1101.3,-676.498 1090.71,-676.022 1098.69,-682.995 1101.3,-676.498"/>
441
+
</g>
442
+
<!-- notifications_JS->sbot_user_feed -->
443
+
<g id="edge75" class="edge"><title>notifications_JS->sbot_user_feed</title>
444
+
<path fill="none" stroke="black" d="M1154.01,-1014.21C1197.56,-1004.44 1263.23,-989.3 1329.22,-972.177"/>
445
+
<polygon fill="black" stroke="black" points="1330.16,-975.548 1338.95,-969.636 1328.39,-968.775 1330.16,-975.548"/>
446
+
</g>
447
+
<!-- notifications_JS->sbot_get -->
448
+
<g id="edge74" class="edge"><title>notifications_JS->sbot_get</title>
449
+
<path fill="none" stroke="black" d="M1057.4,-1013.82C1048.66,-1011.83 1039.62,-1009.82 1031.12,-1008 680.335,-932.905 270.118,-1097.73 270.118,-739 270.118,-739 270.118,-739 270.118,-665 270.118,-564.93 200.118,-551.07 200.118,-451 200.118,-451 200.118,-451 200.118,-377 200.118,-336.996 200.118,-290.653 200.118,-262.08"/>
450
+
<polygon fill="black" stroke="black" points="203.618,-262.049 200.118,-252.049 196.618,-262.049 203.618,-262.049"/>
451
+
</g>
452
+
<!-- message_unbox -->
453
+
<g id="node55" class="node"><title>message_unbox</title>
454
+
<polygon fill="none" stroke="black" points="894.118,-684 790.118,-684 790.118,-648 894.118,-648 894.118,-684"/>
455
+
<text text-anchor="middle" x="842.118" y="-662.3" font-family="Times,serif" font-size="14.00">message_unbox</text>
456
+
</g>
457
+
<!-- notifications_JS->message_unbox -->
458
+
<g id="edge76" class="edge"><title>notifications_JS->message_unbox</title>
459
+
<path fill="none" stroke="black" d="M1094.62,-1008.18C1064.94,-961.081 977.1,-824.458 892.118,-720 884.214,-710.286 874.946,-700.158 866.551,-691.391"/>
460
+
<polygon fill="black" stroke="black" points="868.931,-688.817 859.454,-684.08 863.908,-693.693 868.931,-688.817"/>
461
+
</g>
462
+
<!-- post_JS -->
463
+
<g id="node20" class="node"><title>post_JS</title>
464
+
<ellipse fill="none" stroke="black" cx="458.118" cy="-450" rx="33.5952" ry="18"/>
465
+
<text text-anchor="middle" x="458.118" y="-446.3" font-family="Times,serif" font-size="14.00">post.js</text>
466
+
</g>
467
+
<!-- post_JS->message_link -->
468
+
<g id="edge78" class="edge"><title>post_JS->message_link</title>
469
+
<path fill="none" stroke="black" d="M439.905,-434.834C427.995,-425.571 412.149,-413.246 398.375,-402.533"/>
470
+
<polygon fill="black" stroke="black" points="400.162,-399.489 390.12,-396.113 395.864,-405.015 400.162,-399.489"/>
471
+
</g>
472
+
<!-- private_JS -->
473
+
<g id="node21" class="node"><title>private_JS</title>
474
+
<ellipse fill="none" stroke="black" cx="839.118" cy="-738" rx="44.393" ry="18"/>
475
+
<text text-anchor="middle" x="839.118" y="-734.3" font-family="Times,serif" font-size="14.00">private.js</text>
476
+
</g>
477
+
<!-- private_JS->sbot_whoami -->
478
+
<g id="edge83" class="edge"><title>private_JS->sbot_whoami</title>
479
+
<path fill="none" stroke="black" d="M861.128,-722.113C874.416,-712.366 891.055,-698.735 903.118,-684 1006.65,-557.522 981.504,-492.569 1077.12,-360 1089.99,-342.15 1102.99,-344.451 1111.12,-324 1140.67,-249.66 1131.49,-221.362 1111.12,-144 1108.63,-134.539 1104.02,-124.993 1099.14,-116.66"/>
480
+
<polygon fill="black" stroke="black" points="1102.1,-114.79 1093.84,-108.155 1096.16,-118.493 1102.1,-114.79"/>
481
+
</g>
482
+
<!-- private_JS->message_render -->
483
+
<g id="edge79" class="edge"><title>private_JS->message_render</title>
484
+
<path fill="none" stroke="black" d="M850.082,-755.641C874.588,-792.835 933.942,-882.918 963.216,-927.349"/>
485
+
<polygon fill="black" stroke="black" points="960.393,-929.424 968.817,-935.849 966.238,-925.573 960.393,-929.424"/>
486
+
</g>
487
+
<!-- private_JS->message_compose -->
488
+
<g id="edge80" class="edge"><title>private_JS->message_compose</title>
489
+
<path fill="none" stroke="black" d="M805.494,-726.142C799.066,-724.087 792.388,-721.966 786.118,-720 750.941,-708.971 711.658,-696.915 679.427,-687.092"/>
490
+
<polygon fill="black" stroke="black" points="680.249,-683.684 669.663,-684.119 678.21,-690.38 680.249,-683.684"/>
491
+
</g>
492
+
<!-- private_JS->sbot_log -->
493
+
<g id="edge82" class="edge"><title>private_JS->sbot_log</title>
494
+
<path fill="none" stroke="black" d="M873.01,-726.216C911.954,-713.825 975.859,-693.491 1017.71,-680.174"/>
495
+
<polygon fill="black" stroke="black" points="1018.86,-683.481 1027.33,-677.114 1016.74,-676.811 1018.86,-683.481"/>
496
+
</g>
497
+
<!-- private_JS->message_unbox -->
498
+
<g id="edge81" class="edge"><title>private_JS->message_unbox</title>
499
+
<path fill="none" stroke="black" d="M839.859,-719.697C840.19,-711.983 840.587,-702.712 840.956,-694.112"/>
500
+
<polygon fill="black" stroke="black" points="844.453,-694.245 841.385,-684.104 837.459,-693.945 844.453,-694.245"/>
501
+
</g>
502
+
<!-- public_JS -->
503
+
<g id="node22" class="node"><title>public_JS</title>
504
+
<ellipse fill="none" stroke="black" cx="842.118" cy="-1026" rx="40.0939" ry="18"/>
505
+
<text text-anchor="middle" x="842.118" y="-1022.3" font-family="Times,serif" font-size="14.00">public.js</text>
506
+
</g>
507
+
<!-- public_JS->message_render -->
508
+
<g id="edge84" class="edge"><title>public_JS->message_render</title>
509
+
<path fill="none" stroke="black" d="M867.751,-1012C887.276,-1002.09 914.591,-988.238 937.401,-976.668"/>
510
+
<polygon fill="black" stroke="black" points="939.205,-979.677 946.54,-972.032 936.039,-973.434 939.205,-979.677"/>
511
+
</g>
512
+
<!-- public_JS->message_compose -->
513
+
<g id="edge85" class="edge"><title>public_JS->message_compose</title>
514
+
<path fill="none" stroke="black" d="M802.327,-1022.51C709.881,-1014.19 485.113,-978.581 441.118,-828 421.993,-762.545 500.727,-714.061 557.97,-688.205"/>
515
+
<polygon fill="black" stroke="black" points="559.565,-691.327 567.31,-684.098 556.747,-684.919 559.565,-691.327"/>
516
+
</g>
517
+
<!-- public_JS->sbot_log -->
518
+
<g id="edge86" class="edge"><title>public_JS->sbot_log</title>
519
+
<path fill="none" stroke="black" d="M849.09,-1008.13C869.278,-960.313 931.141,-820.832 1006.12,-720 1013.62,-709.904 1023.02,-699.875 1031.81,-691.302"/>
520
+
<polygon fill="black" stroke="black" points="1034.47,-693.601 1039.31,-684.178 1029.65,-688.525 1034.47,-693.601"/>
521
+
</g>
522
+
<!-- search_box_JS -->
523
+
<g id="node23" class="node"><title>search_box_JS</title>
524
+
<ellipse fill="none" stroke="black" cx="1457.12" cy="-738" rx="57.6901" ry="18"/>
525
+
<text text-anchor="middle" x="1457.12" y="-734.3" font-family="Times,serif" font-size="14.00">search-box.js</text>
526
+
</g>
527
+
<!-- search_box_JS->sbot_query -->
528
+
<g id="edge87" class="edge"><title>search_box_JS->sbot_query</title>
529
+
<path fill="none" stroke="black" d="M1442.42,-720.411C1434.93,-711.946 1425.65,-701.472 1417.3,-692.049"/>
530
+
<polygon fill="black" stroke="black" points="1419.82,-689.612 1410.57,-684.447 1414.58,-694.253 1419.82,-689.612"/>
531
+
</g>
532
+
<!-- search_box_JS->sbot_links2 -->
533
+
<g id="edge88" class="edge"><title>search_box_JS->sbot_links2</title>
534
+
<path fill="none" stroke="black" d="M1458.11,-719.958C1459.56,-693.308 1462.12,-640.143 1462.12,-595 1462.12,-595 1462.12,-595 1462.12,-233 1462.12,-139.923 1331.11,-107.346 1256.53,-96.3415"/>
535
+
<polygon fill="black" stroke="black" points="1256.79,-92.8438 1246.4,-94.9279 1255.82,-99.7766 1256.79,-92.8438"/>
536
+
</g>
537
+
<!-- search_JS -->
538
+
<g id="node24" class="node"><title>search_JS</title>
539
+
<ellipse fill="none" stroke="black" cx="980.118" cy="-1026" rx="42.4939" ry="18"/>
540
+
<text text-anchor="middle" x="980.118" y="-1022.3" font-family="Times,serif" font-size="14.00">search.js</text>
541
+
</g>
542
+
<!-- search_JS->message_render -->
543
+
<g id="edge89" class="edge"><title>search_JS->message_render</title>
544
+
<path fill="none" stroke="black" d="M980.118,-1007.7C980.118,-999.983 980.118,-990.712 980.118,-982.112"/>
545
+
<polygon fill="black" stroke="black" points="983.618,-982.104 980.118,-972.104 976.618,-982.104 983.618,-982.104"/>
546
+
</g>
547
+
<!-- search_JS->sbot_log -->
548
+
<g id="edge90" class="edge"><title>search_JS->sbot_log</title>
549
+
<path fill="none" stroke="black" d="M1002.23,-1010.59C1015.4,-1001.03 1031.55,-987.418 1042.12,-972 1099.66,-888.059 1100.98,-856.316 1118.12,-756 1120.81,-740.228 1124.63,-734.613 1118.12,-720 1113.04,-708.604 1104.16,-698.634 1094.81,-690.509"/>
550
+
<polygon fill="black" stroke="black" points="1096.89,-687.694 1086.92,-684.128 1092.49,-693.137 1096.89,-687.694"/>
551
+
</g>
552
+
<!-- suggest_mentions_JS -->
553
+
<g id="node25" class="node"><title>suggest_mentions_JS</title>
554
+
<ellipse fill="none" stroke="black" cx="1315.12" cy="-378" rx="81.4863" ry="18"/>
555
+
<text text-anchor="middle" x="1315.12" y="-374.3" font-family="Times,serif" font-size="14.00">suggest-mentions.js</text>
556
+
</g>
557
+
<!-- suggest_mentions_JS->sbot_links2 -->
558
+
<g id="edge91" class="edge"><title>suggest_mentions_JS->sbot_links2</title>
559
+
<path fill="none" stroke="black" d="M1308.63,-359.966C1290.38,-312.093 1238.54,-176.06 1216.37,-117.904"/>
560
+
<polygon fill="black" stroke="black" points="1219.55,-116.404 1212.71,-108.306 1213,-118.897 1219.55,-116.404"/>
561
+
</g>
562
+
<!-- suggest_JS -->
563
+
<g id="node26" class="node"><title>suggest_JS</title>
564
+
<ellipse fill="none" stroke="black" cx="1268.12" cy="-1314" rx="44.393" ry="18"/>
565
+
<text text-anchor="middle" x="1268.12" y="-1310.3" font-family="Times,serif" font-size="14.00">suggest.js</text>
566
+
</g>
567
+
<!-- tabs_JS -->
568
+
<g id="node27" class="node"><title>tabs_JS</title>
569
+
<ellipse fill="none" stroke="black" cx="1043.12" cy="-1170" rx="33.2948" ry="18"/>
570
+
<text text-anchor="middle" x="1043.12" y="-1166.3" font-family="Times,serif" font-size="14.00">tabs.js</text>
571
+
</g>
572
+
<!-- tabs_JS->message_render -->
573
+
<g id="edge103" class="edge"><title>tabs_JS->message_render</title>
574
+
<path fill="none" stroke="black" d="M1023.35,-1155.25C995.86,-1134.76 947.414,-1093.29 929.118,-1044 923.549,-1029 923.137,-1022.84 929.118,-1008 933.466,-997.209 941.179,-987.386 949.311,-979.209"/>
575
+
<polygon fill="black" stroke="black" points="951.908,-981.572 956.813,-972.181 947.122,-976.464 951.908,-981.572"/>
576
+
</g>
577
+
<!-- screen_view -->
578
+
<g id="node56" class="node"><title>screen_view</title>
579
+
<polygon fill="none" stroke="black" points="1085.62,-1116 1000.62,-1116 1000.62,-1080 1085.62,-1080 1085.62,-1116"/>
580
+
<text text-anchor="middle" x="1043.12" y="-1094.3" font-family="Times,serif" font-size="14.00">screen_view</text>
581
+
</g>
582
+
<!-- tabs_JS->screen_view -->
583
+
<g id="edge92" class="edge"><title>tabs_JS->screen_view</title>
584
+
<path fill="none" stroke="black" d="M1043.12,-1151.7C1043.12,-1143.98 1043.12,-1134.71 1043.12,-1126.11"/>
585
+
<polygon fill="black" stroke="black" points="1046.62,-1126.1 1043.12,-1116.1 1039.62,-1126.1 1046.62,-1126.1"/>
586
+
</g>
587
+
<!-- search_box -->
588
+
<g id="node57" class="node"><title>search_box</title>
589
+
<polygon fill="none" stroke="black" points="1395.12,-1116 1315.12,-1116 1315.12,-1080 1395.12,-1080 1395.12,-1116"/>
590
+
<text text-anchor="middle" x="1355.12" y="-1094.3" font-family="Times,serif" font-size="14.00">search_box</text>
591
+
</g>
592
+
<!-- tabs_JS->search_box -->
593
+
<g id="edge101" class="edge"><title>tabs_JS->search_box</title>
594
+
<path fill="none" stroke="black" d="M1073.32,-1162.22C1126.95,-1150.19 1239.35,-1124.97 1304.82,-1110.28"/>
595
+
<polygon fill="black" stroke="black" points="1305.92,-1113.62 1314.91,-1108.02 1304.39,-1106.79 1305.92,-1113.62"/>
596
+
</g>
597
+
<!-- thread_JS -->
598
+
<g id="node28" class="node"><title>thread_JS</title>
599
+
<ellipse fill="none" stroke="black" cx="502.118" cy="-1026" rx="42.4939" ry="18"/>
600
+
<text text-anchor="middle" x="502.118" y="-1022.3" font-family="Times,serif" font-size="14.00">thread.js</text>
601
+
</g>
602
+
<!-- thread_JS->sbot_links -->
603
+
<g id="edge108" class="edge"><title>thread_JS->sbot_links</title>
604
+
<path fill="none" stroke="black" d="M460.816,-1021.97C385.181,-1013.94 232.118,-985.085 232.118,-883 232.118,-883 232.118,-883 232.118,-665 232.118,-527.015 204.911,-468.534 290.118,-360 313.944,-329.65 342.823,-352.238 369.118,-324 427.29,-261.528 371.863,-200.197 436.118,-144 463.534,-120.022 562.694,-104.071 622.782,-96.3693"/>
605
+
<polygon fill="black" stroke="black" points="623.309,-99.8307 632.797,-95.1156 622.439,-92.8849 623.309,-99.8307"/>
606
+
</g>
607
+
<!-- thread_JS->message_render -->
608
+
<g id="edge104" class="edge"><title>thread_JS->message_render</title>
609
+
<path fill="none" stroke="black" d="M541.641,-1019.21C624.465,-1007.08 816.828,-978.913 916.971,-964.247"/>
610
+
<polygon fill="black" stroke="black" points="917.567,-967.698 926.954,-962.785 916.553,-960.771 917.567,-967.698"/>
611
+
</g>
612
+
<!-- thread_JS->message_compose -->
613
+
<g id="edge105" class="edge"><title>thread_JS->message_compose</title>
614
+
<path fill="none" stroke="black" d="M478.238,-1010.89C443.759,-988.498 384.118,-941.338 384.118,-883 384.118,-883 384.118,-883 384.118,-809 384.118,-768.031 378.998,-748.818 408.118,-720 427.346,-700.97 492.231,-686.303 543.914,-677.272"/>
615
+
<polygon fill="black" stroke="black" points="544.789,-680.673 554.058,-675.541 543.612,-673.773 544.789,-680.673"/>
616
+
</g>
617
+
<!-- thread_JS->sbot_get -->
618
+
<g id="edge107" class="edge"><title>thread_JS->sbot_get</title>
619
+
<path fill="none" stroke="black" d="M460.775,-1022.17C340.981,-1012.85 2.11756,-978.089 2.11756,-883 2.11756,-883 2.11756,-883 2.11756,-377 2.11756,-336.553 -6.35267,-317.687 21.1176,-288 56.3511,-249.923 117.504,-238.742 158.39,-235.709"/>
620
+
<polygon fill="black" stroke="black" points="158.806,-239.19 168.576,-235.089 158.382,-232.203 158.806,-239.19"/>
621
+
</g>
622
+
<!-- thread_JS->message_unbox -->
623
+
<g id="edge106" class="edge"><title>thread_JS->message_unbox</title>
624
+
<path fill="none" stroke="black" d="M518.142,-1009.06C539.877,-986.606 578.573,-943.505 601.118,-900 639.487,-825.955 594.808,-778.628 654.118,-720 687.245,-687.254 738.947,-674.39 779.754,-669.499"/>
625
+
<polygon fill="black" stroke="black" points="780.303,-672.961 789.876,-668.421 779.561,-666 780.303,-672.961"/>
626
+
</g>
627
+
<!-- timestamp_JS -->
628
+
<g id="node29" class="node"><title>timestamp_JS</title>
629
+
<ellipse fill="none" stroke="black" cx="720.118" cy="-738" rx="57.3905" ry="18"/>
630
+
<text text-anchor="middle" x="720.118" y="-734.3" font-family="Times,serif" font-size="14.00">timestamp.js</text>
631
+
</g>
632
+
<!-- app_JS -->
633
+
<g id="node30" class="node"><title>app_JS</title>
634
+
<ellipse fill="none" stroke="black" cx="1043.12" cy="-1314" rx="31.3957" ry="18"/>
635
+
<text text-anchor="middle" x="1043.12" y="-1310.3" font-family="Times,serif" font-size="14.00">app.js</text>
636
+
</g>
637
+
<!-- app -->
638
+
<g id="node58" class="node"><title>app</title>
639
+
<polygon fill="none" stroke="black" points="1070.12,-1260 1016.12,-1260 1016.12,-1224 1070.12,-1224 1070.12,-1260"/>
640
+
<text text-anchor="middle" x="1043.12" y="-1238.3" font-family="Times,serif" font-size="14.00">app</text>
641
+
</g>
642
+
<!-- app_JS->app -->
643
+
<g id="edge109" class="edge"><title>app_JS->app</title>
644
+
<path fill="none" stroke="black" d="M1043.12,-1295.7C1043.12,-1287.98 1043.12,-1278.71 1043.12,-1270.11"/>
645
+
<polygon fill="black" stroke="black" points="1046.62,-1270.1 1043.12,-1260.1 1039.62,-1270.1 1046.62,-1270.1"/>
646
+
</g>
647
+
<!-- sbot_api_JS -->
648
+
<g id="node31" class="node"><title>sbot_api_JS</title>
649
+
<ellipse fill="none" stroke="black" cx="840.118" cy="-18" rx="47.3916" ry="18"/>
650
+
<text text-anchor="middle" x="840.118" y="-14.3" font-family="Times,serif" font-size="14.00">sbot-api.js</text>
651
+
</g>
652
+
<!-- sbot_whoami->sbot_api_JS -->
653
+
<g id="edge2" class="edge"><title>sbot_whoami->sbot_api_JS</title>
654
+
<path fill="none" stroke="black" d="M1035.5,-75.7512C992.713,-63.3224 929.048,-44.8305 886.129,-32.3642"/>
655
+
<polygon fill="black" stroke="black" points="887.076,-28.9947 876.496,-29.5665 885.123,-35.7169 887.076,-28.9947"/>
656
+
</g>
657
+
<!-- sbot_links->sbot_api_JS -->
658
+
<g id="edge4" class="edge"><title>sbot_links->sbot_api_JS</title>
659
+
<path fill="none" stroke="black" d="M707.425,-73.6382C734.703,-62.406 771.671,-47.1841 799.659,-35.6596"/>
660
+
<polygon fill="black" stroke="black" points="801.239,-38.794 809.153,-31.7501 798.574,-32.3212 801.239,-38.794"/>
661
+
</g>
662
+
<!-- avatar_image->avatar_image_JS -->
663
+
<g id="edge6" class="edge"><title>avatar_image->avatar_image_JS</title>
664
+
<path fill="none" stroke="black" d="M945.41,-215.697C943.757,-207.983 941.77,-198.712 939.927,-190.112"/>
665
+
<polygon fill="black" stroke="black" points="943.3,-189.149 937.783,-180.104 936.456,-190.616 943.3,-189.149"/>
666
+
</g>
667
+
<!-- avatar_action->follow_JS -->
668
+
<g id="edge8" class="edge"><title>avatar_action->follow_JS</title>
669
+
<path fill="none" stroke="black" d="M1169.38,-503.697C1169.05,-495.983 1168.65,-486.712 1168.28,-478.112"/>
670
+
<polygon fill="black" stroke="black" points="1171.78,-477.945 1167.85,-468.104 1164.78,-478.245 1171.78,-477.945"/>
671
+
</g>
672
+
<!-- avatar_name->names_JS -->
673
+
<g id="edge10" class="edge"><title>avatar_name->names_JS</title>
674
+
<path fill="none" stroke="black" d="M1057.86,-215.697C1058.19,-207.983 1058.59,-198.712 1058.96,-190.112"/>
675
+
<polygon fill="black" stroke="black" points="1062.45,-190.245 1059.38,-180.104 1055.46,-189.945 1062.45,-190.245"/>
676
+
</g>
677
+
<!-- message_render->message_JS -->
678
+
<g id="edge13" class="edge"><title>message_render->message_JS</title>
679
+
<path fill="none" stroke="black" d="M927.091,-944.487C843.326,-931.038 681.3,-905.025 597.385,-891.552"/>
680
+
<polygon fill="black" stroke="black" points="597.732,-888.063 587.303,-889.934 596.622,-894.975 597.732,-888.063"/>
681
+
</g>
682
+
<!-- message_compose->compose_JS -->
683
+
<g id="edge15" class="edge"><title>message_compose->compose_JS</title>
684
+
<path fill="none" stroke="black" d="M615.342,-647.697C616.334,-639.983 617.526,-630.712 618.632,-622.112"/>
685
+
<polygon fill="black" stroke="black" points="622.115,-622.469 619.918,-612.104 615.172,-621.576 622.115,-622.469"/>
686
+
</g>
687
+
<!-- sbot_log->sbot_api_JS -->
688
+
<g id="edge17" class="edge"><title>sbot_log->sbot_api_JS</title>
689
+
<path fill="none" stroke="black" d="M1042.15,-647.822C1010.16,-613.53 944.118,-532.824 944.118,-451 944.118,-451 944.118,-451 944.118,-377 944.118,-281.642 883.854,-272.094 859.118,-180 846.786,-134.088 842.456,-78.6736 840.937,-46.2825"/>
690
+
<polygon fill="black" stroke="black" points="844.431,-46.0745 840.522,-36.2273 837.437,-46.3631 844.431,-46.0745"/>
691
+
</g>
692
+
<!-- sbot_query->sbot_api_JS -->
693
+
<g id="edge19" class="edge"><title>sbot_query->sbot_api_JS</title>
694
+
<path fill="none" stroke="black" d="M1419.47,-647.875C1450.49,-623.844 1500.12,-576.962 1500.12,-523 1500.12,-523 1500.12,-523 1500.12,-161 1500.12,-38.2846 1058.52,-21.3157 897.758,-19.2041"/>
695
+
<polygon fill="black" stroke="black" points="897.623,-15.7024 887.583,-19.0855 897.542,-22.7019 897.623,-15.7024"/>
696
+
</g>
697
+
<!-- sbot_publish->sbot_api_JS -->
698
+
<g id="edge21" class="edge"><title>sbot_publish->sbot_api_JS</title>
699
+
<path fill="none" stroke="black" d="M804.03,-215.971C807.481,-186.473 815.4,-124.037 826.118,-72 827.872,-63.4797 830.159,-54.2869 832.374,-45.9882"/>
700
+
<polygon fill="black" stroke="black" points="835.824,-46.6422 835.095,-36.0724 829.073,-44.7893 835.824,-46.6422"/>
701
+
</g>
702
+
<!-- message_content->about_JS -->
703
+
<g id="edge23" class="edge"><title>message_content->about_JS</title>
704
+
<path fill="none" stroke="black" d="M770.859,-503.697C783.43,-494.132 799.146,-482.174 812.428,-472.068"/>
705
+
<polygon fill="black" stroke="black" points="814.908,-474.579 820.747,-465.738 810.67,-469.008 814.908,-474.579"/>
706
+
</g>
707
+
<!-- message_content->follow_JS -->
708
+
<g id="edge24" class="edge"><title>message_content->follow_JS</title>
709
+
<path fill="none" stroke="black" d="M804.401,-505.885C807.342,-505.219 810.261,-504.586 813.118,-504 920.965,-481.89 1049.07,-465 1117.75,-456.693"/>
710
+
<polygon fill="black" stroke="black" points="1118.34,-460.149 1127.85,-455.483 1117.51,-453.198 1118.34,-460.149"/>
711
+
</g>
712
+
<!-- message_content->like_JS -->
713
+
<g id="edge25" class="edge"><title>message_content->like_JS</title>
714
+
<path fill="none" stroke="black" d="M691.912,-513.684C611.053,-502.88 466.029,-482.389 415.118,-468 412.652,-467.303 410.135,-466.501 407.622,-465.631"/>
715
+
<polygon fill="black" stroke="black" points="408.656,-462.281 398.064,-462.032 406.189,-468.832 408.656,-462.281"/>
716
+
</g>
717
+
<!-- message_content->post_JS -->
718
+
<g id="edge26" class="edge"><title>message_content->post_JS</title>
719
+
<path fill="none" stroke="black" d="M692.024,-511.695C641.52,-502.674 565.552,-487.504 501.118,-468 498.541,-467.22 495.902,-466.353 493.261,-465.435"/>
720
+
<polygon fill="black" stroke="black" points="494.388,-462.12 483.795,-461.95 491.97,-468.689 494.388,-462.12"/>
721
+
</g>
722
+
<!-- message_confirm->message_confirm_JS -->
723
+
<g id="edge28" class="edge"><title>message_confirm->message_confirm_JS</title>
724
+
<path fill="none" stroke="black" d="M735.028,-359.697C738.67,-351.728 743.072,-342.1 747.111,-333.264"/>
725
+
<polygon fill="black" stroke="black" points="750.324,-334.654 751.298,-324.104 743.958,-331.744 750.324,-334.654"/>
726
+
</g>
727
+
<!-- file_input->file_input_JS -->
728
+
<g id="edge30" class="edge"><title>file_input->file_input_JS</title>
729
+
<path fill="none" stroke="black" d="M562.118,-503.697C562.118,-495.983 562.118,-486.712 562.118,-478.112"/>
730
+
<polygon fill="black" stroke="black" points="565.618,-478.104 562.118,-468.104 558.618,-478.104 565.618,-478.104"/>
731
+
</g>
732
+
<!-- suggest->suggest_mentions_JS -->
733
+
<g id="edge32" class="edge"><title>suggest->suggest_mentions_JS</title>
734
+
<path fill="none" stroke="black" d="M878.138,-519.08C953.111,-513.608 1156.7,-496.471 1217.12,-468 1248.69,-453.124 1277.28,-424.584 1295.33,-403.822"/>
735
+
<polygon fill="black" stroke="black" points="1298.15,-405.909 1301.94,-396.016 1292.8,-401.386 1298.15,-405.909"/>
736
+
</g>
737
+
<!-- sbot_user_feed->sbot_api_JS -->
738
+
<g id="edge35" class="edge"><title>sbot_user_feed->sbot_api_JS</title>
739
+
<path fill="none" stroke="black" d="M1431.2,-935.856C1476.8,-914.159 1543.12,-872.097 1543.12,-811 1543.12,-811 1543.12,-811 1543.12,-161 1543.12,-101.17 1497.11,-95.578 1442.12,-72 1345.18,-30.4355 1029.19,-21.4673 898.011,-19.5323"/>
740
+
<polygon fill="black" stroke="black" points="897.816,-16.0294 887.769,-19.3901 897.719,-23.0287 897.816,-16.0294"/>
741
+
</g>
742
+
<!-- avatar_profile->avatar_profile_JS -->
743
+
<g id="edge38" class="edge"><title>avatar_profile->avatar_profile_JS</title>
744
+
<path fill="none" stroke="black" d="M1366.45,-863.929C1346.18,-834.369 1302.99,-771.84 1265.12,-720 1239.52,-684.954 1209.01,-645.147 1189.6,-620.059"/>
745
+
<polygon fill="black" stroke="black" points="1192.12,-617.592 1183.23,-611.83 1186.59,-621.879 1192.12,-617.592"/>
746
+
</g>
747
+
<!-- sbot_blobs_add->sbot_api_JS -->
748
+
<g id="edge40" class="edge"><title>sbot_blobs_add->sbot_api_JS</title>
749
+
<path fill="none" stroke="black" d="M539.37,-143.835C557.125,-123.588 589.385,-90.3673 624.118,-72 674.891,-45.1499 739.587,-31.6085 784.884,-24.9748"/>
750
+
<polygon fill="black" stroke="black" points="785.395,-28.4374 794.814,-23.5855 784.425,-21.5049 785.395,-28.4374"/>
751
+
</g>
752
+
<!-- avatar->avatar_JS -->
753
+
<g id="edge42" class="edge"><title>avatar->avatar_JS</title>
754
+
<path fill="none" stroke="black" d="M1100.26,-359.697C1094,-351.265 1086.36,-340.975 1079.49,-331.732"/>
755
+
<polygon fill="black" stroke="black" points="1082.24,-329.563 1073.47,-323.622 1076.62,-333.737 1082.24,-329.563"/>
756
+
</g>
757
+
<!-- sbot_links2->sbot_api_JS -->
758
+
<g id="edge44" class="edge"><title>sbot_links2->sbot_api_JS</title>
759
+
<path fill="none" stroke="black" d="M1166.03,-78.9782C1155.96,-76.5783 1145.17,-74.1039 1135.12,-72 1051.04,-54.396 952.719,-37.456 893.493,-27.6445"/>
760
+
<polygon fill="black" stroke="black" points="893.696,-24.1306 883.259,-25.9557 892.556,-31.0372 893.696,-24.1306"/>
761
+
</g>
762
+
<!-- message_link->message_link_JS -->
763
+
<g id="edge50" class="edge"><title>message_link->message_link_JS</title>
764
+
<path fill="none" stroke="black" d="M349.825,-359.697C340.48,-350.857 328.975,-339.973 318.851,-330.396"/>
765
+
<polygon fill="black" stroke="black" points="321.107,-327.712 311.437,-323.383 316.296,-332.798 321.107,-327.712"/>
766
+
</g>
767
+
<!-- sbot_get->sbot_api_JS -->
768
+
<g id="edge55" class="edge"><title>sbot_get->sbot_api_JS</title>
769
+
<path fill="none" stroke="black" d="M230.67,-215.888C264.982,-197.022 322.616,-166.383 374.118,-144 460.379,-106.51 482.509,-97.2285 573.118,-72 646.041,-51.6957 732.237,-36.0509 786.548,-27.1837"/>
770
+
<polygon fill="black" stroke="black" points="787.325,-30.6037 796.639,-25.5543 786.209,-23.6932 787.325,-30.6037"/>
771
+
</g>
772
+
<!-- message_meta->channel_JS -->
773
+
<g id="edge60" class="edge"><title>message_meta->channel_JS</title>
774
+
<path fill="none" stroke="black" d="M745.964,-799.632C815.025,-786.388 940.611,-762.303 1010.93,-748.818"/>
775
+
<polygon fill="black" stroke="black" points="1011.72,-752.228 1020.89,-746.907 1010.41,-745.354 1011.72,-752.228"/>
776
+
</g>
777
+
<!-- message_meta->like_JS -->
778
+
<g id="edge61" class="edge"><title>message_meta->like_JS</title>
779
+
<path fill="none" stroke="black" d="M670.472,-791.976C637.78,-770.078 582.148,-729.411 545.118,-684 487.951,-613.895 510.018,-571.784 450.118,-504 437.503,-489.726 420.297,-477.316 405.445,-468.101"/>
780
+
<polygon fill="black" stroke="black" points="406.943,-464.919 396.565,-462.788 403.349,-470.925 406.943,-464.919"/>
781
+
</g>
782
+
<!-- message_meta->private_JS -->
783
+
<g id="edge62" class="edge"><title>message_meta->private_JS</title>
784
+
<path fill="none" stroke="black" d="M731.855,-791.876C753.312,-781.299 780.809,-767.744 802.59,-757.007"/>
785
+
<polygon fill="black" stroke="black" points="804.424,-760.005 811.846,-752.444 801.329,-753.726 804.424,-760.005"/>
786
+
</g>
787
+
<!-- message_meta->timestamp_JS -->
788
+
<g id="edge63" class="edge"><title>message_meta->timestamp_JS</title>
789
+
<path fill="none" stroke="black" d="M702.803,-791.697C705.365,-783.898 708.45,-774.509 711.302,-765.829"/>
790
+
<polygon fill="black" stroke="black" points="714.701,-766.697 714.498,-756.104 708.051,-764.512 714.701,-766.697"/>
791
+
</g>
792
+
<!-- message_action->like_JS -->
793
+
<g id="edge65" class="edge"><title>message_action->like_JS</title>
794
+
<path fill="none" stroke="black" d="M493.618,-791.993C481.346,-765.822 460.118,-713.79 460.118,-667 460.118,-667 460.118,-667 460.118,-593 460.118,-544.733 423.314,-498.848 397.859,-472.884"/>
795
+
<polygon fill="black" stroke="black" points="400.268,-470.343 390.699,-465.794 395.343,-475.318 400.268,-470.343"/>
796
+
</g>
797
+
<!-- message_unbox->crypto_JS -->
798
+
<g id="edge77" class="edge"><title>message_unbox->crypto_JS</title>
799
+
<path fill="none" stroke="black" d="M844.589,-647.697C845.691,-639.983 847.016,-630.712 848.244,-622.112"/>
800
+
<polygon fill="black" stroke="black" points="851.725,-622.499 849.674,-612.104 844.795,-621.509 851.725,-622.499"/>
801
+
</g>
802
+
<!-- screen_view->channel_JS -->
803
+
<g id="edge93" class="edge"><title>screen_view->channel_JS</title>
804
+
<path fill="none" stroke="black" d="M1085.65,-1092.76C1116.97,-1087.16 1157.55,-1074.17 1178.12,-1044 1242.14,-950.085 1134.56,-816.039 1085.03,-762.45"/>
805
+
<polygon fill="black" stroke="black" points="1087.57,-760.038 1078.17,-755.142 1082.47,-764.829 1087.57,-760.038"/>
806
+
</g>
807
+
<!-- screen_view->feed_JS -->
808
+
<g id="edge94" class="edge"><title>screen_view->feed_JS</title>
809
+
<path fill="none" stroke="black" d="M1085.85,-1087.41C1146.14,-1073.88 1255.43,-1049.37 1314.54,-1036.1"/>
810
+
<polygon fill="black" stroke="black" points="1315.63,-1039.45 1324.62,-1033.84 1314.1,-1032.62 1315.63,-1039.45"/>
811
+
</g>
812
+
<!-- screen_view->invite_JS -->
813
+
<g id="edge95" class="edge"><title>screen_view->invite_JS</title>
814
+
<path fill="none" stroke="black" d="M1085.91,-1090.75C1121.85,-1083.89 1173.26,-1070.18 1211.12,-1044 1235.09,-1027.42 1254.78,-1000.19 1267.1,-980.203"/>
815
+
<polygon fill="black" stroke="black" points="1270.12,-981.978 1272.24,-971.597 1264.11,-978.393 1270.12,-981.978"/>
816
+
</g>
817
+
<!-- screen_view->notifications_JS -->
818
+
<g id="edge96" class="edge"><title>screen_view->notifications_JS</title>
819
+
<path fill="none" stroke="black" d="M1058.44,-1079.7C1066.06,-1071.09 1075.4,-1060.55 1083.71,-1051.17"/>
820
+
<polygon fill="black" stroke="black" points="1086.38,-1053.43 1090.39,-1043.62 1081.14,-1048.79 1086.38,-1053.43"/>
821
+
</g>
822
+
<!-- screen_view->private_JS -->
823
+
<g id="edge97" class="edge"><title>screen_view->private_JS</title>
824
+
<path fill="none" stroke="black" d="M1000.47,-1093.5C936.936,-1087.4 821.805,-1072.65 793.118,-1044 764.497,-1015.42 774.118,-995.447 774.118,-955 774.118,-955 774.118,-955 774.118,-881 774.118,-836.474 800.867,-790.637 820.046,-763.496"/>
825
+
<polygon fill="black" stroke="black" points="822.909,-765.511 825.964,-755.366 817.249,-761.392 822.909,-765.511"/>
826
+
</g>
827
+
<!-- screen_view->public_JS -->
828
+
<g id="edge98" class="edge"><title>screen_view->public_JS</title>
829
+
<path fill="none" stroke="black" d="M1000.49,-1082.15C965.669,-1070.03 916.786,-1053 882.568,-1041.09"/>
830
+
<polygon fill="black" stroke="black" points="883.486,-1037.7 872.891,-1037.72 881.184,-1044.31 883.486,-1037.7"/>
831
+
</g>
832
+
<!-- screen_view->search_JS -->
833
+
<g id="edge99" class="edge"><title>screen_view->search_JS</title>
834
+
<path fill="none" stroke="black" d="M1027.54,-1079.7C1019.69,-1070.97 1010.04,-1060.24 1001.5,-1050.75"/>
835
+
<polygon fill="black" stroke="black" points="1003.94,-1048.24 994.648,-1043.14 998.736,-1052.92 1003.94,-1048.24"/>
836
+
</g>
837
+
<!-- screen_view->thread_JS -->
838
+
<g id="edge100" class="edge"><title>screen_view->thread_JS</title>
839
+
<path fill="none" stroke="black" d="M1000.21,-1091.45C901.292,-1078.65 657.628,-1047.12 552.139,-1033.47"/>
840
+
<polygon fill="black" stroke="black" points="552.438,-1029.98 542.071,-1032.17 551.539,-1036.92 552.438,-1029.98"/>
841
+
</g>
842
+
<!-- search_box->search_box_JS -->
843
+
<g id="edge102" class="edge"><title>search_box->search_box_JS</title>
844
+
<path fill="none" stroke="black" d="M1395.31,-1079.94C1439.75,-1058.08 1505.12,-1015.6 1505.12,-955 1505.12,-955 1505.12,-955 1505.12,-881 1505.12,-838.633 1485.7,-792.723 1471.57,-764.911"/>
845
+
<polygon fill="black" stroke="black" points="1474.57,-763.098 1466.83,-755.863 1468.37,-766.346 1474.57,-763.098"/>
846
+
</g>
847
+
<!-- app->tabs_JS -->
848
+
<g id="edge110" class="edge"><title>app->tabs_JS</title>
849
+
<path fill="none" stroke="black" d="M1043.12,-1223.7C1043.12,-1215.98 1043.12,-1206.71 1043.12,-1198.11"/>
850
+
<polygon fill="black" stroke="black" points="1046.62,-1198.1 1043.12,-1188.1 1039.62,-1198.1 1046.62,-1198.1"/>
851
+
</g>
852
+
</g>
853
+
</svg>
+7
decent/index.js
+7
decent/index.js
+5
decent/keys.js
+5
decent/keys.js
+32
decent/keyscroll.js
+32
decent/keyscroll.js
···
1
+
module.exports = function (container) {
2
+
var curMsgEl
3
+
4
+
if (!container)
5
+
return function() {}
6
+
7
+
container.addEventListener('click', onActivateChild, false)
8
+
container.addEventListener('focus', onActivateChild, true)
9
+
10
+
function onActivateChild(ev) {
11
+
for (var el = ev.target; el; el = el.parentNode) {
12
+
if (el.parentNode == container) {
13
+
curMsgEl = el
14
+
return
15
+
}
16
+
}
17
+
}
18
+
19
+
function selectChild(el) {
20
+
if (!el) return
21
+
(el.scrollIntoViewIfNeeded || el.scrollIntoView).call(el)
22
+
el.focus()
23
+
curMsgEl = el
24
+
}
25
+
26
+
return function scroll(d) {
27
+
selectChild(!curMsgEl ? container.firstChild
28
+
: d > 0 ? curMsgEl.nextElementSibling || container.lastChild
29
+
: d < 0 ? curMsgEl.previousElementSibling || container.firstChild
30
+
: curMsgEl)
31
+
}
32
+
}
+116
decent/manifest.json
+116
decent/manifest.json
···
1
+
{
2
+
"auth": "async",
3
+
"address": "sync",
4
+
"manifest": "sync",
5
+
"get": "async",
6
+
"createFeedStream": "source",
7
+
"createLogStream": "source",
8
+
"messagesByType": "source",
9
+
"createHistoryStream": "source",
10
+
"createUserStream": "source",
11
+
"links": "source",
12
+
"relatedMessages": "async",
13
+
"add": "async",
14
+
"publish": "async",
15
+
"getAddress": "sync",
16
+
"getLatest": "async",
17
+
"latest": "source",
18
+
"latestSequence": "async",
19
+
"whoami": "sync",
20
+
"usage": "sync",
21
+
"gossip": {
22
+
"peers": "sync",
23
+
"add": "sync",
24
+
"ping": "duplex",
25
+
"connect": "async",
26
+
"changes": "source",
27
+
"reconnect": "sync"
28
+
},
29
+
"friends": {
30
+
"all": "async",
31
+
"hops": "async",
32
+
"createFriendStream": "source",
33
+
"get": "sync"
34
+
},
35
+
"replicate": {
36
+
"changes": "source"
37
+
},
38
+
"invite": {
39
+
"create": "async",
40
+
"accept": "async",
41
+
"use": "async"
42
+
},
43
+
"block": {
44
+
"isBlocked": "sync"
45
+
},
46
+
"private": {
47
+
"publish": "async",
48
+
"unbox": "sync"
49
+
},
50
+
"plugins": {
51
+
"install": "source",
52
+
"uninstall": "source",
53
+
"enable": "async",
54
+
"disable": "async"
55
+
},
56
+
"notifier": {},
57
+
"patchwork": {
58
+
"createEventStream": "source",
59
+
"getIndexCounts": "async",
60
+
"createInboxStream": "source",
61
+
"createBookmarkStream": "source",
62
+
"createMentionStream": "source",
63
+
"createNoticeStream": "source",
64
+
"createPrivatePostStream": "source",
65
+
"createPublicPostStream": "source",
66
+
"createChannelStream": "source",
67
+
"createSearchStream": "source",
68
+
"markRead": "async",
69
+
"markUnread": "async",
70
+
"markAllRead": "async",
71
+
"toggleRead": "async",
72
+
"isRead": "async",
73
+
"bookmark": "async",
74
+
"unbookmark": "async",
75
+
"toggleBookmark": "async",
76
+
"isBookmarked": "async",
77
+
"getChannels": "async",
78
+
"pinChannel": "async",
79
+
"unpinChannel": "async",
80
+
"toggleChannelPinned": "async",
81
+
"watchChannel": "async",
82
+
"unwatchChannel": "async",
83
+
"toggleChannelWatched": "async",
84
+
"addFileToBlobs": "async",
85
+
"saveBlobToFile": "async",
86
+
"useLookupCode": "source",
87
+
"getMyProfile": "async",
88
+
"getProfile": "async",
89
+
"getAllProfiles": "async",
90
+
"getNamesById": "async",
91
+
"getIdsByName": "async",
92
+
"getName": "async",
93
+
"getActionItems": "async"
94
+
},
95
+
"blobs": {
96
+
"get": "source",
97
+
"add": "sink",
98
+
"ls": "source",
99
+
"has": "async",
100
+
"size": "async",
101
+
"meta": "async",
102
+
"want": "async",
103
+
"push": "async",
104
+
"changes": "source",
105
+
"createWants": "source"
106
+
},
107
+
"links2": {
108
+
"read": "source",
109
+
"dump": "source"
110
+
},
111
+
"query": {
112
+
"read": "source",
113
+
"dump": "source"
114
+
},
115
+
"ws": {}
116
+
}
+62
decent/modules_basic/about.js
+62
decent/modules_basic/about.js
···
1
+
2
+
var h = require('hyperscript')
3
+
4
+
function idLink (id) {
5
+
return h('a', {href:'#'+id}, id)
6
+
}
7
+
8
+
function asLink (ln) {
9
+
return 'string' === typeof ln ? ln : ln.link
10
+
}
11
+
12
+
//var blob_url = require('../plugs').first(exports.blob_url = [])
13
+
14
+
exports.needs = {
15
+
blob_url: 'first'
16
+
}
17
+
18
+
exports.gives = {
19
+
message_content: true,
20
+
message_content_mini: true
21
+
}
22
+
23
+
exports.create = function (api) {
24
+
var exports = {}
25
+
26
+
exports.message_content = function (msg) {
27
+
if(msg.value.content.type !== 'about') return
28
+
29
+
if(!msg.value.content.image && !msg.value.content.name)
30
+
return
31
+
32
+
var about = msg.value.content
33
+
var id = msg.value.content.about
34
+
return h('p',
35
+
about.about === msg.value.author
36
+
? h('span', 'self-identifies ')
37
+
: h('span', 'identifies ', idLink(id)),
38
+
' as ',
39
+
h('a', {href:"#"+about.about},
40
+
about.name || null,
41
+
about.image
42
+
? h('img.avatar--thumbnail', {src: api.blob_url(asLink(about.image))})
43
+
: null
44
+
)
45
+
)
46
+
}
47
+
48
+
exports.message_content_mini = function (msg) {
49
+
if(msg.value.content.type !== 'about') return
50
+
51
+
var about = msg.value.content
52
+
var id = msg.value.content.about
53
+
if(!about.name) return
54
+
55
+
if(about.about === msg.value.author)
56
+
return ['self-identifies as ', h('a', {href:"#"+about.about}, about.name)]
57
+
58
+
return ['identifies ', idLink(id), ' as ', h('a', {href:"#"+about.about}, about.name)]
59
+
}
60
+
61
+
return exports
62
+
}
+163
decent/modules_basic/avatar-edit.js
+163
decent/modules_basic/avatar-edit.js
···
1
+
'use strict'
2
+
var dataurl = require('dataurl-')
3
+
var hyperfile = require('hyperfile')
4
+
var hypercrop = require('hypercrop')
5
+
var hyperlightbox = require('hyperlightbox')
6
+
var h = require('hyperscript')
7
+
var pull = require('pull-stream')
8
+
var getAvatar = require('ssb-avatar')
9
+
var plugs = require('../plugs')
10
+
var ref = require('ssb-ref')
11
+
var visualize = require('visualize-buffer')
12
+
var self_id = require('../keys').id
13
+
14
+
//var confirm = plugs.first(exports.message_confirm = [])
15
+
//var sbot_blobs_add = plugs.first(exports.sbot_blobs_add = [])
16
+
//var blob_url = plugs.first(exports.blob_url = [])
17
+
//var sbot_links = plugs.first(exports.sbot_links = [])
18
+
//var avatar_name = plugs.first(exports.avatar_name = [])
19
+
//
20
+
21
+
function crop (d, cb) {
22
+
var canvas
23
+
var controls = h('div.row.avatar_pic__controls',
24
+
h('button', 'okay', {onclick: function () {
25
+
if (!canvas || !canvas.selection) return cb(new Error('image not ready'))
26
+
cb(null, canvas.selection.toDataURL())
27
+
}}),
28
+
h('button', 'cancel', {onclick: function () {
29
+
cb(new Error('canceled'))
30
+
}})
31
+
)
32
+
33
+
var container = h('div.column.avatar_pic',
34
+
// canvas will be inserted above controls once the image loads
35
+
controls
36
+
)
37
+
38
+
var img = new Image()
39
+
img.onload = function () {
40
+
canvas = hypercrop(img)
41
+
container.insertBefore(canvas, controls)
42
+
}
43
+
img.src = d
44
+
45
+
return container
46
+
}
47
+
48
+
exports.needs = {
49
+
message_confirm: 'first',
50
+
blob_url: 'first',
51
+
sbot_links: 'first',
52
+
avatar_name: 'first'
53
+
}
54
+
55
+
exports.gives = 'avatar_edit'
56
+
57
+
exports.create = function (api) {
58
+
return function (id) {
59
+
60
+
var img = visualize(new Buffer(id.substring(1), 'base64'), 256)
61
+
img.classList.add('avatar--large')
62
+
63
+
var lb = hyperlightbox()
64
+
var name_input = h('input', {placeholder: 'rename'})
65
+
var name = api.avatar_name(id)
66
+
var selected = null, selected_data = null
67
+
68
+
getAvatar({links: api.sbot_links}, self_id, id, function (err, avatar) {
69
+
if (err) return console.error(err)
70
+
//don't show user has already selected an avatar.
71
+
if(selected) return
72
+
if(ref.isBlob(avatar.image))
73
+
img.src = api.blob_url(avatar.image)
74
+
})
75
+
76
+
var also_pictured = h('div.profile__alsopicturedas.wrap')
77
+
78
+
pull(
79
+
api.sbot_links({dest: id, rel: 'about', values: true}),
80
+
pull.map(function (e) {
81
+
return e.value.content.image
82
+
}),
83
+
pull.filter(function (e) {
84
+
return e && 'string' == typeof e.link
85
+
}),
86
+
pull.unique('link'),
87
+
pull.drain(function (image) {
88
+
also_pictured.appendChild(
89
+
h('a', {href:'#', onclick: function (ev) {
90
+
ev.stopPropagation()
91
+
ev.preventDefault()
92
+
selected = image
93
+
img.src = api.blob_url(image.link || image)
94
+
}},
95
+
h('img.avatar--thumbnail', {src: api.blob_url(image)})
96
+
)
97
+
)
98
+
})
99
+
)
100
+
101
+
return h('div.row.profile',
102
+
lb,
103
+
img,
104
+
h('div.column.profile__info',
105
+
h('strong', name),
106
+
name_input,
107
+
108
+
hyperfile.asDataURL(function (data) {
109
+
var el = crop(data, function (err, data) {
110
+
if(data) {
111
+
img.src = data
112
+
var _data = dataurl.parse(data)
113
+
var xhr = new XMLHttpRequest()
114
+
xhr.open('POST', '/blobs/add', true)
115
+
xhr.responseType = 'text'
116
+
xhr.onload = function () {
117
+
if (xhr.status < 200 || xhr.status >= 300) {
118
+
return alert('blob upload failed: status ' + xhr.status)
119
+
}
120
+
var hash = (xhr.responseText || '').trim()
121
+
selected = {
122
+
link: hash,
123
+
size: _data.data.length,
124
+
type: _data.mimetype,
125
+
width: 512,
126
+
height: 512
127
+
}
128
+
}
129
+
xhr.onerror = function () {
130
+
alert('blob upload network error')
131
+
}
132
+
xhr.send(_data.data)
133
+
}
134
+
lb.close()
135
+
})
136
+
lb.show(el)
137
+
}),
138
+
h('button', 'update', {onclick: function () {
139
+
if(name_input.value)
140
+
name.textContent = name_input.value
141
+
142
+
if(selected)
143
+
api.message_confirm({
144
+
type: 'about',
145
+
about: id,
146
+
name: name_input.value || undefined,
147
+
image: selected.link || selected
148
+
})
149
+
else if(name_input.value) //name only
150
+
api.message_confirm({
151
+
type: 'about',
152
+
about: id,
153
+
name: name_input.value || undefined,
154
+
})
155
+
else
156
+
//another moment of weakness
157
+
alert('must select a name or image')
158
+
}}),
159
+
also_pictured
160
+
)
161
+
)
162
+
}
163
+
}
+118
decent/modules_basic/avatar-image.js
+118
decent/modules_basic/avatar-image.js
···
1
+
'use strict'
2
+
var getAvatar = require('ssb-avatar')
3
+
var h = require('hyperscript')
4
+
var ref = require('ssb-ref')
5
+
var path = require('path')
6
+
var visualize = require('visualize-buffer')
7
+
8
+
var pull = require('pull-stream')
9
+
10
+
var self_id = require('../keys').id
11
+
12
+
//var plugs = require('../plugs')
13
+
//var sbot_query = plugs.first(exports.sbot_query = [])
14
+
//var blob_url = require('../plugs').first(exports.blob_url = [])
15
+
//
16
+
17
+
exports.needs = {
18
+
sbot_query: 'first',
19
+
blob_url: 'first'
20
+
}
21
+
22
+
exports.gives = {
23
+
connection_status: true, avatar_image: true
24
+
}
25
+
26
+
27
+
function isFunction (f) {
28
+
return 'function' === typeof f
29
+
}
30
+
31
+
32
+
var ready = false
33
+
var waiting = []
34
+
35
+
var last = 0
36
+
37
+
exports.create = function (api) {
38
+
var avatars = {}
39
+
40
+
//blah blah
41
+
return {
42
+
connection_status: function (err) {
43
+
if (err) return
44
+
pull(
45
+
api.sbot_query({
46
+
query: [{
47
+
$filter: {
48
+
timestamp: {$gt: last || 0 },
49
+
value: { content: {
50
+
type: "about",
51
+
about: {$prefix: "@"}
52
+
}}
53
+
}},
54
+
{
55
+
$map: {
56
+
id: ["value", "content", "about"],
57
+
image: ["value", "content", "image"],
58
+
by: ["value", "author"],
59
+
ts: 'timestamp'
60
+
}}],
61
+
live: true
62
+
}),
63
+
pull.drain(function (a) {
64
+
if(a.sync) {
65
+
ready = true
66
+
while(waiting.length) waiting.shift()()
67
+
return
68
+
}
69
+
last = a.ts
70
+
71
+
var image = a.image
72
+
if(image && 'object' === typeof image && 'string' === typeof image.link)
73
+
image = image.link
74
+
75
+
if(!ref.isBlob(image))
76
+
return
77
+
78
+
a.image = image
79
+
80
+
//set image for avatar.
81
+
//overwrite another avatar
82
+
//you picked.
83
+
if(
84
+
//if there is no avatar
85
+
(!avatars[a.id]) ||
86
+
//if i chose this avatar
87
+
(a.by == self_id) ||
88
+
//they chose their own avatar,
89
+
//and current avatar was not chosen by me
90
+
(a.by === a.id && avatars[a.id].by != self_id)
91
+
)
92
+
avatars[a.id] = a
93
+
94
+
})
95
+
)
96
+
},
97
+
98
+
avatar_image: function (author, classes) {
99
+
classes = classes || ''
100
+
if(classes && 'string' === typeof classes) classes = '.avatar--'+classes
101
+
102
+
var img = visualize(new Buffer(author.substring(1), 'base64'), 256)
103
+
;(classes || '').split('.').filter(Boolean).forEach(function (c) {
104
+
img.classList.add(c)
105
+
})
106
+
107
+
function go () {
108
+
if(avatars[author]) img.src = api.blob_url(avatars[author].image)
109
+
}
110
+
111
+
if(!ready)
112
+
waiting.push(go)
113
+
else go()
114
+
115
+
return img
116
+
}
117
+
}
118
+
}
+22
decent/modules_basic/avatar-link.js
+22
decent/modules_basic/avatar-link.js
···
1
+
var h = require('hyperscript')
2
+
3
+
exports.needs = {signifier: 'first'}
4
+
5
+
exports.gives = 'avatar_link'
6
+
7
+
exports.create = function (api) {
8
+
return function (id, element) {
9
+
10
+
var link = h('a.avatar', {href: "#"+id, title: id}, element)
11
+
12
+
api.signifier(id, function (_, names) {
13
+
if(names.length)
14
+
link.title = names[0].name + '\n '+id
15
+
})
16
+
17
+
return link
18
+
}
19
+
}
20
+
21
+
22
+
+28
decent/modules_basic/avatar-name.js
+28
decent/modules_basic/avatar-name.js
···
1
+
2
+
var signifier = require('../plugs').first(exports.signifier = [])
3
+
var h = require('hyperscript')
4
+
5
+
exports.needs = { signifier: 'first' }
6
+
7
+
exports.gives = 'avatar_name'
8
+
9
+
exports.create = function (api) {
10
+
11
+
return function name (id) {
12
+
var n = h('span.avatar_name', id ? id.substring(0, 10) : "")
13
+
14
+
//choose the most popular name for this person.
15
+
//for anything like this you'll see I have used sbot.links2
16
+
//which is the ssb-links plugin. as you'll see the query interface
17
+
//is pretty powerful!
18
+
//TODO: "most popular" name is easily gameable.
19
+
//must come up with something better than this.
20
+
21
+
api.signifier(id, function (_, names) {
22
+
if(names.length) n.textContent = names[0].name
23
+
})
24
+
25
+
return n
26
+
}
27
+
28
+
}
+88
decent/modules_basic/avatar-profile.js
+88
decent/modules_basic/avatar-profile.js
···
1
+
var h = require('hyperscript')
2
+
var pull = require('pull-stream')
3
+
4
+
//var plugs = require('../plugs')
5
+
//var avatar_image_link = plugs.first(exports.avatar_image_link = [])
6
+
//var avatar_action = plugs.map(exports.avatar_action = [])
7
+
//var avatar_edit = plugs.first(exports.avatar_edit = [])
8
+
9
+
//var follows = plugs.first(exports.follows = [])
10
+
//var followers = plugs.first(exports.followers = [])
11
+
//
12
+
exports.needs = {
13
+
avatar_image_link: 'first',
14
+
avatar_action: 'map',
15
+
avatar_edit: 'first',
16
+
follows: 'first',
17
+
followers: 'first'
18
+
}
19
+
20
+
exports.gives = 'avatar_profile'
21
+
22
+
function streamToList(stream, el) {
23
+
pull(
24
+
stream,
25
+
pull.drain(function (item) {
26
+
if(item) el.appendChild(item)
27
+
})
28
+
)
29
+
return el
30
+
}
31
+
32
+
exports.create = function (api) {
33
+
34
+
function image_link (id) {
35
+
return api.avatar_image_link(id, 'thumbnail')
36
+
}
37
+
38
+
return function (id) {
39
+
40
+
var follows_el = h('div.profile__follows.wrap')
41
+
var friends_el = h('div.profile__friendss.wrap')
42
+
var followers_el = h('div.profile__followers.wrap')
43
+
var a, b
44
+
45
+
pull(api.follows(id), pull.unique(), pull.collect(function (err, ary) {
46
+
a = ary || []; next()
47
+
}))
48
+
pull(api.followers(id), pull.unique(), pull.collect(function (err, ary) {
49
+
b = ary || {}; next()
50
+
}))
51
+
52
+
function next () {
53
+
if(!(a && b)) return
54
+
var _c = [], _a = [], _b = []
55
+
56
+
a.forEach(function (id) {
57
+
if(!~b.indexOf(id)) _a.push(id)
58
+
else _c.push(id)
59
+
})
60
+
b.forEach(function (id) {
61
+
if(!~_c.indexOf(id)) _b.push(id)
62
+
})
63
+
function add (ary, el) {
64
+
ary.forEach(function (id) { el.appendChild(image_link(id)) })
65
+
}
66
+
67
+
add(_a, follows_el)
68
+
add(_c, friends_el)
69
+
add(_b, followers_el)
70
+
}
71
+
72
+
73
+
return h('div.column.profile',
74
+
api.avatar_edit(id),
75
+
api.avatar_action(id),
76
+
h('div.profile__relationships.column',
77
+
h('strong', 'follows'),
78
+
follows_el,
79
+
h('strong', 'friends'),
80
+
friends_el,
81
+
h('strong', 'followers'),
82
+
followers_el
83
+
)
84
+
)
85
+
}
86
+
87
+
}
88
+
+37
decent/modules_basic/avatar.js
+37
decent/modules_basic/avatar.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
4
+
exports.needs = {
5
+
avatar_name: 'first',
6
+
avatar_image: 'first',
7
+
avatar_link: 'first'
8
+
}
9
+
10
+
exports.gives = {
11
+
avatar: true,
12
+
avatar_image_name_link: true,
13
+
avatar_image_link: true
14
+
}
15
+
16
+
exports.create = function (api) {
17
+
18
+
var exports = {}
19
+
exports.avatar = function (author, classes) {
20
+
return exports.avatar_image_name_link(author, classes)
21
+
}
22
+
23
+
exports.avatar_image_name_link = function (author, classes) {
24
+
return api.avatar_link(author, [
25
+
api.avatar_image(author, classes),
26
+
api.avatar_name(author)
27
+
])
28
+
}
29
+
30
+
exports.avatar_image_link = function (author, classes) {
31
+
return api.avatar_link(author, api.avatar_image(author, classes))
32
+
}
33
+
34
+
return exports
35
+
}
36
+
37
+
+153
decent/modules_basic/compose.js
+153
decent/modules_basic/compose.js
···
1
+
'use strict'
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var suggest = require('suggest-box')
5
+
var mentions = require('ssb-mentions')
6
+
var lightbox = require('hyperlightbox')
7
+
var cont = require('cont')
8
+
9
+
//var plugs = require('../plugs')
10
+
//var suggest_mentions= plugs.asyncConcat(exports.suggest_mentions = [])
11
+
//var publish = plugs.first(exports.sbot_publish = [])
12
+
//var message_content = plugs.first(exports.message_content = [])
13
+
//var message_confirm = plugs.first(exports.message_confirm = [])
14
+
//var file_input = plugs.first(exports.file_input = [])
15
+
16
+
exports.needs = {
17
+
suggest_mentions: 'map', //<-- THIS MUST BE REWRITTEN
18
+
publish: 'first',
19
+
message_content: 'first',
20
+
message_confirm: 'first',
21
+
file_input: 'first'
22
+
}
23
+
24
+
exports.gives = 'message_compose'
25
+
26
+
function id (e) { return e }
27
+
28
+
/*
29
+
opts can take
30
+
31
+
placeholder: string. placeholder text, defaults to "Write a message"
32
+
prepublish: function. called before publishing a message.
33
+
shrink: boolean. set to false, to make composer not shrink (or hide controls) when unfocused.
34
+
*/
35
+
36
+
exports.create = function (api) {
37
+
38
+
return function (meta, opts, cb) {
39
+
if('function' === typeof cb) {
40
+
if('function' === typeof opts)
41
+
opts = {prepublish: opts}
42
+
}
43
+
44
+
if(!opts) opts = {}
45
+
opts.prepublish = opts.prepublish || id
46
+
47
+
var accessories
48
+
meta = meta || {}
49
+
if(!meta.type) throw new Error('message must have type')
50
+
var ta = h('textarea', {
51
+
placeholder: opts.placeholder || 'Write a message',
52
+
style: {height: opts.shrink === false ? '200px' : ''}
53
+
})
54
+
55
+
if(opts.shrink !== false) {
56
+
var blur
57
+
ta.addEventListener('focus', function () {
58
+
clearTimeout(blur)
59
+
if(!ta.value) {
60
+
ta.style.height = '200px'
61
+
}
62
+
accessories.style.display = 'block'
63
+
})
64
+
ta.addEventListener('blur', function () {
65
+
//don't shrink right away, so there is time
66
+
//to click the publish button.
67
+
clearTimeout(blur)
68
+
blur = setTimeout(function () {
69
+
if(ta.value) return
70
+
ta.style.height = '50px'
71
+
accessories.style.display = 'none'
72
+
}, 200)
73
+
})
74
+
}
75
+
76
+
ta.addEventListener('keydown', function (ev) {
77
+
if(ev.keyCode === 13 && ev.ctrlKey) publish()
78
+
})
79
+
80
+
var files = []
81
+
var filesById = {}
82
+
83
+
function publish() {
84
+
publishBtn.disabled = true
85
+
var content
86
+
try {
87
+
content = JSON.parse(ta.value)
88
+
} catch (err) {
89
+
meta.text = ta.value
90
+
meta.mentions = mentions(ta.value).map(function (mention) {
91
+
// merge markdown-detected mention with file info
92
+
var file = filesById[mention.link]
93
+
if (file) {
94
+
if (file.type) mention.type = file.type
95
+
if (file.size) mention.size = file.size
96
+
}
97
+
return mention
98
+
})
99
+
try {
100
+
meta = opts.prepublish(meta)
101
+
} catch (err) {
102
+
publishBtn.disabled = false
103
+
if (cb) cb(err)
104
+
else alert(err.message)
105
+
}
106
+
return api.message_confirm(meta, done)
107
+
}
108
+
109
+
api.message_confirm(content, done)
110
+
111
+
function done (err, msg) {
112
+
publishBtn.disabled = false
113
+
if(err) return alert(err.stack)
114
+
else if (msg) ta.value = ''
115
+
116
+
if (cb) cb(err, msg)
117
+
}
118
+
}
119
+
120
+
121
+
var publishBtn = h('button.btn.btn-primary', 'Publish', {onclick: publish})
122
+
var composer =
123
+
h('div.message.message-card.compose', h('div.column', ta,
124
+
accessories = h('div.row.compose__controls',
125
+
//hidden until you focus the textarea
126
+
{style: {display: opts.shrink === false ? '' : 'none'}},
127
+
api.file_input(function (file) {
128
+
files.push(file)
129
+
filesById[file.link] = file
130
+
131
+
var embed = file.type.indexOf('image/') === 0 ? '!' : ''
132
+
ta.value += embed + '['+file.name+']('+file.link+')'
133
+
console.log('added:', file)
134
+
}),
135
+
publishBtn)
136
+
)
137
+
)
138
+
139
+
suggest(ta, function (name, cb) {
140
+
cont.para(api.suggest_mentions(name))
141
+
(function (err, ary) {
142
+
cb(null, ary.reduce(function (a, b) {
143
+
if(!b) return a
144
+
return a.concat(b)
145
+
}, []))
146
+
})
147
+
}, {})
148
+
149
+
return composer
150
+
151
+
}
152
+
153
+
}
+66
decent/modules_basic/feed.js
+66
decent/modules_basic/feed.js
···
1
+
var ref = require('ssb-ref')
2
+
var Scroller = require('pull-scroll')
3
+
var h = require('hyperscript')
4
+
var pull = require('pull-stream')
5
+
var u = require('../util')
6
+
7
+
//var plugs = require('../plugs')
8
+
//var sbot_user_feed = plugs.first(exports.sbot_user_feed = [])
9
+
//var message_render = plugs.first(exports.message_render = [])
10
+
//var avatar_profile = plugs.first(exports.avatar_profile = [])
11
+
//var signifier = plugs.first(exports.signifier = [])
12
+
13
+
exports.needs = {
14
+
sbot_user_feed: 'first',
15
+
message_render: 'first',
16
+
avatar_profile: 'first',
17
+
signifier: 'first'
18
+
}
19
+
20
+
exports.gives = 'screen_view'
21
+
22
+
23
+
exports.create = function (api) {
24
+
25
+
return function (id) {
26
+
//TODO: header of user info, avatars, names, follows.
27
+
28
+
if(ref.isFeed(id)) {
29
+
30
+
var content = h('div.column.scroller__content')
31
+
var div = h('div.column.scroller',
32
+
{style: {'overflow':'auto'}},
33
+
h('div.scroller__wrapper',
34
+
h('div', api.avatar_profile(id)),
35
+
content
36
+
)
37
+
)
38
+
39
+
api.signifier(id, function (_, names) {
40
+
if(names.length) div.title = names[0].name
41
+
})
42
+
43
+
44
+
pull(
45
+
api.sbot_user_feed({id: id, old: false, live: true}),
46
+
Scroller(div, content, api.message_render, true, false)
47
+
)
48
+
49
+
//how to handle when have scrolled past the start???
50
+
51
+
pull(
52
+
u.next(api.sbot_user_feed, {
53
+
id: id, reverse: true,
54
+
limit: 50, live: false
55
+
}, ['value', 'sequence']),
56
+
pull.through(console.log.bind(console)),
57
+
Scroller(div, content, api.message_render, false, false)
58
+
)
59
+
60
+
return div
61
+
62
+
}
63
+
}
64
+
65
+
}
66
+
+99
decent/modules_basic/follow.js
+99
decent/modules_basic/follow.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
5
+
//var plugs = require('../plugs')
6
+
//var avatar = plugs.first(exports.avatar = [])
7
+
//var avatar_name = plugs.first(exports.avatar_name = [])
8
+
//var avatar_link = plugs.first(exports.avatar_link = [])
9
+
//var message_confirm = plugs.first(exports.message_confirm = [])
10
+
//var follower_of = plugs.first(exports.follower_of = [])
11
+
12
+
//render a message when someone follows someone,
13
+
//so you see new users
14
+
function isRelated(value, name) {
15
+
return value ? name : value === false ? 'un'+name : ''
16
+
}
17
+
18
+
exports.needs = {
19
+
avatar: 'first',
20
+
avatar_name: 'first',
21
+
avatar_link: 'first',
22
+
message_confirm: 'first',
23
+
follower_of: 'first'
24
+
}
25
+
26
+
exports.gives = {
27
+
message_content: true,
28
+
message_content_mini: true,
29
+
avatar_action: true,
30
+
}
31
+
32
+
exports.create = function (api) {
33
+
var exports = {}
34
+
exports.message_content =
35
+
exports.message_content_mini = function (msg) {
36
+
var content = msg.value.content
37
+
if(content.type == 'contact' && content.contact) {
38
+
var relation = isRelated(content.following, 'follows')
39
+
if(content.blocking) relation = 'blocks'
40
+
return [
41
+
relation, ' ',
42
+
api.avatar_link(content.contact, api.avatar_name(content.contact), '')
43
+
]
44
+
}
45
+
}
46
+
47
+
exports.message_content = function (msg) {
48
+
49
+
var content = msg.value.content
50
+
if(content.type == 'contact' && content.contact) {
51
+
var relation = isRelated(content.following, 'follows')
52
+
if(content.blocking) relation = 'blocks'
53
+
return h('div.contact', relation, api.avatar(msg.value.content.contact, 'thumbnail'))
54
+
}
55
+
}
56
+
57
+
exports.avatar_action = function (id) {
58
+
var follows_you, you_follow
59
+
60
+
var self_id = require('../keys').id
61
+
api.follower_of(self_id, id, function (err, f) {
62
+
you_follow = f
63
+
update()
64
+
})
65
+
api.follower_of(id, self_id, function (err, f) {
66
+
follows_you = f
67
+
update()
68
+
})
69
+
70
+
var state = h('label')
71
+
var label = h('span')
72
+
73
+
function update () {
74
+
state.textContent = (
75
+
follows_you && you_follow ? 'friend'
76
+
: follows_you ? 'follows you'
77
+
: you_follow ? 'you follow'
78
+
: ''
79
+
)
80
+
81
+
label.textContent = you_follow ? 'unfollow' : 'follow'
82
+
}
83
+
84
+
return h('div', state,
85
+
h('a', {href:'#', onclick: function () {
86
+
api.message_confirm({
87
+
type: 'contact',
88
+
contact: id,
89
+
following: !you_follow
90
+
}, function (err, msg) {
91
+
if (err) return console.error(err)
92
+
you_follow = msg.value.content.following
93
+
update()
94
+
})
95
+
}}, h('br'), label)
96
+
)
97
+
}
98
+
return exports
99
+
}
+30
decent/modules_basic/index.js
+30
decent/modules_basic/index.js
···
1
+
module.exports = {
2
+
"about.js": require('./about.js'),
3
+
"avatar-edit.js": require('./avatar-edit.js'),
4
+
"avatar-image.js": require('./avatar-image.js'),
5
+
"avatar-link.js": require('./avatar-link.js'),
6
+
"avatar-name.js": require('./avatar-name.js'),
7
+
"avatar-profile.js": require('./avatar-profile.js'),
8
+
"avatar.js": require('./avatar.js'),
9
+
"compose.js": require('./compose.js'),
10
+
"feed.js": require('./feed.js'),
11
+
"follow.js": require('./follow.js'),
12
+
"invite.js": require('./invite.js'),
13
+
"like.js": require('./like.js'),
14
+
"markdown.js": require('./markdown.js'),
15
+
"message-link.js": require('./message-link.js'),
16
+
"message-name.js": require('./message-name.js'),
17
+
"message.js": require('./message.js'),
18
+
"names.js": require('./names.js'),
19
+
"post.js": require('./post.js'),
20
+
"private.js": require('./private.js'),
21
+
"pub.js": require('./pub.js'),
22
+
"public.js": require('./public.js'),
23
+
"relationships.js": require('./relationships.js'),
24
+
"search-box.js": require('./search-box.js'),
25
+
"setup.js": require('./setup'),
26
+
"suggest-mentions.js": require('./suggest-mentions.js'),
27
+
"thread.js": require('./thread.js'),
28
+
"timestamp.js": require('./timestamp.js')
29
+
}
30
+
+116
decent/modules_basic/invite.js
+116
decent/modules_basic/invite.js
···
1
+
'use strict'
2
+
var ref = require('ssb-ref')
3
+
var ssbClient = require('ssb-client')
4
+
var id = require('../keys').id
5
+
var h = require('hyperscript')
6
+
7
+
var Progress = require('hyperprogress')
8
+
9
+
//var plugs = require('../plugs')
10
+
//var sbot_publish = plugs.first(exports.sbot_publish = [])
11
+
//var sbot_gossip_connect = plugs.first(exports.sbot_gossip_connect = [])
12
+
//var follower_of = plugs.first(exports.follower_of = [])
13
+
14
+
exports.needs = {
15
+
sbot_publish: 'first',
16
+
sbot_gossip_connect: 'first',
17
+
follower_of: 'first',
18
+
invite_parse: 'first',
19
+
}
20
+
21
+
exports.gives = {
22
+
invite_parse: true,
23
+
invite_accept: true,
24
+
screen_view: true
25
+
}
26
+
27
+
exports.create = function (api) {
28
+
var self
29
+
return self = {
30
+
invite_parse: function (invite) {
31
+
return ref.parseInvite(invite)
32
+
},
33
+
34
+
invite_accept: function (invite, onProgress, cb) {
35
+
var data = self.invite_parse(invite)
36
+
if(!data) return cb(new Error('not a valid invite code:' + invite))
37
+
38
+
onProgress('connecting...')
39
+
40
+
api.sbot_gossip_connect(data.remote, function (err) {
41
+
if(err) console.log(err)
42
+
})
43
+
44
+
ssbClient(null, {
45
+
remote: data.invite,
46
+
manifest: { invite: {use: 'async'}, getAddress: 'async' }
47
+
}, function (err, sbot) {
48
+
if(err) return cb(err)
49
+
onProgress('requesting follow...')
50
+
console.log(sbot)
51
+
sbot.invite.use({feed: id}, function (err, msg) {
52
+
53
+
//if they already follow us, just check we actually follow them.
54
+
if(err) api.follower_of(id, data.key, function (_err, follows) {
55
+
if(follows) cb(err)
56
+
else next()
57
+
})
58
+
else next()
59
+
60
+
function next () {
61
+
onProgress('following...')
62
+
63
+
api.sbot_publish({
64
+
type: 'contact',
65
+
contact: data.key,
66
+
following: true,
67
+
}, cb)
68
+
}
69
+
})
70
+
})
71
+
},
72
+
73
+
screen_view: function (invite) {
74
+
75
+
var data = ref.parseInvite(invite)
76
+
if(!data) return
77
+
78
+
var progress = Progress(4)
79
+
80
+
//connect to server
81
+
//request follow
82
+
//post pub announce
83
+
//post follow pub
84
+
var div = h('div.column',
85
+
h('div',
86
+
"you have been invited to join:", h('br'),
87
+
h('code', data.invite)
88
+
),
89
+
h('button', 'accept', {onclick: attempt}),
90
+
progress
91
+
)
92
+
93
+
function attempt () {
94
+
self.invite_accept(invite, function (message) {
95
+
progress.next(message)
96
+
}, function (err) {
97
+
if(err) return progress.fail(err)
98
+
progress.complete()
99
+
//check for redirect
100
+
var parts = location.hash.substring(1).split('#')
101
+
102
+
//TODO: handle in a consistent way with either hashrouting
103
+
//or with tabs...
104
+
if(parts[0] === data.invite)
105
+
location.hash = ''
106
+
else
107
+
console.log("NO REDIRECT")
108
+
})
109
+
}
110
+
111
+
// If we are in the browser, the user can click "accept" to trigger the invite.
112
+
113
+
return div
114
+
}
115
+
}
116
+
}
+88
decent/modules_basic/like.js
+88
decent/modules_basic/like.js
···
1
+
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var pull = require('pull-stream')
5
+
6
+
var plugs = require('../plugs')
7
+
8
+
//var message_confirm = plugs.first(exports.message_confirm = [])
9
+
//var message_link = plugs.first(exports.message_link = [])
10
+
//var sbot_links = plugs.first(exports.sbot_links = [])
11
+
12
+
exports.needs = {
13
+
avatar_name: 'first',
14
+
message_confirm: 'first',
15
+
message_link: 'first',
16
+
sbot_links: 'first'
17
+
}
18
+
19
+
exports.gives = {
20
+
message_content: true,
21
+
message_content_mini: true,
22
+
message_meta: true,
23
+
message_action: true
24
+
}
25
+
26
+
exports.create = function (api) {
27
+
var exports = {}
28
+
29
+
exports.message_content =
30
+
exports.message_content_mini = function (msg, sbot) {
31
+
if(msg.value.content.type !== 'vote') return
32
+
var link = msg.value.content.vote.link
33
+
return [
34
+
msg.value.content.vote.value > 0 ? 'dug' : 'undug',
35
+
' ', api.message_link(link)
36
+
]
37
+
}
38
+
39
+
exports.message_meta = function (msg, sbot) {
40
+
var digs = h('a')
41
+
42
+
var votes = []
43
+
for(var k in CACHE) {
44
+
if(CACHE[k].content.type == 'vote' &&
45
+
(CACHE[k].content.vote == msg.key ||
46
+
CACHE[k].content.vote.link == msg.key
47
+
))
48
+
votes.push({source: CACHE[k].author, dest: k, rel: 'vote'})
49
+
}
50
+
51
+
if(votes.length === 1)
52
+
digs.textContent = ' 1 Dig'
53
+
else if(votes.length > 1)
54
+
digs.textContent = ' ' + votes.length + ' Digs'
55
+
56
+
pull(
57
+
pull.values(votes.map(vote => {
58
+
return api.avatar_name(vote.source)
59
+
})),
60
+
pull.collect(function (err, ary) {
61
+
digs.title = ary.map(x => x.innerHTML).join(" ")
62
+
})
63
+
)
64
+
65
+
return digs
66
+
}
67
+
68
+
exports.message_action = function (msg, sbot) {
69
+
if(msg.value.content.type !== 'vote')
70
+
return h('a.dig', {href: '#', onclick: function () {
71
+
var dig = {
72
+
type: 'vote',
73
+
vote: { link: msg.key, value: 1, expression: 'Dig' }
74
+
}
75
+
if(msg.value.content.recps) {
76
+
dig.recps = msg.value.content.recps.map(function (e) {
77
+
return e && typeof e !== 'string' ? e.link : e
78
+
})
79
+
dig.private = true
80
+
}
81
+
//TODO: actually publish...
82
+
83
+
api.message_confirm(dig)
84
+
}}, 'Dig')
85
+
86
+
}
87
+
return exports
88
+
}
+40
decent/modules_basic/markdown.js
+40
decent/modules_basic/markdown.js
···
1
+
var markdown = require('ssb-markdown')
2
+
var h = require('hyperscript')
3
+
var ref = require('ssb-ref')
4
+
var emojis = require('emoji-named-characters')
5
+
6
+
exports.needs = {
7
+
blob_url: 'first'
8
+
}
9
+
10
+
exports.gives = 'markdown'
11
+
12
+
exports.create = function (api) {
13
+
14
+
function renderEmoji(emoji) {
15
+
return emojis[emoji] || ':' + emoji + ':'
16
+
}
17
+
18
+
return function (content) {
19
+
if('string' === typeof content)
20
+
content = {text: content}
21
+
//handle patchwork style mentions.
22
+
var mentions = {}
23
+
if(Array.isArray(content.mentions))
24
+
content.mentions.forEach(function (link) {
25
+
if(link.name) mentions["@"+link.name] = link.link
26
+
})
27
+
28
+
var md = h('div.markdown')
29
+
md.innerHTML = markdown.block(content.text, {
30
+
emoji: renderEmoji,
31
+
toUrl: function (id) {
32
+
if(ref.isBlob(id)) return api.blob_url(id)
33
+
return '#'+(mentions[id]?mentions[id]:id)
34
+
}
35
+
})
36
+
37
+
return md
38
+
39
+
}
40
+
}
+39
decent/modules_basic/message-link.js
+39
decent/modules_basic/message-link.js
···
1
+
var h = require('hyperscript')
2
+
var ref = require('ssb-ref')
3
+
4
+
//var first = require('../plugs').first
5
+
//var sbot_get = first(exports.sbot_get = [])
6
+
//var message_name = first(exports.message_name = [])
7
+
8
+
exports.needs = {
9
+
message_name: 'first'
10
+
}
11
+
12
+
exports.gives = 'message_link'
13
+
14
+
exports.create = function (api) {
15
+
16
+
return function (id) {
17
+
18
+
if('string' !== typeof id)
19
+
throw new Error('link must be to message id')
20
+
21
+
var link = h('a', {href: '#'+id}, id.substring(0, 10)+'...')
22
+
23
+
if(ref.isMsg(id))
24
+
api.message_name(id, function (err, name) {
25
+
if(err) console.error(err)
26
+
else link.textContent = name
27
+
})
28
+
29
+
return link
30
+
}
31
+
}
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
+26
decent/modules_basic/message-name.js
+26
decent/modules_basic/message-name.js
···
1
+
2
+
function title (s) {
3
+
var m = /^\n*([^\n]{0,40})/.exec(s)
4
+
return m && (m[1].length == 40 ? m[1]+'...' : m[1])
5
+
}
6
+
7
+
exports.needs = { sbot_get: 'first' }
8
+
exports.gives = 'message_name'
9
+
10
+
//TODO: rewrite as observable?
11
+
12
+
exports.create = function (api) {
13
+
return function (id, cb) {
14
+
api.sbot_get(id, function (err, value) {
15
+
if(err && err.name == 'NotFoundError')
16
+
return cb(null, id.substring(0, 10)+'...(missing)')
17
+
if(value.content.type === 'post' && 'string' === typeof value.content.text)
18
+
return cb(null, title(value.content.text))
19
+
else if('string' === typeof value.content.text)
20
+
return cb(null, value.content.type + ':'+title(value.content.text))
21
+
else
22
+
return cb(null, id.substring(0, 10)+'...')
23
+
})
24
+
}
25
+
}
26
+
+129
decent/modules_basic/message.js
+129
decent/modules_basic/message.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
5
+
//var plugs = require('../plugs')
6
+
//
7
+
//var message_content = plugs.first(exports.message_content = [])
8
+
//var message_content_mini = plugs.first(exports.message_content_mini = [])
9
+
//
10
+
//var avatar = plugs.first(exports.avatar = [])
11
+
//var avatar_name = plugs.first(exports.avatar_name = [])
12
+
//var avatar_link = plugs.first(exports.avatar_link = [])
13
+
//var message_meta = plugs.map(exports.message_meta = [])
14
+
//var message_action = plugs.map(exports.message_action = [])
15
+
//var message_link = plugs.first(exports.message_link = [])
16
+
//
17
+
//var sbot_links = plugs.first(exports.sbot_links = [])
18
+
19
+
exports.needs = {
20
+
message_content: 'first',
21
+
message_content_mini: 'first',
22
+
avatar: 'first',
23
+
avatar_name: 'first',
24
+
avatar_link: 'first',
25
+
message_meta: 'map',
26
+
message_action: 'map',
27
+
message_link: 'first',
28
+
// sbot_links: 'first'
29
+
}
30
+
31
+
exports.gives = 'message_render'
32
+
33
+
function message_content_mini_fallback(msg) {
34
+
return h('code', msg.value.content.type)
35
+
}
36
+
37
+
exports.create = function (api) {
38
+
39
+
function mini(msg, el) {
40
+
var content = el
41
+
if(content && content.nodeType === 1)
42
+
content.classList.add('message_content')
43
+
else
44
+
content = h('span.message_content', el)
45
+
46
+
var div = h('div.message.message--mini.message-card.row',
47
+
api.avatar_link(msg.value.author, api.avatar_name(msg.value.author)),
48
+
content,
49
+
h('span.message_meta.row', api.message_meta(msg))
50
+
)
51
+
div.setAttribute('tabindex', '0')
52
+
return div
53
+
}
54
+
55
+
return function (msg, sbot) {
56
+
var el = api.message_content_mini(msg)
57
+
if(el) return mini(msg, el)
58
+
59
+
var el = api.message_content(msg)
60
+
if(!el) return mini(msg, message_content_mini_fallback(msg))
61
+
62
+
var links = []
63
+
for(var k in CACHE) {
64
+
var _msg = CACHE[k]
65
+
if(Array.isArray(_msg.content.mentions)) {
66
+
for(var i = 0; i < _msg.content.mentions.length; i++)
67
+
if(_msg.content.mentions[i].link == msg.key)
68
+
links.push(k)
69
+
}
70
+
}
71
+
72
+
var backlinks = h('div.backlinks')
73
+
if(links.length)
74
+
backlinks.appendChild(h('label', 'backlinks:',
75
+
h('div', links.map(function (key) {
76
+
return api.message_link(key)
77
+
}))
78
+
))
79
+
80
+
81
+
// pull(
82
+
// sbot_links({dest: msg.key, rel: 'mentions', keys: true}),
83
+
// pull.collect(function (err, links) {
84
+
// if(links.length)
85
+
// backlinks.appendChild(h('label', 'backlinks:',
86
+
// h('div', links.map(function (link) {
87
+
// return message_link(link.key)
88
+
// }))
89
+
// ))
90
+
// })
91
+
// )
92
+
93
+
var content = el
94
+
if(content && content.nodeType === 1)
95
+
content.classList.add('message_content')
96
+
else
97
+
content = h('div.message_content', el)
98
+
99
+
var msg = h('div.message.message-card',
100
+
h('div.title.row',
101
+
h('div.avatar', api.avatar(msg.value.author, 'thumbnail')),
102
+
h('div.message_meta.row', api.message_meta(msg))
103
+
),
104
+
content,
105
+
h('div.message_actions.row',
106
+
h('div.actions', api.message_action(msg),
107
+
h('a', {href: '#' + msg.key}, 'Reply')
108
+
)
109
+
),
110
+
backlinks,
111
+
{onkeydown: function (ev) {
112
+
//on enter, hit first meta.
113
+
if(ev.keyCode == 13) {
114
+
115
+
// unless in an input
116
+
if (ev.target.nodeName === 'INPUT'
117
+
|| ev.target.nodeName === 'TEXTAREA') return
118
+
119
+
msg.querySelector('.enter').click()
120
+
}
121
+
}}
122
+
)
123
+
124
+
// ); hyperscript does not seem to set attributes correctly.
125
+
msg.setAttribute('tabindex', '0')
126
+
127
+
return msg
128
+
}
129
+
}
+183
decent/modules_basic/names.js
+183
decent/modules_basic/names.js
···
1
+
var pull = require('pull-stream')
2
+
var many = require('pull-many')
3
+
var mfr = require('map-filter-reduce')
4
+
5
+
function all(stream, cb) {
6
+
pull(stream, pull.collect(cb))
7
+
}
8
+
9
+
//var plugs = require('../plugs')
10
+
//var sbot_links2 = plugs.first(exports.sbot_links2 = [])
11
+
//var sbot_query = plugs.first(exports.sbot_query = [])
12
+
//
13
+
exports.needs = {
14
+
sbot_links2: 'first',
15
+
sbot_query: 'first'
16
+
}
17
+
18
+
exports.gives = {
19
+
connection_status: true,
20
+
signifier: true,
21
+
signified: true,
22
+
}
23
+
24
+
/*
25
+
filter(rel: ['mentions', prefix('@')]) | reduce(name: rel[1], value: count())
26
+
*/
27
+
28
+
var filter = {
29
+
$filter: {
30
+
rel: ["mentions", {$prefix: "@"}]
31
+
}
32
+
}
33
+
var map = {
34
+
$map: {
35
+
name: ['rel', 1],
36
+
id: 'dest',
37
+
ts: 'ts',
38
+
}
39
+
}
40
+
41
+
var reduce = {
42
+
$reduce: {
43
+
name: 'name',
44
+
id: 'id',
45
+
rank: {$count: true},
46
+
ts: {$max: 'ts'}
47
+
}
48
+
}
49
+
50
+
var filter2 = {
51
+
$filter: {
52
+
value: {
53
+
content: {
54
+
type: "about",
55
+
name: {"$prefix": ""},
56
+
about: {"$prefix": ""}
57
+
}
58
+
}
59
+
}
60
+
}
61
+
62
+
var map2 = {
63
+
$map: {
64
+
name: ["value", "content", "name"],
65
+
id: ['value', 'content', 'about'],
66
+
ts: "timestamp"
67
+
}
68
+
}
69
+
70
+
//union with this query...
71
+
72
+
var names = NAMES = []
73
+
function update(name) {
74
+
var n = names.find(function (e) {
75
+
return e.id == name.id && e.name == e.name
76
+
})
77
+
if(!n) {
78
+
name.rank = 1
79
+
//this should be inserted at the right place...
80
+
names.push(name)
81
+
}
82
+
else
83
+
n.rank = n.rank += (name.rank || 1)
84
+
}
85
+
86
+
var ready = false, waiting = []
87
+
88
+
var merge = {
89
+
$reduce: {
90
+
name: 'name',
91
+
id: 'id',
92
+
rank: {$sum: 'rank'},
93
+
ts: {$max: 'ts'}
94
+
}
95
+
}
96
+
97
+
function add_sigil(stream) {
98
+
return pull(stream, pull.map(function (e) {
99
+
if (e && e.id && e.name && e.id[0] !== e.name[0])
100
+
e.name = e.id[0] + e.name
101
+
return e
102
+
})
103
+
)
104
+
}
105
+
106
+
var queryNamedGitRepos = [
107
+
{$filter: {
108
+
value: {
109
+
content: {
110
+
type: "git-repo",
111
+
name: {"$prefix": ""}
112
+
}
113
+
}
114
+
}},
115
+
{$map: {
116
+
name: ["value", "content", "name"],
117
+
id: ['key'],
118
+
ts: "timestamp"
119
+
}},
120
+
reduce
121
+
]
122
+
exports.create = function (api) {
123
+
124
+
var exports = {}
125
+
exports.connection_status = function (err) {
126
+
if(!err) {
127
+
pull(
128
+
many([
129
+
api.sbot_links2({query: [filter, map, reduce]}),
130
+
add_sigil(api.sbot_query({query: [filter2, map2, reduce]})),
131
+
add_sigil(api.sbot_query({query: queryNamedGitRepos}))
132
+
]),
133
+
//reducing also ensures order by the lookup properties
134
+
//in this case: [name, id]
135
+
mfr.reduce(merge),
136
+
pull.collect(function (err, ary) {
137
+
if(!err) {
138
+
NAMES = names = ary
139
+
ready = true
140
+
while(waiting.length) waiting.shift()()
141
+
}
142
+
})
143
+
)
144
+
145
+
pull(many([
146
+
api.sbot_links2({query: [filter, map], old: false}),
147
+
add_sigil(api.sbot_query({query: [filter2, map2], old: false})),
148
+
add_sigil(api.sbot_query({query: queryNamedGitRepos, old: false}))
149
+
]),
150
+
pull.drain(update))
151
+
}
152
+
}
153
+
154
+
function async(fn) {
155
+
return function (value, cb) {
156
+
function go () { cb(null, fn(value)) }
157
+
if(ready) go()
158
+
else waiting.push(go)
159
+
}
160
+
}
161
+
162
+
function rank(ary) {
163
+
//sort by most used, or most recently used
164
+
return ary.sort(function (a, b) { return b.rank - a.rank || b.ts - a.ts })
165
+
}
166
+
167
+
//we are just iterating over the entire array.
168
+
//if this becomes a problem, maintain two arrays
169
+
//one of each sort order, but do not duplicate the objects.
170
+
//that should mean the space required is just 2x object references,
171
+
//not 2x objects, and we can use binary search to find matches.
172
+
173
+
exports.signifier = async(function (id) {
174
+
return rank(names.filter(function (e) { return e.id == id}))
175
+
})
176
+
177
+
exports.signified = async(function (name) {
178
+
var rx = new RegExp('^'+name)
179
+
return rank(names.filter(function (e) { return rx.test(e.name) }))
180
+
})
181
+
182
+
return exports
183
+
}
+44
decent/modules_basic/post.js
+44
decent/modules_basic/post.js
···
1
+
var markdown = require('ssb-markdown')
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var ref = require('ssb-ref')
5
+
6
+
//render a message
7
+
8
+
//var plugs = require('../plugs')
9
+
//var message_link = plugs.first(exports.message_link = [])
10
+
//var markdown = plugs.first(exports.markdown = [])
11
+
//
12
+
13
+
exports.needs = { message_link: 'first', markdown: 'first' }
14
+
15
+
exports.gives = {
16
+
message_content: true
17
+
}
18
+
19
+
exports.create = function (api) {
20
+
var exports = {}
21
+
22
+
exports.message_content = function (data) {
23
+
if(!data.value.content || !data.value.content.text) return
24
+
25
+
var root = data.value.content.root
26
+
if(!root) return api.markdown(data.value.content)
27
+
var re = h('span', 're: ', api.message_link(root))
28
+
29
+
return h('div', re, api.markdown(data.value.content))
30
+
31
+
}
32
+
33
+
return exports
34
+
}
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
+118
decent/modules_basic/private.js
+118
decent/modules_basic/private.js
···
1
+
'use strict'
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var pull = require('pull-stream')
5
+
var Scroller = require('pull-scroll')
6
+
var ref = require('ssb-ref')
7
+
var keys = require('../keys')
8
+
9
+
function map(ary, iter) {
10
+
if(Array.isArray(ary)) return ary.map(iter)
11
+
}
12
+
13
+
exports.needs = {
14
+
message_render: 'first',
15
+
message_compose: 'first',
16
+
message_unbox: 'first',
17
+
sbot_log: 'first',
18
+
avatar_image_link: 'first'
19
+
}
20
+
21
+
exports.gives = {
22
+
builtin_tabs: true,
23
+
screen_view: true,
24
+
message_meta: true,
25
+
message_content_mini: true
26
+
}
27
+
28
+
exports.create = function (api) {
29
+
var id = keys.id
30
+
31
+
function privateStream (opts) {
32
+
return pull(
33
+
u.next(api.sbot_log, opts),
34
+
pull.map(function (msg) {
35
+
if(!msg || !msg.value || 'string' != typeof msg.value.content) return null
36
+
var unboxed = api.message_unbox(msg)
37
+
if(unboxed) {
38
+
unboxed.value.private = true
39
+
return unboxed
40
+
}
41
+
return null
42
+
}),
43
+
pull.filter(Boolean)
44
+
)
45
+
}
46
+
47
+
return {
48
+
builtin_tabs: function () {
49
+
return ['/private']
50
+
},
51
+
52
+
screen_view: function (path) {
53
+
if(path !== '/private') return
54
+
55
+
var div = h('div.column.scroller',
56
+
{style: {'overflow':'auto'}})
57
+
div.title = 'Private'
58
+
div.setAttribute('data-icon', 'lock')
59
+
60
+
var compose = api.message_compose(
61
+
{type: 'post', recps: [], private: true},
62
+
{
63
+
prepublish: function (msg) {
64
+
msg.recps = [id].concat(msg.mentions).filter(function (e) {
65
+
return ref.isFeed('string' === typeof e ? e : e.link)
66
+
})
67
+
if(!msg.recps.length)
68
+
throw new Error('cannot make private message without recipients - just mention the user in an at reply in the message you send')
69
+
return msg
70
+
},
71
+
placeholder: 'Write a private message'
72
+
}
73
+
)
74
+
75
+
var content = h('div.column.scroller__content')
76
+
div.appendChild(h('div.scroller__wrapper', compose, content))
77
+
78
+
pull(
79
+
privateStream({old: false, limit: 100}),
80
+
Scroller(div, content, api.message_render, true, false)
81
+
)
82
+
83
+
pull(
84
+
privateStream({reverse: true, limit: 1000}),
85
+
Scroller(div, content, api.message_render, false, false, function (err) {
86
+
if(err) throw err
87
+
})
88
+
)
89
+
90
+
return div
91
+
},
92
+
93
+
message_meta: function (msg) {
94
+
var content = msg.value.content
95
+
var recps = content && content.recps
96
+
var isEncryptedString = 'string' === typeof content
97
+
var isPrivate = msg.value.private ||
98
+
(content && content.private) ||
99
+
(Array.isArray(recps) && recps.length) ||
100
+
isEncryptedString
101
+
102
+
if(!isPrivate) return
103
+
104
+
return h('span.message_meta.row', map(recps, function (id) {
105
+
return api.avatar_image_link('string' == typeof id ? id : id.link, 'thumbnail')
106
+
}))
107
+
},
108
+
109
+
message_content_mini: function (msg, sbot) {
110
+
var isEncrypted = typeof msg.value.content === 'string'
111
+
if(!msg.value.private && !isEncrypted) return
112
+
if(msg.value.content && typeof msg.value.content === 'object' && msg.value.content.text)
113
+
return
114
+
return '🔒'
115
+
}
116
+
}
117
+
118
+
}
+48
decent/modules_basic/pub.js
+48
decent/modules_basic/pub.js
···
1
+
var h = require('hyperscript')
2
+
//var plugs = require('../plugs')
3
+
//var avatar_name = plugs.first(exports.avatar_name = [])
4
+
//var avatar_link = plugs.first(exports.avatar_link = [])
5
+
//
6
+
exports.needs = {
7
+
avatar_name: 'first',
8
+
avatar_link: 'first'
9
+
}
10
+
11
+
exports.gives = {
12
+
message_content: true,
13
+
message_content_mini: true
14
+
}
15
+
16
+
exports.create = function (api) {
17
+
var exports = {}
18
+
19
+
exports.message_content = function (msg, sbot) {
20
+
var c = msg.value.content
21
+
if (c.type === 'pub') {
22
+
var address = c.address || {}
23
+
return [
24
+
h('p', 'announced an address for ',
25
+
api.avatar_link(address.key, api.avatar_name(address.key)), ':'),
26
+
h('blockquote',
27
+
h('code', address.host + ':' + address.port)
28
+
)
29
+
]
30
+
}
31
+
}
32
+
33
+
exports.message_content_mini = function (msg) {
34
+
var c = msg.value.content
35
+
if (c.type !== 'pub') return
36
+
var address = c.address || {}
37
+
if(!address.key || !address.host || !address.port) return
38
+
return [
39
+
'announced ',
40
+
api.avatar_link(address.key, api.avatar_name(address.key)),
41
+
': ',
42
+
h('code', address.host + ':' + address.port)
43
+
]
44
+
}
45
+
46
+
return exports
47
+
48
+
}
+86
decent/modules_basic/public.js
+86
decent/modules_basic/public.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
6
+
//var plugs = require('../plugs')
7
+
//var message_render = plugs.first(exports.message_render = [])
8
+
//var message_compose = plugs.first(exports.message_compose = [])
9
+
//var sbot_log = plugs.first(exports.sbot_log = [])
10
+
11
+
exports.needs = {
12
+
message_render: 'first',
13
+
message_compose: 'first',
14
+
sbot_query: 'first',
15
+
}
16
+
17
+
exports.gives = {
18
+
builtin_tabs: true, screen_view: true
19
+
}
20
+
21
+
exports.create = function (api) {
22
+
23
+
function publicFilter (opts) {
24
+
opts = opts || {}
25
+
var filter = {
26
+
$filter: {
27
+
rts: {}
28
+
}
29
+
}
30
+
if(opts.lt != null) filter.$filter.rts.$lt = opts.lt
31
+
if(opts.gt != null) filter.$filter.rts.$gt = opts.gt
32
+
if(!filter.$filter.rts.$lt && !filter.$filter.rts.$gt)
33
+
filter.$filter.rts.$gt = 0
34
+
return filter
35
+
}
36
+
37
+
function publicQuery (opts) {
38
+
opts = opts || {}
39
+
return api.sbot_query({
40
+
query: [publicFilter(opts)],
41
+
reverse: opts.reverse,
42
+
limit: opts.limit,
43
+
live: opts.live,
44
+
old: opts.old
45
+
})
46
+
}
47
+
48
+
return {
49
+
builtin_tabs: function () {
50
+
return ['/public']
51
+
},
52
+
53
+
screen_view: function (path, sbot) {
54
+
if(path === '/public') {
55
+
56
+
var content = h('div.column.scroller__content')
57
+
var div = h('div.column.scroller',
58
+
{style: {'overflow':'auto'}},
59
+
h('div.scroller__wrapper',
60
+
api.message_compose({type: 'post'}, {placeholder: 'Write a public message'}),
61
+
content
62
+
)
63
+
)
64
+
div.title = 'Public'
65
+
div.setAttribute('data-icon', 'key')
66
+
67
+
pull(
68
+
publicQuery({old: false, live: true}),
69
+
Scroller(div, content, api.message_render, true, false)
70
+
)
71
+
72
+
pull(
73
+
u.next(publicQuery, {
74
+
reverse: true,
75
+
limit: 100,
76
+
live: false,
77
+
old: true
78
+
}, ['rts']),
79
+
Scroller(div, content, api.message_render, false, false)
80
+
)
81
+
82
+
return div
83
+
}
84
+
}
85
+
}
86
+
}
+62
decent/modules_basic/relationships.js
+62
decent/modules_basic/relationships.js
···
1
+
var pull = require('pull-stream')
2
+
//var plugs = require('../plugs')
3
+
4
+
//var sbot_query = plugs.first(exports.sbot_query = [])
5
+
6
+
//this is a bit crude, and doesn't actually show unfollows yet.
7
+
8
+
function makeQuery (a, b) {
9
+
return {"$filter": {
10
+
value: {
11
+
author: a,
12
+
content: {
13
+
type: 'contact',
14
+
contact: b,
15
+
following: true
16
+
}
17
+
},
18
+
}}
19
+
}
20
+
21
+
22
+
exports.needs = { sbot_query: 'first' }
23
+
24
+
exports.gives = {
25
+
follows: true,
26
+
followers: true,
27
+
follower_of: true
28
+
}
29
+
30
+
exports.create = function (api) {
31
+
32
+
return {
33
+
follows: function (id, cb) {
34
+
return api.sbot_query({query: [
35
+
makeQuery(id, {$prefix:"@"}),
36
+
{"$map": ['value', 'content', 'contact']}
37
+
]})
38
+
},
39
+
40
+
followers: function (id) {
41
+
return api.sbot_query({query: [
42
+
makeQuery({$prefix:"@"}, id),
43
+
{"$map": ['value', 'author']}
44
+
]})
45
+
},
46
+
47
+
follower_of: function (source, dest, cb) {
48
+
pull(
49
+
api.sbot_query({query: [
50
+
makeQuery(source, dest),
51
+
{$map: ['value', 'content', 'following']}
52
+
]}),
53
+
pull.collect(function (err, ary) {
54
+
if(err) return cb(err)
55
+
else cb(null, ary.pop()) //will be true, or undefined/false
56
+
})
57
+
)
58
+
}
59
+
}
60
+
61
+
}
62
+
+78
decent/modules_basic/search-box.js
+78
decent/modules_basic/search-box.js
···
1
+
'use strict'
2
+
var cont = require('cont')
3
+
var h = require('hyperscript')
4
+
var suggest = require('suggest-box')
5
+
var pull = require('pull-stream')
6
+
7
+
//var plugs = require('../plugs')
8
+
//var sbot_query = plugs.first(exports.sbot_query = [])
9
+
//var sbot_links2 = plugs.first(exports.sbot_links2 = [])
10
+
//var suggest_search = plugs.asyncConcat(exports.suggest_search = [])
11
+
12
+
exports.needs = {
13
+
sbot_query: 'first', sbot_links2: 'first',
14
+
suggest_search: 'map' //REWRITE
15
+
}
16
+
17
+
var channels = []
18
+
19
+
exports.gives = 'search_box'
20
+
21
+
exports.create = function (api) {
22
+
23
+
return function (go) {
24
+
25
+
var suggestBox
26
+
var search = h('input.searchprompt', {
27
+
type: 'search',
28
+
placeholder: 'Commands',
29
+
onkeydown: function (ev) {
30
+
switch (ev.keyCode) {
31
+
case 13: // enter
32
+
if (suggestBox && suggestBox.active) {
33
+
suggestBox.complete()
34
+
ev.stopPropagation()
35
+
}
36
+
if (go(search.value.trim(), !ev.ctrlKey))
37
+
search.blur()
38
+
return
39
+
case 27: // escape
40
+
ev.preventDefault()
41
+
search.blur()
42
+
return
43
+
}
44
+
}
45
+
})
46
+
47
+
search.activate = function (sigil, ev) {
48
+
search.focus()
49
+
ev.preventDefault()
50
+
if (search.value[0] === sigil) {
51
+
search.selectionStart = 1
52
+
search.selectionEnd = search.value.length
53
+
} else {
54
+
search.value = sigil
55
+
}
56
+
}
57
+
58
+
var suggestions = {}
59
+
60
+
// delay until the element has a parent
61
+
setTimeout(function () {
62
+
suggestBox = suggest(search, function (word, cb) {
63
+
cont.para(api.suggest_search(word))
64
+
(function (err, ary) {
65
+
if(err) return cb(err)
66
+
67
+
cb(null, ary.filter(Boolean).reduce(function (a, b) {
68
+
return a.concat(b)
69
+
}, []))
70
+
})
71
+
}, {})
72
+
}, 10)
73
+
74
+
return search
75
+
}
76
+
77
+
}
78
+
+160
decent/modules_basic/setup.js
+160
decent/modules_basic/setup.js
···
1
+
2
+
var h = require('hyperscript')
3
+
var pull = require('pull-stream')
4
+
5
+
//var plugs = require('../plugs')
6
+
//
7
+
//var avatar_edit = plugs.first(exports.avatar_edit = [])
8
+
//var invite_parse = plugs.first(exports.invite_parse = [])
9
+
//var invite_accept = plugs.first(exports.invite_accept = [])
10
+
//var sbot_progress = plugs.first(exports.sbot_progress = [])
11
+
//var sbot_query = plugs.first(exports.sbot_query = [])
12
+
//var avatar = plugs.first(exports.avatar = [])
13
+
14
+
exports.needs = {
15
+
avatar: 'first',
16
+
avatar_edit: 'first',
17
+
invite_parse: 'first',
18
+
invite_accept: 'first',
19
+
sbot_progress: 'first',
20
+
sbot_query: 'first'
21
+
}
22
+
23
+
//maybe this could show the pubs, or
24
+
//if someone locally follows you,
25
+
//it could show the second degree pubs?
26
+
27
+
//maybe show the network as animated graph?
28
+
29
+
function followers_query (id) {
30
+
return [{$filter: {
31
+
value: {content: {
32
+
type: "contact",
33
+
contact: id,
34
+
following: true,
35
+
// autofollow: true
36
+
}}
37
+
}}]
38
+
}
39
+
40
+
exports.create = function (api) {
41
+
42
+
var exports = {}
43
+
44
+
//test whether we are connected to the ssb network.
45
+
exports.setup_is_fresh_install = function (cb) {
46
+
//test by checking whether you have any friends following you?
47
+
pull(
48
+
api.sbot_query({query: followers_query(id), limit: 1, live: false}),
49
+
pull.collect(function (err, ary) {
50
+
cb(err, !!ary.length)
51
+
})
52
+
)
53
+
}
54
+
55
+
function invite_form () {
56
+
var accept = h('button', 'enter code', {disabled: true, onclick: function () {
57
+
api.invite_accept(input.value, function (msg) {
58
+
status.textContent = msg
59
+
}, function (err) {
60
+
if(err) {
61
+
accept.textContent = 'error:'+(err.message || err.stack || error.type)
62
+
console.error(err)
63
+
}
64
+
else {
65
+
input.value = ''
66
+
accept.textContent = 'success!'
67
+
}
68
+
})
69
+
}})
70
+
71
+
function parseInput () {
72
+
if(!input.value) {
73
+
accept.disabled = true
74
+
accept.textContent = 'enter code'
75
+
}
76
+
else if(!invite_parse(input.value)) {
77
+
accept.disabled = true
78
+
accept.textContent = 'invalid code'
79
+
}
80
+
else {
81
+
accept.disabled = false
82
+
accept.textContent = 'accept'
83
+
}
84
+
}
85
+
86
+
var input = h('input.wide', {placeholder: 'invite code', oninput: parseInput, onchange: parseInput})
87
+
88
+
return h('div.invite-form.row', input, accept)
89
+
}
90
+
91
+
exports.progress_bar = function () {
92
+
var liquid = h('div.hyperprogress__liquid', '.')
93
+
var bar = h('div.hyperprogress__bar', liquid)
94
+
liquid.style.width = '0%'
95
+
96
+
pull(
97
+
api.sbot_progress(),
98
+
pull.drain(function (e) {
99
+
liquid.style.width = Math.round((e.progress/e.total)*100)+'%'
100
+
})
101
+
)
102
+
103
+
return bar
104
+
}
105
+
106
+
//show the first 5 followers, and how they join you to the network.
107
+
//so this will show if a local peer follows you.
108
+
109
+
//when you join the network, I want this to show as people follow you.
110
+
//that could be when a pub accepts the invite, or when a local peer accepts.
111
+
112
+
exports.setup_joined_network = function (id) {
113
+
var followers = h('div.column')
114
+
var label = h('label', 'not connected to a network')
115
+
var joined = h('div.setup__joined', label, followers)
116
+
117
+
pull(
118
+
api.sbot_query({query: followers_query(id), limit: 5, live: true, sync: false}),
119
+
pull.drain(function (follower) {
120
+
if(follower.sync) return
121
+
label.textContent = 'connected to network via...'
122
+
followers.appendChild(
123
+
api.avatar(follower.value.author, 'thumbnail')
124
+
)
125
+
})
126
+
)
127
+
128
+
return joined
129
+
}
130
+
131
+
exports.screen_view = function (path) {
132
+
133
+
if(path !== '/setup') return
134
+
135
+
var id = require('../keys').id
136
+
137
+
//set up an avatar
138
+
139
+
140
+
var status = h('span')
141
+
var invite = h('input', {placeholder: 'invite code'})
142
+
return h('div.scroller', h('div.scroller__wrapper',
143
+
h('h1', 'welcome to patchbay!'),
144
+
h('div',
145
+
'please choose avatar image and name',
146
+
api.avatar_edit(id)
147
+
),
148
+
h('h2', 'join network'),
149
+
invite_form(),
150
+
//show avatars of anyone on the same local network.
151
+
//show realtime changes in your followers, especially for local.
152
+
153
+
exports.progress_bar(),
154
+
exports.setup_joined_network(require('../keys').id)
155
+
))
156
+
}
157
+
158
+
return exports
159
+
160
+
}
+72
decent/modules_basic/suggest-mentions.js
+72
decent/modules_basic/suggest-mentions.js
···
1
+
var pull = require('pull-stream')
2
+
function isImage (filename) {
3
+
return /\.(gif|jpg|png|svg)$/i.test(filename)
4
+
}
5
+
6
+
//var sbot_links2 = require('../plugs').first(exports.sbot_links2 = [])
7
+
//var blob_url = require('../plugs').first(exports.blob_url = [])
8
+
//var signified = require('../plugs').first(exports.signified = [])
9
+
//var builtin_tabs = require('../plugs').map(exports.builtin_tabs = [])
10
+
11
+
exports.needs = {
12
+
sbot_links2: 'first',
13
+
blob_url: 'first',
14
+
signified: 'first',
15
+
builtin_tabs: 'map'
16
+
}
17
+
18
+
exports.gives = {
19
+
suggest_mentions: true,
20
+
suggest_search: true
21
+
}
22
+
23
+
exports.create = function (api) {
24
+
25
+
return {
26
+
suggest_mentions: function (word) {
27
+
return function (cb) {
28
+
if(!/^[%&@]\w/.test(word)) return cb()
29
+
30
+
api.signified(word, function (err, names) {
31
+
if(err) cb(err)
32
+
else cb(null, names.map(function (e) {
33
+
return {
34
+
title: e.name + ': ' + e.id.substring(0,10)+' ('+e.rank+')',
35
+
value: '['+e.name+']('+e.id+')',
36
+
rank: e.rank,
37
+
//TODO: avatar images...
38
+
}
39
+
}))
40
+
})
41
+
}
42
+
},
43
+
44
+
suggest_search: function (query) {
45
+
return function (cb) {
46
+
if(/^[@%]\w/.test(query)) {
47
+
api.signified(query, function (_, names) {
48
+
cb(null, names.map(function (e) {
49
+
return {
50
+
title: e.name + ':'+e.id.substring(0, 10),
51
+
value: e.id,
52
+
subtitle: e.rank,
53
+
rank: e.rank
54
+
}
55
+
}))
56
+
})
57
+
58
+
} else if(/^\//.test(query)) {
59
+
var tabs = [].concat.apply([], api.builtin_tabs())
60
+
cb(null, tabs.filter(function (name) {
61
+
return name.substr(0, query.length) === query
62
+
}).map(function (name) {
63
+
return {
64
+
title: name,
65
+
value: name,
66
+
}
67
+
}))
68
+
} else cb()
69
+
}
70
+
}
71
+
}
72
+
}
+138
decent/modules_basic/thread.js
+138
decent/modules_basic/thread.js
···
1
+
var pull = require('pull-stream')
2
+
var Cat = require('pull-cat')
3
+
var sort = require('ssb-sort')
4
+
var ref = require('ssb-ref')
5
+
var h = require('hyperscript')
6
+
var u = require('../util')
7
+
var Scroller = require('pull-scroll')
8
+
var self_id = require('../keys').id
9
+
10
+
function once (cont) {
11
+
var ended = false
12
+
return function (abort, cb) {
13
+
if(abort) return cb(abort)
14
+
else if (ended) return cb(ended)
15
+
else
16
+
cont(function (err, data) {
17
+
if(err) return cb(ended = err)
18
+
ended = true
19
+
cb(null, data)
20
+
})
21
+
}
22
+
}
23
+
24
+
//var plugs = require('../plugs')
25
+
//
26
+
//var message_render = plugs.first(exports.message_render = [])
27
+
//var message_name = plugs.first(exports.message_name = [])
28
+
//var message_compose = plugs.first(exports.message_compose = [])
29
+
//var message_unbox = plugs.first(exports.message_unbox = [])
30
+
//
31
+
//var sbot_get = plugs.first(exports.sbot_get = [])
32
+
//var sbot_links = plugs.first(exports.sbot_links = [])
33
+
34
+
exports.needs = {
35
+
message_render: 'first',
36
+
message_name: 'first',
37
+
message_compose: 'first',
38
+
message_unbox: 'first',
39
+
sbot_get: 'first',
40
+
sbot_links: 'first'
41
+
}
42
+
43
+
exports.gives = 'screen_view'
44
+
45
+
46
+
exports.create = function (api) {
47
+
48
+
function getThread (root, cb) {
49
+
//in this case, it's inconvienent that panel only takes
50
+
//a stream. maybe it would be better to accept an array?
51
+
52
+
api.sbot_get(root, function (err, value) {
53
+
if (err) return cb(err)
54
+
var msg = {key: root, value: value}
55
+
// if(value.content.root) return getThread(value.content.root, cb)
56
+
57
+
pull(
58
+
api.sbot_links({rel: 'root', dest: root, values: true, keys: true}),
59
+
pull.collect(function (err, ary) {
60
+
if(err) return cb(err)
61
+
ary.unshift(msg)
62
+
cb(null, ary)
63
+
})
64
+
)
65
+
})
66
+
67
+
}
68
+
69
+
return function (id) {
70
+
if(ref.isMsg(id)) {
71
+
var meta = {
72
+
type: 'post',
73
+
root: id,
74
+
branch: id //mutated when thread is loaded.
75
+
}
76
+
77
+
var content = h('div.column.scroller__content')
78
+
var div = h('div.column.scroller',
79
+
{style: {'overflow-y': 'auto'}},
80
+
h('div.scroller__wrapper',
81
+
content,
82
+
api.message_compose(meta, {shrink: false, placeholder: 'Write a reply'})
83
+
)
84
+
)
85
+
86
+
api.message_name(id, function (err, name) {
87
+
div.title = name
88
+
})
89
+
90
+
pull(
91
+
api.sbot_links({
92
+
rel: 'root', dest: id, keys: true, old: false
93
+
}),
94
+
pull.drain(function (msg) {
95
+
loadThread() //redraw thread
96
+
}, function () {} )
97
+
)
98
+
99
+
100
+
function loadThread () {
101
+
getThread(id, function (err, thread) {
102
+
//would probably be better keep an id for each message element
103
+
//(i.e. message key) and then update it if necessary.
104
+
//also, it may have moved (say, if you received a missing message)
105
+
content.innerHTML = ''
106
+
if(err) return content.appendChild(h('pre', err.stack))
107
+
108
+
//decrypt
109
+
thread = thread.map(function (msg) {
110
+
return 'string' === typeof msg.value.content ? api.message_unbox(msg) : msg
111
+
})
112
+
113
+
if(err) return content.appendChild(h('pre', err.stack))
114
+
sort(thread).map(api.message_render).filter(Boolean).forEach(function (el) {
115
+
content.appendChild(el)
116
+
})
117
+
118
+
var branches = sort.heads(thread)
119
+
meta.branch = branches.length > 1 ? branches : branches[0]
120
+
meta.root = thread[0].value.content.root || thread[0].key
121
+
meta.channel = thread[0].value.content.channel
122
+
123
+
var recps = thread[0].value.content.recps
124
+
var private = thread[0].value.private
125
+
if(private) {
126
+
if(recps)
127
+
meta.recps = recps
128
+
else
129
+
meta.recps = [thread[0].value.author, self_id]
130
+
}
131
+
})
132
+
}
133
+
134
+
loadThread()
135
+
return div
136
+
}
137
+
}
138
+
}
+28
decent/modules_basic/timestamp.js
+28
decent/modules_basic/timestamp.js
···
1
+
var h = require('hyperscript')
2
+
var human = require('human-time')
3
+
4
+
exports.needs = {}
5
+
6
+
exports.gives = 'message_meta'
7
+
8
+
exports.create = function () {
9
+
10
+
function updateTimestampEl(el) {
11
+
el.firstChild.nodeValue = human(new Date(el.timestamp))
12
+
return el
13
+
}
14
+
15
+
setInterval(function () {
16
+
var els = [].slice.call(document.querySelectorAll('.timestamp'))
17
+
els.forEach(updateTimestampEl)
18
+
}, 60e3)
19
+
20
+
return function (msg) {
21
+
return updateTimestampEl(h('a.enter.timestamp', {
22
+
href: '#'+msg.key,
23
+
timestamp: msg.value.timestamp,
24
+
title: new Date(msg.value.timestamp)
25
+
}, ''))
26
+
}
27
+
28
+
}
+10
decent/modules_core/_screen_view.js
+10
decent/modules_core/_screen_view.js
+107
decent/modules_core/app.js
+107
decent/modules_core/app.js
···
1
+
var plugs = require('../plugs')
2
+
var h = require('hyperscript')
3
+
4
+
module.exports = {
5
+
needs: {screen_view: 'first', menu: 'first'},
6
+
gives: 'app',
7
+
create: function (api) {
8
+
return function () {
9
+
document.head.appendChild(h('style', require('../style.css.json')))
10
+
11
+
window.addEventListener('error', window.onError = function (e) {
12
+
document.body.appendChild(h('div.error',
13
+
h('h1', e.message),
14
+
h('big', h('code', e.filename + ':' + e.lineno)),
15
+
h('pre', e.error ? (e.error.stack || e.error.toString()) : e.toString())))
16
+
})
17
+
18
+
function getRoute () {
19
+
var raw = window.location.hash.substring(1).trim()
20
+
if (!raw || raw === 'tabs') return '/public'
21
+
if (raw[0] === '/' || raw[0] === '@' || raw[0] === '%' || raw[0] === '#')
22
+
return raw
23
+
return '/' + raw
24
+
}
25
+
26
+
function renderRoute (route, container) {
27
+
var view = api.screen_view(route)
28
+
if (!view) {
29
+
view = h('div.scroller__wrapper',
30
+
h('div.message',
31
+
h('strong', 'Unknown route'),
32
+
h('div', 'No screen available for ', h('code', route))
33
+
)
34
+
)
35
+
}
36
+
container.innerHTML = ''
37
+
container.appendChild(view)
38
+
setActive(route)
39
+
setTitle(route, view)
40
+
}
41
+
42
+
var navItems = [
43
+
{route: '/public', label: 'Public', icon: 'public'},
44
+
{route: '/private', label: 'Private', icon: 'lock'},
45
+
{route: '/notifications', label: 'Notifications', icon: 'notifications'},
46
+
{route: '/key', label: 'Key', icon: 'key'}
47
+
]
48
+
49
+
var nav = h('ul.nav.pull-left', navItems.map(function (item) {
50
+
return h('li', {'data-route': item.route},
51
+
h('a', {href: '#' + item.route}, [
52
+
h('span.material-symbols-outlined.nav__icon', item.icon),
53
+
h('span', item.label)
54
+
])
55
+
)
56
+
}))
57
+
58
+
var header = h('div.navbar',
59
+
h('div.navbar-inner',
60
+
h('div.container-fluid',
61
+
nav,
62
+
h('div.pull-right', api.menu())
63
+
)
64
+
)
65
+
)
66
+
67
+
var content = h('div.screen__content.column')
68
+
var screen = h('div.screen.column', header, content)
69
+
70
+
function setActive (route) {
71
+
var items = nav.querySelectorAll('li[data-route]')
72
+
Array.prototype.forEach.call(items, function (el) {
73
+
if (el.getAttribute('data-route') === route)
74
+
el.classList.add('active')
75
+
else
76
+
el.classList.remove('active')
77
+
})
78
+
}
79
+
80
+
function setTitle (route, view) {
81
+
var base = 'Decent SSB'
82
+
var suffix = (view && view.title) || null
83
+
if (!suffix) {
84
+
if (route === '/public') suffix = 'Public'
85
+
else if (route === '/private') suffix = 'Private'
86
+
else if (route === '/notifications') suffix = 'Notifications'
87
+
else if (route === '/key') suffix = 'Key'
88
+
else if (route.indexOf('/channel/') === 0) suffix = 'Channel ' + route.slice(9)
89
+
else if (route[0] === '@') suffix = 'Profile'
90
+
else if (route[0] === '%') suffix = 'Thread'
91
+
else if (route[0] === '#') suffix = 'Message'
92
+
}
93
+
document.title = suffix ? base + ' — ' + suffix : base
94
+
}
95
+
96
+
renderRoute(getRoute(), content)
97
+
98
+
window.onhashchange = function () {
99
+
renderRoute(getRoute(), content)
100
+
}
101
+
102
+
document.body.appendChild(screen)
103
+
104
+
return screen
105
+
}
106
+
}
107
+
}
+15
decent/modules_core/blob-url.js
+15
decent/modules_core/blob-url.js
···
1
+
var config = require('../config')
2
+
3
+
module.exports = {
4
+
gives: 'blob_url',
5
+
create: function () {
6
+
return function (link) {
7
+
// unwrap common { link: '&...' } shapes, possibly nested
8
+
while (link && typeof link === 'object' && typeof link.link !== 'undefined') {
9
+
link = link.link
10
+
}
11
+
12
+
return config().blobsUrl + '/' + String(link)
13
+
}
14
+
}
15
+
}
+11
decent/modules_core/blobs-url.js
+11
decent/modules_core/blobs-url.js
+60
decent/modules_core/crypto.js
+60
decent/modules_core/crypto.js
···
1
+
var ref = require('ssb-ref')
2
+
var keys = require('../keys')
3
+
var ssbKeys = require('ssb-keys')
4
+
5
+
function unbox_value(msg) {
6
+
var plaintext = ssbKeys.unbox(msg.content, keys)
7
+
if(!plaintext) return null
8
+
return {
9
+
previous: msg.previous,
10
+
author: msg.author,
11
+
sequence: msg.sequence,
12
+
timestamp: msg.timestamp,
13
+
hash: msg.hash,
14
+
content: plaintext,
15
+
private: true
16
+
}
17
+
}
18
+
19
+
20
+
module.exports = {
21
+
22
+
needs: {sbot_publish: 'first'},
23
+
gives: {
24
+
message_unbox: true, message_box: true, publish: true
25
+
},
26
+
create: function (api) {
27
+
28
+
var exports = {}
29
+
exports.message_unbox = function (msg) {
30
+
if(msg.value) {
31
+
var value = unbox_value(msg.value)
32
+
if(value)
33
+
return {
34
+
key: msg.key, value: value, timestamp: msg.timestamp
35
+
}
36
+
}
37
+
else
38
+
return unbox_value(msg)
39
+
}
40
+
41
+
exports.message_box = function (content) {
42
+
return ssbKeys.box(content, content.recps.map(function (e) {
43
+
return ref.isFeed(e) ? e : e.link
44
+
}))
45
+
}
46
+
47
+
exports.publish = function (content, cb) {
48
+
if(content.recps)
49
+
content = exports.message_box(content)
50
+
api.sbot_publish(content, function (err, msg) {
51
+
if(err) throw err
52
+
console.log('PUBLISHED', msg)
53
+
if(cb) cb(err, msg)
54
+
})
55
+
}
56
+
57
+
return exports
58
+
}
59
+
}
60
+
+67
decent/modules_core/file-input.js
+67
decent/modules_core/file-input.js
···
1
+
var u = require('../util')
2
+
var h = require('hyperscript')
3
+
var pull = require('pull-stream')
4
+
var mime = require('simple-mime')('application/octect-stream')
5
+
var split = require('split-buffer')
6
+
7
+
var fileInputId = 0
8
+
9
+
module.exports = {
10
+
needs: {},
11
+
gives: 'file_input',
12
+
create: function (api) {
13
+
14
+
function uploadViaHttp (file, cb) {
15
+
var xhr = new XMLHttpRequest()
16
+
xhr.open('POST', '/blobs/add', true)
17
+
xhr.responseType = 'text'
18
+
xhr.onload = function () {
19
+
if (xhr.status >= 200 && xhr.status < 300)
20
+
cb(null, (xhr.responseText || '').trim())
21
+
else
22
+
cb(new Error('blob upload failed: status ' + xhr.status))
23
+
}
24
+
xhr.onerror = function () {
25
+
cb(new Error('blob upload network error'))
26
+
}
27
+
xhr.send(file)
28
+
}
29
+
30
+
return function FileInput(onAdded) {
31
+
var id = 'file-input-' + (fileInputId++)
32
+
var input = h('input', {
33
+
id: id,
34
+
type: 'file',
35
+
style: {
36
+
position: 'absolute',
37
+
left: '-9999px'
38
+
},
39
+
onchange: function (ev) {
40
+
var file = ev.target.files[0]
41
+
if (!file) return
42
+
43
+
uploadViaHttp(file, function (err, hash) {
44
+
if (err) {
45
+
console.error(err)
46
+
return
47
+
}
48
+
onAdded({
49
+
link: hash,
50
+
name: file.name,
51
+
size: file.size,
52
+
type: file.type || mime(file.name)
53
+
})
54
+
})
55
+
}
56
+
})
57
+
58
+
return h('span', [
59
+
h('label.btn', {htmlFor: id}, [
60
+
h('span.material-symbols-outlined.nav__icon', 'attach_file'),
61
+
'Browse'
62
+
]),
63
+
input
64
+
])
65
+
}
66
+
}
67
+
}
+11
decent/modules_core/index.js
+11
decent/modules_core/index.js
···
1
+
module.exports = {
2
+
// "_screen_view.js": require('./_screen_view.js'),
3
+
"app.js": require('./app.js'),
4
+
"blob-url.js": require('./blob-url.js'),
5
+
"blobs-url.js": require('./blobs-url.js'),
6
+
"crypto.js": require('./crypto.js'),
7
+
"file-input.js": require('./file-input.js'),
8
+
"menu.js": require('./menu.js'),
9
+
"message-confirm.js": require('./message-confirm.js'),
10
+
"sbot.js": require('./sbot.js')
11
+
}
+68
decent/modules_core/message-confirm.js
+68
decent/modules_core/message-confirm.js
···
1
+
var lightbox = require('hyperlightbox')
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var self_id = require('../keys').id
5
+
//publish or add
6
+
7
+
var plugs = require('../plugs')
8
+
9
+
exports.needs = {
10
+
publish: 'first', message_content: 'first', avatar: 'first',
11
+
message_meta: 'map'
12
+
}
13
+
14
+
exports.gives = 'message_confirm'
15
+
16
+
//var publish = plugs.first(exports.sbot_publish = [])
17
+
//var message_content = plugs.first(exports.message_content = [])
18
+
//var avatar = plugs.first(exports.avatar = [])
19
+
//var message_meta = plugs.map(exports.message_meta = [])
20
+
//
21
+
exports.create = function (api) {
22
+
return function (content, cb) {
23
+
24
+
cb = cb || function () {}
25
+
26
+
var lb = lightbox()
27
+
document.body.appendChild(lb)
28
+
29
+
var msg = {
30
+
key: "DRAFT",
31
+
value: {
32
+
author: self_id,
33
+
previous: null,
34
+
sequence: null,
35
+
timestamp: Date.now(),
36
+
content: content
37
+
}
38
+
}
39
+
40
+
var okay = h('button.btn.btn-primary', 'Publish', {onclick: function () {
41
+
lb.remove()
42
+
api.publish(content, cb)
43
+
}})
44
+
45
+
var cancel = h('button.btn', 'Cancel', {onclick: function () {
46
+
lb.remove()
47
+
cb(null)
48
+
}})
49
+
50
+
okay.addEventListener('keydown', function (ev) {
51
+
if(ev.keyCode === 27) cancel.click() //escape
52
+
})
53
+
54
+
lb.show(h('div.column.message-confirm',
55
+
h('div.message.message-card',
56
+
h('div.title.row',
57
+
h('div.avatar', api.avatar(msg.value.author, 'thumbnail')),
58
+
h('div.message_meta.row', api.message_meta(msg))
59
+
),
60
+
h('div.message_content', api.message_content(msg)
61
+
|| h('pre', JSON.stringify(msg, null, 2))),
62
+
h('div.row.message-confirm__controls', okay, cancel)
63
+
),
64
+
))
65
+
66
+
okay.focus()
67
+
}
68
+
}
+165
decent/modules_core/sbot.js
+165
decent/modules_core/sbot.js
···
1
+
var pull = require('pull-stream')
2
+
var ssbKeys = require('ssb-keys')
3
+
var ref = require('ssb-ref')
4
+
var Reconnect = require('pull-reconnect')
5
+
var path = require('path')
6
+
var config = require('ssb-config/inject')(process.env.ssb_appname)
7
+
config.keys = ssbKeys.loadOrCreateSync(path.join(config.path, 'secret'))
8
+
9
+
function Hash (onHash) {
10
+
var buffers = []
11
+
return pull.through(function (data) {
12
+
buffers.push('string' === typeof data
13
+
? new Buffer(data, 'utf8')
14
+
: data
15
+
)
16
+
}, function (err) {
17
+
if(err && !onHash) throw err
18
+
var b = buffers.length > 1 ? Buffer.concat(buffers) : buffers[0]
19
+
var h = '&'+ssbKeys.hash(b)
20
+
onHash && onHash(err, h)
21
+
})
22
+
}
23
+
//uncomment this to use from browser...
24
+
//also depends on having ssb-ws installed.
25
+
//var createClient = require('ssb-lite')
26
+
var createClient = require('ssb-client')
27
+
28
+
var createConfig = require('ssb-config/inject')
29
+
30
+
var createFeed = require('ssb-feed')
31
+
var keys = require('../keys')
32
+
var ssbKeys = require('ssb-keys')
33
+
34
+
var cache = CACHE = {}
35
+
36
+
module.exports = {
37
+
needs: {
38
+
connection_status: 'map'
39
+
},
40
+
gives: {
41
+
// connection_status: true,
42
+
sbot_links: true,
43
+
sbot_links2: true,
44
+
sbot_query: true,
45
+
sbot_get: true,
46
+
sbot_log: true,
47
+
sbot_user_feed: true,
48
+
sbot_gossip_peers: true,
49
+
sbot_gossip_connect: true,
50
+
sbot_progress: true,
51
+
sbot_publish: true,
52
+
sbot_whoami: true
53
+
},
54
+
55
+
//module.exports = {
56
+
create: function (api) {
57
+
58
+
var opts = createConfig()
59
+
var sbot = null
60
+
var connection_status = []
61
+
62
+
var rec = Reconnect(function (isConn) {
63
+
function notify (value) {
64
+
isConn(value); api.connection_status(value) //.forEach(function (fn) { fn(value) })
65
+
}
66
+
67
+
createClient(keys, {
68
+
manifest: require('../manifest.json'),
69
+
remote: require('../config')().remote,
70
+
caps: config.caps
71
+
}, function (err, _sbot) {
72
+
if(err)
73
+
return notify(err)
74
+
75
+
sbot = _sbot
76
+
sbot.on('closed', function () {
77
+
sbot = null
78
+
notify(new Error('closed'))
79
+
})
80
+
81
+
notify()
82
+
})
83
+
})
84
+
85
+
var internal = {
86
+
getLatest: rec.async(function (id, cb) {
87
+
sbot.getLatest(id, cb)
88
+
}),
89
+
add: rec.async(function (msg, cb) {
90
+
sbot.add(msg, cb)
91
+
})
92
+
}
93
+
94
+
var feed = createFeed(internal, keys, {remote: true})
95
+
96
+
return {
97
+
connection_status: connection_status,
98
+
sbot_links: rec.source(function (query) {
99
+
return sbot.links(query)
100
+
}),
101
+
sbot_links2: rec.source(function (query) {
102
+
return sbot.links2.read(query)
103
+
}),
104
+
sbot_query: rec.source(function (query) {
105
+
return sbot.query.read(query)
106
+
}),
107
+
sbot_log: rec.source(function (opts) {
108
+
return pull(
109
+
sbot.createLogStream(opts),
110
+
pull.through(function (e) {
111
+
CACHE[e.key] = CACHE[e.key] || e.value
112
+
})
113
+
)
114
+
}),
115
+
sbot_user_feed: rec.source(function (opts) {
116
+
return sbot.createUserStream(opts)
117
+
}),
118
+
sbot_get: rec.async(function (key, cb) {
119
+
if('function' !== typeof cb)
120
+
throw new Error('cb must be function')
121
+
if(CACHE[key]) cb(null, CACHE[key])
122
+
else sbot.get(key, function (err, value) {
123
+
if(err) return cb(err)
124
+
cb(null, CACHE[key] = value)
125
+
})
126
+
}),
127
+
sbot_gossip_peers: rec.async(function (cb) {
128
+
sbot.gossip.peers(cb)
129
+
}),
130
+
//liteclient won't have permissions for this
131
+
sbot_gossip_connect: rec.async(function (opts, cb) {
132
+
sbot.gossip.connect(opts, cb)
133
+
}),
134
+
sbot_progress: rec.source(function () {
135
+
return sbot.replicate.changes()
136
+
}),
137
+
sbot_publish: rec.async(function (content, cb) {
138
+
if(content.recps)
139
+
content = ssbKeys.box(content, content.recps.map(function (e) {
140
+
return ref.isFeed(e) ? e : e.link
141
+
}))
142
+
else if(content.mentions)
143
+
content.mentions.forEach(function (mention) {
144
+
if(ref.isBlob(mention.link)) {
145
+
sbot.blobs.push(mention.link, function (err) {
146
+
if(err) console.error(err)
147
+
})
148
+
}
149
+
})
150
+
151
+
feed.add(content, function (err, msg) {
152
+
if(err) console.error(err)
153
+
else if(!cb) console.log(msg)
154
+
cb && cb(err, msg)
155
+
})
156
+
}),
157
+
sbot_whoami: rec.async(function (cb) {
158
+
sbot.whoami(cb)
159
+
})
160
+
}
161
+
}
162
+
}
163
+
164
+
165
+
+11
decent/modules_embedded/index.js
+11
decent/modules_embedded/index.js
···
1
+
module.exports = {
2
+
"_screen_view.js": require('../modules_core/_screen_view.js'),
3
+
"app.js": require('../modules_core/app.js'),
4
+
"blob-url.js": require('../modules_core/blob-url.js'),
5
+
"crypto.js": require('../modules_core/crypto.js'),
6
+
"file-input.js": require('../modules_core/file-input.js'),
7
+
"menu.js": require('../modules_core/menu.js'),
8
+
"message-confirm.js": require('../modules_core/message-confirm.js'),
9
+
"tabs.js": require('../modules_core/tabs.js'),
10
+
"sbot.js": require('./sbot.js')
11
+
}
+78
decent/modules_extra/audio-mp3.js
+78
decent/modules_extra/audio-mp3.js
···
1
+
var markdown = require('ssb-markdown');
2
+
var h = require('hyperscript');
3
+
var u = require('../util');
4
+
var ref = require('ssb-ref');
5
+
6
+
//render a message
7
+
8
+
//var plugs = require('../plugs');
9
+
//var message_link = plugs.first(exports.message_link = []);
10
+
//var message_confirm = plugs.first(exports.message_confirm = []);
11
+
//var sbot_links = plugs.first(exports.sbot_links = []);
12
+
//var blob_url = plugs.first(exports.blob_url = []);
13
+
//
14
+
exports.needs = {
15
+
// message_link: 'first',
16
+
// message_confirm: 'first',
17
+
// sbot_links: 'first',
18
+
blobs_url: 'first'
19
+
}
20
+
21
+
exports.gives = {
22
+
message_content: true,
23
+
message_content_mini: true
24
+
}
25
+
26
+
exports.create = function (api) {
27
+
var exports = {}
28
+
29
+
exports.message_content = function (msg) {
30
+
if (msg.value.content.type !== 'audio-mp3')
31
+
return;
32
+
33
+
var v = msg.value.content;
34
+
return h('div',
35
+
h('h2', "(" + v.Track + ") " + v.Title),
36
+
// h('img', { "src" : api.blob_url(v.cover) }),
37
+
h('audio', {
38
+
"controls" : true,
39
+
"src" : api.blob_url(v.link)
40
+
}))
41
+
// h('dl',
42
+
// Object.keys(v).map(function(k) {
43
+
// return [
44
+
// h("dt", k),
45
+
// h("dd", v[k]),
46
+
// ]
47
+
// })))
48
+
49
+
// "Album": "the fall of",
50
+
// "Crc32": "038becab",
51
+
// "Creator": "bleupulp",
52
+
// "Format": "VBR MP3",
53
+
// "Height": "0",
54
+
// "Length": "375.23",
55
+
// "Md5": "2c517c8e813da5f940c8c7e77d4b7f3f",
56
+
// "Mtime": "1399498698",
57
+
// "Name": "2_bleupulp_-_clouds.mp3",
58
+
// "Sha1": "9f6a96a3d5571ed1ec2a7da38ffebdcd5f181482",
59
+
// "Size": "15009000",
60
+
61
+
// "Title": "clouds",
62
+
// "Track": "2",
63
+
// "Width": "0",
64
+
}
65
+
66
+
exports.message_content_mini = function (msg) {
67
+
if (msg.value.content.type !== 'audio-mp3')
68
+
return
69
+
70
+
var v = msg.value.content
71
+
var title = v.Title || v.Name || 'audio'
72
+
var track = v.Track ? '(' + v.Track + ') ' : ''
73
+
var link = v.link && api.blob_url ? h('a', {href: api.blob_url(v.link)}, 'play') : null
74
+
return ['audio ', track, title, link ? [' ', link] : null]
75
+
}
76
+
77
+
return exports
78
+
}
+117
decent/modules_extra/channel.js
+117
decent/modules_extra/channel.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
var mfr = require('map-filter-reduce')
6
+
7
+
exports.needs = {
8
+
message_render: 'first',
9
+
message_compose: 'first',
10
+
sbot_log: 'first',
11
+
sbot_query: 'first',
12
+
}
13
+
14
+
exports.gives = {
15
+
message_meta: true, screen_view: true,
16
+
connection_status: true, suggest_search: true
17
+
}
18
+
19
+
exports.create = function (api) {
20
+
21
+
var channels
22
+
23
+
var filter = {$filter: {value: {content: {channel: {$gt: ''}}}}}
24
+
var map = {$map: {'name': ['value', 'content', 'channel']}}
25
+
var reduce = {$reduce: {
26
+
name: 'name',
27
+
rank: {$count: true}
28
+
}}
29
+
30
+
return {
31
+
message_meta: function (msg) {
32
+
var chan = msg.value.content.channel
33
+
if (chan)
34
+
return h('a', {href: '##'+chan}, '#'+chan)
35
+
},
36
+
screen_view: function (path) {
37
+
if(path[0] === '#') {
38
+
var channel = path.substr(1)
39
+
40
+
var content = h('div.column.scroller__content')
41
+
var div = h('div.column.scroller',
42
+
{style: {'overflow':'auto'}},
43
+
h('div.scroller__wrapper',
44
+
api.message_compose({type: 'post', channel: channel}),
45
+
content
46
+
)
47
+
)
48
+
49
+
function matchesChannel(msg) {
50
+
if (msg.sync) console.error('SYNC', msg)
51
+
var c = msg && msg.value && msg.value.content
52
+
return c && c.channel === channel
53
+
}
54
+
55
+
pull(
56
+
api.sbot_log({old: false}),
57
+
pull.filter(matchesChannel),
58
+
Scroller(div, content, api.message_render, true, false)
59
+
)
60
+
61
+
pull(
62
+
api.sbot_query({reverse: true, query: [
63
+
{$filter: {value: {content: {channel: channel}}}}
64
+
]}),
65
+
Scroller(div, content, api.message_render, false, false)
66
+
)
67
+
68
+
return div
69
+
}
70
+
},
71
+
72
+
connection_status: function (err) {
73
+
if(err) return
74
+
75
+
channels = []
76
+
77
+
pull(
78
+
api.sbot_query({query: [filter, map, reduce]}),
79
+
pull.collect(function (err, chans) {
80
+
if (err) return console.error(err)
81
+
channels = chans.concat(channels)
82
+
})
83
+
)
84
+
85
+
pull(
86
+
api.sbot_log({old: false}),
87
+
mfr.filter(filter),
88
+
mfr.map(map),
89
+
pull.drain(function (chan) {
90
+
var c = channels.find(function (e) {
91
+
return e.name === chan.name
92
+
})
93
+
if (c) c.rank++
94
+
else channels.push(chan)
95
+
})
96
+
)
97
+
},
98
+
99
+
suggest_search: function (query) {
100
+
return function (cb) {
101
+
if(!/^#\w/.test(query)) return cb()
102
+
cb(null, channels.filter(function (chan) {
103
+
return ('#'+chan.name).substring(0, query.length) === query
104
+
})
105
+
.map(function (chan) {
106
+
var name = '#'+chan.name
107
+
return {
108
+
title: name,
109
+
value: name,
110
+
subtitle: chan.rank
111
+
}
112
+
}))
113
+
}
114
+
}
115
+
}
116
+
}
117
+
+51
decent/modules_extra/dns.js
+51
decent/modules_extra/dns.js
···
1
+
var h = require('hyperscript')
2
+
3
+
function array(obj) {
4
+
return !obj ? [] : Array.isArray(obj) ? obj : [obj]
5
+
}
6
+
7
+
function idLink(id) {
8
+
return h('a', {href: '#'+id}, id.substring(0, 10)+'…')
9
+
}
10
+
11
+
exports.gives = {
12
+
message_content: true,
13
+
message_content_mini: true
14
+
}
15
+
16
+
exports.create = function () {
17
+
var exports = {}
18
+
19
+
exports.message_content = function (msg, sbot) {
20
+
var c = msg.value.content
21
+
22
+
if(c.type === 'ssb-dns') {
23
+
var record = c.record || {}
24
+
return h('div',
25
+
h('p',
26
+
h('ins', {title: 'name'}, record.name), ' ',
27
+
h('em', {title: 'ttl'}, record.ttl), ' ',
28
+
h('span', {title: 'class'}, record.class), ' ',
29
+
h('span', {title: 'type'}, record.type),
30
+
h('pre', {title: 'data'},
31
+
JSON.stringify(record.data || record.value, null, 2)),
32
+
!c.branch ? null : h('div', h('span',
33
+
'replaces: ', array(c.branch).map(idLink)))
34
+
))
35
+
}
36
+
}
37
+
38
+
exports.message_content_mini = function (msg) {
39
+
var c = msg.value.content
40
+
if(c.type !== 'ssb-dns') return
41
+
var record = c.record || {}
42
+
var summary = [record.name, record.type, record.class]
43
+
.filter(Boolean)
44
+
.join(' ')
45
+
if(!summary) summary = 'dns record'
46
+
return summary
47
+
}
48
+
49
+
return exports
50
+
51
+
}
+22
decent/modules_extra/emoji.js
+22
decent/modules_extra/emoji.js
···
1
+
var emojis = require('emoji-named-characters')
2
+
var emojiNames = Object.keys(emojis)
3
+
4
+
//var plugs = require('../plugs')
5
+
//var blob_url = plugs.first(exports.blob_url = [])
6
+
//
7
+
8
+
exports.needs = { blob_url: 'first' }
9
+
exports.gives = { emoji_names: true, emoji_url: true }
10
+
11
+
exports.create = function (api) {
12
+
return {
13
+
emoji_names: function () {
14
+
return emojiNames
15
+
},
16
+
emoji_url: function (emoji) {
17
+
return emoji in emojis &&
18
+
api.blob_url(emoji).replace(/\/blobs\/get/, '/img/emoji') + '.png'
19
+
}
20
+
}
21
+
}
22
+
+54
decent/modules_extra/git-ssb.js
+54
decent/modules_extra/git-ssb.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
6
+
//var plugs = require('../plugs')
7
+
//var message_render = plugs.first(exports.message_render = [])
8
+
//var message_compose = plugs.first(exports.message_compose = [])
9
+
//var sbot_log = plugs.first(exports.sbot_log = [])
10
+
11
+
exports.needs = {
12
+
message_render: 'first',
13
+
message_compose: 'first',
14
+
sbot_log: 'first'
15
+
}
16
+
17
+
exports.gives = {
18
+
menu_items: true, screen_view: true
19
+
}
20
+
21
+
exports.create = function (api) {
22
+
return {
23
+
menu_items: function () {
24
+
return h('a', {href: '#/git-ssb'}, '/git-ssb')
25
+
},
26
+
27
+
screen_view: function (path, sbot) {
28
+
if(path === '/git-ssb') {
29
+
30
+
var content = h('div.column.scroller__content')
31
+
var div = h('div.column.scroller',
32
+
{style: {'overflow':'auto'}},
33
+
h('div.scroller__wrapper', content)
34
+
)
35
+
36
+
pull(
37
+
u.next(api.sbot_log, {old: false, limit: 100}),
38
+
Scroller(div, content, api.message_render, true, false)
39
+
)
40
+
41
+
pull(
42
+
u.next(api.sbot_log, {reverse: true, limit: 100, live: false}),
43
+
pull.filter(function(msg) { return msg.value.content.type }),
44
+
pull.filter(function(msg) {
45
+
return msg.value.content.type.match(/^git/)
46
+
}),
47
+
Scroller(div, content, api.message_render, false, false)
48
+
)
49
+
50
+
return div
51
+
}
52
+
}
53
+
}
54
+
}
+519
decent/modules_extra/git.js
+519
decent/modules_extra/git.js
···
1
+
'use strict'
2
+
var h = require('hyperscript')
3
+
var pull = require('pull-stream')
4
+
var paramap = require('pull-paramap')
5
+
var cat = require('pull-cat')
6
+
var human = require('human-time')
7
+
var combobox = require('hypercombo')
8
+
9
+
var getAvatar = require('ssb-avatar')
10
+
var KVGraph = require('kvgraph')
11
+
var mergeRepo = require('ssb-git/merge')
12
+
13
+
//var plugs = require('../plugs')
14
+
//var message_link = plugs.first(exports.message_link = [])
15
+
//var message_confirm = plugs.first(exports.message_confirm = [])
16
+
//var message_compose = plugs.first(exports.message_compose = [])
17
+
//var sbot_links = plugs.first(exports.sbot_links = [])
18
+
//var sbot_links2 = plugs.first(exports.sbot_links2 = [])
19
+
//var sbot_get = plugs.first(exports.sbot_get = [])
20
+
//var avatar_name = plugs.first(exports.avatar_name = [])
21
+
//var markdown = plugs.first(exports.markdown = [])
22
+
23
+
exports.needs = {
24
+
message_link: 'first',
25
+
message_confirm: 'first',
26
+
message_compose: 'first',
27
+
sbot_links: 'first',
28
+
sbot_links2: 'first',
29
+
sbot_get: 'first',
30
+
avatar_name: 'first',
31
+
markdown: 'first'
32
+
}
33
+
34
+
exports.gives = {
35
+
message_action: true,
36
+
message_meta: true,
37
+
message_content: true
38
+
}
39
+
40
+
41
+
var self_id = require('../keys').id
42
+
43
+
function shortRefName(ref) {
44
+
return ref.replace(/^refs\/(heads|tags)\//, '')
45
+
}
46
+
47
+
exports.create = function (api) {
48
+
49
+
function getRefs(msg) {
50
+
var updates = new KVGraph('key')
51
+
var _cb, _refs
52
+
pull(
53
+
api.sbot_links({
54
+
reverse: true,
55
+
// source: msg.value.author,
56
+
dest: msg.key,
57
+
rel: 'repo',
58
+
values: true
59
+
}),
60
+
pull.drain(function (link) {
61
+
if (link.value.content.type === 'git-update') {
62
+
updates.add(link)
63
+
}
64
+
}, function (err) {
65
+
var refs = updates.reduceRight(mergeRepo).refs
66
+
var cb = _cb
67
+
if (cb) _cb = null, cb(err, refs)
68
+
else _refs = refs
69
+
})
70
+
)
71
+
72
+
return pull(
73
+
function fn(end, cb) {
74
+
if (end || fn.ended) cb(true)
75
+
fn.ended = true
76
+
if (_refs) cb(_refs)
77
+
else _cb = cb
78
+
},
79
+
pull.flatten()
80
+
)
81
+
}
82
+
83
+
function getForks(id) {
84
+
return pull(
85
+
api.sbot_links({
86
+
reverse: true,
87
+
dest: id,
88
+
rel: 'upstream'
89
+
}),
90
+
pull.map(function (link) {
91
+
return {
92
+
id: link.key,
93
+
author: link.source
94
+
}
95
+
})
96
+
)
97
+
}
98
+
99
+
function repoText(id) {
100
+
var text = document.createTextNode(id.substr(0, 10) + '…')
101
+
getAvatar({links: api.sbot_links, get: api.sbot_get}, self_id, id,
102
+
function (err, avatar) {
103
+
if(err) return console.error(err)
104
+
if (avatar.name[0] !== '%') avatar.name = '%' + avatar.name
105
+
text.nodeValue = avatar.name
106
+
})
107
+
return text
108
+
}
109
+
110
+
function repoLink(id) {
111
+
return h('a', {href: '#'+id}, repoText(id))
112
+
}
113
+
114
+
function repoName(id) {
115
+
return h('ins', repoText(id))
116
+
}
117
+
118
+
function getIssueState(id, cb) {
119
+
pull(
120
+
api.sbot_links({dest: id, rel: 'issues', values: true, reverse: true}),
121
+
pull.map(function (msg) {
122
+
return msg.value.content.issues
123
+
}),
124
+
pull.flatten(),
125
+
pull.filter(function (issue) {
126
+
return issue.link === id
127
+
}),
128
+
pull.map(function (issue) {
129
+
return issue.merged ? 'merged' : issue.open ? 'open' : 'closed'
130
+
}),
131
+
pull.take(1),
132
+
pull.collect(function (err, updates) {
133
+
cb(err, updates && updates[0] || 'open')
134
+
})
135
+
)
136
+
}
137
+
138
+
//todo:
139
+
function messageTimestampLink(msg) {
140
+
var date = new Date(msg.value.timestamp)
141
+
return h('a.timestamp', {
142
+
timestamp: msg.value.timestamp,
143
+
title: date,
144
+
href: '#'+msg.key
145
+
}, human(date))
146
+
}
147
+
148
+
// a thead+tbody where the thead only is added when the first row is added
149
+
function tableRows(headerRow) {
150
+
var thead = h('thead'), tbody = h('tbody')
151
+
var first = true
152
+
var t = [thead, tbody]
153
+
t.append = function (row) {
154
+
if (first) {
155
+
first = false
156
+
thead.appendChild(headerRow)
157
+
}
158
+
tbody.appendChild(row)
159
+
}
160
+
return t
161
+
}
162
+
163
+
function renderIssueEdit(c) {
164
+
var id = c.issue || c.link
165
+
return [
166
+
c.title ? h('p', 'renamed issue ', api.message_link(id),
167
+
' to ', h('ins', c.title)) : null,
168
+
c.open === false ? h('p', 'closed issue ', api.message_link(id)) : null,
169
+
c.open === true ? h('p', 'reopened issue ', api.message_link(id)) : null]
170
+
}
171
+
172
+
function findMessageContent(el) {
173
+
for(; el; el = el.parentNode) {
174
+
if(el.classList.contains('message')) {
175
+
return el.querySelector('.message_content')
176
+
}
177
+
}
178
+
}
179
+
180
+
function issueForm(msg, contentEl) {
181
+
var form = h('form',
182
+
h('strong', 'New Issue:'),
183
+
api.message_compose(
184
+
{type: 'issue', project: msg.key},
185
+
function (value) { return value },
186
+
function (err, issue) {
187
+
if(err) return alert(err)
188
+
if(!issue) return
189
+
var title = issue.value.content.text
190
+
if(title.length > 70) title = title.substr(0, 70) + '…'
191
+
form.appendChild(h('div',
192
+
h('a', {href: '#'+issue.key}, title)
193
+
))
194
+
}
195
+
)
196
+
)
197
+
return form
198
+
}
199
+
200
+
function branchMenu(msg, full) {
201
+
return combobox({
202
+
style: {'max-width': '14ex'},
203
+
placeholder: 'branch…',
204
+
default: 'master',
205
+
read: msg && pull(getRefs(msg), pull.map(function (ref) {
206
+
var m = /^refs\/heads\/(.*)$/.exec(ref.name)
207
+
if(!m) return
208
+
var branch = m[1]
209
+
var label = branch
210
+
if(full) {
211
+
var updated = new Date(ref.link.value.timestamp)
212
+
label = branch +
213
+
' · ' + human(updated) +
214
+
' · ' + ref.hash.substr(1, 8) +
215
+
(ref.title ? ' · "' + ref.title + '"' : '')
216
+
}
217
+
return h('option', {value: branch}, label)
218
+
}))
219
+
})
220
+
}
221
+
222
+
function newPullRequestButton(msg) {
223
+
return h('div', [
224
+
h('a', {
225
+
href: '#',
226
+
onclick: function (e) {
227
+
e.preventDefault()
228
+
this.parentNode.replaceChild(pullRequestForm(msg), this)
229
+
}},
230
+
'New Pull Request…'
231
+
)
232
+
])
233
+
}
234
+
235
+
function pullRequestForm(msg) {
236
+
var headRepoInput
237
+
var headBranchInput = branchMenu()
238
+
var branchInput = branchMenu(msg)
239
+
var form = h('form',
240
+
h('strong', 'New Pull Request:'),
241
+
h('div',
242
+
'from ',
243
+
headRepoInput = combobox({
244
+
style: {'max-width': '26ex'},
245
+
onchange: function () {
246
+
// list branches for selected repo
247
+
var repoId = this.value
248
+
if(repoId) api.sbot_get(repoId, function (err, value) {
249
+
if(err) console.error(err)
250
+
var msg = value && {key: repoId, value: value}
251
+
headBranchInput = headBranchInput.swap(branchMenu(msg, true))
252
+
})
253
+
else headBranchInput = headBranchInput.swap(branchMenu())
254
+
},
255
+
read: pull(cat([
256
+
pull.once({id: msg.key, author: msg.value.author}),
257
+
getForks(msg.key)
258
+
]), pull.map(function (fork) {
259
+
return h('option', {value: fork.id},
260
+
repoLink(fork.id), ' by ', api.avatar_name(fork.author))
261
+
}))
262
+
}),
263
+
':',
264
+
headBranchInput,
265
+
' to ',
266
+
repoName(msg.key),
267
+
':',
268
+
branchInput),
269
+
api.message_compose(
270
+
{
271
+
type: 'pull-request',
272
+
project: msg.key,
273
+
repo: msg.key,
274
+
},
275
+
function (value) {
276
+
value.branch = branchInput.value
277
+
value.head_repo = headRepoInput.value
278
+
value.head_branch = headBranchInput.value
279
+
return value
280
+
},
281
+
function (err, issue) {
282
+
if(err) return alert(err)
283
+
if(!issue) return
284
+
var title = issue.value.content.text
285
+
if(title.length > 70) title = title.substr(0, 70) + '…'
286
+
form.appendChild(h('div',
287
+
h('a', {href: '#'+issue.key}, title)
288
+
))
289
+
}
290
+
)
291
+
)
292
+
return form
293
+
}
294
+
295
+
296
+
297
+
return {
298
+
message_content: function (msg, sbot) {
299
+
var c = msg.value.content
300
+
301
+
if(c.type === 'git-repo') {
302
+
var branchesT, tagsT, openIssuesT, closedIssuesT, openPRsT, closedPRsT
303
+
var forksT
304
+
var div = h('div',
305
+
h('p', 'git repo ', repoName(msg.key)),
306
+
c.upstream ? h('p', 'fork of ', repoLink(c.upstream)) : '',
307
+
h('p', h('code', 'ssb://' + msg.key)),
308
+
h('div.git-table-wrapper', {style: {'max-height': '12em'}},
309
+
h('table',
310
+
branchesT = tableRows(h('tr',
311
+
h('th', 'branch'),
312
+
h('th', 'commit'),
313
+
h('th', 'last update'))),
314
+
tagsT = tableRows(h('tr',
315
+
h('th', 'tag'),
316
+
h('th', 'commit'),
317
+
h('th', 'last update'))))),
318
+
h('div.git-table-wrapper', {style: {'max-height': '16em'}},
319
+
h('table',
320
+
openIssuesT = tableRows(h('tr',
321
+
h('th', 'open issues'))),
322
+
closedIssuesT = tableRows(h('tr',
323
+
h('th', 'closed issues'))))),
324
+
h('div.git-table-wrapper', {style: {'max-height': '16em'}},
325
+
h('table',
326
+
openPRsT = tableRows(h('tr',
327
+
h('th', 'open pull requests'))),
328
+
closedPRsT = tableRows(h('tr',
329
+
h('th', 'closed pull requests'))))),
330
+
h('div.git-table-wrapper',
331
+
h('table',
332
+
forksT = tableRows(h('tr',
333
+
h('th', 'forks'))))),
334
+
h('div', h('a', {href: '#', onclick: function (e) {
335
+
e.preventDefault()
336
+
this.parentNode.replaceChild(issueForm(msg), this)
337
+
}}, 'New Issue…')),
338
+
newPullRequestButton.call(this, msg)
339
+
)
340
+
341
+
pull(getRefs(msg), pull.drain(function (ref) {
342
+
var name = ref.realname || ref.name
343
+
var author = ref.link && ref.link.value.author
344
+
var parts = /^refs\/(heads|tags)\/(.*)$/.exec(name) || []
345
+
var shortName = parts[2]
346
+
var t
347
+
if(parts[1] === 'heads') t = branchesT
348
+
else if(parts[1] === 'tags') t = tagsT
349
+
if(t) t.append(h('tr',
350
+
h('td', shortName,
351
+
ref.conflict ? [
352
+
h('br'),
353
+
h('a', {href: '#'+author}, api.avatar_name(author))
354
+
] : ''),
355
+
h('td', h('code', ref.hash)),
356
+
h('td', messageTimestampLink(ref.link))))
357
+
}, function (err) {
358
+
if(err) console.error(err)
359
+
}))
360
+
361
+
// list issues and pull requests
362
+
pull(
363
+
api.sbot_links({
364
+
reverse: true,
365
+
dest: msg.key,
366
+
rel: 'project',
367
+
values: true
368
+
}),
369
+
paramap(function (link, cb) {
370
+
getIssueState(link.key, function (err, state) {
371
+
if(err) return cb(err)
372
+
link.state = state
373
+
cb(null, link)
374
+
})
375
+
}),
376
+
pull.drain(function (link) {
377
+
var c = link.value.content
378
+
var title = c.title || (c.text ? c.text.length > 70
379
+
? c.text.substr(0, 70) + '…'
380
+
: c.text : link.key)
381
+
var author = link.value.author
382
+
var t = c.type === 'pull-request'
383
+
? link.state === 'open' ? openPRsT : closedPRsT
384
+
: link.state === 'open' ? openIssuesT : closedIssuesT
385
+
t.append(h('tr',
386
+
h('td',
387
+
h('a', {href: '#'+link.key}, title), h('br'),
388
+
h('small',
389
+
'opened ', messageTimestampLink(link),
390
+
' by ', h('a', {href: '#'+author}, api.avatar_name(author))))))
391
+
}, function (err) {
392
+
if (err) console.error(err)
393
+
})
394
+
)
395
+
396
+
// list forks
397
+
pull(
398
+
getForks(msg.key),
399
+
pull.drain(function (fork) {
400
+
forksT.append(h('tr', h('td',
401
+
repoLink(fork.id),
402
+
' by ', h('a', {href: '#'+fork.author}, api.avatar_name(fork.author)))))
403
+
}, function (err) {
404
+
if (err) console.error(err)
405
+
})
406
+
)
407
+
408
+
return div
409
+
}
410
+
411
+
if(c.type === 'git-update') {
412
+
return [
413
+
h('p', 'pushed to ', repoLink(c.repo)),
414
+
c.refs ? h('ul', Object.keys(c.refs).map(function (ref) {
415
+
var rev = c.refs[ref]
416
+
return h('li',
417
+
shortRefName(ref) + ': ',
418
+
rev ? h('code', rev) : h('em', 'deleted'))
419
+
})) : null,
420
+
Array.isArray(c.commits) ? [
421
+
h('ul',
422
+
c.commits.map(function (commit) {
423
+
return h('li',
424
+
typeof commit.sha1 === 'string' ?
425
+
[h('code', commit.sha1.substr(0, 8)), ' '] : null,
426
+
commit.title ?
427
+
h('q', commit.title) : null)
428
+
}),
429
+
c.commits_more > 0 ?
430
+
h('li', '+ ', c.commits_more, ' more') : null)
431
+
] : null,
432
+
Array.isArray(c.issues) ? c.issues.map(function (issue) {
433
+
if (issue.merged === true)
434
+
return h('p', 'Merged ', api.message_link(issue.link), ' in ',
435
+
h('code', issue.object), ' ', h('q', issue.label))
436
+
if (issue.open === false)
437
+
return h('p', 'Closed ', api.message_link(issue.link), ' in ',
438
+
h('code', issue.object), ' ', h('q', issue.label))
439
+
}) : null,
440
+
newPullRequestButton.call(this, msg)
441
+
]
442
+
}
443
+
444
+
if(c.type === 'issue-edit'
445
+
|| (c.type === 'post' && c.text === '')) {
446
+
return h('div',
447
+
c.issue ? renderIssueEdit(c) : null,
448
+
c.issues ? c.issues.map(renderIssueEdit) : null)
449
+
}
450
+
451
+
if(c.type === 'issue') {
452
+
return h('div',
453
+
h('p', 'opened issue on ', repoLink(c.project)),
454
+
c.title ? h('h4', c.title) : '',
455
+
api.markdown(c)
456
+
)
457
+
}
458
+
459
+
if(c.type === 'pull-request') {
460
+
return h('div',
461
+
h('p', 'opened pull-request ',
462
+
'to ', repoLink(c.repo), ':', c.branch, ' ',
463
+
'from ', repoLink(c.head_repo), ':', c.head_branch),
464
+
c.title ? h('h4', c.title) : '',
465
+
api.markdown(c)
466
+
)
467
+
}
468
+
},
469
+
470
+
message_meta: function (msg, sbot) {
471
+
var type = msg.value.content.type
472
+
if (type === 'issue' || type === 'pull-request') {
473
+
var el = h('em', '...')
474
+
// TODO: update if issue is changed
475
+
getIssueState(msg.key, function (err, state) {
476
+
if (err) return console.error(err)
477
+
el.textContent = state
478
+
})
479
+
return el
480
+
}
481
+
},
482
+
483
+
message_action: function (msg, sbot) {
484
+
var c = msg.value.content
485
+
if(c.type === 'issue' || c.type === 'pull-request') {
486
+
var isOpen
487
+
var a = h('a', {href: '#', onclick: function (e) {
488
+
e.preventDefault()
489
+
api.message_confirm({
490
+
type: 'issue-edit',
491
+
root: msg.key,
492
+
issues: [{
493
+
link: msg.key,
494
+
open: !isOpen
495
+
}]
496
+
}, function (err, msg) {
497
+
if(err) return alert(err)
498
+
if(!msg) return
499
+
isOpen = msg.value.content.open
500
+
update()
501
+
})
502
+
}})
503
+
getIssueState(msg.key, function (err, state) {
504
+
if (err) return console.error(err)
505
+
isOpen = state === 'open'
506
+
update()
507
+
})
508
+
function update() {
509
+
a.textContent = c.type === 'pull-request'
510
+
? isOpen ? 'Close Pull Request' : 'Reopen Pull Request'
511
+
: isOpen ? 'Close Issue' : 'Reopen Issue'
512
+
}
513
+
return a
514
+
}
515
+
}
516
+
}
517
+
}
518
+
519
+
+22
decent/modules_extra/index.js
+22
decent/modules_extra/index.js
···
1
+
module.exports = {
2
+
"audio-mp3.js": require('./audio-mp3.js'),
3
+
"channel.js": require('./channel.js'),
4
+
"emoji.js": require('./emoji.js'),
5
+
"suggest-emoji.js": require('./suggest-emoji.js'),
6
+
"dns.js": require('./dns.js'),
7
+
"git.js": require('./git.js'),
8
+
"git-ssb.js": require('./git-ssb.js'),
9
+
"key.js": require('./key.js'),
10
+
"notifications.js": require('./notifications.js'),
11
+
"meta-image.js": require('./meta-image.js'),
12
+
"music-release-cc.js": require('./music-release-cc.js'),
13
+
"music-release.js": require('./music-release.js'),
14
+
"network.js": require('./network.js'),
15
+
"query.js": require('./query.js'),
16
+
"raw.js": require('./raw.js'),
17
+
"search.js": require('./search'),
18
+
"split.js": require('./split.js'),
19
+
"versions.js": require('./versions.js')
20
+
}
21
+
22
+
+63
decent/modules_extra/key.js
+63
decent/modules_extra/key.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
var keys
6
+
try { keys = require('../keys') } catch (_) {}
7
+
8
+
//var plugs = require('../plugs')
9
+
// var message_render = plugs.first(exports.message_render = [])
10
+
// var message_compose = plugs.first(exports.message_compose = [])
11
+
// var sbot_log = plugs.first(exports.sbot_log = [])
12
+
13
+
14
+
exports.gives = {
15
+
menu_items: true, screen_view: true
16
+
}
17
+
18
+
exports.create = function (api) {
19
+
return {
20
+
menu_items: function () {
21
+
return h('a', {href: '#/key'}, '/key')
22
+
},
23
+
screen_view: function (path, sbot) {
24
+
if(path === '/key') {
25
+
if(process.title === 'browser') {
26
+
var storedSecret = null
27
+
try { storedSecret = localStorage['browser/.ssb/secret'] } catch (_) {}
28
+
29
+
if((!storedSecret || storedSecret === 'undefined') && keys && keys.id) {
30
+
try {
31
+
storedSecret = JSON.stringify(keys, null, 2)
32
+
localStorage['browser/.ssb/secret'] = storedSecret
33
+
} catch (_) {}
34
+
}
35
+
36
+
var importKey = h('textarea', {placeholder: 'import an existing public/private key', name: 'textarea'})
37
+
var content = h('div.column.scroller__content')
38
+
var div = h('div.column.scroller',
39
+
{style: {'overflow':'auto'}},
40
+
h('div.scroller__wrapper',
41
+
h('div.column.scroller__content',
42
+
h('div.message',
43
+
h('p', {innerHTML: 'Your secret key is: <pre><code>' + (storedSecret || '') + '</code></pre>'}),
44
+
h('form',
45
+
importKey,
46
+
h('button.btn.btn-primary', {onclick: function (e){
47
+
localStorage['browser/.ssb/secret'] = importKey.value.replace(/\s+/g, ' ')
48
+
alert('Your public/private key has been updated')
49
+
e.preventDefault()
50
+
}}, 'Import')
51
+
)
52
+
)
53
+
)
54
+
)
55
+
)
56
+
return div
57
+
} else {
58
+
return h('p', 'Your key is saved at .ssb/secret')
59
+
}
60
+
}
61
+
}
62
+
}
63
+
}
+68
decent/modules_extra/meta-image.js
+68
decent/modules_extra/meta-image.js
···
1
+
var markdown = require('ssb-markdown');
2
+
var h = require('hyperscript');
3
+
var u = require('../util');
4
+
var ref = require('ssb-ref');
5
+
6
+
//render a message
7
+
8
+
//var plugs = require('../plugs');
9
+
//var message_link = plugs.first(exports.message_link = []);
10
+
//var message_confirm = plugs.first(exports.message_confirm = []);
11
+
//var sbot_links = plugs.first(exports.sbot_links = []);
12
+
//var blob_url = plugs.first(exports.blob_url = []);
13
+
//
14
+
exports.needs = { blob_url: 'first' }
15
+
exports.gives = {
16
+
message_content: true,
17
+
message_content_mini: true
18
+
}
19
+
20
+
exports.create = function (api) {
21
+
var exports = {}
22
+
23
+
exports.message_content = function (msg, sbot) {
24
+
if (msg.value.content.type !== 'meta-image')
25
+
return;
26
+
27
+
var v = msg.value.content;
28
+
return h('div',
29
+
// h('h2', "(" + v.Track + ") " + v.Title),
30
+
h('img', { "src" : api.blob_url(v.link) }))
31
+
32
+
// h('dl',
33
+
// Object.keys(v).map(function(k) {
34
+
// return [
35
+
// h("dt", k),
36
+
// h("dd", v[k]),
37
+
// ]
38
+
// })))
39
+
40
+
// "Album": "the fall of",
41
+
// "Crc32": "038becab",
42
+
// "Creator": "bleupulp",
43
+
// "Format": "VBR MP3",
44
+
// "Height": "0",
45
+
// "Length": "375.23",
46
+
// "Md5": "2c517c8e813da5f940c8c7e77d4b7f3f",
47
+
// "Mtime": "1399498698",
48
+
// "Name": "2_bleupulp_-_clouds.mp3",
49
+
// "Sha1": "9f6a96a3d5571ed1ec2a7da38ffebdcd5f181482",
50
+
// "Size": "15009000",
51
+
52
+
// "Title": "clouds",
53
+
// "Track": "2",
54
+
// "Width": "0",
55
+
56
+
}
57
+
58
+
exports.message_content_mini = function (msg) {
59
+
if (msg.value.content.type !== 'meta-image')
60
+
return;
61
+
62
+
var v = msg.value.content;
63
+
if(!api.blob_url || !v.link) return 'image'
64
+
return ['image: ', h('a', { href: api.blob_url(v.link) }, 'view')]
65
+
}
66
+
67
+
return exports
68
+
}
+101
decent/modules_extra/music-release-cc.js
+101
decent/modules_extra/music-release-cc.js
···
1
+
var markdown = require('ssb-markdown');
2
+
var h = require('hyperscript');
3
+
var u = require('../util');
4
+
var ref = require('ssb-ref');
5
+
6
+
//render a message
7
+
8
+
//var plugs = require('../plugs');
9
+
//var message_link = plugs.first(exports.message_link = []);
10
+
//var message_confirm = plugs.first(exports.message_confirm = []);
11
+
//var sbot_links = plugs.first(exports.sbot_links = []);
12
+
//var blob_url = plugs.first(exports.blob_url = []);
13
+
//
14
+
15
+
exports.needs = { blob_url: 'first' }
16
+
exports.gives = {
17
+
message_content: true,
18
+
message_content_mini: true
19
+
}
20
+
21
+
exports.create = function (api) {
22
+
var exports = {}
23
+
24
+
exports.message_content = function (msg, sbot) {
25
+
if (msg.value.content.type !== 'music-release-cc')
26
+
return;
27
+
28
+
var tracks = msg.value.content.tracks;
29
+
return h('div',
30
+
h('img', { "src" : api.blob_url(msg.value.content.cover) }),
31
+
h('h1', msg.value.content.title),
32
+
h('ol',
33
+
Object.keys(tracks).map(function(k) {
34
+
var t = tracks[k];
35
+
return h('li', t.fname,
36
+
h("br"),
37
+
h('audio', {
38
+
"controls" : true,
39
+
"src" : api.blob_url(t.link)
40
+
}))
41
+
})),
42
+
h('p',
43
+
"More info:", h('a', { href : msg.value.content.archivedotorg }, "archive.org"),
44
+
h("br"),
45
+
"License:", h('a', { href : msg.value.content.license }, "Link")))
46
+
}
47
+
48
+
exports.message_content_mini = function (msg) {
49
+
if (msg.value.content.type !== 'music-release-cc')
50
+
return;
51
+
52
+
var v = msg.value.content
53
+
return ['music release: ', v.title || 'untitled']
54
+
}
55
+
56
+
return exports
57
+
}
58
+
59
+
// copied from like.js
60
+
61
+
// inspiration for waveform range selection
62
+
63
+
// idea: handout invite codes for upload of tracks to be cached by the pub
64
+
65
+
// exports.message_meta = function (msg, sbot) {
66
+
67
+
// var yupps = h('a')
68
+
69
+
// pull(
70
+
// sbot_links({dest: msg.key, rel: 'vote'}),
71
+
// pull.collect(function (err, votes) {
72
+
// if(votes.length === 1)
73
+
// yupps.textContent = ' 1 yup'
74
+
// if(votes.length)
75
+
// yupps.textContent = ' ' + votes.length + ' yupps'
76
+
// })
77
+
// )
78
+
79
+
// return yupps
80
+
// }
81
+
82
+
// exports.message_action = function (msg, sbot) {
83
+
// if(msg.value.content.type !== 'vote')
84
+
// return h('a', {href: '#', onclick: function () {
85
+
// var yup = {
86
+
// type: 'vote',
87
+
// vote: { link: msg.key, value: 1, expression: 'yup' }
88
+
// }
89
+
// if(msg.value.content.recps) {
90
+
// yup.recps = msg.value.content.recps.map(function (e) {
91
+
// return e && typeof e !== 'string' ? e.link : e
92
+
// })
93
+
// yup.private = true
94
+
// }
95
+
// //TODO: actually publish...
96
+
97
+
// message_confirm(yup)
98
+
// }}, 'yup')
99
+
100
+
// }
101
+
+61
decent/modules_extra/music-release.js
+61
decent/modules_extra/music-release.js
···
1
+
var markdown = require('ssb-markdown');
2
+
var h = require('hyperscript');
3
+
var u = require('../util');
4
+
var ref = require('ssb-ref');
5
+
6
+
//render a message
7
+
8
+
//var plugs = require('../plugs');
9
+
//var message_link = plugs.first(exports.message_link = []);
10
+
//var message_confirm = plugs.first(exports.message_confirm = []);
11
+
//var sbot_links = plugs.first(exports.sbot_links = []);
12
+
//
13
+
exports.gives = {
14
+
message_content: true,
15
+
message_content_mini: true
16
+
}
17
+
18
+
exports.create = function () {
19
+
var exports = {}
20
+
21
+
exports.message_content = function (msg, sbot) {
22
+
if (msg.value.content.type !== 'music-release')
23
+
return;
24
+
25
+
var v = msg.value.content;
26
+
return h('div',
27
+
// h('img', { "src" : "http://localhost:7777/" + encodeURIComponent(v.cover) }),
28
+
h('h1', v.Title),
29
+
h("p", v.Description),
30
+
h("dl",
31
+
32
+
h("dt", "Creator"),
33
+
h("dd", v.Creator),
34
+
35
+
h("dt", "Identifier"),
36
+
h("dd", v.Identifier),
37
+
38
+
h("dt", "Published"),
39
+
h("dd", v.Publicdate),
40
+
41
+
h("dt", "Runtime"),
42
+
h("dd", v.Runtime),
43
+
44
+
h("dt", "Source"),
45
+
h("dd", v.Source),
46
+
47
+
h("dt", "License"),
48
+
h("dd", h('a', { href : v.Licenseurl }, "Link"))))
49
+
}
50
+
51
+
exports.message_content_mini = function (msg) {
52
+
if (msg.value.content.type !== 'music-release')
53
+
return;
54
+
55
+
var v = msg.value.content;
56
+
var title = v.Title || v.Identifier || 'music release'
57
+
return ['music release: ', title]
58
+
}
59
+
60
+
return exports
61
+
}
+176
decent/modules_extra/network.js
+176
decent/modules_extra/network.js
···
1
+
var isVisible = require('is-visible').isVisible
2
+
var h = require('hyperscript')
3
+
4
+
//var avatar = plugs.first(exports.avatar = [])
5
+
//var sbot_gossip_peers = plugs.first(exports.sbot_gossip_peers = [])
6
+
//var sbot_gossip_connect = plugs.first(exports.sbot_gossip_connect = [])
7
+
8
+
exports.needs = {
9
+
avatar: 'first',
10
+
sbot_gossip_peers: 'first',
11
+
sbot_gossip_connect: 'first'
12
+
}
13
+
14
+
exports.gives = {
15
+
menu_items: true,
16
+
builtin_tabs: true,
17
+
screen_view: true
18
+
}
19
+
20
+
//sbot_gossip_connect
21
+
//sbot_gossip_add
22
+
23
+
var human = require('human-time')
24
+
25
+
function legacyToMultiServer(addr) {
26
+
return 'net:'+addr.host + ':'+addr.port + '~shs:'+addr.key.substring(1).replace('.ed25519','')
27
+
}
28
+
29
+
//types of peers
30
+
31
+
32
+
//on the same wifi network
33
+
function isLocal (e) {
34
+
// don't rely on private ip address, because
35
+
// cjdns creates fake private ip addresses.
36
+
return ip.isPrivate(e.host) && e.type === 'local'
37
+
}
38
+
39
+
40
+
//pub is running scuttlebot >=8
41
+
//have connected successfully.
42
+
function isLongterm (e) {
43
+
return e.ping && e.ping.rtt && e.ping.rtt.mean > 0
44
+
}
45
+
46
+
//pub is running scuttlebot < 8
47
+
//have connected sucessfully
48
+
function isLegacy (peer) {
49
+
return /connect/.test(peer.state) || (peer.duration && peer.duration.mean) > 0 && !isLongterm(peer)
50
+
}
51
+
52
+
//tried to connect, but failed.
53
+
function isInactive (e) {
54
+
return e.stateChange && (e.duration && e.duration.mean == 0)
55
+
}
56
+
57
+
//havn't tried to connect peer yet.
58
+
function isUnattempted (e) {
59
+
return !e.stateChange
60
+
}
61
+
62
+
function getType (e) {
63
+
return (
64
+
isLongterm(e) ? 'modern'
65
+
: isLegacy(e) ? 'legacy'
66
+
: isInactive(e) ? 'inactive'
67
+
: isUnattempted(e) ? 'unattempted'
68
+
: 'other' //should never happen
69
+
)
70
+
}
71
+
72
+
function origin (e) {
73
+
return e.source === 'local' ? 0 : 1
74
+
}
75
+
76
+
var states = {
77
+
connected: 3,
78
+
connecting: 2
79
+
}
80
+
81
+
var types = {
82
+
modern: 4,
83
+
legacy: 3,
84
+
inactive: 2,
85
+
unattempted: 1,
86
+
other: 0
87
+
}
88
+
89
+
function round(n) {
90
+
return Math.round(n*100)/100
91
+
}
92
+
93
+
function duration (s) {
94
+
if(!s) return s
95
+
if (Math.abs(s) > 30000)
96
+
return round(s/60000)+'m'
97
+
else if (Math.abs(s) > 500)
98
+
return round(s/1000)+'s'
99
+
else
100
+
return round(s)+'ms'
101
+
}
102
+
103
+
104
+
105
+
exports.create = function (api) {
106
+
107
+
return {
108
+
menu_items: function () {
109
+
return h('a', {href: '#/network'}, '/network')
110
+
},
111
+
112
+
builtin_tabs: function () {
113
+
return ['/network']
114
+
},
115
+
116
+
screen_view: function (path) {
117
+
118
+
if(path !== '/network') return
119
+
120
+
var ol = h('ul.network')
121
+
122
+
;(function poll () {
123
+
124
+
//if this tab isn't open, don't update.
125
+
//todo: make a better way to do this...
126
+
if(!isVisible(ol))
127
+
return setTimeout(poll, 1000)
128
+
129
+
api.sbot_gossip_peers(function (err, list) {
130
+
ol.innerHTML = ''
131
+
list.sort(function (a, b) {
132
+
return (
133
+
(states[b.state] || 0) - (states[a.state] || 0)
134
+
|| origin(b) - origin(a)
135
+
|| types[getType(b)] - types[getType(a)]
136
+
|| b.stateChange - a.stateChange
137
+
)
138
+
}).forEach(function (peer) {
139
+
ol.appendChild(h('div',
140
+
api.avatar(peer.key, 'thumbnail'),
141
+
h('div',
142
+
peer.state || 'not connected',
143
+
' ',
144
+
getType(peer),
145
+
' ',
146
+
//TODO: show nicer details, with labels. etc.
147
+
(peer.ping && peer.ping.rtt) ? duration(peer.ping.rtt.mean) : '',
148
+
' ',
149
+
(peer.ping && peer.ping.skew) ? duration(peer.ping.skew.mean) : '',
150
+
h('label',
151
+
{title: new Date(peer.stateChange).toString()},
152
+
peer.stateChange && ('(' + human(new Date(peer.stateChange))) + ')')
153
+
),
154
+
'source:'+peer.source,
155
+
h('pre', legacyToMultiServer(peer)),
156
+
h('button', 'connect', {onclick: function () {
157
+
api.sbot_gossip_connect(peer, function (err) {
158
+
if(err) console.error(err)
159
+
else console.log('connected to', peer)
160
+
})
161
+
}})
162
+
)
163
+
)
164
+
})
165
+
166
+
setTimeout(poll, 5000)
167
+
})
168
+
169
+
})()
170
+
171
+
return h('div.column.scroll-y', ol)
172
+
}
173
+
}
174
+
}
175
+
176
+
+171
decent/modules_extra/notifications.js
+171
decent/modules_extra/notifications.js
···
1
+
'use strict'
2
+
var h = require('hyperscript')
3
+
var u = require('../util')
4
+
var pull = require('pull-stream')
5
+
var Scroller = require('pull-scroll')
6
+
var paramap = require('pull-paramap')
7
+
var plugs = require('../plugs')
8
+
var cont = require('cont')
9
+
var ref = require('ssb-ref')
10
+
11
+
//var message_render = plugs.first(exports.message_render = [])
12
+
//var sbot_log = plugs.first(exports.sbot_log = [])
13
+
//var sbot_get = plugs.first(exports.sbot_get = [])
14
+
//var sbot_user_feed = plugs.first(exports.sbot_user_feed = [])
15
+
//var message_unbox = plugs.first(exports.message_unbox = [])
16
+
17
+
exports.needs = {
18
+
message_render: 'first',
19
+
sbot_log: 'first',
20
+
sbot_get: 'first',
21
+
sbot_user_feed: 'first',
22
+
message_unbox: 'first'
23
+
}
24
+
25
+
26
+
exports.gives = {
27
+
builtin_tabs: true,
28
+
screen_view: true
29
+
}
30
+
31
+
exports.create = function (api) {
32
+
function unbox() {
33
+
return pull(
34
+
pull.map(function (msg) {
35
+
return msg.value && 'string' === typeof msg.value.content ?
36
+
api.message_unbox(msg) : msg
37
+
}),
38
+
pull.filter(Boolean)
39
+
)
40
+
}
41
+
42
+
function notifications(ourIds) {
43
+
44
+
function linksToUs(link) {
45
+
return link && link.link in ourIds
46
+
}
47
+
48
+
function isOurMsg(id, cb) {
49
+
if (!id) return cb(null, false)
50
+
if (typeof id === 'object' && typeof id.link === 'string') id = id.link
51
+
if (!ref.isMsg(id)) return cb(null, false)
52
+
api.sbot_get(id, function (err, msg) {
53
+
if (err && err.name == 'NotFoundError') cb(null, false)
54
+
else if (err) cb(err)
55
+
else if (msg.content.type === 'issue' || msg.content.type === 'pull-request')
56
+
isOurMsg(msg.content.repo || msg.content.project, cb)
57
+
else cb(err, msg.author in ourIds)
58
+
})
59
+
}
60
+
61
+
function isAnyOurMessage(msg, ids, cb) {
62
+
cont.para(ids.map(function (id) {
63
+
return function (cb) { isOurMsg(id, cb) }
64
+
}))
65
+
(function (err, results) {
66
+
if (err) cb(err)
67
+
else if (results.some(Boolean)) cb(null, msg)
68
+
else cb()
69
+
})
70
+
}
71
+
72
+
return paramap(function (msg, cb) {
73
+
var c = msg.value && msg.value.content
74
+
if (!c || typeof c !== 'object') return cb()
75
+
if (msg.value.author in ourIds) return cb()
76
+
77
+
if (c.mentions && Array.isArray(c.mentions) && c.mentions.some(linksToUs))
78
+
return cb(null, msg)
79
+
80
+
if (msg.private)
81
+
return cb(null, msg)
82
+
83
+
switch (c.type) {
84
+
case 'post':
85
+
if (c.branch || c.root)
86
+
return isAnyOurMessage(msg, [].concat(c.branch, c.root), cb)
87
+
else return cb()
88
+
89
+
case 'contact':
90
+
return cb(null, c.contact in ourIds ? msg : null)
91
+
92
+
case 'vote':
93
+
if (c.vote && c.vote.link)
94
+
return isOurMsg(c.vote.link, function (err, isOurs) {
95
+
cb(err, isOurs ? msg : null)
96
+
})
97
+
else return cb()
98
+
99
+
case 'issue':
100
+
case 'pull-request':
101
+
return isOurMsg(c.project || c.repo, function (err, isOurs) {
102
+
cb(err, isOurs ? msg : null)
103
+
})
104
+
105
+
case 'issue-edit':
106
+
return isAnyOurMessage(msg, [c.issue].concat(c.issues), cb)
107
+
108
+
default:
109
+
cb()
110
+
}
111
+
}, 4)
112
+
}
113
+
114
+
function getFirstMessage(feedId, cb) {
115
+
api.sbot_user_feed({id: feedId, gte: 0, limit: 1})(null, cb)
116
+
}
117
+
118
+
return {
119
+
builtin_tabs: function () {
120
+
return ['/notifications']
121
+
},
122
+
123
+
screen_view: function (path) {
124
+
if(path === '/notifications') {
125
+
var ids = {}
126
+
var oldest
127
+
128
+
var id = require('../keys').id
129
+
ids[id] = true
130
+
getFirstMessage(id, function (err, msg) {
131
+
if (err) return console.error(err)
132
+
if (!oldest || msg.value.timestamp < oldest) {
133
+
oldest = msg.value.timestamp
134
+
}
135
+
})
136
+
137
+
var content = h('div.column.scroller__content')
138
+
var div = h('div.column.scroller',
139
+
{style: {'overflow':'auto'}},
140
+
h('div.scroller__wrapper',
141
+
content
142
+
)
143
+
)
144
+
div.title = 'Notifications'
145
+
div.setAttribute('data-icon', 'notifications')
146
+
147
+
pull(
148
+
u.next(api.sbot_log, {old: false, limit: 100}),
149
+
unbox(),
150
+
notifications(ids),
151
+
pull.filter(),
152
+
Scroller(div, content, api.message_render, true, false)
153
+
)
154
+
155
+
pull(
156
+
u.next(api.sbot_log, {reverse: true, limit: 100, live: false}),
157
+
unbox(),
158
+
notifications(ids),
159
+
pull.filter(),
160
+
pull.take(function (msg) {
161
+
// abort stream after we pass the oldest messages of our feeds
162
+
return !oldest ? true : msg.value.timestamp > oldest
163
+
}),
164
+
Scroller(div, content, api.message_render, false, false)
165
+
)
166
+
167
+
return div
168
+
}
169
+
}
170
+
}
171
+
}
+66
decent/modules_extra/query.js
+66
decent/modules_extra/query.js
···
1
+
var h = require('hyperscript')
2
+
var pull = require('pull-stream')
3
+
var HJSON = require('hjson')
4
+
5
+
//var sbot_query = require('../plugs').first(exports.sbot_query = [])
6
+
7
+
exports.needs = { sbot_query: 'first' }
8
+
9
+
exports.gives = {
10
+
menu_items: true,
11
+
builtin_tabs: true,
12
+
screen_view: true
13
+
}
14
+
15
+
exports.create = function (api) {
16
+
17
+
return {
18
+
menu_items: function () {
19
+
return h('a', {href:'#/query'}, '/query')
20
+
},
21
+
22
+
builtin_tabs: function () {
23
+
return ['/query']
24
+
},
25
+
26
+
screen_view: function (path) {
27
+
if(path != '/query') return
28
+
var output, status, editor, stream, query
29
+
30
+
function parse () {
31
+
try {
32
+
query = HJSON.parse(editor.value)
33
+
} catch (err) {
34
+
return status.textContent = err.message
35
+
}
36
+
status.textContent = 'okay'
37
+
}
38
+
39
+
return h('div.column.scroll',
40
+
editor = h('textarea', {style: 'min-height:100px;', oninput: parse, onkeydown: function (e) {
41
+
if(!(e.keyCode === 13 && e.ctrlKey)) return
42
+
43
+
status.textContent = 'running...'
44
+
parse()
45
+
output.innerHTML = ''
46
+
if(stream) stream.abort()
47
+
48
+
console.log(query)
49
+
50
+
stream = pull(
51
+
api.sbot_query({query: query, limit: 100}),
52
+
pull.drain(function (data) {
53
+
output.appendChild(h('pre.query__data',
54
+
JSON.stringify(data, null, 2)
55
+
))
56
+
}, function (err) {
57
+
if(err) status.textContent = err.stack
58
+
})
59
+
)
60
+
}}),
61
+
status = h('div.query__status'),
62
+
output = h('div.column.query__output', {style: 'overflow-y: scroll;'})
63
+
)
64
+
}
65
+
}
66
+
}
+82
decent/modules_extra/raw.js
+82
decent/modules_extra/raw.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
6
+
var plugs = require('../plugs')
7
+
//var message_render = plugs.first(exports.message_render = [])
8
+
//var message_compose = plugs.first(exports.message_compose = [])
9
+
10
+
// from ssb-ref
11
+
var refRegex = /((?:@|%|&)[A-Za-z0-9\/+]{43}=\.[\w\d]+)/g
12
+
13
+
exports.gives = 'message_meta'
14
+
15
+
function linkify (text) {
16
+
var arr = text.split(refRegex)
17
+
for (var i = 1; i < arr.length; i += 2) {
18
+
arr[i] = h('a', {href: '#' + arr[i]}, arr[i])
19
+
}
20
+
return arr
21
+
}
22
+
23
+
exports.create = function (api) {
24
+
return function (msg) {
25
+
var tmp = h('div')
26
+
var el
27
+
var pre
28
+
var raw
29
+
function findMessageEl (node) {
30
+
while (node && node.classList) {
31
+
if (node.classList.contains('message')) return node
32
+
node = node.parentNode
33
+
}
34
+
return null
35
+
}
36
+
return h('input', {
37
+
type: 'checkbox',
38
+
title: 'View Data',
39
+
onclick: function () {
40
+
var msgEl = findMessageEl(this)
41
+
if (!msgEl) return
42
+
var msgContentEl = msgEl.querySelector('.message_content')
43
+
var isMini = msgEl.classList.contains('message--mini')
44
+
if (this.checked) {
45
+
if (isMini) {
46
+
if (!raw) {
47
+
raw = h('div.message_raw',
48
+
h('pre', h('code',
49
+
linkify(JSON.stringify({
50
+
key: msg.key,
51
+
value: msg.value
52
+
}, 0, 2))
53
+
))
54
+
)
55
+
}
56
+
msgEl.appendChild(raw)
57
+
} else {
58
+
// move away the content
59
+
while (el = msgContentEl.firstChild)
60
+
tmp.appendChild(el)
61
+
// show the raw stuff
62
+
if (!pre) pre = h('pre', linkify(JSON.stringify({
63
+
key: msg.key,
64
+
value: msg.value
65
+
}, 0, 2)))
66
+
msgContentEl.appendChild(pre)
67
+
}
68
+
} else {
69
+
if (isMini) {
70
+
if (raw && raw.parentNode) raw.parentNode.removeChild(raw)
71
+
} else {
72
+
// hide the raw stuff
73
+
msgContentEl.removeChild(pre)
74
+
// put back the content
75
+
while (el = tmp.firstChild)
76
+
msgContentEl.appendChild(el)
77
+
}
78
+
}
79
+
}
80
+
})
81
+
}
82
+
}
+108
decent/modules_extra/search.js
+108
decent/modules_extra/search.js
···
1
+
var h = require('hyperscript')
2
+
var u = require('../util')
3
+
var pull = require('pull-stream')
4
+
var Scroller = require('pull-scroll')
5
+
var TextNodeSearcher = require('text-node-searcher')
6
+
7
+
//var plugs = require('../plugs')
8
+
//var message_render = plugs.first(exports.message_render = [])
9
+
//var sbot_log = plugs.first(exports.sbot_log = [])
10
+
11
+
exports.needs = {
12
+
message_render: 'first',
13
+
sbot_log: 'first'
14
+
}
15
+
16
+
exports.gives = 'screen_view'
17
+
18
+
var whitespace = /\s+/
19
+
20
+
function andSearch(terms, inputs) {
21
+
for(var i = 0; i < terms.length; i++) {
22
+
var match = false
23
+
for(var j = 0; j < inputs.length; j++) {
24
+
if(terms[i].test(inputs[j])) match = true
25
+
}
26
+
//if a term was not matched by anything, filter this one
27
+
if(!match) return false
28
+
}
29
+
return true
30
+
}
31
+
32
+
function searchFilter(terms) {
33
+
return function (msg) {
34
+
var c = msg && msg.value && msg.value.content
35
+
return c && (
36
+
msg.key == terms[0] ||
37
+
andSearch(terms.map(function (term) {
38
+
return new RegExp('\\b'+term+'\\b', 'i')
39
+
}), [c.text, c.name, c.title])
40
+
)
41
+
}
42
+
}
43
+
44
+
function createOrRegExp(ary) {
45
+
return new RegExp(ary.map(function (e) {
46
+
return '\\b'+e+'\\b'
47
+
}).join('|'), 'i')
48
+
}
49
+
50
+
function highlight(el, query) {
51
+
var searcher = new TextNodeSearcher({container: el})
52
+
searcher.query = query
53
+
searcher.highlight()
54
+
return el
55
+
}
56
+
57
+
exports.create = function (api) {
58
+
59
+
return function (path) {
60
+
if(path[0] === '?') {
61
+
var query = path.substr(1).trim().split(whitespace)
62
+
var _matches = searchFilter(query)
63
+
64
+
var total = 0, matches = 0
65
+
66
+
var header = h('div.search_header', '')
67
+
var content = h('div.column.scroller__content')
68
+
var div = h('div.column.scroller',
69
+
{style: {'overflow':'auto'}},
70
+
h('div.scroller__wrapper',
71
+
header,
72
+
content
73
+
)
74
+
)
75
+
76
+
function matchesQuery (data) {
77
+
total++
78
+
var m = _matches(data)
79
+
if(m) matches++
80
+
header.textContent = 'searched:'+total+', found:'+matches
81
+
return m
82
+
}
83
+
84
+
85
+
86
+
function renderMsg(msg) {
87
+
var el = api.message_render(msg)
88
+
highlight(el, createOrRegExp(query))
89
+
return el
90
+
}
91
+
92
+
pull(
93
+
api.sbot_log({old: false}),
94
+
pull.filter(matchesQuery),
95
+
Scroller(div, content, renderMsg, true, false)
96
+
)
97
+
98
+
pull(
99
+
u.next(api.sbot_log, {reverse: true, limit: 500, live: false}),
100
+
pull.filter(matchesQuery),
101
+
Scroller(div, content, renderMsg, false, false)
102
+
)
103
+
104
+
return div
105
+
}
106
+
}
107
+
108
+
}
+27
decent/modules_extra/split.js
+27
decent/modules_extra/split.js
···
1
+
var h = require('hyperscript')
2
+
3
+
//var screen_view =
4
+
// require('../plugs').first(exports._screen_view = [])
5
+
6
+
7
+
exports.needs = {
8
+
screen_view: 'first'
9
+
}
10
+
11
+
exports.gives = 'screen_view'
12
+
13
+
exports.create = function (api) {
14
+
15
+
return function (path) {
16
+
var m = /^split\s*\((.*)\)$/.exec(path)
17
+
if(!m)
18
+
return
19
+
20
+
return h('div.row',
21
+
m[1].split(',').map(function (e) {
22
+
return api.screen_view(e.trim())
23
+
}).filter(Boolean)
24
+
)
25
+
}
26
+
27
+
}
+32
decent/modules_extra/suggest-emoji.js
+32
decent/modules_extra/suggest-emoji.js
···
1
+
//var plugs = require('../plugs')
2
+
//var emoji_url = plugs.first(exports.emoji_url = [])
3
+
//var emoji_names = plugs.first(exports.emoji_names = [])
4
+
5
+
exports.needs = {
6
+
emoji_url: 'first',
7
+
emoji_names: 'first'
8
+
}
9
+
10
+
exports.gives = 'suggest_mentions'
11
+
12
+
exports.create = function (api) {
13
+
14
+
return function (word) {
15
+
return function (cb) {
16
+
if (word[0] !== ':' || word.length < 2) return cb()
17
+
word = word.substr(1)
18
+
if (word[word.length-1] === ':') word = word.substr(0, word.length-1)
19
+
cb(null, api.emoji_names().filter(function (name) {
20
+
return name.substr(0, word.length) === word
21
+
}).slice(0, 50).map(function (emoji) {
22
+
return {
23
+
image: api.emoji_url(emoji),
24
+
title: emoji,
25
+
subtitle: emoji,
26
+
value: ':' + emoji + ':'
27
+
}
28
+
}))
29
+
}
30
+
}
31
+
32
+
}
+50
decent/modules_extra/versions.js
+50
decent/modules_extra/versions.js
···
1
+
var h = require('hyperscript')
2
+
3
+
exports.gives = {
4
+
menu_items: true,
5
+
builtin_tabs: true,
6
+
screen_view: true
7
+
}
8
+
9
+
exports.create = function () {
10
+
11
+
return {
12
+
menu_items: function () {
13
+
return h('a', {href: '#/versions'}, '/versions')
14
+
},
15
+
16
+
builtin_tabs: function () {
17
+
return ['/versions']
18
+
},
19
+
20
+
screen_view: function (path) {
21
+
if(path !== '/versions') return
22
+
23
+
if('undefined' === typeof WebBoot)
24
+
return h('h1', 'must run with web-boot enabled enviroment')
25
+
26
+
var content = h('div.column')
27
+
28
+
WebBoot.versions(function (err, log) {
29
+
log.forEach(function (e, i) {
30
+
content.appendChild(
31
+
h('div.row',
32
+
h('a', {
33
+
href: '#/run:'+e.value,
34
+
onclick: function () {
35
+
WebBoot.run(e.value, function () {
36
+
console.log('rebooting to:', e.value)
37
+
})
38
+
}
39
+
}, ' ', e.value, ' ', new Date(e.ts)),
40
+
!i && h('label', '(current)')
41
+
)
42
+
)
43
+
})
44
+
45
+
})
46
+
47
+
return content
48
+
}
49
+
}
50
+
}
+5767
decent/package-lock.json
+5767
decent/package-lock.json
···
1
+
{
2
+
"name": "patchbay",
3
+
"version": "6.1.3",
4
+
"lockfileVersion": 3,
5
+
"requires": true,
6
+
"packages": {
7
+
"": {
8
+
"name": "patchbay",
9
+
"version": "6.1.3",
10
+
"license": "MIT",
11
+
"dependencies": {
12
+
"cont": "^1.0.3",
13
+
"dataurl-": "^0.1.0",
14
+
"depject": "^3.0.0",
15
+
"hjson": "^2.0.3",
16
+
"human-time": "0.0.1",
17
+
"hypercombo": "0.1.0",
18
+
"hypercrop": "^1.0.1",
19
+
"hyperfile": "^1.1.0",
20
+
"hyperlightbox": "^0.1.3",
21
+
"hyperprogress": "0.1.0",
22
+
"hyperscript": "^1.4.7",
23
+
"hypertabs": "^3.0.0",
24
+
"is-visible": "^2.0.4",
25
+
"kvgraph": "^0.1.0",
26
+
"map-filter-reduce": "^3.0.1",
27
+
"mime-types": "^2.1.11",
28
+
"moment": "^2.13.0",
29
+
"open-external": "^0.1.1",
30
+
"peaks.js": "^0.4.7",
31
+
"pull-cat": "^1.1.9",
32
+
"pull-many": "^1.0.7",
33
+
"pull-next": "^0.0.1",
34
+
"pull-paramap": "^1.1.6",
35
+
"pull-reconnect": "^0.0.3",
36
+
"pull-scroll": "^0.2.0",
37
+
"pull-stream": "^3.4.5",
38
+
"simple-mime": "^0.1.0",
39
+
"split-buffer": "^1.0.0",
40
+
"ssb-avatar": "^0.2.0",
41
+
"ssb-client": "^4.0.3",
42
+
"ssb-config": "^2.1.1",
43
+
"ssb-feed": "^2.2.1",
44
+
"ssb-git": "^0.4.1",
45
+
"ssb-keys": "^6.1.0",
46
+
"ssb-links": "^2.0.0",
47
+
"ssb-markdown": "^3.0.0",
48
+
"ssb-mentions": "^0.1.0",
49
+
"ssb-query": "^0.1.1",
50
+
"ssb-ref": "^2.6.2",
51
+
"ssb-sort": "^1.0.0",
52
+
"ssb-ws": "^0.6.2",
53
+
"suggest-box": "^2.2.1",
54
+
"text-node-searcher": "^1.1.0",
55
+
"visualize-buffer": "0.0.0"
56
+
},
57
+
"devDependencies": {
58
+
"browselectrify": "^1.0.1",
59
+
"browserify": "^16.5.2",
60
+
"indexhtmlify": "^1.3.1"
61
+
}
62
+
},
63
+
"node_modules/abbrev": {
64
+
"version": "1.0.9",
65
+
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
66
+
"integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
67
+
"license": "ISC",
68
+
"optional": true
69
+
},
70
+
"node_modules/abstract-leveldown": {
71
+
"version": "2.6.3",
72
+
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz",
73
+
"integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==",
74
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
75
+
"license": "MIT",
76
+
"dependencies": {
77
+
"xtend": "~4.0.0"
78
+
}
79
+
},
80
+
"node_modules/acorn": {
81
+
"version": "1.2.2",
82
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
83
+
"integrity": "sha512-FsqWmApWGMGLKKNpHt12PMc5AK7BaZee0WRh04fCysmTzHe+rrKOa2MKjORhnzfpe4r0JnfdqHn02iDA9Dqj2A==",
84
+
"dev": true,
85
+
"license": "MIT",
86
+
"bin": {
87
+
"acorn": "bin/acorn"
88
+
},
89
+
"engines": {
90
+
"node": ">=0.4.0"
91
+
}
92
+
},
93
+
"node_modules/acorn-node": {
94
+
"version": "1.8.2",
95
+
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
96
+
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
97
+
"dev": true,
98
+
"license": "Apache-2.0",
99
+
"dependencies": {
100
+
"acorn": "^7.0.0",
101
+
"acorn-walk": "^7.0.0",
102
+
"xtend": "^4.0.2"
103
+
}
104
+
},
105
+
"node_modules/acorn-node/node_modules/acorn": {
106
+
"version": "7.4.1",
107
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
108
+
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
109
+
"dev": true,
110
+
"license": "MIT",
111
+
"bin": {
112
+
"acorn": "bin/acorn"
113
+
},
114
+
"engines": {
115
+
"node": ">=0.4.0"
116
+
}
117
+
},
118
+
"node_modules/acorn-node/node_modules/xtend": {
119
+
"version": "4.0.2",
120
+
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
121
+
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
122
+
"dev": true,
123
+
"license": "MIT",
124
+
"engines": {
125
+
"node": ">=0.4"
126
+
}
127
+
},
128
+
"node_modules/acorn-walk": {
129
+
"version": "7.2.0",
130
+
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
131
+
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
132
+
"dev": true,
133
+
"license": "MIT",
134
+
"engines": {
135
+
"node": ">=0.4.0"
136
+
}
137
+
},
138
+
"node_modules/after": {
139
+
"version": "0.8.2",
140
+
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
141
+
"integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
142
+
"license": "MIT",
143
+
"optional": true
144
+
},
145
+
"node_modules/ansi": {
146
+
"version": "0.3.1",
147
+
"resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
148
+
"integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==",
149
+
"license": "MIT",
150
+
"optional": true
151
+
},
152
+
"node_modules/ansi-regex": {
153
+
"version": "2.0.0",
154
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
155
+
"integrity": "sha512-jCcLjwL2jOaTcRIaJkoRteMwNXg8nfJvwT/9K91kwZhH7bf4lsprqZ2+Qa7tSp8BYtejobOCBkDreC07q0KmZw==",
156
+
"license": "MIT",
157
+
"engines": {
158
+
"node": ">=0.10.0"
159
+
}
160
+
},
161
+
"node_modules/ansi-styles": {
162
+
"version": "2.2.1",
163
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
164
+
"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
165
+
"license": "MIT",
166
+
"optional": true,
167
+
"engines": {
168
+
"node": ">=0.10.0"
169
+
}
170
+
},
171
+
"node_modules/aproba": {
172
+
"version": "1.0.4",
173
+
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz",
174
+
"integrity": "sha512-g4T1BR2vAjWV6GrBYeM7DmHUBe0WB45xRKKpNKxh4zHkUsjdGfANjdHY//9RzHi1XkWTLc1k58ddAUZ81yC8Cw==",
175
+
"license": "ISC"
176
+
},
177
+
"node_modules/are-we-there-yet": {
178
+
"version": "1.1.2",
179
+
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz",
180
+
"integrity": "sha512-Ph/5XGGWoEy6z2VsZmELQW3qZtrITchV1zMNt1OonqoSoYo9acY23weZ67fLKTaRdMEGBYDx/jDJBGS8YlwPvg==",
181
+
"deprecated": "This package is no longer supported.",
182
+
"license": "ISC",
183
+
"dependencies": {
184
+
"delegates": "^1.0.0",
185
+
"readable-stream": "^2.0.0 || ^1.1.13"
186
+
}
187
+
},
188
+
"node_modules/array-index": {
189
+
"version": "1.0.0",
190
+
"resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz",
191
+
"integrity": "sha512-jesyNbBkLQgGZMSwA1FanaFjalb1mZUGxGeUEkSDidzgrbjBGhvizJkaItdhkt8eIHFOJC7nDsrXk+BaehTdRw==",
192
+
"license": "MIT",
193
+
"optional": true,
194
+
"dependencies": {
195
+
"debug": "^2.2.0",
196
+
"es6-symbol": "^3.0.2"
197
+
},
198
+
"engines": {
199
+
"node": "*"
200
+
}
201
+
},
202
+
"node_modules/arraybuffer-base64": {
203
+
"version": "1.0.0",
204
+
"resolved": "https://registry.npmjs.org/arraybuffer-base64/-/arraybuffer-base64-1.0.0.tgz",
205
+
"integrity": "sha512-ObvQgZtJuUGEhaesM14KFwnqh4UbyUPwWdGvtDzQiQiZizxWL66X4H3jqmzV+KqrgtTUMRBV7YvXsmHyhPbIrA==",
206
+
"license": "MIT"
207
+
},
208
+
"node_modules/asn1": {
209
+
"version": "0.2.3",
210
+
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
211
+
"integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==",
212
+
"license": "MIT",
213
+
"optional": true
214
+
},
215
+
"node_modules/asn1.js": {
216
+
"version": "4.8.1",
217
+
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.8.1.tgz",
218
+
"integrity": "sha512-OSr5ZUGzhiOdp8RQEYLJmkFEb6tRKX11+m7mr7+8/U70T4B0GAQdyx1+ND7rfxv/qRR4LoVmE7ajkpJbGnd7nQ==",
219
+
"dev": true,
220
+
"license": "MIT",
221
+
"dependencies": {
222
+
"bn.js": "^4.0.0",
223
+
"inherits": "^2.0.1",
224
+
"minimalistic-assert": "^1.0.0"
225
+
}
226
+
},
227
+
"node_modules/asn1js": {
228
+
"version": "1.2.12",
229
+
"resolved": "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz",
230
+
"integrity": "sha512-eCMbXmmQ/9HMLNJkWRjF8TdX2stMrmK4WiWMZFhhmiMOcmi9dO3XDCuWDAyYn7qb0Oq4PmA0TgnqmzOObmrjpw==",
231
+
"optional": true
232
+
},
233
+
"node_modules/assert": {
234
+
"version": "1.5.1",
235
+
"resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz",
236
+
"integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==",
237
+
"dev": true,
238
+
"license": "MIT",
239
+
"dependencies": {
240
+
"object.assign": "^4.1.4",
241
+
"util": "^0.10.4"
242
+
}
243
+
},
244
+
"node_modules/assert-plus": {
245
+
"version": "0.2.0",
246
+
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
247
+
"integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==",
248
+
"license": "MIT",
249
+
"optional": true,
250
+
"engines": {
251
+
"node": ">=0.8"
252
+
}
253
+
},
254
+
"node_modules/astw": {
255
+
"version": "2.0.0",
256
+
"resolved": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz",
257
+
"integrity": "sha512-W7zhYzCMisx5WQ9R99ZeTYoHk6wqwmCl55PzslcrI6ON6R3aayFxSaRY7Xzi7couwlC8Gsm2A1BGfKoqMMu4uA==",
258
+
"dev": true,
259
+
"license": "MIT",
260
+
"dependencies": {
261
+
"acorn": "^1.0.3"
262
+
}
263
+
},
264
+
"node_modules/async": {
265
+
"version": "1.5.2",
266
+
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
267
+
"integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
268
+
"license": "MIT",
269
+
"optional": true
270
+
},
271
+
"node_modules/asynckit": {
272
+
"version": "0.4.0",
273
+
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
274
+
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
275
+
"license": "MIT",
276
+
"optional": true
277
+
},
278
+
"node_modules/audio-context": {
279
+
"version": "0.1.0",
280
+
"resolved": "https://registry.npmjs.org/audio-context/-/audio-context-0.1.0.tgz",
281
+
"integrity": "sha512-PkXXfY2f96sZf/w8JWCQZn4hHgRK3lqXNRgIPO9JgdwLOyOecH7PAuYFjWdUEDbJ7BuXudTf0WJek7A+XAFyAA==",
282
+
"deprecated": "Depends on Web-Audio-API implementation. Use either web-audio-api, web-audio-js or web-audio-engine package.",
283
+
"license": "MIT",
284
+
"dependencies": {
285
+
"global": "~4.2.1"
286
+
}
287
+
},
288
+
"node_modules/aws-sign2": {
289
+
"version": "0.6.0",
290
+
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
291
+
"integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==",
292
+
"license": "Apache-2.0",
293
+
"optional": true,
294
+
"engines": {
295
+
"node": "*"
296
+
}
297
+
},
298
+
"node_modules/aws4": {
299
+
"version": "1.5.0",
300
+
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz",
301
+
"integrity": "sha512-msbruB31mspZNtdkAMGIpHwGe3salMf4Bu53YJXsO/AmoxrgaVi3DLyP46XKYFKvKJ7Eh/BrLZGS0TMtyzbHlA==",
302
+
"license": "MIT",
303
+
"optional": true
304
+
},
305
+
"node_modules/balanced-match": {
306
+
"version": "1.0.2",
307
+
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
308
+
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
309
+
"devOptional": true,
310
+
"license": "MIT"
311
+
},
312
+
"node_modules/base64-js": {
313
+
"version": "1.2.0",
314
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
315
+
"integrity": "sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg==",
316
+
"dev": true,
317
+
"license": "MIT"
318
+
},
319
+
"node_modules/bcrypt-pbkdf": {
320
+
"version": "1.0.0",
321
+
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz",
322
+
"integrity": "sha512-1d7nPZyCV4TvkiRd3dZEqDrcj88tAe3ZxwkKeAJJ9eEoDIHyVPxGbmV1HMFVGa2XH4JHRrwUja36rLzR5BA60g==",
323
+
"license": "BSD-4-Clause",
324
+
"optional": true,
325
+
"dependencies": {
326
+
"tweetnacl": "^0.14.3"
327
+
}
328
+
},
329
+
"node_modules/binary-search": {
330
+
"version": "1.3.2",
331
+
"resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.2.tgz",
332
+
"integrity": "sha512-ldmlaGfbPu0LfRtPTdCG4oqHj56JYcZDR3xu0GqeXh3LsBXBt0utwBoILSJQIlxcS+GFn5jraOKlR0mGGaRPYw==",
333
+
"license": "CC0-1.0"
334
+
},
335
+
"node_modules/binary-xhr": {
336
+
"version": "0.0.2",
337
+
"resolved": "https://registry.npmjs.org/binary-xhr/-/binary-xhr-0.0.2.tgz",
338
+
"integrity": "sha512-KZ4RhQJRIIXimMnY9fbtwsa6x4kVMfusLdu1MWu87VJU6qBiG1nMr4lNPJHCGRCm2rSwH+gbqppLQ05ZQTTa/A==",
339
+
"license": "ISC",
340
+
"dependencies": {
341
+
"inherits": "1.0.0"
342
+
}
343
+
},
344
+
"node_modules/binary-xhr/node_modules/inherits": {
345
+
"version": "1.0.0",
346
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz",
347
+
"integrity": "sha512-5KfXESjCAfFQel2TLqhr18NEz++UiWVIA0jwHzs2Kbvb3e+r+G/eVhRfoZbaPCL0PnERvK5YeMgh02O4eenufw==",
348
+
"engines": {
349
+
"node": "*"
350
+
}
351
+
},
352
+
"node_modules/bindings": {
353
+
"version": "1.2.1",
354
+
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
355
+
"integrity": "sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g==",
356
+
"license": "MIT"
357
+
},
358
+
"node_modules/bl": {
359
+
"version": "1.0.3",
360
+
"resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
361
+
"integrity": "sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==",
362
+
"license": "MIT",
363
+
"dependencies": {
364
+
"readable-stream": "~2.0.5"
365
+
}
366
+
},
367
+
"node_modules/bl/node_modules/isarray": {
368
+
"version": "1.0.0",
369
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
370
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
371
+
"license": "MIT"
372
+
},
373
+
"node_modules/bl/node_modules/readable-stream": {
374
+
"version": "2.0.6",
375
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
376
+
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
377
+
"license": "MIT",
378
+
"dependencies": {
379
+
"core-util-is": "~1.0.0",
380
+
"inherits": "~2.0.1",
381
+
"isarray": "~1.0.0",
382
+
"process-nextick-args": "~1.0.6",
383
+
"string_decoder": "~0.10.x",
384
+
"util-deprecate": "~1.0.1"
385
+
}
386
+
},
387
+
"node_modules/bl/node_modules/string_decoder": {
388
+
"version": "0.10.31",
389
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
390
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
391
+
"license": "MIT"
392
+
},
393
+
"node_modules/blake2s": {
394
+
"version": "1.0.1",
395
+
"resolved": "https://registry.npmjs.org/blake2s/-/blake2s-1.0.1.tgz",
396
+
"integrity": "sha512-KAkhueDkhTqQTxcHQ0uue9RNCkDbUr4dPLORhp2McvAYsIewMt2YxVwnO0DJnYJoe63kA5qYe+iK26NzSPfJzA==",
397
+
"license": "Public Domain"
398
+
},
399
+
"node_modules/block-stream": {
400
+
"version": "0.0.9",
401
+
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
402
+
"integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==",
403
+
"license": "ISC",
404
+
"optional": true,
405
+
"dependencies": {
406
+
"inherits": "~2.0.0"
407
+
},
408
+
"engines": {
409
+
"node": "0.4 || >=0.5.8"
410
+
}
411
+
},
412
+
"node_modules/bluebird": {
413
+
"version": "3.4.6",
414
+
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz",
415
+
"integrity": "sha512-YvvhuCEE6vHQVlxe+ZTuZyXiA9RIXLz1X8YamApVDYf410Y/K0tBTpZ2bTVNsnPVSRviN/mfu2W42BnRfSXA2A==",
416
+
"license": "MIT",
417
+
"optional": true
418
+
},
419
+
"node_modules/bn.js": {
420
+
"version": "4.11.6",
421
+
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
422
+
"integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==",
423
+
"dev": true,
424
+
"license": "MIT"
425
+
},
426
+
"node_modules/boom": {
427
+
"version": "2.10.1",
428
+
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
429
+
"integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==",
430
+
"deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
431
+
"license": "BSD-3-Clause",
432
+
"optional": true,
433
+
"dependencies": {
434
+
"hoek": "2.x.x"
435
+
},
436
+
"engines": {
437
+
"node": ">=0.10.40"
438
+
}
439
+
},
440
+
"node_modules/brace-expansion": {
441
+
"version": "1.1.12",
442
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
443
+
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
444
+
"devOptional": true,
445
+
"license": "MIT",
446
+
"dependencies": {
447
+
"balanced-match": "^1.0.0",
448
+
"concat-map": "0.0.1"
449
+
}
450
+
},
451
+
"node_modules/brorand": {
452
+
"version": "1.0.6",
453
+
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.6.tgz",
454
+
"integrity": "sha512-aCTTKVBjiqRQjfe1FEmvqxVkX9C3F8XCEPyU3mT/UF/58tZZMJxmno7HySXqxNCPeysUAMgS1YcICxQc6f+O4w==",
455
+
"dev": true,
456
+
"license": "MIT"
457
+
},
458
+
"node_modules/browselectrify": {
459
+
"version": "1.0.1",
460
+
"resolved": "https://registry.npmjs.org/browselectrify/-/browselectrify-1.0.1.tgz",
461
+
"integrity": "sha512-ETOPHKq7XrP9+92lOe5p9IFzXfojPcXz6+wcQOZMZ0Hh2jYz8H4lyvh+qnljYFo5fqzc5VzyEKEzQ2tFVDrwJg==",
462
+
"dev": true,
463
+
"license": "MIT",
464
+
"dependencies": {
465
+
"browserify": "^13.0.1",
466
+
"pull-cat": "^1.1.10",
467
+
"pull-file": "^0.5.0",
468
+
"pull-stream": "^3.4.3",
469
+
"stream-to-pull-stream": "^1.7.0"
470
+
},
471
+
"bin": {
472
+
"browselectrify": "bin.js"
473
+
}
474
+
},
475
+
"node_modules/browselectrify/node_modules/assert": {
476
+
"version": "1.3.0",
477
+
"resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz",
478
+
"integrity": "sha512-5aKcpD+XnHpZ7EGxsuo6uoILNh0rvm0Ypa17GlkrF2CNSPhvdgi3ft9XsL2ajdVOI2I3xuGZnHvlXAeqTZYvXg==",
479
+
"dev": true,
480
+
"license": "MIT",
481
+
"dependencies": {
482
+
"util": "0.10.3"
483
+
}
484
+
},
485
+
"node_modules/browselectrify/node_modules/browser-resolve": {
486
+
"version": "1.11.2",
487
+
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
488
+
"integrity": "sha512-IBmTH6PPKm10Mnf/ja+YKXZEyH7pyrxBUbbyr0ZEDBGhNOIWVHo41gTWWU4DhYPKt6JIx2YwTsyrULjTsx7/+A==",
489
+
"dev": true,
490
+
"license": "MIT",
491
+
"dependencies": {
492
+
"resolve": "1.1.7"
493
+
}
494
+
},
495
+
"node_modules/browselectrify/node_modules/browserify": {
496
+
"version": "13.1.0",
497
+
"resolved": "https://registry.npmjs.org/browserify/-/browserify-13.1.0.tgz",
498
+
"integrity": "sha512-i5iASp425UxqX6nhOfsxJVLmm+GKvPcapI8RsPixFSNQQbSbrZsYYLzPK1amobpeOuDF7nJDq/upZYkmw/C59w==",
499
+
"dev": true,
500
+
"license": "MIT",
501
+
"dependencies": {
502
+
"assert": "~1.3.0",
503
+
"browser-pack": "^6.0.1",
504
+
"browser-resolve": "^1.11.0",
505
+
"browserify-zlib": "~0.1.2",
506
+
"buffer": "^4.1.0",
507
+
"concat-stream": "~1.5.1",
508
+
"console-browserify": "^1.1.0",
509
+
"constants-browserify": "~1.0.0",
510
+
"crypto-browserify": "^3.0.0",
511
+
"defined": "^1.0.0",
512
+
"deps-sort": "^2.0.0",
513
+
"domain-browser": "~1.1.0",
514
+
"duplexer2": "~0.1.2",
515
+
"events": "~1.1.0",
516
+
"glob": "^5.0.15",
517
+
"has": "^1.0.0",
518
+
"htmlescape": "^1.1.0",
519
+
"https-browserify": "~0.0.0",
520
+
"inherits": "~2.0.1",
521
+
"insert-module-globals": "^7.0.0",
522
+
"JSONStream": "^1.0.3",
523
+
"labeled-stream-splicer": "^2.0.0",
524
+
"module-deps": "^4.0.2",
525
+
"os-browserify": "~0.1.1",
526
+
"parents": "^1.0.1",
527
+
"path-browserify": "~0.0.0",
528
+
"process": "~0.11.0",
529
+
"punycode": "^1.3.2",
530
+
"querystring-es3": "~0.2.0",
531
+
"read-only-stream": "^2.0.0",
532
+
"readable-stream": "^2.0.2",
533
+
"resolve": "^1.1.4",
534
+
"shasum": "^1.0.0",
535
+
"shell-quote": "^1.4.3",
536
+
"stream-browserify": "^2.0.0",
537
+
"stream-http": "^2.0.0",
538
+
"string_decoder": "~0.10.0",
539
+
"subarg": "^1.0.0",
540
+
"syntax-error": "^1.1.1",
541
+
"through2": "^2.0.0",
542
+
"timers-browserify": "^1.0.1",
543
+
"tty-browserify": "~0.0.0",
544
+
"url": "~0.11.0",
545
+
"util": "~0.10.1",
546
+
"vm-browserify": "~0.0.1",
547
+
"xtend": "^4.0.0"
548
+
},
549
+
"bin": {
550
+
"browserify": "bin/cmd.js"
551
+
}
552
+
},
553
+
"node_modules/browselectrify/node_modules/browserify-zlib": {
554
+
"version": "0.1.4",
555
+
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
556
+
"integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==",
557
+
"dev": true,
558
+
"license": "MIT",
559
+
"dependencies": {
560
+
"pako": "~0.2.0"
561
+
}
562
+
},
563
+
"node_modules/browselectrify/node_modules/buffer": {
564
+
"version": "4.9.1",
565
+
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
566
+
"integrity": "sha512-DNK4ruAqtyHaN8Zne7PkBTO+dD1Lr0YfTduMqlIyjvQIoztBkUxrvL+hKeLW8NXFKHOq/2upkxuoS9znQ9bW9A==",
567
+
"deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer",
568
+
"dev": true,
569
+
"license": "MIT",
570
+
"dependencies": {
571
+
"base64-js": "^1.0.2",
572
+
"ieee754": "^1.1.4",
573
+
"isarray": "^1.0.0"
574
+
}
575
+
},
576
+
"node_modules/browselectrify/node_modules/builtin-status-codes": {
577
+
"version": "2.0.0",
578
+
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz",
579
+
"integrity": "sha512-8KPx+JfZWi0K8L5sycIOA6/ZFZbaFKXDeUIXaqwUnhed1Ge1cB0wyq+bNDjKnL9AR2Uj3m/khkF6CDolsyMitA==",
580
+
"dev": true,
581
+
"license": "MIT"
582
+
},
583
+
"node_modules/browselectrify/node_modules/concat-stream": {
584
+
"version": "1.5.2",
585
+
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
586
+
"integrity": "sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==",
587
+
"dev": true,
588
+
"engines": [
589
+
"node >= 0.8"
590
+
],
591
+
"license": "MIT",
592
+
"dependencies": {
593
+
"inherits": "~2.0.1",
594
+
"readable-stream": "~2.0.0",
595
+
"typedarray": "~0.0.5"
596
+
}
597
+
},
598
+
"node_modules/browselectrify/node_modules/concat-stream/node_modules/readable-stream": {
599
+
"version": "2.0.6",
600
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
601
+
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
602
+
"dev": true,
603
+
"license": "MIT",
604
+
"dependencies": {
605
+
"core-util-is": "~1.0.0",
606
+
"inherits": "~2.0.1",
607
+
"isarray": "~1.0.0",
608
+
"process-nextick-args": "~1.0.6",
609
+
"string_decoder": "~0.10.x",
610
+
"util-deprecate": "~1.0.1"
611
+
}
612
+
},
613
+
"node_modules/browselectrify/node_modules/detective": {
614
+
"version": "4.3.1",
615
+
"resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz",
616
+
"integrity": "sha512-/9qiE/5MI6RVAJhb6XTrYocC6MF2DixqvnFfsSq9iOGSwmEXIv8eNmOijOrsHpM1L5Cq1I/cKOCClzC9CmqJaQ==",
617
+
"dev": true,
618
+
"license": "MIT",
619
+
"dependencies": {
620
+
"acorn": "^1.0.3",
621
+
"defined": "^1.0.0"
622
+
}
623
+
},
624
+
"node_modules/browselectrify/node_modules/domain-browser": {
625
+
"version": "1.1.7",
626
+
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
627
+
"integrity": "sha512-fJ5MoHxe69h3E4/lJtFRhcWwLb04bhIBSfvCEMS1YDH+/9yEZTqBHTSTgch8nCP5tE5k2gdQEjodUqJzy7qJ9Q==",
628
+
"dev": true,
629
+
"license": "MIT",
630
+
"engines": {
631
+
"node": ">=0.4",
632
+
"npm": ">=1.2"
633
+
}
634
+
},
635
+
"node_modules/browselectrify/node_modules/events": {
636
+
"version": "1.1.1",
637
+
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
638
+
"integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
639
+
"dev": true,
640
+
"license": "MIT",
641
+
"engines": {
642
+
"node": ">=0.4.x"
643
+
}
644
+
},
645
+
"node_modules/browselectrify/node_modules/glob": {
646
+
"version": "5.0.15",
647
+
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
648
+
"integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
649
+
"deprecated": "Glob versions prior to v9 are no longer supported",
650
+
"dev": true,
651
+
"license": "ISC",
652
+
"dependencies": {
653
+
"inflight": "^1.0.4",
654
+
"inherits": "2",
655
+
"minimatch": "2 || 3",
656
+
"once": "^1.3.0",
657
+
"path-is-absolute": "^1.0.0"
658
+
},
659
+
"engines": {
660
+
"node": "*"
661
+
}
662
+
},
663
+
"node_modules/browselectrify/node_modules/https-browserify": {
664
+
"version": "0.0.1",
665
+
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
666
+
"integrity": "sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ==",
667
+
"dev": true,
668
+
"license": "MIT"
669
+
},
670
+
"node_modules/browselectrify/node_modules/inherits": {
671
+
"version": "2.0.1",
672
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
673
+
"integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
674
+
"dev": true,
675
+
"license": "ISC"
676
+
},
677
+
"node_modules/browselectrify/node_modules/isarray": {
678
+
"version": "1.0.0",
679
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
680
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
681
+
"dev": true,
682
+
"license": "MIT"
683
+
},
684
+
"node_modules/browselectrify/node_modules/module-deps": {
685
+
"version": "4.0.7",
686
+
"resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.0.7.tgz",
687
+
"integrity": "sha512-3MGZkxdZLoKxOuBd50SzjrbHMgYbdOewnx0AsbKDTrlIKUkTA4ZBprnvvbWqq8d4FcdaqNiZ/HG5X+1zcWrU7g==",
688
+
"dev": true,
689
+
"license": "MIT",
690
+
"dependencies": {
691
+
"browser-resolve": "^1.7.0",
692
+
"concat-stream": "~1.5.0",
693
+
"defined": "^1.0.0",
694
+
"detective": "^4.0.0",
695
+
"duplexer2": "^0.1.2",
696
+
"inherits": "^2.0.1",
697
+
"JSONStream": "^1.0.3",
698
+
"parents": "^1.0.0",
699
+
"readable-stream": "^2.0.2",
700
+
"resolve": "^1.1.3",
701
+
"stream-combiner2": "^1.1.1",
702
+
"subarg": "^1.0.0",
703
+
"through2": "^2.0.0",
704
+
"xtend": "^4.0.0"
705
+
},
706
+
"bin": {
707
+
"module-deps": "bin/cmd.js"
708
+
},
709
+
"engines": {
710
+
"node": ">= 0.6"
711
+
}
712
+
},
713
+
"node_modules/browselectrify/node_modules/os-browserify": {
714
+
"version": "0.1.2",
715
+
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
716
+
"integrity": "sha512-aZicJZccvxWOZ0Bja2eAch2L8RIJWBuRYmM8Gwl/JjNtRltH0Itcz4eH/ESyuIWfse8cc93ZCf0XrzhXK2HEDA==",
717
+
"dev": true,
718
+
"license": "MIT"
719
+
},
720
+
"node_modules/browselectrify/node_modules/pako": {
721
+
"version": "0.2.9",
722
+
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
723
+
"integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
724
+
"dev": true,
725
+
"license": "MIT"
726
+
},
727
+
"node_modules/browselectrify/node_modules/resolve": {
728
+
"version": "1.1.7",
729
+
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
730
+
"integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==",
731
+
"dev": true,
732
+
"license": "MIT"
733
+
},
734
+
"node_modules/browselectrify/node_modules/stream-http": {
735
+
"version": "2.4.0",
736
+
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.4.0.tgz",
737
+
"integrity": "sha512-W+HxMdxUvvJVzlqe4sa2bwymVmsYyCcF95pms8ilZXDjXvt8rEadIgMFdjvIgdkWqxmcqAKlv1Wyf6bxHj4jPQ==",
738
+
"dev": true,
739
+
"license": "MIT",
740
+
"dependencies": {
741
+
"builtin-status-codes": "^2.0.0",
742
+
"inherits": "^2.0.1",
743
+
"readable-stream": "^2.1.0",
744
+
"to-arraybuffer": "^1.0.0",
745
+
"xtend": "^4.0.0"
746
+
}
747
+
},
748
+
"node_modules/browselectrify/node_modules/string_decoder": {
749
+
"version": "0.10.31",
750
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
751
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
752
+
"dev": true,
753
+
"license": "MIT"
754
+
},
755
+
"node_modules/browselectrify/node_modules/util": {
756
+
"version": "0.10.3",
757
+
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
758
+
"integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
759
+
"dev": true,
760
+
"license": "MIT",
761
+
"dependencies": {
762
+
"inherits": "2.0.1"
763
+
}
764
+
},
765
+
"node_modules/browselectrify/node_modules/vm-browserify": {
766
+
"version": "0.0.4",
767
+
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
768
+
"integrity": "sha512-NyZNR3WDah+NPkjh/YmhuWSsT4a0mF0BJYgUmvrJ70zxjTXh5Y2Asobxlh0Nfs0PCFB5FVpRJft7NozAWFMwLQ==",
769
+
"dev": true,
770
+
"license": "MIT",
771
+
"dependencies": {
772
+
"indexof": "0.0.1"
773
+
}
774
+
},
775
+
"node_modules/browser-pack": {
776
+
"version": "6.0.1",
777
+
"resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.1.tgz",
778
+
"integrity": "sha512-NbySCoD9oUtZHaR5fSo2PWtno1WeipoTUUFHJSCD4kB7tKXI1J2A+0sdBPTZgab7KLyz54TDBXIkOaB1kNuwjQ==",
779
+
"dev": true,
780
+
"license": "MIT",
781
+
"dependencies": {
782
+
"combine-source-map": "~0.7.1",
783
+
"defined": "^1.0.0",
784
+
"JSONStream": "^1.0.3",
785
+
"through2": "^2.0.0",
786
+
"umd": "^3.0.0"
787
+
},
788
+
"bin": {
789
+
"browser-pack": "bin/cmd.js"
790
+
}
791
+
},
792
+
"node_modules/browser-resolve": {
793
+
"version": "2.0.0",
794
+
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
795
+
"integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
796
+
"dev": true,
797
+
"license": "MIT",
798
+
"dependencies": {
799
+
"resolve": "^1.17.0"
800
+
}
801
+
},
802
+
"node_modules/browser-split": {
803
+
"version": "0.0.0",
804
+
"resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz",
805
+
"integrity": "sha512-CNXO3AXAS1H/kOGQkPjucm1161/XoF3aVkMfujqwk85XN/D/MkQMvoB81lXyX/2rerZS+hPAYYRR3mAW05awjQ==",
806
+
"license": "MIT"
807
+
},
808
+
"node_modules/browserify": {
809
+
"version": "16.5.2",
810
+
"resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz",
811
+
"integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==",
812
+
"dev": true,
813
+
"license": "MIT",
814
+
"dependencies": {
815
+
"assert": "^1.4.0",
816
+
"browser-pack": "^6.0.1",
817
+
"browser-resolve": "^2.0.0",
818
+
"browserify-zlib": "~0.2.0",
819
+
"buffer": "~5.2.1",
820
+
"cached-path-relative": "^1.0.0",
821
+
"concat-stream": "^1.6.0",
822
+
"console-browserify": "^1.1.0",
823
+
"constants-browserify": "~1.0.0",
824
+
"crypto-browserify": "^3.0.0",
825
+
"defined": "^1.0.0",
826
+
"deps-sort": "^2.0.0",
827
+
"domain-browser": "^1.2.0",
828
+
"duplexer2": "~0.1.2",
829
+
"events": "^2.0.0",
830
+
"glob": "^7.1.0",
831
+
"has": "^1.0.0",
832
+
"htmlescape": "^1.1.0",
833
+
"https-browserify": "^1.0.0",
834
+
"inherits": "~2.0.1",
835
+
"insert-module-globals": "^7.0.0",
836
+
"JSONStream": "^1.0.3",
837
+
"labeled-stream-splicer": "^2.0.0",
838
+
"mkdirp-classic": "^0.5.2",
839
+
"module-deps": "^6.2.3",
840
+
"os-browserify": "~0.3.0",
841
+
"parents": "^1.0.1",
842
+
"path-browserify": "~0.0.0",
843
+
"process": "~0.11.0",
844
+
"punycode": "^1.3.2",
845
+
"querystring-es3": "~0.2.0",
846
+
"read-only-stream": "^2.0.0",
847
+
"readable-stream": "^2.0.2",
848
+
"resolve": "^1.1.4",
849
+
"shasum": "^1.0.0",
850
+
"shell-quote": "^1.6.1",
851
+
"stream-browserify": "^2.0.0",
852
+
"stream-http": "^3.0.0",
853
+
"string_decoder": "^1.1.1",
854
+
"subarg": "^1.0.0",
855
+
"syntax-error": "^1.1.1",
856
+
"through2": "^2.0.0",
857
+
"timers-browserify": "^1.0.1",
858
+
"tty-browserify": "0.0.1",
859
+
"url": "~0.11.0",
860
+
"util": "~0.10.1",
861
+
"vm-browserify": "^1.0.0",
862
+
"xtend": "^4.0.0"
863
+
},
864
+
"bin": {
865
+
"browserify": "bin/cmd.js"
866
+
},
867
+
"engines": {
868
+
"node": ">= 0.8"
869
+
}
870
+
},
871
+
"node_modules/browserify-aes": {
872
+
"version": "1.0.6",
873
+
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz",
874
+
"integrity": "sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug==",
875
+
"dev": true,
876
+
"license": "MIT",
877
+
"dependencies": {
878
+
"buffer-xor": "^1.0.2",
879
+
"cipher-base": "^1.0.0",
880
+
"create-hash": "^1.1.0",
881
+
"evp_bytestokey": "^1.0.0",
882
+
"inherits": "^2.0.1"
883
+
}
884
+
},
885
+
"node_modules/browserify-cipher": {
886
+
"version": "1.0.0",
887
+
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
888
+
"integrity": "sha512-eR/Xnl6GNhMILoylgYn0CXdb5rbDRp3awDF0KXd/S96E+l49E9EWjSmbJPPM03Gj0nX6Ihydv/3wmtml5hnGrw==",
889
+
"dev": true,
890
+
"license": "MIT",
891
+
"dependencies": {
892
+
"browserify-aes": "^1.0.4",
893
+
"browserify-des": "^1.0.0",
894
+
"evp_bytestokey": "^1.0.0"
895
+
}
896
+
},
897
+
"node_modules/browserify-des": {
898
+
"version": "1.0.0",
899
+
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
900
+
"integrity": "sha512-8ryPIDvl6sFWCs8M8XOLjysP3BmwTUldIuX5yWHu76zazZpMguxHYFJI+kQ99a0lpuPF5jt+qzkFuMtjgo2xBg==",
901
+
"dev": true,
902
+
"license": "MIT",
903
+
"dependencies": {
904
+
"cipher-base": "^1.0.1",
905
+
"des.js": "^1.0.0",
906
+
"inherits": "^2.0.1"
907
+
}
908
+
},
909
+
"node_modules/browserify-rsa": {
910
+
"version": "4.0.1",
911
+
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
912
+
"integrity": "sha512-+YpEyaLDDvvdzIxQ+cCx73r5YEhS3ANGOkiHdyWqW4t3gdeoNEYjSiQwntbU4Uo2/9yRkpYX3SRFeH+7jc2Duw==",
913
+
"dev": true,
914
+
"license": "MIT",
915
+
"dependencies": {
916
+
"bn.js": "^4.1.0",
917
+
"randombytes": "^2.0.1"
918
+
}
919
+
},
920
+
"node_modules/browserify-sign": {
921
+
"version": "4.0.0",
922
+
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz",
923
+
"integrity": "sha512-jD8i7sSI7TXGxUzTS8JvpiXbyt6S4S56n+uiQ2ycWKB3aKEHN4IpuAowIjGBsPVkhk6LA2S2aQzi0J5eiagQcA==",
924
+
"dev": true,
925
+
"license": "ISC",
926
+
"dependencies": {
927
+
"bn.js": "^4.1.1",
928
+
"browserify-rsa": "^4.0.0",
929
+
"create-hash": "^1.1.0",
930
+
"create-hmac": "^1.1.2",
931
+
"elliptic": "^6.0.0",
932
+
"inherits": "^2.0.1",
933
+
"parse-asn1": "^5.0.0"
934
+
}
935
+
},
936
+
"node_modules/browserify-zlib": {
937
+
"version": "0.2.0",
938
+
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
939
+
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
940
+
"dev": true,
941
+
"license": "MIT",
942
+
"dependencies": {
943
+
"pako": "~1.0.5"
944
+
}
945
+
},
946
+
"node_modules/buffer": {
947
+
"version": "5.2.1",
948
+
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
949
+
"integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
950
+
"dev": true,
951
+
"license": "MIT",
952
+
"dependencies": {
953
+
"base64-js": "^1.0.2",
954
+
"ieee754": "^1.1.4"
955
+
}
956
+
},
957
+
"node_modules/buffer-from": {
958
+
"version": "1.1.2",
959
+
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
960
+
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
961
+
"dev": true,
962
+
"license": "MIT"
963
+
},
964
+
"node_modules/buffer-shims": {
965
+
"version": "1.0.0",
966
+
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
967
+
"integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==",
968
+
"license": "MIT"
969
+
},
970
+
"node_modules/buffer-v6-polyfill": {
971
+
"version": "1.0.3",
972
+
"resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.3.tgz",
973
+
"integrity": "sha512-8erfTDCuA8sRrDomLB81Swwq04euTvxyqRMbg4NrCdIDDne95fwOkKfZCRvfXhlhukofq0qYOYzdPDYitEew+g==",
974
+
"license": "(MIT OR Apache-2.0)",
975
+
"optional": true
976
+
},
977
+
"node_modules/buffer-xor": {
978
+
"version": "1.0.3",
979
+
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
980
+
"integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
981
+
"dev": true,
982
+
"license": "MIT"
983
+
},
984
+
"node_modules/builtin-status-codes": {
985
+
"version": "3.0.0",
986
+
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
987
+
"integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
988
+
"dev": true,
989
+
"license": "MIT"
990
+
},
991
+
"node_modules/bytewise": {
992
+
"version": "1.1.0",
993
+
"resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
994
+
"integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==",
995
+
"license": "MIT",
996
+
"dependencies": {
997
+
"bytewise-core": "^1.2.2",
998
+
"typewise": "^1.0.3"
999
+
}
1000
+
},
1001
+
"node_modules/bytewise-core": {
1002
+
"version": "1.2.3",
1003
+
"resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
1004
+
"integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==",
1005
+
"license": "MIT",
1006
+
"dependencies": {
1007
+
"typewise-core": "^1.2"
1008
+
}
1009
+
},
1010
+
"node_modules/cached-path-relative": {
1011
+
"version": "1.1.0",
1012
+
"resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz",
1013
+
"integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==",
1014
+
"dev": true,
1015
+
"license": "MIT"
1016
+
},
1017
+
"node_modules/call-bind": {
1018
+
"version": "1.0.8",
1019
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
1020
+
"integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
1021
+
"dev": true,
1022
+
"license": "MIT",
1023
+
"dependencies": {
1024
+
"call-bind-apply-helpers": "^1.0.0",
1025
+
"es-define-property": "^1.0.0",
1026
+
"get-intrinsic": "^1.2.4",
1027
+
"set-function-length": "^1.2.2"
1028
+
},
1029
+
"engines": {
1030
+
"node": ">= 0.4"
1031
+
},
1032
+
"funding": {
1033
+
"url": "https://github.com/sponsors/ljharb"
1034
+
}
1035
+
},
1036
+
"node_modules/call-bind-apply-helpers": {
1037
+
"version": "1.0.2",
1038
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1039
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1040
+
"dev": true,
1041
+
"license": "MIT",
1042
+
"dependencies": {
1043
+
"es-errors": "^1.3.0",
1044
+
"function-bind": "^1.1.2"
1045
+
},
1046
+
"engines": {
1047
+
"node": ">= 0.4"
1048
+
}
1049
+
},
1050
+
"node_modules/call-bound": {
1051
+
"version": "1.0.4",
1052
+
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
1053
+
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
1054
+
"dev": true,
1055
+
"license": "MIT",
1056
+
"dependencies": {
1057
+
"call-bind-apply-helpers": "^1.0.2",
1058
+
"get-intrinsic": "^1.3.0"
1059
+
},
1060
+
"engines": {
1061
+
"node": ">= 0.4"
1062
+
},
1063
+
"funding": {
1064
+
"url": "https://github.com/sponsors/ljharb"
1065
+
}
1066
+
},
1067
+
"node_modules/caseless": {
1068
+
"version": "0.11.0",
1069
+
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
1070
+
"integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==",
1071
+
"license": "Apache-2.0",
1072
+
"optional": true
1073
+
},
1074
+
"node_modules/chalk": {
1075
+
"version": "1.1.3",
1076
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1077
+
"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
1078
+
"license": "MIT",
1079
+
"optional": true,
1080
+
"dependencies": {
1081
+
"ansi-styles": "^2.2.1",
1082
+
"escape-string-regexp": "^1.0.2",
1083
+
"has-ansi": "^2.0.0",
1084
+
"strip-ansi": "^3.0.0",
1085
+
"supports-color": "^2.0.0"
1086
+
},
1087
+
"engines": {
1088
+
"node": ">=0.10.0"
1089
+
}
1090
+
},
1091
+
"node_modules/chloride": {
1092
+
"version": "2.2.4",
1093
+
"resolved": "https://registry.npmjs.org/chloride/-/chloride-2.2.4.tgz",
1094
+
"integrity": "sha512-BqkVXAJnLjseg96sMBDuViGjHFi8cjBjs6c7M47hwwjiRgowkKL+ZOVE1ibiKdH/i7mTOAAaSQXR9goCSIHxuQ==",
1095
+
"license": "MIT",
1096
+
"dependencies": {
1097
+
"is-electron": "^2.0.0",
1098
+
"sodium-browserify": "^1.0.3",
1099
+
"sodium-browserify-tweetnacl": "^0.2.0"
1100
+
},
1101
+
"optionalDependencies": {
1102
+
"sodium-prebuilt": "1.0.22"
1103
+
}
1104
+
},
1105
+
"node_modules/chloride-test": {
1106
+
"version": "1.1.1",
1107
+
"resolved": "https://registry.npmjs.org/chloride-test/-/chloride-test-1.1.1.tgz",
1108
+
"integrity": "sha512-zD9TVM771/NQCyzrfBRDo2WkS8oGOStSpRi86iP//hsqijm/cejf+BwiIldtv1Ujix4DQctmr1HrXXIbLa/M5g==",
1109
+
"license": "MIT",
1110
+
"dependencies": {
1111
+
"json-buffer": "^2.0.11"
1112
+
}
1113
+
},
1114
+
"node_modules/cipher-base": {
1115
+
"version": "1.0.3",
1116
+
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz",
1117
+
"integrity": "sha512-Ci/6dw5oG7K7Eqvpo3xbK3WYpZdT8RjSUn87DZHkKShDVbB9iIxCBKNXdm7IlpV+gwt7uDwZDhV0mmrRSkcOsA==",
1118
+
"dev": true,
1119
+
"license": "MIT",
1120
+
"dependencies": {
1121
+
"inherits": "^2.0.1"
1122
+
}
1123
+
},
1124
+
"node_modules/class-list": {
1125
+
"version": "0.1.1",
1126
+
"resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz",
1127
+
"integrity": "sha512-zqR0uW+VsLtyQhixBhkdQ+z6B8+Y8HTh28kdSVjJ4zTTKM7Xz2asAQSya9VI6m/34F6N6Ktm0mrchKB+E5a8Xw==",
1128
+
"dependencies": {
1129
+
"indexof": "0.0.1"
1130
+
}
1131
+
},
1132
+
"node_modules/code-point-at": {
1133
+
"version": "1.0.1",
1134
+
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz",
1135
+
"integrity": "sha512-EkgYXIIg8KktHWJo0nRM6NpAmoIg6tXxW91YX337LY06hUijIostM9dWfBt9O/4zue4ONqRvEQwo8diSEHrYvA==",
1136
+
"license": "MIT",
1137
+
"dependencies": {
1138
+
"number-is-nan": "^1.0.0"
1139
+
},
1140
+
"engines": {
1141
+
"node": ">=0.10.0"
1142
+
}
1143
+
},
1144
+
"node_modules/combine-source-map": {
1145
+
"version": "0.7.2",
1146
+
"resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz",
1147
+
"integrity": "sha512-MwoXgyZ+d44+GhTg4Vi0V9QcMSrH378vuBwR9riv7sv1r7mslA05tV1dT3+8KHLeoHe4mtM1r2K9xkbhJ451bA==",
1148
+
"dev": true,
1149
+
"license": "MIT",
1150
+
"dependencies": {
1151
+
"convert-source-map": "~1.1.0",
1152
+
"inline-source-map": "~0.6.0",
1153
+
"lodash.memoize": "~3.0.3",
1154
+
"source-map": "~0.5.3"
1155
+
}
1156
+
},
1157
+
"node_modules/combined-stream": {
1158
+
"version": "1.0.5",
1159
+
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
1160
+
"integrity": "sha512-JgSRe4l4UzPwpJuxfcPWEK1SCrL4dxNjp1uqrQLMop3QZUVo+hDU8w9BJKA4JPbulTWI+UzrI2UA3tK12yQ6bg==",
1161
+
"license": "MIT",
1162
+
"optional": true,
1163
+
"dependencies": {
1164
+
"delayed-stream": "~1.0.0"
1165
+
},
1166
+
"engines": {
1167
+
"node": ">= 0.8"
1168
+
}
1169
+
},
1170
+
"node_modules/commander": {
1171
+
"version": "2.20.3",
1172
+
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1173
+
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1174
+
"license": "MIT"
1175
+
},
1176
+
"node_modules/concat-map": {
1177
+
"version": "0.0.1",
1178
+
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1179
+
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1180
+
"devOptional": true,
1181
+
"license": "MIT"
1182
+
},
1183
+
"node_modules/concat-stream": {
1184
+
"version": "1.6.2",
1185
+
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
1186
+
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
1187
+
"dev": true,
1188
+
"engines": [
1189
+
"node >= 0.8"
1190
+
],
1191
+
"license": "MIT",
1192
+
"dependencies": {
1193
+
"buffer-from": "^1.0.0",
1194
+
"inherits": "^2.0.3",
1195
+
"readable-stream": "^2.2.2",
1196
+
"typedarray": "^0.0.6"
1197
+
}
1198
+
},
1199
+
"node_modules/concat-stream/node_modules/isarray": {
1200
+
"version": "1.0.0",
1201
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1202
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
1203
+
"dev": true,
1204
+
"license": "MIT"
1205
+
},
1206
+
"node_modules/concat-stream/node_modules/process-nextick-args": {
1207
+
"version": "2.0.1",
1208
+
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1209
+
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1210
+
"dev": true,
1211
+
"license": "MIT"
1212
+
},
1213
+
"node_modules/concat-stream/node_modules/readable-stream": {
1214
+
"version": "2.3.8",
1215
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
1216
+
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
1217
+
"dev": true,
1218
+
"license": "MIT",
1219
+
"dependencies": {
1220
+
"core-util-is": "~1.0.0",
1221
+
"inherits": "~2.0.3",
1222
+
"isarray": "~1.0.0",
1223
+
"process-nextick-args": "~2.0.0",
1224
+
"safe-buffer": "~5.1.1",
1225
+
"string_decoder": "~1.1.1",
1226
+
"util-deprecate": "~1.0.1"
1227
+
}
1228
+
},
1229
+
"node_modules/concat-stream/node_modules/safe-buffer": {
1230
+
"version": "5.1.2",
1231
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1232
+
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1233
+
"dev": true,
1234
+
"license": "MIT"
1235
+
},
1236
+
"node_modules/concat-stream/node_modules/string_decoder": {
1237
+
"version": "1.1.1",
1238
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1239
+
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1240
+
"dev": true,
1241
+
"license": "MIT",
1242
+
"dependencies": {
1243
+
"safe-buffer": "~5.1.0"
1244
+
}
1245
+
},
1246
+
"node_modules/console-browserify": {
1247
+
"version": "1.1.0",
1248
+
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
1249
+
"integrity": "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==",
1250
+
"dev": true,
1251
+
"dependencies": {
1252
+
"date-now": "^0.1.4"
1253
+
}
1254
+
},
1255
+
"node_modules/console-control-strings": {
1256
+
"version": "1.1.0",
1257
+
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
1258
+
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
1259
+
"license": "ISC"
1260
+
},
1261
+
"node_modules/constants-browserify": {
1262
+
"version": "1.0.0",
1263
+
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
1264
+
"integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
1265
+
"dev": true,
1266
+
"license": "MIT"
1267
+
},
1268
+
"node_modules/cont": {
1269
+
"version": "1.0.3",
1270
+
"resolved": "https://registry.npmjs.org/cont/-/cont-1.0.3.tgz",
1271
+
"integrity": "sha512-lZzUsnNnzBW4EN+Mll8J54cdHn6JzKyHpa9ftxxsPwkWfhdYRIHph9dFdmi0ibfqhnvR103tQ61eAF57FF87IA==",
1272
+
"license": "MIT",
1273
+
"dependencies": {
1274
+
"continuable": "~1.2.0",
1275
+
"continuable-para": "~1.2.0",
1276
+
"continuable-series": "~1.2.0"
1277
+
}
1278
+
},
1279
+
"node_modules/continuable": {
1280
+
"version": "1.2.0",
1281
+
"resolved": "https://registry.npmjs.org/continuable/-/continuable-1.2.0.tgz",
1282
+
"integrity": "sha512-DMksZyrS34yEX+DTGyt9h8/6ONHRBH+PpQ5ev3YdCy5J41r0nMNv+psAujoeoT1mJf+fzKhzacR9o1M1ys2tBQ=="
1283
+
},
1284
+
"node_modules/continuable-hash": {
1285
+
"version": "0.1.4",
1286
+
"resolved": "https://registry.npmjs.org/continuable-hash/-/continuable-hash-0.1.4.tgz",
1287
+
"integrity": "sha512-Gu5kdDzwmCymZ2tROViH0VYSd0iXDDaOjn8iG51FyZreS6OuqEJAE+a3sJ6/Ky6roKOHYHDYD8Ttxj+a1tyYrg==",
1288
+
"dependencies": {
1289
+
"continuable": "~1.1.6"
1290
+
}
1291
+
},
1292
+
"node_modules/continuable-hash/node_modules/continuable": {
1293
+
"version": "1.1.8",
1294
+
"resolved": "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz",
1295
+
"integrity": "sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA=="
1296
+
},
1297
+
"node_modules/continuable-list": {
1298
+
"version": "0.1.6",
1299
+
"resolved": "https://registry.npmjs.org/continuable-list/-/continuable-list-0.1.6.tgz",
1300
+
"integrity": "sha512-dqfYFtC/YRR4fUuZyJ8A+VKX/oV8E+atSCCcOvkuHsB6MFkiyI9LrDlUXCnHYowuuDu5vYqcAiRU2hiGXtcb7w==",
1301
+
"dependencies": {
1302
+
"continuable": "~1.1.6"
1303
+
}
1304
+
},
1305
+
"node_modules/continuable-list/node_modules/continuable": {
1306
+
"version": "1.1.8",
1307
+
"resolved": "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz",
1308
+
"integrity": "sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA=="
1309
+
},
1310
+
"node_modules/continuable-para": {
1311
+
"version": "1.2.0",
1312
+
"resolved": "https://registry.npmjs.org/continuable-para/-/continuable-para-1.2.0.tgz",
1313
+
"integrity": "sha512-XjPo974RGEJqnvFVT9PWxG97d/NCg58mwmWDbKXqTZBZuUnMIjkx0vde+xerkUuymk8DR+YUAcllK8J5/O4Leg==",
1314
+
"license": "MIT",
1315
+
"dependencies": {
1316
+
"continuable-hash": "~0.1.4",
1317
+
"continuable-list": "~0.1.5"
1318
+
}
1319
+
},
1320
+
"node_modules/continuable-series": {
1321
+
"version": "1.2.0",
1322
+
"resolved": "https://registry.npmjs.org/continuable-series/-/continuable-series-1.2.0.tgz",
1323
+
"integrity": "sha512-xMAlREs3m/IM0VCzuh0TRBXpjd6tl6zi3cMgiwcywIPFcCmNlcFNA6XCtA2cEx6Kq7EE6c1JVDVl3WGepp6a5g==",
1324
+
"license": "MIT"
1325
+
},
1326
+
"node_modules/convert-source-map": {
1327
+
"version": "1.1.3",
1328
+
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
1329
+
"integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==",
1330
+
"dev": true,
1331
+
"license": "MIT"
1332
+
},
1333
+
"node_modules/core-util-is": {
1334
+
"version": "1.0.2",
1335
+
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1336
+
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
1337
+
"license": "MIT"
1338
+
},
1339
+
"node_modules/create-ecdh": {
1340
+
"version": "4.0.0",
1341
+
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
1342
+
"integrity": "sha512-7rYnhx2rzljQb/UszJC+KvDO8muh2kJm0meQ+VxlDoEHQ3vnZcaHRLCdIReCasEt3s5gJUy4FkkOw2L7HomsQQ==",
1343
+
"dev": true,
1344
+
"license": "MIT",
1345
+
"dependencies": {
1346
+
"bn.js": "^4.1.0",
1347
+
"elliptic": "^6.0.0"
1348
+
}
1349
+
},
1350
+
"node_modules/create-hash": {
1351
+
"version": "1.1.2",
1352
+
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz",
1353
+
"integrity": "sha512-pGMQxzwaMm3+Bsw36lktDMRB6q50KdoLxBY1hvB4jf/wB7bgmSACscKCVnJQpDwo7VoLKTMomEuaeNHKtNT/rw==",
1354
+
"dev": true,
1355
+
"license": "MIT",
1356
+
"dependencies": {
1357
+
"cipher-base": "^1.0.1",
1358
+
"inherits": "^2.0.1",
1359
+
"ripemd160": "^1.0.0",
1360
+
"sha.js": "^2.3.6"
1361
+
}
1362
+
},
1363
+
"node_modules/create-hmac": {
1364
+
"version": "1.1.4",
1365
+
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz",
1366
+
"integrity": "sha512-USPrJgMKn+vsZuEcvwmrZV7D2UWLhWlQJ9HHGrS84fxX6tSxfO6MAacnD6alDA3a0LAVtC1N3BU1Wb/6H/yUVQ==",
1367
+
"dev": true,
1368
+
"license": "MIT",
1369
+
"dependencies": {
1370
+
"create-hash": "^1.1.0",
1371
+
"inherits": "^2.0.1"
1372
+
}
1373
+
},
1374
+
"node_modules/cryptiles": {
1375
+
"version": "2.0.5",
1376
+
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
1377
+
"integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==",
1378
+
"deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
1379
+
"license": "BSD-3-Clause",
1380
+
"optional": true,
1381
+
"dependencies": {
1382
+
"boom": "2.x.x"
1383
+
},
1384
+
"engines": {
1385
+
"node": ">=0.10.40"
1386
+
}
1387
+
},
1388
+
"node_modules/crypto-browserify": {
1389
+
"version": "3.11.0",
1390
+
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz",
1391
+
"integrity": "sha512-P9qJXODwW1V0tNZ71FhQEViD3EEfFhojQMOiN1P8C7DrbMJSvU6l3cLnVN0G7ujoNpaQwvFYUPNuEYRyQcwMfA==",
1392
+
"dev": true,
1393
+
"license": "MIT",
1394
+
"dependencies": {
1395
+
"browserify-cipher": "^1.0.0",
1396
+
"browserify-sign": "^4.0.0",
1397
+
"create-ecdh": "^4.0.0",
1398
+
"create-hash": "^1.1.0",
1399
+
"create-hmac": "^1.1.0",
1400
+
"diffie-hellman": "^5.0.0",
1401
+
"inherits": "^2.0.1",
1402
+
"pbkdf2": "^3.0.3",
1403
+
"public-encrypt": "^4.0.0",
1404
+
"randombytes": "^2.0.0"
1405
+
},
1406
+
"engines": {
1407
+
"node": "*"
1408
+
}
1409
+
},
1410
+
"node_modules/d": {
1411
+
"version": "0.1.1",
1412
+
"resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
1413
+
"integrity": "sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==",
1414
+
"license": "MIT",
1415
+
"optional": true,
1416
+
"dependencies": {
1417
+
"es5-ext": "~0.10.2"
1418
+
}
1419
+
},
1420
+
"node_modules/dashdash": {
1421
+
"version": "1.14.0",
1422
+
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz",
1423
+
"integrity": "sha512-yQoNs2JYflS72nKEufCisG/IytQVVtsIRGVUKPsxI0QZs/Q8gZVBR3YUxHYbW1mLT2Q41HQU4seotPHlEHw36Q==",
1424
+
"license": "MIT",
1425
+
"optional": true,
1426
+
"dependencies": {
1427
+
"assert-plus": "^1.0.0"
1428
+
},
1429
+
"engines": {
1430
+
"node": ">=0.10"
1431
+
}
1432
+
},
1433
+
"node_modules/dashdash/node_modules/assert-plus": {
1434
+
"version": "1.0.0",
1435
+
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1436
+
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
1437
+
"license": "MIT",
1438
+
"optional": true,
1439
+
"engines": {
1440
+
"node": ">=0.8"
1441
+
}
1442
+
},
1443
+
"node_modules/dataurl-": {
1444
+
"version": "0.1.0",
1445
+
"resolved": "https://registry.npmjs.org/dataurl-/-/dataurl--0.1.0.tgz",
1446
+
"integrity": "sha512-J1Veu9JMYJIEl+jEiwhNzY+NoWFFsvEpv79YctEXquXr3PRB0xuAr4SZnGpm0MDJHiLIbOhu1VDPVQFOvlrwYw==",
1447
+
"license": "MIT"
1448
+
},
1449
+
"node_modules/date-now": {
1450
+
"version": "0.1.4",
1451
+
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
1452
+
"integrity": "sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw==",
1453
+
"dev": true
1454
+
},
1455
+
"node_modules/debug": {
1456
+
"version": "2.2.0",
1457
+
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
1458
+
"integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==",
1459
+
"license": "MIT",
1460
+
"optional": true,
1461
+
"dependencies": {
1462
+
"ms": "0.7.1"
1463
+
}
1464
+
},
1465
+
"node_modules/decompress-response": {
1466
+
"version": "3.3.0",
1467
+
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
1468
+
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
1469
+
"license": "MIT",
1470
+
"dependencies": {
1471
+
"mimic-response": "^1.0.0"
1472
+
},
1473
+
"engines": {
1474
+
"node": ">=4"
1475
+
}
1476
+
},
1477
+
"node_modules/deep-equal": {
1478
+
"version": "1.0.1",
1479
+
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
1480
+
"integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==",
1481
+
"license": "MIT"
1482
+
},
1483
+
"node_modules/deep-extend": {
1484
+
"version": "0.4.1",
1485
+
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
1486
+
"integrity": "sha512-td/IpUMQ7E0yjmU8s3orgl5+Fvv41C8p0zzf+IRYVuE3bM5Fc0G3hyln0mz9VOPt5T7KahPU3hMdR0B6t9cdhQ==",
1487
+
"license": "MIT",
1488
+
"engines": {
1489
+
"iojs": ">=1.0.0",
1490
+
"node": ">=0.12.0"
1491
+
}
1492
+
},
1493
+
"node_modules/deferred-leveldown": {
1494
+
"version": "1.2.1",
1495
+
"resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz",
1496
+
"integrity": "sha512-g3fM2CbrCd7pfSUHsVlZoJ/VGM1Rk19Fq5BEyvZrrIptHuFn/pp+1o1LdGP87erNdYb59Wt2ePhfDjm+Go8/0A==",
1497
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
1498
+
"license": "MIT",
1499
+
"dependencies": {
1500
+
"abstract-leveldown": "~2.4.0"
1501
+
}
1502
+
},
1503
+
"node_modules/deferred-leveldown/node_modules/abstract-leveldown": {
1504
+
"version": "2.4.1",
1505
+
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz",
1506
+
"integrity": "sha512-sW2ic/lpOHcEhqCrUNgjN0EMhzsqNF8WO8YE5q3n/v3eVUBX24O/gAUMwwFj2BtC/DibKFXn/vA4WYhYt+NNnw==",
1507
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
1508
+
"license": "MIT",
1509
+
"dependencies": {
1510
+
"xtend": "~4.0.0"
1511
+
}
1512
+
},
1513
+
"node_modules/define-data-property": {
1514
+
"version": "1.1.4",
1515
+
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
1516
+
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
1517
+
"dev": true,
1518
+
"license": "MIT",
1519
+
"dependencies": {
1520
+
"es-define-property": "^1.0.0",
1521
+
"es-errors": "^1.3.0",
1522
+
"gopd": "^1.0.1"
1523
+
},
1524
+
"engines": {
1525
+
"node": ">= 0.4"
1526
+
},
1527
+
"funding": {
1528
+
"url": "https://github.com/sponsors/ljharb"
1529
+
}
1530
+
},
1531
+
"node_modules/define-properties": {
1532
+
"version": "1.2.1",
1533
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
1534
+
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
1535
+
"dev": true,
1536
+
"license": "MIT",
1537
+
"dependencies": {
1538
+
"define-data-property": "^1.0.1",
1539
+
"has-property-descriptors": "^1.0.0",
1540
+
"object-keys": "^1.1.1"
1541
+
},
1542
+
"engines": {
1543
+
"node": ">= 0.4"
1544
+
},
1545
+
"funding": {
1546
+
"url": "https://github.com/sponsors/ljharb"
1547
+
}
1548
+
},
1549
+
"node_modules/defined": {
1550
+
"version": "1.0.0",
1551
+
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1552
+
"integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
1553
+
"dev": true,
1554
+
"license": "MIT"
1555
+
},
1556
+
"node_modules/delayed-stream": {
1557
+
"version": "1.0.0",
1558
+
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1559
+
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
1560
+
"license": "MIT",
1561
+
"optional": true,
1562
+
"engines": {
1563
+
"node": ">=0.4.0"
1564
+
}
1565
+
},
1566
+
"node_modules/delegates": {
1567
+
"version": "1.0.0",
1568
+
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
1569
+
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
1570
+
"license": "MIT"
1571
+
},
1572
+
"node_modules/depject": {
1573
+
"version": "3.2.0",
1574
+
"resolved": "https://registry.npmjs.org/depject/-/depject-3.2.0.tgz",
1575
+
"integrity": "sha512-dGRQTJo5BNdF2c/NUPj5xBDOrSh/ZtJ6kbPphLI9crr6xkP4xIbTzN49ORMCaOACT+tM7YGWZy4EpmqVnd9apQ==",
1576
+
"license": "MIT",
1577
+
"dependencies": {
1578
+
"libnested": "^1.1.0"
1579
+
},
1580
+
"engines": {
1581
+
"node": ">=4"
1582
+
}
1583
+
},
1584
+
"node_modules/deps-sort": {
1585
+
"version": "2.0.0",
1586
+
"resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
1587
+
"integrity": "sha512-SdbEF/hgr/EyZ2PfW1DzRT5jKUC7ilCmIMxH3WIqPAm9EGvpcudeS/eW7FbM3M7mYMsdopvkQhM5rVGAIW4wlg==",
1588
+
"dev": true,
1589
+
"license": "MIT",
1590
+
"dependencies": {
1591
+
"JSONStream": "^1.0.3",
1592
+
"shasum": "^1.0.0",
1593
+
"subarg": "^1.0.0",
1594
+
"through2": "^2.0.0"
1595
+
},
1596
+
"bin": {
1597
+
"deps-sort": "bin/cmd.js"
1598
+
}
1599
+
},
1600
+
"node_modules/des.js": {
1601
+
"version": "1.0.0",
1602
+
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
1603
+
"integrity": "sha512-QlJHGiTiOmW4z3EO0qKwjM2Mb+EmOlBHbpC6QgTiXB913NxMKttEuV2SJ+eLA12sMKDg1N8HnncfAtYaNnU+cg==",
1604
+
"dev": true,
1605
+
"license": "MIT",
1606
+
"dependencies": {
1607
+
"inherits": "^2.0.1",
1608
+
"minimalistic-assert": "^1.0.0"
1609
+
}
1610
+
},
1611
+
"node_modules/detect-libc": {
1612
+
"version": "1.0.3",
1613
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
1614
+
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
1615
+
"license": "Apache-2.0",
1616
+
"bin": {
1617
+
"detect-libc": "bin/detect-libc.js"
1618
+
},
1619
+
"engines": {
1620
+
"node": ">=0.10"
1621
+
}
1622
+
},
1623
+
"node_modules/detective": {
1624
+
"version": "5.2.1",
1625
+
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
1626
+
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
1627
+
"dev": true,
1628
+
"license": "MIT",
1629
+
"dependencies": {
1630
+
"acorn-node": "^1.8.2",
1631
+
"defined": "^1.0.0",
1632
+
"minimist": "^1.2.6"
1633
+
},
1634
+
"bin": {
1635
+
"detective": "bin/detective.js"
1636
+
},
1637
+
"engines": {
1638
+
"node": ">=0.8.0"
1639
+
}
1640
+
},
1641
+
"node_modules/diffie-hellman": {
1642
+
"version": "5.0.2",
1643
+
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
1644
+
"integrity": "sha512-6bFNThpXO1MSkYrHm2SPXvfJQ3h4gChXxj5RToODJGCs7Df79q+KNJAiB71Nut2n50ZLc35NTOPVc7jYPPWwtg==",
1645
+
"dev": true,
1646
+
"license": "MIT",
1647
+
"dependencies": {
1648
+
"bn.js": "^4.1.0",
1649
+
"miller-rabin": "^4.0.0",
1650
+
"randombytes": "^2.0.0"
1651
+
}
1652
+
},
1653
+
"node_modules/discontinuous-range": {
1654
+
"version": "1.0.0",
1655
+
"resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
1656
+
"integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==",
1657
+
"license": "MIT"
1658
+
},
1659
+
"node_modules/dom-walk": {
1660
+
"version": "0.1.1",
1661
+
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
1662
+
"integrity": "sha512-8CGZnLAdYN/o0SHjlP3nLvliHpi2f/prVU63/Hc4DTDpBgsNVAJekegjFtxfZ7NTUEDzHUByjX1gT3eYakIKqg=="
1663
+
},
1664
+
"node_modules/domain-browser": {
1665
+
"version": "1.2.0",
1666
+
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
1667
+
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
1668
+
"dev": true,
1669
+
"license": "MIT",
1670
+
"engines": {
1671
+
"node": ">=0.4",
1672
+
"npm": ">=1.2"
1673
+
}
1674
+
},
1675
+
"node_modules/dunder-proto": {
1676
+
"version": "1.0.1",
1677
+
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
1678
+
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
1679
+
"dev": true,
1680
+
"license": "MIT",
1681
+
"dependencies": {
1682
+
"call-bind-apply-helpers": "^1.0.1",
1683
+
"es-errors": "^1.3.0",
1684
+
"gopd": "^1.2.0"
1685
+
},
1686
+
"engines": {
1687
+
"node": ">= 0.4"
1688
+
}
1689
+
},
1690
+
"node_modules/duplexer2": {
1691
+
"version": "0.1.4",
1692
+
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
1693
+
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
1694
+
"dev": true,
1695
+
"license": "BSD-3-Clause",
1696
+
"dependencies": {
1697
+
"readable-stream": "^2.0.2"
1698
+
}
1699
+
},
1700
+
"node_modules/ecc-jsbn": {
1701
+
"version": "0.1.1",
1702
+
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
1703
+
"integrity": "sha512-8Pvg9QY16SYajEL9W1Lk+9yM7XCK/MOq2wibslLZYAAEEkbAIO6mLkW+GFYbvvw8qTuDFzFMg40rS9IxkNCWPg==",
1704
+
"license": "MIT",
1705
+
"optional": true,
1706
+
"dependencies": {
1707
+
"jsbn": "~0.1.0"
1708
+
}
1709
+
},
1710
+
"node_modules/ed2curve": {
1711
+
"version": "0.1.4",
1712
+
"resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.1.4.tgz",
1713
+
"integrity": "sha512-hDZWhCHZ1wu4P2g2RVsM2MjDmmJzhvcsXr5qHUSBJZXvuhJSunhbVsWoBXdIe0/yTa3RV4UaWpOmFmrVsKr0wA==",
1714
+
"license": "Public domain",
1715
+
"dependencies": {
1716
+
"tweetnacl": "0.x.x"
1717
+
}
1718
+
},
1719
+
"node_modules/elliptic": {
1720
+
"version": "6.3.2",
1721
+
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz",
1722
+
"integrity": "sha512-fWMXUkG+piyCogoOd+bUbMYBSO6y2W9BAo28CEZ6wJ06+ZQCgQ2ASgIIlKw/zj0Dny2pa+FN/Do5xMAF4NvUzg==",
1723
+
"dev": true,
1724
+
"license": "MIT",
1725
+
"dependencies": {
1726
+
"bn.js": "^4.4.0",
1727
+
"brorand": "^1.0.1",
1728
+
"hash.js": "^1.0.0",
1729
+
"inherits": "^2.0.1"
1730
+
}
1731
+
},
1732
+
"node_modules/emoji-named-characters": {
1733
+
"version": "1.0.2",
1734
+
"resolved": "https://registry.npmjs.org/emoji-named-characters/-/emoji-named-characters-1.0.2.tgz",
1735
+
"integrity": "sha512-F9uKjyRsj7qjqZh7yjgHYa7XCgJgGI+nHTUqxkq/TDGuq0wLFbUX0wNes3XC6OA2j2Uu8PaeZD6hvCu5eO3lTA==",
1736
+
"deprecated": "This package is no longer maintained",
1737
+
"license": "MIT"
1738
+
},
1739
+
"node_modules/end-of-stream": {
1740
+
"version": "1.1.0",
1741
+
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz",
1742
+
"integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==",
1743
+
"license": "MIT",
1744
+
"dependencies": {
1745
+
"once": "~1.3.0"
1746
+
}
1747
+
},
1748
+
"node_modules/end-of-stream/node_modules/once": {
1749
+
"version": "1.3.3",
1750
+
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
1751
+
"integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
1752
+
"license": "ISC",
1753
+
"dependencies": {
1754
+
"wrappy": "1"
1755
+
}
1756
+
},
1757
+
"node_modules/errno": {
1758
+
"version": "0.1.4",
1759
+
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
1760
+
"integrity": "sha512-B6ww/BgkeBIfyIaOKPMW2zteXdAeXSfOTPv6kGhl3luYw4BOTopQ0EjdGFePGdajvBjLQZq12axGLtHnrp+/Pg==",
1761
+
"license": "MIT",
1762
+
"dependencies": {
1763
+
"prr": "~0.0.0"
1764
+
},
1765
+
"bin": {
1766
+
"errno": "cli.js"
1767
+
}
1768
+
},
1769
+
"node_modules/errno/node_modules/prr": {
1770
+
"version": "0.0.0",
1771
+
"resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
1772
+
"integrity": "sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==",
1773
+
"license": "MIT"
1774
+
},
1775
+
"node_modules/es-define-property": {
1776
+
"version": "1.0.1",
1777
+
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1778
+
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1779
+
"dev": true,
1780
+
"license": "MIT",
1781
+
"engines": {
1782
+
"node": ">= 0.4"
1783
+
}
1784
+
},
1785
+
"node_modules/es-errors": {
1786
+
"version": "1.3.0",
1787
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1788
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1789
+
"dev": true,
1790
+
"license": "MIT",
1791
+
"engines": {
1792
+
"node": ">= 0.4"
1793
+
}
1794
+
},
1795
+
"node_modules/es-object-atoms": {
1796
+
"version": "1.1.1",
1797
+
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
1798
+
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
1799
+
"dev": true,
1800
+
"license": "MIT",
1801
+
"dependencies": {
1802
+
"es-errors": "^1.3.0"
1803
+
},
1804
+
"engines": {
1805
+
"node": ">= 0.4"
1806
+
}
1807
+
},
1808
+
"node_modules/es5-ext": {
1809
+
"version": "0.10.12",
1810
+
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz",
1811
+
"integrity": "sha512-uHlaijZsSZkv+oudKIgdjiC0FtOhHP2oHbcc8kw7i9NQSwazocxfyv2RXOGpHnrUZ+CrrhpjdO+bt+Q9jFYG9g==",
1812
+
"license": "MIT",
1813
+
"optional": true,
1814
+
"dependencies": {
1815
+
"es6-iterator": "2",
1816
+
"es6-symbol": "~3.1"
1817
+
}
1818
+
},
1819
+
"node_modules/es6-iterator": {
1820
+
"version": "2.0.0",
1821
+
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz",
1822
+
"integrity": "sha512-xaFGj2hKo5Np4lJZ3kF0x86zIHuW7qX4ppVhSNx4ya0H9fRYP2V7zBMNiMiw9qR4hKJDSrsDmf/Gq58mnu0tCg==",
1823
+
"license": "MIT",
1824
+
"optional": true,
1825
+
"dependencies": {
1826
+
"d": "^0.1.1",
1827
+
"es5-ext": "^0.10.7",
1828
+
"es6-symbol": "3"
1829
+
}
1830
+
},
1831
+
"node_modules/es6-symbol": {
1832
+
"version": "3.1.0",
1833
+
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz",
1834
+
"integrity": "sha512-mcdWe5FToZm6UsH9ncf1KHfPnUJrdqQZh/or6ESLdg+c8ZnQqDyDuQAfxhf9z+QUC/bN8eLStlmPZHd+cMJONQ==",
1835
+
"license": "MIT",
1836
+
"optional": true,
1837
+
"dependencies": {
1838
+
"d": "~0.1.1",
1839
+
"es5-ext": "~0.10.11"
1840
+
}
1841
+
},
1842
+
"node_modules/escape-string-regexp": {
1843
+
"version": "1.0.5",
1844
+
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1845
+
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1846
+
"license": "MIT",
1847
+
"optional": true,
1848
+
"engines": {
1849
+
"node": ">=0.8.0"
1850
+
}
1851
+
},
1852
+
"node_modules/eventemitter2": {
1853
+
"version": "1.0.5",
1854
+
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-1.0.5.tgz",
1855
+
"integrity": "sha512-EUFhWUYzqqBZlzBMI+dPU8rnKXfQZEUnitnccQuEIAnvWFHCpt3+4fts2+4dpxLtlsiseVXCMFg37KjYChSxpg==",
1856
+
"license": "MIT"
1857
+
},
1858
+
"node_modules/events": {
1859
+
"version": "2.1.0",
1860
+
"resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz",
1861
+
"integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==",
1862
+
"dev": true,
1863
+
"license": "MIT",
1864
+
"engines": {
1865
+
"node": ">=0.4.x"
1866
+
}
1867
+
},
1868
+
"node_modules/evp_bytestokey": {
1869
+
"version": "1.0.0",
1870
+
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz",
1871
+
"integrity": "sha512-ALeH0LCygUuJllS9VdUF1JLBxD37VHyxlFonQixBbQQLcO50OV2vIqPb1fRSz5WDv8aqTAnK9EMGGiF4fE6ToA==",
1872
+
"dev": true,
1873
+
"license": "MIT",
1874
+
"dependencies": {
1875
+
"create-hash": "^1.1.1"
1876
+
}
1877
+
},
1878
+
"node_modules/execspawn": {
1879
+
"version": "1.0.1",
1880
+
"resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz",
1881
+
"integrity": "sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==",
1882
+
"license": "MIT",
1883
+
"optional": true,
1884
+
"dependencies": {
1885
+
"util-extend": "^1.0.1"
1886
+
}
1887
+
},
1888
+
"node_modules/expand-template": {
1889
+
"version": "1.0.3",
1890
+
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz",
1891
+
"integrity": "sha512-Di+5Idl9j2FdaeXqrHdXTN9bv32nXHBMoNCzzqlwNWpHUXwcMegCbyO/m2kQQ4MTvaA1gKtmHnJHJTB+9TI1yg==",
1892
+
"license": "WTFPL"
1893
+
},
1894
+
"node_modules/explain-error": {
1895
+
"version": "1.0.4",
1896
+
"resolved": "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz",
1897
+
"integrity": "sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ==",
1898
+
"license": "MIT"
1899
+
},
1900
+
"node_modules/extend": {
1901
+
"version": "3.0.0",
1902
+
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
1903
+
"integrity": "sha512-5mYyg57hpD+sFaJmgNL9BidQ5C7dmJE3U5vzlRWbuqG+8dytvYEoxvKs6Tj5cm3LpMsFvRt20qz1ckezmsOUgQ==",
1904
+
"license": "MIT",
1905
+
"optional": true
1906
+
},
1907
+
"node_modules/extsprintf": {
1908
+
"version": "1.0.2",
1909
+
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
1910
+
"integrity": "sha512-g21Br4ELmVaKCVSUSSTXecKG+MiLcHFoby5RPPUmfZdhQTontXUOPf0QK/TvreRjgItRiyO928zxR4TCrnuwmA==",
1911
+
"engines": [
1912
+
"node >=0.6.0"
1913
+
],
1914
+
"optional": true
1915
+
},
1916
+
"node_modules/fast-future": {
1917
+
"version": "1.0.2",
1918
+
"resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz",
1919
+
"integrity": "sha512-ZdgcQC4CDq0OlirlbmaV1Hvl9hrQBKwSJokpemb2Y82uzQ3mFaGxBCCTbr78t3obRsgjqrJAsEaYWZSK3oEcJQ==",
1920
+
"license": "MIT"
1921
+
},
1922
+
"node_modules/flumeview-level": {
1923
+
"version": "2.1.1",
1924
+
"resolved": "https://registry.npmjs.org/flumeview-level/-/flumeview-level-2.1.1.tgz",
1925
+
"integrity": "sha512-1hvF6npbtXZpSk4FGXF0M/PE4iGFZvXf6mx6pjo8ui7Qh0vy7alAqjJZGlcO27AeGOAjQCZYH7nSH+lmYu8hVg==",
1926
+
"license": "MIT",
1927
+
"dependencies": {
1928
+
"bytewise": "^1.1.0",
1929
+
"explain-error": "^1.0.4",
1930
+
"level": "^1.7.0",
1931
+
"ltgt": "^2.1.3",
1932
+
"mkdirp": "^0.5.1",
1933
+
"obv": "0.0.0",
1934
+
"pull-level": "^2.0.3",
1935
+
"pull-paramap": "^1.2.1",
1936
+
"pull-stream": "^3.5.0",
1937
+
"pull-write": "^1.1.1"
1938
+
}
1939
+
},
1940
+
"node_modules/flumeview-query": {
1941
+
"version": "4.0.1",
1942
+
"resolved": "https://registry.npmjs.org/flumeview-query/-/flumeview-query-4.0.1.tgz",
1943
+
"integrity": "sha512-UkMRbcVJqVTfqlYCDzZf4cKgjl3EN3Ja8gOwbBykRIqVoIrdTV+IfhJ8z/bvtN7b27G+ctitcA0bDgPBN1uR2A==",
1944
+
"license": "MIT",
1945
+
"dependencies": {
1946
+
"explain-error": "^1.0.1",
1947
+
"flumeview-level": "^2.1.0",
1948
+
"map-filter-reduce": "^3.0.2",
1949
+
"pull-flatmap": "0.0.1",
1950
+
"pull-paramap": "^1.1.3",
1951
+
"pull-sink-through": "0.0.0",
1952
+
"pull-stream": "^3.4.0"
1953
+
}
1954
+
},
1955
+
"node_modules/forever-agent": {
1956
+
"version": "0.6.1",
1957
+
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1958
+
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
1959
+
"license": "Apache-2.0",
1960
+
"optional": true,
1961
+
"engines": {
1962
+
"node": "*"
1963
+
}
1964
+
},
1965
+
"node_modules/form-data": {
1966
+
"version": "2.0.0",
1967
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz",
1968
+
"integrity": "sha512-BWUNep0UvjzlIJgDsi0SFD3MvnLlwiRaVpfr82Hj2xgc9MJJcl1tSQj01CJDMG+w/kzm+vkZMmXwRM2XrkBuaA==",
1969
+
"license": "MIT",
1970
+
"optional": true,
1971
+
"dependencies": {
1972
+
"asynckit": "^0.4.0",
1973
+
"combined-stream": "^1.0.5",
1974
+
"mime-types": "^2.1.11"
1975
+
},
1976
+
"engines": {
1977
+
"node": ">= 0.12"
1978
+
}
1979
+
},
1980
+
"node_modules/fs.realpath": {
1981
+
"version": "1.0.0",
1982
+
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1983
+
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1984
+
"devOptional": true,
1985
+
"license": "ISC"
1986
+
},
1987
+
"node_modules/fstream": {
1988
+
"version": "1.0.10",
1989
+
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz",
1990
+
"integrity": "sha512-c8PWyQzw0JRHCbK5H2c1IQJDuOm2ssGIsmtPsPmKbKETciucj8XYvsFVImrucP1rvlEYb2VF/WM/8Nc4VOK1tA==",
1991
+
"deprecated": "This package is no longer supported.",
1992
+
"license": "ISC",
1993
+
"optional": true,
1994
+
"dependencies": {
1995
+
"graceful-fs": "^4.1.2",
1996
+
"inherits": "~2.0.0",
1997
+
"mkdirp": ">=0.5 0",
1998
+
"rimraf": "2"
1999
+
},
2000
+
"engines": {
2001
+
"node": ">=0.6"
2002
+
}
2003
+
},
2004
+
"node_modules/function-bind": {
2005
+
"version": "1.1.2",
2006
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2007
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2008
+
"dev": true,
2009
+
"license": "MIT",
2010
+
"funding": {
2011
+
"url": "https://github.com/sponsors/ljharb"
2012
+
}
2013
+
},
2014
+
"node_modules/gauge": {
2015
+
"version": "1.2.7",
2016
+
"resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz",
2017
+
"integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==",
2018
+
"deprecated": "This package is no longer supported.",
2019
+
"license": "ISC",
2020
+
"optional": true,
2021
+
"dependencies": {
2022
+
"ansi": "^0.3.0",
2023
+
"has-unicode": "^2.0.0",
2024
+
"lodash.pad": "^4.1.0",
2025
+
"lodash.padend": "^4.1.0",
2026
+
"lodash.padstart": "^4.1.0"
2027
+
}
2028
+
},
2029
+
"node_modules/generate-function": {
2030
+
"version": "2.0.0",
2031
+
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
2032
+
"integrity": "sha512-X46lB9wLCsgkyagCmX2Dev5od5j6niCr3UeMbXVDBVO4tlpXp3o4OFh+0gPTlkD3ZMixU8PCKxf0IMGQvPo8HQ==",
2033
+
"license": "MIT",
2034
+
"optional": true
2035
+
},
2036
+
"node_modules/generate-object-property": {
2037
+
"version": "1.2.0",
2038
+
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
2039
+
"integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
2040
+
"license": "MIT",
2041
+
"optional": true,
2042
+
"dependencies": {
2043
+
"is-property": "^1.0.0"
2044
+
}
2045
+
},
2046
+
"node_modules/get-intrinsic": {
2047
+
"version": "1.3.0",
2048
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2049
+
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2050
+
"dev": true,
2051
+
"license": "MIT",
2052
+
"dependencies": {
2053
+
"call-bind-apply-helpers": "^1.0.2",
2054
+
"es-define-property": "^1.0.1",
2055
+
"es-errors": "^1.3.0",
2056
+
"es-object-atoms": "^1.1.1",
2057
+
"function-bind": "^1.1.2",
2058
+
"get-proto": "^1.0.1",
2059
+
"gopd": "^1.2.0",
2060
+
"has-symbols": "^1.1.0",
2061
+
"hasown": "^2.0.2",
2062
+
"math-intrinsics": "^1.1.0"
2063
+
},
2064
+
"engines": {
2065
+
"node": ">= 0.4"
2066
+
},
2067
+
"funding": {
2068
+
"url": "https://github.com/sponsors/ljharb"
2069
+
}
2070
+
},
2071
+
"node_modules/get-proto": {
2072
+
"version": "1.0.1",
2073
+
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2074
+
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2075
+
"dev": true,
2076
+
"license": "MIT",
2077
+
"dependencies": {
2078
+
"dunder-proto": "^1.0.1",
2079
+
"es-object-atoms": "^1.0.0"
2080
+
},
2081
+
"engines": {
2082
+
"node": ">= 0.4"
2083
+
}
2084
+
},
2085
+
"node_modules/getpass": {
2086
+
"version": "0.1.6",
2087
+
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
2088
+
"integrity": "sha512-Uj295v1VGRPhKEty7IiEzGYf2rAIEbcGQ8dxK5QrQuwP7tCW8ftD5o8FUsGW4MLdws4P3eKRBzo+mFySYYcimA==",
2089
+
"license": "MIT",
2090
+
"optional": true,
2091
+
"dependencies": {
2092
+
"assert-plus": "^1.0.0"
2093
+
}
2094
+
},
2095
+
"node_modules/getpass/node_modules/assert-plus": {
2096
+
"version": "1.0.0",
2097
+
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
2098
+
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
2099
+
"license": "MIT",
2100
+
"optional": true,
2101
+
"engines": {
2102
+
"node": ">=0.8"
2103
+
}
2104
+
},
2105
+
"node_modules/ghreleases": {
2106
+
"version": "1.0.5",
2107
+
"resolved": "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.5.tgz",
2108
+
"integrity": "sha512-fXmepLW+EDMe9i8navRMxhqHgIPqn1f91GA2QGA2u8xz/DnwFqnD4JudKLpKho2I9TC9Vb/qHvcXktism6Hp2w==",
2109
+
"license": "MIT",
2110
+
"optional": true,
2111
+
"dependencies": {
2112
+
"after": "~0.8.1",
2113
+
"ghrepos": "~2.0.0",
2114
+
"ghutils": "~3.2.0",
2115
+
"simple-mime": "~0.1.0",
2116
+
"url-template": "~2.0.6",
2117
+
"xtend": "~4.0.0"
2118
+
}
2119
+
},
2120
+
"node_modules/ghrepos": {
2121
+
"version": "2.0.0",
2122
+
"resolved": "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz",
2123
+
"integrity": "sha512-WKekkei1vtl4rvciCSVBIz+l9rNmlAFto2ryk61emqiLUFXpVuWvdPUmP0NVgLv05uxsXGqvs8T+6xKfon49pg==",
2124
+
"license": "MIT",
2125
+
"optional": true,
2126
+
"dependencies": {
2127
+
"ghutils": "~3.2.0"
2128
+
}
2129
+
},
2130
+
"node_modules/ghutils": {
2131
+
"version": "3.2.0",
2132
+
"resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.0.tgz",
2133
+
"integrity": "sha512-VY9pgUWCr8OBTAv6LHxLL5vdF6ECe7hVdz/TmKb8TtSHn+q+n2vg9sgXwDhMnzbjR39F2j1mrZwhPDwiP8gapA==",
2134
+
"license": "MIT",
2135
+
"optional": true,
2136
+
"dependencies": {
2137
+
"jsonist": "~1.2.0",
2138
+
"xtend": "~4.0.0"
2139
+
}
2140
+
},
2141
+
"node_modules/github-from-package": {
2142
+
"version": "0.0.0",
2143
+
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
2144
+
"integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
2145
+
"license": "MIT"
2146
+
},
2147
+
"node_modules/glob": {
2148
+
"version": "7.2.3",
2149
+
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2150
+
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2151
+
"deprecated": "Glob versions prior to v9 are no longer supported",
2152
+
"devOptional": true,
2153
+
"license": "ISC",
2154
+
"dependencies": {
2155
+
"fs.realpath": "^1.0.0",
2156
+
"inflight": "^1.0.4",
2157
+
"inherits": "2",
2158
+
"minimatch": "^3.1.1",
2159
+
"once": "^1.3.0",
2160
+
"path-is-absolute": "^1.0.0"
2161
+
},
2162
+
"engines": {
2163
+
"node": "*"
2164
+
},
2165
+
"funding": {
2166
+
"url": "https://github.com/sponsors/isaacs"
2167
+
}
2168
+
},
2169
+
"node_modules/global": {
2170
+
"version": "4.2.1",
2171
+
"resolved": "https://registry.npmjs.org/global/-/global-4.2.1.tgz",
2172
+
"integrity": "sha512-z0c5wOXm1QKf+carsplKebLIGjpzWaq1RcjTRZRw/aD5FojM3vgWYp+/S8IdBgOYtds5T+RIuCXH2Z1GciU3BA==",
2173
+
"dependencies": {
2174
+
"min-document": "^2.6.1",
2175
+
"process": "~0.5.1"
2176
+
}
2177
+
},
2178
+
"node_modules/global/node_modules/process": {
2179
+
"version": "0.5.2",
2180
+
"resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
2181
+
"integrity": "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA==",
2182
+
"engines": {
2183
+
"node": ">= 0.6.0"
2184
+
}
2185
+
},
2186
+
"node_modules/gopd": {
2187
+
"version": "1.2.0",
2188
+
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2189
+
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2190
+
"dev": true,
2191
+
"license": "MIT",
2192
+
"engines": {
2193
+
"node": ">= 0.4"
2194
+
},
2195
+
"funding": {
2196
+
"url": "https://github.com/sponsors/ljharb"
2197
+
}
2198
+
},
2199
+
"node_modules/graceful-fs": {
2200
+
"version": "4.1.9",
2201
+
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz",
2202
+
"integrity": "sha512-XoXYnP6yTKfmZYVQJ089K4GdLHvvHWDYN9JcR1hskHIjAFrtAlryPmJQ+bgqs/L9fu0OjahI9d3MTgbtNvbiuA==",
2203
+
"license": "ISC",
2204
+
"optional": true,
2205
+
"engines": {
2206
+
"node": ">=0.4.0"
2207
+
}
2208
+
},
2209
+
"node_modules/har-validator": {
2210
+
"version": "2.0.6",
2211
+
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
2212
+
"integrity": "sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==",
2213
+
"deprecated": "this library is no longer supported",
2214
+
"license": "ISC",
2215
+
"optional": true,
2216
+
"dependencies": {
2217
+
"chalk": "^1.1.1",
2218
+
"commander": "^2.9.0",
2219
+
"is-my-json-valid": "^2.12.4",
2220
+
"pinkie-promise": "^2.0.0"
2221
+
},
2222
+
"bin": {
2223
+
"har-validator": "bin/har-validator"
2224
+
},
2225
+
"engines": {
2226
+
"node": ">=0.10"
2227
+
}
2228
+
},
2229
+
"node_modules/has": {
2230
+
"version": "1.0.1",
2231
+
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
2232
+
"integrity": "sha512-8wpov6mGFPJ/SYWGQIFo6t0yuNWoO9MkSq3flX8LhiGmbIUhDETp9knPMcIm0Xig1ybWsw6gq2w0gCz1JHD+Qw==",
2233
+
"dev": true,
2234
+
"dependencies": {
2235
+
"function-bind": "^1.0.2"
2236
+
},
2237
+
"engines": {
2238
+
"node": ">= 0.8.0"
2239
+
}
2240
+
},
2241
+
"node_modules/has-ansi": {
2242
+
"version": "2.0.0",
2243
+
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
2244
+
"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
2245
+
"license": "MIT",
2246
+
"optional": true,
2247
+
"dependencies": {
2248
+
"ansi-regex": "^2.0.0"
2249
+
},
2250
+
"engines": {
2251
+
"node": ">=0.10.0"
2252
+
}
2253
+
},
2254
+
"node_modules/has-property-descriptors": {
2255
+
"version": "1.0.2",
2256
+
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
2257
+
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
2258
+
"dev": true,
2259
+
"license": "MIT",
2260
+
"dependencies": {
2261
+
"es-define-property": "^1.0.0"
2262
+
},
2263
+
"funding": {
2264
+
"url": "https://github.com/sponsors/ljharb"
2265
+
}
2266
+
},
2267
+
"node_modules/has-symbols": {
2268
+
"version": "1.1.0",
2269
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2270
+
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2271
+
"dev": true,
2272
+
"license": "MIT",
2273
+
"engines": {
2274
+
"node": ">= 0.4"
2275
+
},
2276
+
"funding": {
2277
+
"url": "https://github.com/sponsors/ljharb"
2278
+
}
2279
+
},
2280
+
"node_modules/has-unicode": {
2281
+
"version": "2.0.1",
2282
+
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
2283
+
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
2284
+
"license": "ISC"
2285
+
},
2286
+
"node_modules/hash.js": {
2287
+
"version": "1.0.3",
2288
+
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz",
2289
+
"integrity": "sha512-J0ew1WQhNTfUrH4VYckHyBLq3WzyKJleK8HPeWVIFtgu/mUBKy1fKtk3drOijR2T1gh0ZqC6EZ06uGRgdMASSg==",
2290
+
"dev": true,
2291
+
"license": "MIT",
2292
+
"dependencies": {
2293
+
"inherits": "^2.0.1"
2294
+
}
2295
+
},
2296
+
"node_modules/hasown": {
2297
+
"version": "2.0.2",
2298
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2299
+
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
2300
+
"dev": true,
2301
+
"license": "MIT",
2302
+
"dependencies": {
2303
+
"function-bind": "^1.1.2"
2304
+
},
2305
+
"engines": {
2306
+
"node": ">= 0.4"
2307
+
}
2308
+
},
2309
+
"node_modules/hawk": {
2310
+
"version": "3.1.3",
2311
+
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
2312
+
"integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==",
2313
+
"deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.",
2314
+
"license": "BSD-3-Clause",
2315
+
"optional": true,
2316
+
"dependencies": {
2317
+
"boom": "2.x.x",
2318
+
"cryptiles": "2.x.x",
2319
+
"hoek": "2.x.x",
2320
+
"sntp": "1.x.x"
2321
+
},
2322
+
"engines": {
2323
+
"node": ">=0.10.32"
2324
+
}
2325
+
},
2326
+
"node_modules/hjson": {
2327
+
"version": "2.1.0",
2328
+
"resolved": "https://registry.npmjs.org/hjson/-/hjson-2.1.0.tgz",
2329
+
"integrity": "sha512-6++LRZE+zCbSoo1y8xnJcGjsXQE6aQmRQb6UytsdzLv1tf9KL31DGpBV5GXsppDyN6nsphRBXC7dGoS5kTHKGw==",
2330
+
"license": "MIT",
2331
+
"bin": {
2332
+
"hjson": "bin/hjson"
2333
+
}
2334
+
},
2335
+
"node_modules/hmac": {
2336
+
"version": "1.0.1",
2337
+
"resolved": "https://registry.npmjs.org/hmac/-/hmac-1.0.1.tgz",
2338
+
"integrity": "sha512-7pSzEtIx7WBY04FDVFvdU7gufDrdthJIfQuW3eM6tSNcCWWBW2zSYDgYT74vwys74vuasInzgo5e1Rc4Uoh70Q==",
2339
+
"license": "MIT"
2340
+
},
2341
+
"node_modules/hoek": {
2342
+
"version": "2.16.3",
2343
+
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
2344
+
"integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==",
2345
+
"deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
2346
+
"license": "BSD-3-Clause",
2347
+
"optional": true,
2348
+
"engines": {
2349
+
"node": ">=0.10.40"
2350
+
}
2351
+
},
2352
+
"node_modules/homedir": {
2353
+
"version": "0.6.0",
2354
+
"resolved": "https://registry.npmjs.org/homedir/-/homedir-0.6.0.tgz",
2355
+
"integrity": "sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA==",
2356
+
"license": "MIT",
2357
+
"optional": true
2358
+
},
2359
+
"node_modules/html-element": {
2360
+
"version": "1.3.0",
2361
+
"resolved": "https://registry.npmjs.org/html-element/-/html-element-1.3.0.tgz",
2362
+
"integrity": "sha512-ZueZhoU2xwAIh8WMQbBkX5zTjOf0KRcDin9Nd91DotBXOLEdmxSDy5172LuGywD/P09KB0Wnb9HN1x4+DvabAw==",
2363
+
"license": "MIT",
2364
+
"dependencies": {
2365
+
"class-list": "~0.1.1"
2366
+
}
2367
+
},
2368
+
"node_modules/htmlescape": {
2369
+
"version": "1.1.1",
2370
+
"resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
2371
+
"integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==",
2372
+
"dev": true,
2373
+
"license": "MIT",
2374
+
"engines": {
2375
+
"node": ">=0.10"
2376
+
}
2377
+
},
2378
+
"node_modules/http-signature": {
2379
+
"version": "1.1.1",
2380
+
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
2381
+
"integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==",
2382
+
"license": "MIT",
2383
+
"optional": true,
2384
+
"dependencies": {
2385
+
"assert-plus": "^0.2.0",
2386
+
"jsprim": "^1.2.2",
2387
+
"sshpk": "^1.7.0"
2388
+
},
2389
+
"engines": {
2390
+
"node": ">=0.8",
2391
+
"npm": ">=1.3.7"
2392
+
}
2393
+
},
2394
+
"node_modules/https-browserify": {
2395
+
"version": "1.0.0",
2396
+
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
2397
+
"integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
2398
+
"dev": true,
2399
+
"license": "MIT"
2400
+
},
2401
+
"node_modules/human-time": {
2402
+
"version": "0.0.1",
2403
+
"resolved": "https://registry.npmjs.org/human-time/-/human-time-0.0.1.tgz",
2404
+
"integrity": "sha512-A+xgXNarLizEqp9iHGy9Y4dII0VI/b0NV3qzpdjlInsiLouojaXUG1mLEMMWxlO2X7Kbg+UYw+18oKb74ZWwXQ==",
2405
+
"license": "MIT"
2406
+
},
2407
+
"node_modules/hypercombo": {
2408
+
"version": "0.1.0",
2409
+
"resolved": "https://registry.npmjs.org/hypercombo/-/hypercombo-0.1.0.tgz",
2410
+
"integrity": "sha512-lJaTVukYWcNi5igfF4gus6UzERJoiv3n8eL6ao6Mwp1PZ9hLenMWGm2ytkyViLLRBhvE2xyExVJ4Td4LAXNUUg==",
2411
+
"license": "GPL-3.0+",
2412
+
"dependencies": {
2413
+
"hyperscript": "^2.0.2",
2414
+
"pull-stream": "^3.4.3"
2415
+
}
2416
+
},
2417
+
"node_modules/hypercombo/node_modules/html-element": {
2418
+
"version": "2.1.1",
2419
+
"resolved": "https://registry.npmjs.org/html-element/-/html-element-2.1.1.tgz",
2420
+
"integrity": "sha512-HqX1EEj/9TzXgyRBf0hF7geW8xUiH6kcyFsM+ReZqff9qdmDCazGYxrsi3ny4BEhc/nqT0jqT6fI3ZpxxJXNqg==",
2421
+
"license": "MIT",
2422
+
"dependencies": {
2423
+
"class-list": "~0.1.1"
2424
+
},
2425
+
"engines": {
2426
+
"node": ">=4.2"
2427
+
}
2428
+
},
2429
+
"node_modules/hypercombo/node_modules/hyperscript": {
2430
+
"version": "2.0.2",
2431
+
"resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz",
2432
+
"integrity": "sha512-uggBAYfHFC5WyZQXlJ61BNZbPmJbschcvfYNhYdZWCp+0J8KYb5Du8nQuk8Ru+ThoCNb01B0tPtnTRqnrFBkVg==",
2433
+
"license": "MIT",
2434
+
"dependencies": {
2435
+
"browser-split": "0.0.0",
2436
+
"class-list": "~0.1.0",
2437
+
"html-element": "^2.0.0"
2438
+
}
2439
+
},
2440
+
"node_modules/hypercrop": {
2441
+
"version": "1.0.1",
2442
+
"resolved": "https://registry.npmjs.org/hypercrop/-/hypercrop-1.0.1.tgz",
2443
+
"integrity": "sha512-y07l6JWSJ6k02WD+7PdJNNWCUAv8864muzL6lrl1/QAv7LBifck6/CF0/oitWRYAHfoNbBtIdUCb7qLyvM5Wgw==",
2444
+
"license": "MIT",
2445
+
"dependencies": {
2446
+
"hyperscript": "^1.4.7"
2447
+
}
2448
+
},
2449
+
"node_modules/hyperfile": {
2450
+
"version": "1.1.1",
2451
+
"resolved": "https://registry.npmjs.org/hyperfile/-/hyperfile-1.1.1.tgz",
2452
+
"integrity": "sha512-XTRgT2XZRFgVxpXphgqVuec8DxEIGAdb8PNLibU2AOAW+8C059j/H4YefMS92I22ogQT4tWUInDf2yK0zNSG9g==",
2453
+
"license": "MIT",
2454
+
"dependencies": {
2455
+
"hyperscript": "^1.4.7"
2456
+
}
2457
+
},
2458
+
"node_modules/hyperlightbox": {
2459
+
"version": "0.1.3",
2460
+
"resolved": "https://registry.npmjs.org/hyperlightbox/-/hyperlightbox-0.1.3.tgz",
2461
+
"integrity": "sha512-r1JKOMJtmjsR/erwmLlxqXpuCjVqy/D4g0d9FmDxmZWVhBPs3t1yQWPxIPul6CLoGrWFlrYXWneYIsZCg6KPeg==",
2462
+
"license": "MIT",
2463
+
"dependencies": {
2464
+
"hyperscript": "^1.4.7"
2465
+
}
2466
+
},
2467
+
"node_modules/hyperprogress": {
2468
+
"version": "0.1.0",
2469
+
"resolved": "https://registry.npmjs.org/hyperprogress/-/hyperprogress-0.1.0.tgz",
2470
+
"integrity": "sha512-5VniZ4Kk7bcqcw7qqOuplIQiUB8pvBUSGaJoCa/opb/EdH6hfHwvVqRCmI+LE2EmIq1vDHq8X6mfnz1SgY9JXA==",
2471
+
"license": "MIT"
2472
+
},
2473
+
"node_modules/hyperquest": {
2474
+
"version": "1.2.0",
2475
+
"resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz",
2476
+
"integrity": "sha512-N6QwIYr/ENmsE3+0aNA/x8M+jHF0wedvc9ZiGAhg7KK6TxwtJTSR95b0invqaLFPqUrsngYUrc4LVmLtrl7kvw==",
2477
+
"license": "MIT",
2478
+
"optional": true,
2479
+
"dependencies": {
2480
+
"duplexer2": "~0.0.2",
2481
+
"through2": "~0.6.3"
2482
+
}
2483
+
},
2484
+
"node_modules/hyperquest/node_modules/duplexer2": {
2485
+
"version": "0.0.2",
2486
+
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
2487
+
"integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==",
2488
+
"license": "BSD",
2489
+
"optional": true,
2490
+
"dependencies": {
2491
+
"readable-stream": "~1.1.9"
2492
+
}
2493
+
},
2494
+
"node_modules/hyperquest/node_modules/readable-stream": {
2495
+
"version": "1.1.14",
2496
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
2497
+
"integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
2498
+
"license": "MIT",
2499
+
"optional": true,
2500
+
"dependencies": {
2501
+
"core-util-is": "~1.0.0",
2502
+
"inherits": "~2.0.1",
2503
+
"isarray": "0.0.1",
2504
+
"string_decoder": "~0.10.x"
2505
+
}
2506
+
},
2507
+
"node_modules/hyperquest/node_modules/string_decoder": {
2508
+
"version": "0.10.31",
2509
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2510
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
2511
+
"license": "MIT",
2512
+
"optional": true
2513
+
},
2514
+
"node_modules/hyperquest/node_modules/through2": {
2515
+
"version": "0.6.5",
2516
+
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
2517
+
"integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
2518
+
"license": "MIT",
2519
+
"optional": true,
2520
+
"dependencies": {
2521
+
"readable-stream": ">=1.0.33-1 <1.1.0-0",
2522
+
"xtend": ">=4.0.0 <4.1.0-0"
2523
+
}
2524
+
},
2525
+
"node_modules/hyperquest/node_modules/through2/node_modules/readable-stream": {
2526
+
"version": "1.0.34",
2527
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2528
+
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
2529
+
"license": "MIT",
2530
+
"optional": true,
2531
+
"dependencies": {
2532
+
"core-util-is": "~1.0.0",
2533
+
"inherits": "~2.0.1",
2534
+
"isarray": "0.0.1",
2535
+
"string_decoder": "~0.10.x"
2536
+
}
2537
+
},
2538
+
"node_modules/hyperscript": {
2539
+
"version": "1.4.7",
2540
+
"resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-1.4.7.tgz",
2541
+
"integrity": "sha512-5/qa//3SJb60obSEb3MsCMIVMEtAtgnX73uQw96WvH7Zlx6v0b6h8WEk+FNXL+pRW6TSBjmC36P2h8hIjqujaw==",
2542
+
"license": "MIT",
2543
+
"dependencies": {
2544
+
"browser-split": "0.0.0",
2545
+
"class-list": "~0.1.0",
2546
+
"html-element": "~1.3.0"
2547
+
}
2548
+
},
2549
+
"node_modules/hypertabs": {
2550
+
"version": "3.0.3",
2551
+
"resolved": "https://registry.npmjs.org/hypertabs/-/hypertabs-3.0.3.tgz",
2552
+
"integrity": "sha512-pIwSU/t4r/h+OnYv2aAu9fGn4juoy6hKdVYbIJPtafXB9n3OwESgqbUnI6y+ZSAT77VvrAGbo8pP7riAml8IDw==",
2553
+
"license": "MIT",
2554
+
"dependencies": {
2555
+
"hyperscript": "^1.4.7"
2556
+
}
2557
+
},
2558
+
"node_modules/ieee754": {
2559
+
"version": "1.1.8",
2560
+
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
2561
+
"integrity": "sha512-/aoyv2Nt7mGLnCAWzE0C1WH9Xd8ZsqR0f4Pjwxputi1JNm01+InyAYQotF4N+ulEIjbEsJo22NOHr+U/XEZ1Pw==",
2562
+
"dev": true,
2563
+
"license": "BSD-3-Clause"
2564
+
},
2565
+
"node_modules/increment-buffer": {
2566
+
"version": "1.0.0",
2567
+
"resolved": "https://registry.npmjs.org/increment-buffer/-/increment-buffer-1.0.0.tgz",
2568
+
"integrity": "sha512-IgOr5HpHN4nBRLB/q4ynnMtQSDYfbWMxpGKje/Llk5R26DrOlRQVV3fXkhuTA4XsEV9gMYnRDbfom1pcT61QZg==",
2569
+
"license": "MIT"
2570
+
},
2571
+
"node_modules/indexhtmlify": {
2572
+
"version": "1.3.1",
2573
+
"resolved": "https://registry.npmjs.org/indexhtmlify/-/indexhtmlify-1.3.1.tgz",
2574
+
"integrity": "sha512-34IP9FW9k/YqFVwuFMx2/pVbryiI9EAJsfYy+OXU3IMbnlIenYBvRxLvPruQjKuTkqxdemeVar+gjkNB8NdExQ==",
2575
+
"dev": true,
2576
+
"license": "MIT",
2577
+
"dependencies": {
2578
+
"optimist": "~0.6.0",
2579
+
"through2": "^0.4.1"
2580
+
},
2581
+
"bin": {
2582
+
"indexhtmlify": "index.js"
2583
+
}
2584
+
},
2585
+
"node_modules/indexhtmlify/node_modules/object-keys": {
2586
+
"version": "0.4.0",
2587
+
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
2588
+
"integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==",
2589
+
"dev": true,
2590
+
"license": "MIT"
2591
+
},
2592
+
"node_modules/indexhtmlify/node_modules/readable-stream": {
2593
+
"version": "1.0.34",
2594
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2595
+
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
2596
+
"dev": true,
2597
+
"license": "MIT",
2598
+
"dependencies": {
2599
+
"core-util-is": "~1.0.0",
2600
+
"inherits": "~2.0.1",
2601
+
"isarray": "0.0.1",
2602
+
"string_decoder": "~0.10.x"
2603
+
}
2604
+
},
2605
+
"node_modules/indexhtmlify/node_modules/string_decoder": {
2606
+
"version": "0.10.31",
2607
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2608
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
2609
+
"dev": true,
2610
+
"license": "MIT"
2611
+
},
2612
+
"node_modules/indexhtmlify/node_modules/through2": {
2613
+
"version": "0.4.2",
2614
+
"resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
2615
+
"integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==",
2616
+
"dev": true,
2617
+
"license": "MIT",
2618
+
"dependencies": {
2619
+
"readable-stream": "~1.0.17",
2620
+
"xtend": "~2.1.1"
2621
+
}
2622
+
},
2623
+
"node_modules/indexhtmlify/node_modules/xtend": {
2624
+
"version": "2.1.2",
2625
+
"resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
2626
+
"integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==",
2627
+
"dev": true,
2628
+
"dependencies": {
2629
+
"object-keys": "~0.4.0"
2630
+
},
2631
+
"engines": {
2632
+
"node": ">=0.4"
2633
+
}
2634
+
},
2635
+
"node_modules/indexof": {
2636
+
"version": "0.0.1",
2637
+
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
2638
+
"integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="
2639
+
},
2640
+
"node_modules/inflight": {
2641
+
"version": "1.0.5",
2642
+
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz",
2643
+
"integrity": "sha512-ZOr/ZZjWvVTQML+yBDtsvuVlC9zkWqmaZVZTWP7XdfMTmoO3qjIP26vjfDKDJ6zA9ZffGlnm6Ry5t965o+WUgA==",
2644
+
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
2645
+
"devOptional": true,
2646
+
"license": "ISC",
2647
+
"dependencies": {
2648
+
"once": "^1.3.0",
2649
+
"wrappy": "1"
2650
+
}
2651
+
},
2652
+
"node_modules/inherits": {
2653
+
"version": "2.0.3",
2654
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2655
+
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
2656
+
"license": "ISC"
2657
+
},
2658
+
"node_modules/ini": {
2659
+
"version": "1.3.4",
2660
+
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
2661
+
"integrity": "sha512-VUA7WAWNCWfm6/8f9kAb8Y6iGBWnmCfgFS5dTrv2C38LLm1KUmpY388mCVCJCsMKQomvOQ1oW8/edXdChd9ZXQ==",
2662
+
"deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue",
2663
+
"license": "ISC",
2664
+
"engines": {
2665
+
"node": "*"
2666
+
}
2667
+
},
2668
+
"node_modules/inline-source-map": {
2669
+
"version": "0.6.2",
2670
+
"resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
2671
+
"integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==",
2672
+
"dev": true,
2673
+
"license": "MIT",
2674
+
"dependencies": {
2675
+
"source-map": "~0.5.3"
2676
+
}
2677
+
},
2678
+
"node_modules/insert-module-globals": {
2679
+
"version": "7.0.1",
2680
+
"resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
2681
+
"integrity": "sha512-tjMZcZBS2NtqlX87Y6mlEIUSdftJ2VxlVXSQkrJNBUUB7xgnRIgdVO7nM9DpNl58U1Nejm+ahTjMEQiUpjvA+w==",
2682
+
"dev": true,
2683
+
"license": "MIT",
2684
+
"dependencies": {
2685
+
"combine-source-map": "~0.7.1",
2686
+
"concat-stream": "~1.5.1",
2687
+
"is-buffer": "^1.1.0",
2688
+
"JSONStream": "^1.0.3",
2689
+
"lexical-scope": "^1.2.0",
2690
+
"process": "~0.11.0",
2691
+
"through2": "^2.0.0",
2692
+
"xtend": "^4.0.0"
2693
+
},
2694
+
"bin": {
2695
+
"insert-module-globals": "bin/cmd.js"
2696
+
}
2697
+
},
2698
+
"node_modules/insert-module-globals/node_modules/concat-stream": {
2699
+
"version": "1.5.2",
2700
+
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
2701
+
"integrity": "sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==",
2702
+
"dev": true,
2703
+
"engines": [
2704
+
"node >= 0.8"
2705
+
],
2706
+
"license": "MIT",
2707
+
"dependencies": {
2708
+
"inherits": "~2.0.1",
2709
+
"readable-stream": "~2.0.0",
2710
+
"typedarray": "~0.0.5"
2711
+
}
2712
+
},
2713
+
"node_modules/insert-module-globals/node_modules/isarray": {
2714
+
"version": "1.0.0",
2715
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2716
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
2717
+
"dev": true,
2718
+
"license": "MIT"
2719
+
},
2720
+
"node_modules/insert-module-globals/node_modules/readable-stream": {
2721
+
"version": "2.0.6",
2722
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
2723
+
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
2724
+
"dev": true,
2725
+
"license": "MIT",
2726
+
"dependencies": {
2727
+
"core-util-is": "~1.0.0",
2728
+
"inherits": "~2.0.1",
2729
+
"isarray": "~1.0.0",
2730
+
"process-nextick-args": "~1.0.6",
2731
+
"string_decoder": "~0.10.x",
2732
+
"util-deprecate": "~1.0.1"
2733
+
}
2734
+
},
2735
+
"node_modules/insert-module-globals/node_modules/string_decoder": {
2736
+
"version": "0.10.31",
2737
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2738
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
2739
+
"dev": true,
2740
+
"license": "MIT"
2741
+
},
2742
+
"node_modules/ip": {
2743
+
"version": "1.1.3",
2744
+
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz",
2745
+
"integrity": "sha512-M7h6UQnULysP4/3m97qCEAQ0GwgMv6JEr7dPJ3Rd3ttfr6LIiSBxe46TGixBFDgfQaa6MIKj30tDvH+pImI5VA==",
2746
+
"license": "MIT"
2747
+
},
2748
+
"node_modules/is": {
2749
+
"version": "3.1.0",
2750
+
"resolved": "https://registry.npmjs.org/is/-/is-3.1.0.tgz",
2751
+
"integrity": "sha512-GvIjiMYxR9fgscrtCvSK31+0gNiFZrp01qlbaD2ed91FQc+0YwT33ncK5iUmPRi2R6ULjSPeIJx6JpelBoanpQ==",
2752
+
"license": "MIT",
2753
+
"optional": true,
2754
+
"engines": {
2755
+
"node": "*"
2756
+
}
2757
+
},
2758
+
"node_modules/is-buffer": {
2759
+
"version": "1.1.4",
2760
+
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz",
2761
+
"integrity": "sha512-LdKAPZcV+EfT6PvN90Un/Rnn1g8cL1BfzEBdz6d3Y6CUzMyUVWHewXxyuiNFkLwRKgpDMYHrocdqjMsYTDkOow==",
2762
+
"deprecated": "This version of 'is-buffer' is out-of-date. You must update to v1.1.6 or newer",
2763
+
"dev": true,
2764
+
"license": "MIT"
2765
+
},
2766
+
"node_modules/is-canonical-base64": {
2767
+
"version": "1.1.1",
2768
+
"resolved": "https://registry.npmjs.org/is-canonical-base64/-/is-canonical-base64-1.1.1.tgz",
2769
+
"integrity": "sha512-o6t/DwgEapC0bsloqtegAQyZzQXaQ5+8fzsyf2KmLqupC2ifLFq/lMQiFCJeGpdSrK1o6GL+WW2lRU050lLlFg==",
2770
+
"license": "MIT"
2771
+
},
2772
+
"node_modules/is-core-module": {
2773
+
"version": "2.16.1",
2774
+
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
2775
+
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
2776
+
"dev": true,
2777
+
"license": "MIT",
2778
+
"dependencies": {
2779
+
"hasown": "^2.0.2"
2780
+
},
2781
+
"engines": {
2782
+
"node": ">= 0.4"
2783
+
},
2784
+
"funding": {
2785
+
"url": "https://github.com/sponsors/ljharb"
2786
+
}
2787
+
},
2788
+
"node_modules/is-electron": {
2789
+
"version": "2.0.0",
2790
+
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.0.0.tgz",
2791
+
"integrity": "sha512-VDe6eanPIpm1XBj1VDE7yaeNCW6LDcrFOxo3H2pV0Evp0y0drgUTcGUDDV8HGlR3DN5/I93duMdUJy0je1TvQw==",
2792
+
"license": "MIT"
2793
+
},
2794
+
"node_modules/is-fullwidth-code-point": {
2795
+
"version": "1.0.0",
2796
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
2797
+
"integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
2798
+
"license": "MIT",
2799
+
"dependencies": {
2800
+
"number-is-nan": "^1.0.0"
2801
+
},
2802
+
"engines": {
2803
+
"node": ">=0.10.0"
2804
+
}
2805
+
},
2806
+
"node_modules/is-my-json-valid": {
2807
+
"version": "2.15.0",
2808
+
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz",
2809
+
"integrity": "sha512-32CTy9FyiPq2qLVcb5Jh3pScUj5aLP0NRqACYT1bkJs5zIJsfzcsMs+W1sk4p5FEY5r5CuSjJ1VuYKZsA32ohg==",
2810
+
"deprecated": "catastrophic backtracking in regexes could potentially lead to REDOS attack, upgrade to 2.17.2 as soon as possible",
2811
+
"license": "MIT",
2812
+
"optional": true,
2813
+
"dependencies": {
2814
+
"generate-function": "^2.0.0",
2815
+
"generate-object-property": "^1.1.0",
2816
+
"jsonpointer": "^4.0.0",
2817
+
"xtend": "^4.0.0"
2818
+
}
2819
+
},
2820
+
"node_modules/is-property": {
2821
+
"version": "1.0.2",
2822
+
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
2823
+
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
2824
+
"license": "MIT",
2825
+
"optional": true
2826
+
},
2827
+
"node_modules/is-typedarray": {
2828
+
"version": "1.0.0",
2829
+
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
2830
+
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
2831
+
"license": "MIT",
2832
+
"optional": true
2833
+
},
2834
+
"node_modules/is-valid-domain": {
2835
+
"version": "0.0.2",
2836
+
"resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.0.2.tgz",
2837
+
"integrity": "sha512-cu39FMag8bRXovdSr/Y7YqaE/2b4ItrJij/fPPDYo89JVn21C3LR6Buatf0hYAcqimLZs0POodwHE4WDihLrqA==",
2838
+
"license": "MIT"
2839
+
},
2840
+
"node_modules/is-visible": {
2841
+
"version": "2.1.1",
2842
+
"resolved": "https://registry.npmjs.org/is-visible/-/is-visible-2.1.1.tgz",
2843
+
"integrity": "sha512-oddKCOHCwcZWwbbY9aYkJWMlFMbrqU0lN8S7AU3VCQfcczD3FrpMfeYa0lTq/n6SUsub0U8MrJKDMU9/s0mLaw==",
2844
+
"license": "MIT",
2845
+
"dependencies": {
2846
+
"iselement": "^1.1.3",
2847
+
"style-properties": "^1.3.1"
2848
+
}
2849
+
},
2850
+
"node_modules/isarray": {
2851
+
"version": "0.0.1",
2852
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2853
+
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
2854
+
"license": "MIT"
2855
+
},
2856
+
"node_modules/iselement": {
2857
+
"version": "1.1.4",
2858
+
"resolved": "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz",
2859
+
"integrity": "sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw==",
2860
+
"license": "MIT"
2861
+
},
2862
+
"node_modules/isexe": {
2863
+
"version": "1.1.2",
2864
+
"resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz",
2865
+
"integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==",
2866
+
"license": "ISC",
2867
+
"optional": true
2868
+
},
2869
+
"node_modules/isstream": {
2870
+
"version": "0.1.2",
2871
+
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
2872
+
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
2873
+
"license": "MIT",
2874
+
"optional": true
2875
+
},
2876
+
"node_modules/jodid25519": {
2877
+
"version": "1.0.2",
2878
+
"resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
2879
+
"integrity": "sha512-b2Zna/wGIyTzi0Gemg27JYUaRyTyBETw5GnqyVQMr71uojOYMrgkD2+Px3bG2ZFi7/zTUXJSDoGoBOhMixq7tg==",
2880
+
"license": "MIT",
2881
+
"optional": true,
2882
+
"dependencies": {
2883
+
"jsbn": "~0.1.0"
2884
+
}
2885
+
},
2886
+
"node_modules/jsbn": {
2887
+
"version": "0.1.0",
2888
+
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz",
2889
+
"integrity": "sha512-nSJUKpgMhIK31baMn1+o+ykqan4LBGpeoQguOposJRYzectoBq94PDeRu8wwaJwHMoD7FTGjILdRyWZRuL9pAw==",
2890
+
"license": "BSD",
2891
+
"optional": true
2892
+
},
2893
+
"node_modules/json-buffer": {
2894
+
"version": "2.0.11",
2895
+
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz",
2896
+
"integrity": "sha512-Wu4/hxSZX7Krzjor+sZHWaRau6Be4WQHlrkl3v8cmxRBBewF2TotlgHUedKQJyFiUyFxnK/ZlRYnR9UNVZ7pkg==",
2897
+
"license": "MIT"
2898
+
},
2899
+
"node_modules/json-schema": {
2900
+
"version": "0.2.3",
2901
+
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
2902
+
"integrity": "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==",
2903
+
"optional": true
2904
+
},
2905
+
"node_modules/json-stable-stringify": {
2906
+
"version": "0.0.1",
2907
+
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
2908
+
"integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==",
2909
+
"dev": true,
2910
+
"license": "MIT",
2911
+
"dependencies": {
2912
+
"jsonify": "~0.0.0"
2913
+
}
2914
+
},
2915
+
"node_modules/json-stringify-safe": {
2916
+
"version": "5.0.1",
2917
+
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
2918
+
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
2919
+
"license": "ISC",
2920
+
"optional": true
2921
+
},
2922
+
"node_modules/jsonify": {
2923
+
"version": "0.0.0",
2924
+
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
2925
+
"integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==",
2926
+
"dev": true,
2927
+
"license": "Public Domain",
2928
+
"engines": {
2929
+
"node": "*"
2930
+
}
2931
+
},
2932
+
"node_modules/jsonist": {
2933
+
"version": "1.2.0",
2934
+
"resolved": "https://registry.npmjs.org/jsonist/-/jsonist-1.2.0.tgz",
2935
+
"integrity": "sha512-qEH2OvbVeHXh0T/elR24TEIy7MB+nbYAwNvpsbAcIzNtVYZ13/mVk0o3ENLu8AUB/ZhIbrmDpyi6sysYUIElpA==",
2936
+
"license": "MIT",
2937
+
"optional": true,
2938
+
"dependencies": {
2939
+
"bl": "~1.0.0",
2940
+
"hyperquest": "~1.2.0",
2941
+
"json-stringify-safe": "~5.0.0",
2942
+
"xtend": "~4.0.0"
2943
+
}
2944
+
},
2945
+
"node_modules/jsonparse": {
2946
+
"version": "1.2.0",
2947
+
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz",
2948
+
"integrity": "sha512-LkDEYtKnPFI9hQ/IURETe6F1dUH80cbRkaF6RaViSwoSNPwaxQpi6TgJGvJKyLQ2/9pQW+XCxK3hBoR44RAjkg==",
2949
+
"dev": true,
2950
+
"engines": [
2951
+
"node >= 0.2.0"
2952
+
],
2953
+
"license": "MIT"
2954
+
},
2955
+
"node_modules/jsonpointer": {
2956
+
"version": "4.0.0",
2957
+
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz",
2958
+
"integrity": "sha512-BSyv7u/pT7TCkuAi6PK67D/qa8Q1cDCrh0SHkacQWs7yg2X84pz8b7SbBr3FLNrd8NDAUlInT+DNbR1N4RsT/A==",
2959
+
"license": "MIT",
2960
+
"optional": true,
2961
+
"engines": {
2962
+
"node": ">=0.10.0"
2963
+
}
2964
+
},
2965
+
"node_modules/JSONStream": {
2966
+
"version": "1.2.1",
2967
+
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.2.1.tgz",
2968
+
"integrity": "sha512-yLfH7+rxS2SHQAUgnBMoBGmXHB6NlYl46SazFADcom/wVBD0Idb2iP6CHvih8OZe4R98f6bJ2/XM+nBLxK69Kg==",
2969
+
"dev": true,
2970
+
"license": "(MIT OR Apache-2.0)",
2971
+
"dependencies": {
2972
+
"jsonparse": "^1.2.0",
2973
+
"through": ">=2.2.7 <3"
2974
+
},
2975
+
"bin": {
2976
+
"JSONStream": "index.js"
2977
+
},
2978
+
"engines": {
2979
+
"node": "*"
2980
+
}
2981
+
},
2982
+
"node_modules/jsprim": {
2983
+
"version": "1.3.1",
2984
+
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz",
2985
+
"integrity": "sha512-bxYB8xe0/KIpYlNbZcA9e+lNquVmdPUGmZFNIQiAHPxkUDK2THIq3R+7VVgnv3UkZ63BrJ10+IeNZuew4Pso9Q==",
2986
+
"engines": [
2987
+
"node >=0.6.0"
2988
+
],
2989
+
"license": "MIT",
2990
+
"optional": true,
2991
+
"dependencies": {
2992
+
"extsprintf": "1.0.2",
2993
+
"json-schema": "0.2.3",
2994
+
"verror": "1.3.6"
2995
+
}
2996
+
},
2997
+
"node_modules/konva": {
2998
+
"version": "1.0.3",
2999
+
"resolved": "https://registry.npmjs.org/konva/-/konva-1.0.3.tgz",
3000
+
"integrity": "sha512-PIRcWGh3LWXGtA3vH6cHAy604bzOckNIUBBQN1onBYPvfj9a73DgrVlqe5RqjPD3ChdfDAs2GuVE97jJpfRU7A==",
3001
+
"license": "MIT"
3002
+
},
3003
+
"node_modules/kvgraph": {
3004
+
"version": "0.1.0",
3005
+
"resolved": "https://registry.npmjs.org/kvgraph/-/kvgraph-0.1.0.tgz",
3006
+
"integrity": "sha512-A7Cn9SNXC3G+MnymR8rYg5k9qxKq+RRBUpWzKmuDB/2Dmvhl4jFt3B0kEuwR9D5DgkitfwqKy75wILepoqQKcg==",
3007
+
"license": "Fair"
3008
+
},
3009
+
"node_modules/labeled-stream-splicer": {
3010
+
"version": "2.0.0",
3011
+
"resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz",
3012
+
"integrity": "sha512-/6dSMZcWGSgSny5DzaW9L3mOIqhz6B/CCjmuszf8tfy/puNSNCJfCDAZGXZTrOdyNnIWNB1PR+bfrxHDPQwhLw==",
3013
+
"dev": true,
3014
+
"license": "MIT",
3015
+
"dependencies": {
3016
+
"inherits": "^2.0.1",
3017
+
"isarray": "~0.0.1",
3018
+
"stream-splicer": "^2.0.0"
3019
+
}
3020
+
},
3021
+
"node_modules/letiny-core": {
3022
+
"version": "2.0.3",
3023
+
"resolved": "https://registry.npmjs.org/letiny-core/-/letiny-core-2.0.3.tgz",
3024
+
"integrity": "sha512-xOpwakxcZpDrArZe8mJuWSwc4qtk4RhWbUy37S+ah4adF8TKa9ftHA/k9wvEkDuNhZa5S0AVxxYnMITCZRwj9g==",
3025
+
"license": "MPL-2.0",
3026
+
"optional": true,
3027
+
"dependencies": {
3028
+
"node-forge": "^0.6.38",
3029
+
"request": "^2.55.0",
3030
+
"rsa-compat": "^1.2.3"
3031
+
},
3032
+
"optionalDependencies": {
3033
+
"ursa": "^0.9.1"
3034
+
}
3035
+
},
3036
+
"node_modules/letsencrypt": {
3037
+
"version": "1.5.8",
3038
+
"resolved": "https://registry.npmjs.org/letsencrypt/-/letsencrypt-1.5.8.tgz",
3039
+
"integrity": "sha512-Oz5jOtYA3Up3Drud5r4n9Zr2+n3M8e8QHjqHMaGrNxAoU2RxoY01fPkY6Prb7rSr/7G98e0lmBSjk7vnuAJj7A==",
3040
+
"deprecated": "letsencrypt has been renamed to greenlock. Please find it at npm greenlock",
3041
+
"license": "(MIT OR Apache-2.0)",
3042
+
"optional": true,
3043
+
"dependencies": {
3044
+
"asn1js": "^1.2.12",
3045
+
"bluebird": "^3.0.6",
3046
+
"homedir": "^0.6.0",
3047
+
"letiny-core": "^2.0.1",
3048
+
"mkdirp": "^0.5.1",
3049
+
"node.extend": "^1.1.5",
3050
+
"pkijs": "^1.3.27",
3051
+
"pyconf": "^1.1.2",
3052
+
"request": "^2.67.0",
3053
+
"rsa-compat": "^1.2.1",
3054
+
"safe-replace": "^1.0.2"
3055
+
}
3056
+
},
3057
+
"node_modules/letsencrypt-express": {
3058
+
"version": "1.2.0",
3059
+
"resolved": "https://registry.npmjs.org/letsencrypt-express/-/letsencrypt-express-1.2.0.tgz",
3060
+
"integrity": "sha512-G4ierluY4zsE3SURjeY+irkvhlXoE8md9xxgjt9fC8o0Plzw1WOn6I0oCuBuIFuP9jItypUEYtngP1+ZizcxyQ==",
3061
+
"deprecated": "letsencrypt-express has been renamed to greenlock-express and will now be maintained as such.",
3062
+
"license": "(MIT OR Apache-2.0)",
3063
+
"optional": true,
3064
+
"dependencies": {
3065
+
"homedir": "^0.6.0",
3066
+
"letsencrypt": "^1.5.0",
3067
+
"localhost.daplie.com-certificates": "^1.1.2",
3068
+
"mkdirp": "^0.5.1"
3069
+
},
3070
+
"bin": {
3071
+
"letsencrypt-express": "bin/lex.js",
3072
+
"lex": "bin/lex.js"
3073
+
}
3074
+
},
3075
+
"node_modules/level": {
3076
+
"version": "1.7.0",
3077
+
"resolved": "https://registry.npmjs.org/level/-/level-1.7.0.tgz",
3078
+
"integrity": "sha512-Ev92KRZGGJiKs86pK4v9XwEdOxrzXfD5bzaxbwdyNokyXK4WBd0V8OW/KD0rsgKTicp0ocja6Un7hCwYNDy+0g==",
3079
+
"license": "MIT",
3080
+
"dependencies": {
3081
+
"level-packager": "~1.2.0",
3082
+
"leveldown": "~1.7.0"
3083
+
}
3084
+
},
3085
+
"node_modules/level-codec": {
3086
+
"version": "6.1.0",
3087
+
"resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz",
3088
+
"integrity": "sha512-pPceZJpp/7HKN8R4oaSoHg2qxQPwo/d+RG+yeBBJQ5TI+rq9P5WWGMlpeXDTR/0QeXcGJstdRLYp/GGxKTrqOQ==",
3089
+
"deprecated": "Superseded by level-transcoder (https://github.com/Level/community#faq)",
3090
+
"license": "MIT"
3091
+
},
3092
+
"node_modules/level-errors": {
3093
+
"version": "1.0.4",
3094
+
"resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz",
3095
+
"integrity": "sha512-DEwrtBVEsv2SJY4VB1zsg9gG3ZheXjl52bmsXG7/jE7XM5sqxjaxxej9AaMqmGoxjsr5o0khYuzZTEhcgBQtyw==",
3096
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
3097
+
"license": "MIT",
3098
+
"dependencies": {
3099
+
"errno": "~0.1.1"
3100
+
}
3101
+
},
3102
+
"node_modules/level-iterator-stream": {
3103
+
"version": "1.3.1",
3104
+
"resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz",
3105
+
"integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==",
3106
+
"license": "MIT",
3107
+
"dependencies": {
3108
+
"inherits": "^2.0.1",
3109
+
"level-errors": "^1.0.3",
3110
+
"readable-stream": "^1.0.33",
3111
+
"xtend": "^4.0.0"
3112
+
}
3113
+
},
3114
+
"node_modules/level-iterator-stream/node_modules/readable-stream": {
3115
+
"version": "1.1.14",
3116
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
3117
+
"integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
3118
+
"license": "MIT",
3119
+
"dependencies": {
3120
+
"core-util-is": "~1.0.0",
3121
+
"inherits": "~2.0.1",
3122
+
"isarray": "0.0.1",
3123
+
"string_decoder": "~0.10.x"
3124
+
}
3125
+
},
3126
+
"node_modules/level-iterator-stream/node_modules/string_decoder": {
3127
+
"version": "0.10.31",
3128
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
3129
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
3130
+
"license": "MIT"
3131
+
},
3132
+
"node_modules/level-packager": {
3133
+
"version": "1.2.0",
3134
+
"resolved": "https://registry.npmjs.org/level-packager/-/level-packager-1.2.0.tgz",
3135
+
"integrity": "sha512-oDyGwYgTAz9/08Q32M+S869wyBJ+GxV40nra+ihp9I+TcxIKm04h5Ievy6/d1Ljwjw+x4IOmJ6Xs4djBIJ8FSQ==",
3136
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
3137
+
"license": "MIT",
3138
+
"dependencies": {
3139
+
"levelup": "~1.3.0"
3140
+
}
3141
+
},
3142
+
"node_modules/level-post": {
3143
+
"version": "1.0.5",
3144
+
"resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.5.tgz",
3145
+
"integrity": "sha512-A2VlgnSWjXuMnk4CAw0aWJnQZyrHcTd9Q34/cy23z3eD0QhaNdP/5zFd4wT0ALbzqfL6V3LLfqvu27A72s7n0A==",
3146
+
"license": "MIT",
3147
+
"dependencies": {
3148
+
"ltgt": "^2.1.2"
3149
+
}
3150
+
},
3151
+
"node_modules/leveldown": {
3152
+
"version": "1.7.2",
3153
+
"resolved": "https://registry.npmjs.org/leveldown/-/leveldown-1.7.2.tgz",
3154
+
"integrity": "sha512-SV57VxeejUnuUodKRmKQ2JJzGkHl4u6+8cpiWOIUR1tUrLn8FeeTiU2t4jT/P5dE1ORYArfgoXE2Vfzrb6nOWQ==",
3155
+
"deprecated": "Superseded by classic-level (https://github.com/Level/community#faq)",
3156
+
"hasInstallScript": true,
3157
+
"license": "MIT",
3158
+
"dependencies": {
3159
+
"abstract-leveldown": "~2.6.1",
3160
+
"bindings": "~1.2.1",
3161
+
"fast-future": "~1.0.2",
3162
+
"nan": "~2.6.1",
3163
+
"prebuild-install": "^2.1.0"
3164
+
}
3165
+
},
3166
+
"node_modules/levelup": {
3167
+
"version": "1.3.3",
3168
+
"resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.3.tgz",
3169
+
"integrity": "sha512-3umRkkE0PuPT5tQFY234TZFg2+KHTOUdD2q5x5eVtVPteB4TpSOQRIkVMndGalp92AY6gXrcFCQxVSMXQZzOjw==",
3170
+
"deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)",
3171
+
"license": "MIT",
3172
+
"dependencies": {
3173
+
"deferred-leveldown": "~1.2.1",
3174
+
"level-codec": "~6.1.0",
3175
+
"level-errors": "~1.0.3",
3176
+
"level-iterator-stream": "~1.3.0",
3177
+
"prr": "~1.0.1",
3178
+
"semver": "~5.1.0",
3179
+
"xtend": "~4.0.0"
3180
+
}
3181
+
},
3182
+
"node_modules/levelup/node_modules/semver": {
3183
+
"version": "5.1.1",
3184
+
"resolved": "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz",
3185
+
"integrity": "sha512-bNx9Zdbi1OUN62PbKeG4IgGG8YILX/nkHJ0NQEBwg5FmX8qTJfqhYd3reqkm0DxHCC8nkazb6UjNiBSHCBWVtA==",
3186
+
"license": "ISC",
3187
+
"bin": {
3188
+
"semver": "bin/semver"
3189
+
}
3190
+
},
3191
+
"node_modules/lexical-scope": {
3192
+
"version": "1.2.0",
3193
+
"resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
3194
+
"integrity": "sha512-ntJ8IcBCuKwudML7vAuT/L0aIMU0+9vO25K4CjLPYgzf1NZ0bAhJJBZrvkO+oUGgKcbdkH8UZdRsaEg+wULLRw==",
3195
+
"dev": true,
3196
+
"license": "MIT",
3197
+
"dependencies": {
3198
+
"astw": "^2.0.0"
3199
+
}
3200
+
},
3201
+
"node_modules/libnested": {
3202
+
"version": "1.5.2",
3203
+
"resolved": "https://registry.npmjs.org/libnested/-/libnested-1.5.2.tgz",
3204
+
"integrity": "sha512-DbiwHL8454goYRp5Xn9vUA5XU6x8rNh8BmZ7ywSTUhVBIiDS7ev/FT6+AwU2/ZKW2jEOC7WKhpkJfExaQwosRA==",
3205
+
"license": "MIT"
3206
+
},
3207
+
"node_modules/libsodium": {
3208
+
"version": "0.2.12",
3209
+
"resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.2.12.tgz",
3210
+
"integrity": "sha512-Jk86VGDdn8lFVltGjHbNiXjlJAIqu37VmXmIh2B0D8IZWuWZhjXBM78TRFVz0oneJIYTfusJT+wWNJ30WG2RFw==",
3211
+
"license": "ISC"
3212
+
},
3213
+
"node_modules/libsodium-wrappers": {
3214
+
"version": "0.2.12",
3215
+
"resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.2.12.tgz",
3216
+
"integrity": "sha512-kv+7+E2Qmi3OlCeGjgXcINjGtrnUhkqQGBj43/feVpAYQ6fTqh6cxwVdPXzEXDHrzbc0IVH3wGiTPzPOvGvPPA==",
3217
+
"license": "ISC",
3218
+
"dependencies": {
3219
+
"libsodium": "0.2.12"
3220
+
}
3221
+
},
3222
+
"node_modules/localhost.daplie.com-certificates": {
3223
+
"version": "1.2.3",
3224
+
"resolved": "https://registry.npmjs.org/localhost.daplie.com-certificates/-/localhost.daplie.com-certificates-1.2.3.tgz",
3225
+
"integrity": "sha512-8kmWJPMMn9JwNWHHHlqbcZfYLwumazAabk21A9fTIhfanwJp9oTj44wXpmgada6BBZG8r3RO8zf3wxAlslj7HQ==",
3226
+
"deprecated": "this package has been deprecated",
3227
+
"license": "Apache-2.0",
3228
+
"optional": true
3229
+
},
3230
+
"node_modules/lodash.memoize": {
3231
+
"version": "3.0.4",
3232
+
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
3233
+
"integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==",
3234
+
"dev": true,
3235
+
"license": "MIT"
3236
+
},
3237
+
"node_modules/lodash.pad": {
3238
+
"version": "4.5.1",
3239
+
"resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz",
3240
+
"integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==",
3241
+
"license": "MIT",
3242
+
"optional": true
3243
+
},
3244
+
"node_modules/lodash.padend": {
3245
+
"version": "4.6.1",
3246
+
"resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
3247
+
"integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==",
3248
+
"license": "MIT",
3249
+
"optional": true
3250
+
},
3251
+
"node_modules/lodash.padstart": {
3252
+
"version": "4.6.1",
3253
+
"resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
3254
+
"integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==",
3255
+
"license": "MIT",
3256
+
"optional": true
3257
+
},
3258
+
"node_modules/looper": {
3259
+
"version": "3.0.0",
3260
+
"resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz",
3261
+
"integrity": "sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==",
3262
+
"license": "MIT"
3263
+
},
3264
+
"node_modules/ltgt": {
3265
+
"version": "2.2.1",
3266
+
"resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
3267
+
"integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==",
3268
+
"license": "MIT"
3269
+
},
3270
+
"node_modules/map-filter-reduce": {
3271
+
"version": "3.0.2",
3272
+
"resolved": "https://registry.npmjs.org/map-filter-reduce/-/map-filter-reduce-3.0.2.tgz",
3273
+
"integrity": "sha512-UfkKV1zgBsNJ2PdUpf/fEdoUopKL+U1B+lpW3YQbl49hMW2ZLrzYdY6/99q79HmFnR22jXVkS4LIvaFqy+KYIA==",
3274
+
"license": "MIT",
3275
+
"dependencies": {
3276
+
"binary-search": "^1.2.0",
3277
+
"pull-sink-through": "0.0.0",
3278
+
"pull-stream": "^3.4.3",
3279
+
"typewiselite": "^1.0.0"
3280
+
}
3281
+
},
3282
+
"node_modules/math-intrinsics": {
3283
+
"version": "1.1.0",
3284
+
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
3285
+
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
3286
+
"dev": true,
3287
+
"license": "MIT",
3288
+
"engines": {
3289
+
"node": ">= 0.4"
3290
+
}
3291
+
},
3292
+
"node_modules/miller-rabin": {
3293
+
"version": "4.0.0",
3294
+
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz",
3295
+
"integrity": "sha512-aaZr5VprJSt03eVBJEsG+LOI2ccb/j+DXrnme/z/2M2+K9TRM7IY0+Csko/8dYF3XlUHvgPhrcDZfOAHXYqiZg==",
3296
+
"dev": true,
3297
+
"license": "MIT",
3298
+
"dependencies": {
3299
+
"bn.js": "^4.0.0",
3300
+
"brorand": "^1.0.1"
3301
+
},
3302
+
"bin": {
3303
+
"miller-rabin": "bin/miller-rabin"
3304
+
}
3305
+
},
3306
+
"node_modules/mime-db": {
3307
+
"version": "1.24.0",
3308
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz",
3309
+
"integrity": "sha512-0XGpuLCNPqkv3vYiRjh1w6h4RbIGWyCh8OnXejta9INkFX0M8ENYth8O0As8rSGDxzEO1PafhiaqQdtqhtA2lw==",
3310
+
"license": "MIT",
3311
+
"engines": {
3312
+
"node": ">= 0.6"
3313
+
}
3314
+
},
3315
+
"node_modules/mime-types": {
3316
+
"version": "2.1.12",
3317
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz",
3318
+
"integrity": "sha512-irQD8Ww11AaU8vbCRjMuaq4huvb2ITxVg/VDBrvf8keFtbWZ3zbGO0tvsCMbD7JlR8mOYw0WbAqi4sL8KGUd5w==",
3319
+
"license": "MIT",
3320
+
"dependencies": {
3321
+
"mime-db": "~1.24.0"
3322
+
},
3323
+
"engines": {
3324
+
"node": ">= 0.6"
3325
+
}
3326
+
},
3327
+
"node_modules/mimic-response": {
3328
+
"version": "1.0.1",
3329
+
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
3330
+
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
3331
+
"license": "MIT",
3332
+
"engines": {
3333
+
"node": ">=4"
3334
+
}
3335
+
},
3336
+
"node_modules/min-document": {
3337
+
"version": "2.19.0",
3338
+
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
3339
+
"integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
3340
+
"dependencies": {
3341
+
"dom-walk": "^0.1.0"
3342
+
}
3343
+
},
3344
+
"node_modules/minimalistic-assert": {
3345
+
"version": "1.0.0",
3346
+
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
3347
+
"integrity": "sha512-0xPOgDvW9sfA9OrHHCuSRZhj/e+L82RGLFf0b9EsvagmQpGnRYtztTIuq1JR3biVE7u+Mu2jWZqSxvZ8CaMrBQ==",
3348
+
"dev": true,
3349
+
"license": "ISC"
3350
+
},
3351
+
"node_modules/minimatch": {
3352
+
"version": "3.1.2",
3353
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
3354
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
3355
+
"devOptional": true,
3356
+
"license": "ISC",
3357
+
"dependencies": {
3358
+
"brace-expansion": "^1.1.7"
3359
+
},
3360
+
"engines": {
3361
+
"node": "*"
3362
+
}
3363
+
},
3364
+
"node_modules/minimist": {
3365
+
"version": "1.2.8",
3366
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
3367
+
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
3368
+
"license": "MIT",
3369
+
"funding": {
3370
+
"url": "https://github.com/sponsors/ljharb"
3371
+
}
3372
+
},
3373
+
"node_modules/mkdirp": {
3374
+
"version": "0.5.1",
3375
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3376
+
"integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==",
3377
+
"deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
3378
+
"license": "MIT",
3379
+
"dependencies": {
3380
+
"minimist": "0.0.8"
3381
+
},
3382
+
"bin": {
3383
+
"mkdirp": "bin/cmd.js"
3384
+
}
3385
+
},
3386
+
"node_modules/mkdirp-classic": {
3387
+
"version": "0.5.3",
3388
+
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
3389
+
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
3390
+
"dev": true,
3391
+
"license": "MIT"
3392
+
},
3393
+
"node_modules/mkdirp/node_modules/minimist": {
3394
+
"version": "0.0.8",
3395
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
3396
+
"integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==",
3397
+
"license": "MIT"
3398
+
},
3399
+
"node_modules/module-deps": {
3400
+
"version": "6.2.3",
3401
+
"resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz",
3402
+
"integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==",
3403
+
"dev": true,
3404
+
"license": "MIT",
3405
+
"dependencies": {
3406
+
"browser-resolve": "^2.0.0",
3407
+
"cached-path-relative": "^1.0.2",
3408
+
"concat-stream": "~1.6.0",
3409
+
"defined": "^1.0.0",
3410
+
"detective": "^5.2.0",
3411
+
"duplexer2": "^0.1.2",
3412
+
"inherits": "^2.0.1",
3413
+
"JSONStream": "^1.0.3",
3414
+
"parents": "^1.0.0",
3415
+
"readable-stream": "^2.0.2",
3416
+
"resolve": "^1.4.0",
3417
+
"stream-combiner2": "^1.1.1",
3418
+
"subarg": "^1.0.0",
3419
+
"through2": "^2.0.0",
3420
+
"xtend": "^4.0.0"
3421
+
},
3422
+
"bin": {
3423
+
"module-deps": "bin/cmd.js"
3424
+
},
3425
+
"engines": {
3426
+
"node": ">= 0.8.0"
3427
+
}
3428
+
},
3429
+
"node_modules/moment": {
3430
+
"version": "2.15.1",
3431
+
"resolved": "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz",
3432
+
"integrity": "sha512-VRuqlq9ET3eUjWkqgZtUegkYF664TRWaxmgwlHxboe653wv4stNaVKDufNfCDcGFu1EA2Bm26bD0NWLaFMHfvA==",
3433
+
"license": "MIT",
3434
+
"engines": {
3435
+
"node": "*"
3436
+
}
3437
+
},
3438
+
"node_modules/monotonic-timestamp": {
3439
+
"version": "0.0.9",
3440
+
"resolved": "https://registry.npmjs.org/monotonic-timestamp/-/monotonic-timestamp-0.0.9.tgz",
3441
+
"integrity": "sha512-PQcys7iTcXiMyW8cgK5B/fhKGteB/WLqWN1f+s7IJHyyRd80JnJYoNo03kTQcGZhVtsKz5kEWiS7W94gfY6qcQ==",
3442
+
"license": "MIT"
3443
+
},
3444
+
"node_modules/moo": {
3445
+
"version": "0.5.2",
3446
+
"resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
3447
+
"integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
3448
+
"license": "BSD-3-Clause"
3449
+
},
3450
+
"node_modules/ms": {
3451
+
"version": "0.7.1",
3452
+
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
3453
+
"integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==",
3454
+
"optional": true
3455
+
},
3456
+
"node_modules/multiblob-http": {
3457
+
"version": "0.2.0",
3458
+
"resolved": "https://registry.npmjs.org/multiblob-http/-/multiblob-http-0.2.0.tgz",
3459
+
"integrity": "sha512-VdlUaHrYxW3d/DgpHC8aOnBO/rEH6fcbSM2qPAtco9a0wB7H+5qU+vAawQaHnuK+eltIGuslC3HZ+orKU/6JeQ==",
3460
+
"license": "MIT",
3461
+
"dependencies": {
3462
+
"pull-stream": "^3.4.3",
3463
+
"stream-to-pull-stream": "^1.7.0"
3464
+
}
3465
+
},
3466
+
"node_modules/multiserver": {
3467
+
"version": "1.7.2",
3468
+
"resolved": "https://registry.npmjs.org/multiserver/-/multiserver-1.7.2.tgz",
3469
+
"integrity": "sha512-oGwzuh64wmyxF9/w8jdCyYbmPFFhbRuKgc+/SZGS7PgNWUk9ilYQ7vyzysSMytzv/IiurHS96/ymRWre2DvByw==",
3470
+
"license": "MIT",
3471
+
"dependencies": {
3472
+
"pull-cat": "~1.1.5",
3473
+
"pull-stream": "^3.4.3",
3474
+
"pull-ws": "^3.2.2",
3475
+
"secret-handshake": "^1.1.1",
3476
+
"separator-escape": "0.0.0",
3477
+
"socks": "1.1.9",
3478
+
"stream-to-pull-stream": "^1.7.2"
3479
+
}
3480
+
},
3481
+
"node_modules/multiserver-address": {
3482
+
"version": "1.0.1",
3483
+
"resolved": "https://registry.npmjs.org/multiserver-address/-/multiserver-address-1.0.1.tgz",
3484
+
"integrity": "sha512-IfZMAGs9onCLkYNSnNBri3JxuvhQYllMyh3W9ry86iEDcfW9uPVsHTHDsjDxQtL+dPq3byshmA+Y4LN2wLHwNw==",
3485
+
"license": "MIT",
3486
+
"dependencies": {
3487
+
"nearley": "^2.15.1"
3488
+
}
3489
+
},
3490
+
"node_modules/muxrpc": {
3491
+
"version": "6.3.3",
3492
+
"resolved": "https://registry.npmjs.org/muxrpc/-/muxrpc-6.3.3.tgz",
3493
+
"integrity": "sha512-h/qoJuzuWpWMPIbiYOT5nJXgmRUOIAg1ycAOTyOsupjXJETna5l2w7LFvmaJJ2vIDJha4M60l54QHrbqEcGlmA==",
3494
+
"license": "MIT",
3495
+
"dependencies": {
3496
+
"explain-error": "^1.0.1",
3497
+
"packet-stream": "~2.0.0",
3498
+
"packet-stream-codec": "^1.1.1",
3499
+
"pull-goodbye": "~0.0.1",
3500
+
"pull-stream": "^3.2.3"
3501
+
}
3502
+
},
3503
+
"node_modules/nan": {
3504
+
"version": "2.6.2",
3505
+
"resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
3506
+
"integrity": "sha512-K3AyXBwEX6HF3eV46B9YLyyJ66DiBI66v+pTQfz+AyMOdOtg2aH/3WNSDbb3cVDLfPEJmx70aDu60aDTG5x+sw==",
3507
+
"license": "MIT"
3508
+
},
3509
+
"node_modules/nearley": {
3510
+
"version": "2.20.1",
3511
+
"resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
3512
+
"integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
3513
+
"license": "MIT",
3514
+
"dependencies": {
3515
+
"commander": "^2.19.0",
3516
+
"moo": "^0.5.0",
3517
+
"railroad-diagrams": "^1.0.0",
3518
+
"randexp": "0.4.6"
3519
+
},
3520
+
"bin": {
3521
+
"nearley-railroad": "bin/nearley-railroad.js",
3522
+
"nearley-test": "bin/nearley-test.js",
3523
+
"nearley-unparse": "bin/nearley-unparse.js",
3524
+
"nearleyc": "bin/nearleyc.js"
3525
+
},
3526
+
"funding": {
3527
+
"type": "individual",
3528
+
"url": "https://nearley.js.org/#give-to-nearley"
3529
+
}
3530
+
},
3531
+
"node_modules/node-abi": {
3532
+
"version": "2.30.1",
3533
+
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz",
3534
+
"integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==",
3535
+
"license": "MIT",
3536
+
"dependencies": {
3537
+
"semver": "^5.4.1"
3538
+
}
3539
+
},
3540
+
"node_modules/node-forge": {
3541
+
"version": "0.6.43",
3542
+
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.43.tgz",
3543
+
"integrity": "sha512-m6rYQ6vzGNdZIYZCo4X5sm5iUiqpvp/He4vOXUdP0WzKJ9cHTC/Wz6nzBjZUYiSCLv+C3YGvtcAIxP1Mx1iqcw==",
3544
+
"license": "(BSD-3-Clause OR GPL-2.0)",
3545
+
"optional": true,
3546
+
"engines": {
3547
+
"node": "*"
3548
+
}
3549
+
},
3550
+
"node_modules/node-gyp": {
3551
+
"version": "3.4.0",
3552
+
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.4.0.tgz",
3553
+
"integrity": "sha512-HtmskmW14d8KGUYYHKFx+W4k2oGeoDLHylGsgRXYh75yFsSrv7/Dw3sdAmuJ4AB/auxa4P5/NC70W4+jFrcofw==",
3554
+
"license": "MIT",
3555
+
"optional": true,
3556
+
"dependencies": {
3557
+
"fstream": "^1.0.0",
3558
+
"glob": "^7.0.3",
3559
+
"graceful-fs": "^4.1.2",
3560
+
"minimatch": "^3.0.2",
3561
+
"mkdirp": "^0.5.0",
3562
+
"nopt": "2 || 3",
3563
+
"npmlog": "0 || 1 || 2 || 3",
3564
+
"osenv": "0",
3565
+
"path-array": "^1.0.0",
3566
+
"request": "2",
3567
+
"rimraf": "2",
3568
+
"semver": "2.x || 3.x || 4 || 5",
3569
+
"tar": "^2.0.0",
3570
+
"which": "1"
3571
+
},
3572
+
"bin": {
3573
+
"node-gyp": "bin/node-gyp.js"
3574
+
},
3575
+
"engines": {
3576
+
"node": ">= 0.8.0"
3577
+
}
3578
+
},
3579
+
"node_modules/node-ninja": {
3580
+
"version": "1.0.2",
3581
+
"resolved": "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz",
3582
+
"integrity": "sha512-wMtWsG2QZI1Z5V7GciX9OI2DVT0PuDRIDQfe3L3rJsQ1qN1Gm3QQhoNtb4PMRi7gq4ByvEIYtPwHC7YbEf5yxw==",
3583
+
"license": "MPL-2.0",
3584
+
"optional": true,
3585
+
"dependencies": {
3586
+
"fstream": "^1.0.0",
3587
+
"glob": "3 || 4 || 5 || 6 || 7",
3588
+
"graceful-fs": "^4.1.2",
3589
+
"minimatch": "3",
3590
+
"mkdirp": "^0.5.0",
3591
+
"nopt": "2 || 3",
3592
+
"npmlog": "0 || 1 || 2",
3593
+
"osenv": "0",
3594
+
"path-array": "^1.0.0",
3595
+
"request": "2",
3596
+
"rimraf": "2",
3597
+
"semver": "2.x || 3.x || 4 || 5",
3598
+
"tar": "^2.0.0",
3599
+
"which": "1"
3600
+
},
3601
+
"bin": {
3602
+
"node-ninja": "bin/node-ninja.js"
3603
+
},
3604
+
"engines": {
3605
+
"node": ">= 0.8.0"
3606
+
}
3607
+
},
3608
+
"node_modules/node-uuid": {
3609
+
"version": "1.4.7",
3610
+
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
3611
+
"integrity": "sha512-1ufwSb+P48JyWDskpICvUCAXNaIFcNeln/hhg6yViwOoJ6g26SfaFoYIuGu0grRUsxqeJkC2aq5wAxXo1bT/FA==",
3612
+
"deprecated": "Use uuid module instead",
3613
+
"optional": true,
3614
+
"bin": {
3615
+
"uuid": "bin/uuid"
3616
+
}
3617
+
},
3618
+
"node_modules/node.extend": {
3619
+
"version": "1.1.6",
3620
+
"resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
3621
+
"integrity": "sha512-dkI3ZpV4lhARrqGS/zTJpOaypTvZ1AXdvUc86TjrxQbWyOGq5J/pfptiiThIzraKGmaDpnwGiDOIL+yACUSpGA==",
3622
+
"license": "(MIT OR GPL-2.0)",
3623
+
"optional": true,
3624
+
"dependencies": {
3625
+
"is": "^3.1.0"
3626
+
},
3627
+
"engines": {
3628
+
"node": ">=0.4.0"
3629
+
}
3630
+
},
3631
+
"node_modules/non-private-ip": {
3632
+
"version": "1.4.1",
3633
+
"resolved": "https://registry.npmjs.org/non-private-ip/-/non-private-ip-1.4.1.tgz",
3634
+
"integrity": "sha512-Bpl5pRs6HPP8vL/b0yDzEy20HXKNVz6I6PR1rCxAIwjOBpC3T/BfFv036gUNstxtoAVxBKgFL14FfWzC7fxENA==",
3635
+
"license": "MIT",
3636
+
"dependencies": {
3637
+
"ip": "~0.3.2"
3638
+
},
3639
+
"bin": {
3640
+
"non-private-ip": "index.js"
3641
+
}
3642
+
},
3643
+
"node_modules/non-private-ip/node_modules/ip": {
3644
+
"version": "0.3.3",
3645
+
"resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz",
3646
+
"integrity": "sha512-VXpBTSFo8wNvJVwCxlncVwd2hYbzX8egxidocX2oKt6H5tJzLjrzG6gTNoHSNsKtIyelb528n/7sa86kqlnNiA==",
3647
+
"license": "MIT"
3648
+
},
3649
+
"node_modules/noop-logger": {
3650
+
"version": "0.1.1",
3651
+
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
3652
+
"integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==",
3653
+
"license": "MIT"
3654
+
},
3655
+
"node_modules/nopt": {
3656
+
"version": "3.0.6",
3657
+
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
3658
+
"integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
3659
+
"license": "ISC",
3660
+
"optional": true,
3661
+
"dependencies": {
3662
+
"abbrev": "1"
3663
+
},
3664
+
"bin": {
3665
+
"nopt": "bin/nopt.js"
3666
+
}
3667
+
},
3668
+
"node_modules/npmlog": {
3669
+
"version": "2.0.4",
3670
+
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz",
3671
+
"integrity": "sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ==",
3672
+
"deprecated": "This package is no longer supported.",
3673
+
"license": "ISC",
3674
+
"optional": true,
3675
+
"dependencies": {
3676
+
"ansi": "~0.3.1",
3677
+
"are-we-there-yet": "~1.1.2",
3678
+
"gauge": "~1.2.5"
3679
+
}
3680
+
},
3681
+
"node_modules/number-is-nan": {
3682
+
"version": "1.0.1",
3683
+
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
3684
+
"integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
3685
+
"license": "MIT",
3686
+
"engines": {
3687
+
"node": ">=0.10.0"
3688
+
}
3689
+
},
3690
+
"node_modules/oauth-sign": {
3691
+
"version": "0.8.2",
3692
+
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
3693
+
"integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==",
3694
+
"license": "Apache-2.0",
3695
+
"optional": true,
3696
+
"engines": {
3697
+
"node": "*"
3698
+
}
3699
+
},
3700
+
"node_modules/object-assign": {
3701
+
"version": "4.1.0",
3702
+
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
3703
+
"integrity": "sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==",
3704
+
"license": "MIT",
3705
+
"engines": {
3706
+
"node": ">=0.10.0"
3707
+
}
3708
+
},
3709
+
"node_modules/object-keys": {
3710
+
"version": "1.1.1",
3711
+
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
3712
+
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
3713
+
"dev": true,
3714
+
"license": "MIT",
3715
+
"engines": {
3716
+
"node": ">= 0.4"
3717
+
}
3718
+
},
3719
+
"node_modules/object.assign": {
3720
+
"version": "4.1.7",
3721
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
3722
+
"integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
3723
+
"dev": true,
3724
+
"license": "MIT",
3725
+
"dependencies": {
3726
+
"call-bind": "^1.0.8",
3727
+
"call-bound": "^1.0.3",
3728
+
"define-properties": "^1.2.1",
3729
+
"es-object-atoms": "^1.0.0",
3730
+
"has-symbols": "^1.1.0",
3731
+
"object-keys": "^1.1.1"
3732
+
},
3733
+
"engines": {
3734
+
"node": ">= 0.4"
3735
+
},
3736
+
"funding": {
3737
+
"url": "https://github.com/sponsors/ljharb"
3738
+
}
3739
+
},
3740
+
"node_modules/observable": {
3741
+
"version": "2.1.4",
3742
+
"resolved": "https://registry.npmjs.org/observable/-/observable-2.1.4.tgz",
3743
+
"integrity": "sha512-YP03BvfvWSu3IZgcByNp5d9mNJAMjJG8TI2z9rrAR0jQvVH6csE+3VPkAemR0n3hOlI5vJ7gWgg0YPGUFZaQBg==",
3744
+
"license": "MIT"
3745
+
},
3746
+
"node_modules/obv": {
3747
+
"version": "0.0.0",
3748
+
"resolved": "https://registry.npmjs.org/obv/-/obv-0.0.0.tgz",
3749
+
"integrity": "sha512-bLAyq8rbd2+Kam6hckUvufIAqIKuYJxaSeVOpsdd+FIZsm14s9vn0rnplqlSaFq9XJFAFsZy+9UHyPuviHC9hA==",
3750
+
"license": "MIT"
3751
+
},
3752
+
"node_modules/once": {
3753
+
"version": "1.4.0",
3754
+
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3755
+
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
3756
+
"license": "ISC",
3757
+
"dependencies": {
3758
+
"wrappy": "1"
3759
+
}
3760
+
},
3761
+
"node_modules/open-external": {
3762
+
"version": "0.1.1",
3763
+
"resolved": "https://registry.npmjs.org/open-external/-/open-external-0.1.1.tgz",
3764
+
"integrity": "sha512-rSzSGztPVglGoM7nYpoDdP+tiC8kywl0qICGH7A7Dt0cXHYmCGy0y2Abo9fNU1zElFg9tWHQMo1bkJjWq7NQdQ==",
3765
+
"license": "MIT"
3766
+
},
3767
+
"node_modules/optimist": {
3768
+
"version": "0.6.1",
3769
+
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
3770
+
"integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==",
3771
+
"dev": true,
3772
+
"license": "MIT/X11",
3773
+
"dependencies": {
3774
+
"minimist": "~0.0.1",
3775
+
"wordwrap": "~0.0.2"
3776
+
}
3777
+
},
3778
+
"node_modules/optimist/node_modules/minimist": {
3779
+
"version": "0.0.10",
3780
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
3781
+
"integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==",
3782
+
"dev": true,
3783
+
"license": "MIT"
3784
+
},
3785
+
"node_modules/options": {
3786
+
"version": "0.0.6",
3787
+
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
3788
+
"integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==",
3789
+
"engines": {
3790
+
"node": ">=0.4.0"
3791
+
}
3792
+
},
3793
+
"node_modules/os-browserify": {
3794
+
"version": "0.3.0",
3795
+
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
3796
+
"integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
3797
+
"dev": true,
3798
+
"license": "MIT"
3799
+
},
3800
+
"node_modules/os-homedir": {
3801
+
"version": "1.0.2",
3802
+
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
3803
+
"integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
3804
+
"license": "MIT",
3805
+
"engines": {
3806
+
"node": ">=0.10.0"
3807
+
}
3808
+
},
3809
+
"node_modules/os-tmpdir": {
3810
+
"version": "1.0.2",
3811
+
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
3812
+
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
3813
+
"license": "MIT",
3814
+
"optional": true,
3815
+
"engines": {
3816
+
"node": ">=0.10.0"
3817
+
}
3818
+
},
3819
+
"node_modules/osenv": {
3820
+
"version": "0.1.3",
3821
+
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz",
3822
+
"integrity": "sha512-18fsEKxrUnXycnkcq1EE/i3tGFdhtugTycAlVM5PVazmrVTPA8XV/FCFA0482qJoR8OZa3WGzxxj3SNxJz5O7Q==",
3823
+
"deprecated": "This package is no longer supported.",
3824
+
"license": "ISC",
3825
+
"optional": true,
3826
+
"dependencies": {
3827
+
"os-homedir": "^1.0.0",
3828
+
"os-tmpdir": "^1.0.0"
3829
+
}
3830
+
},
3831
+
"node_modules/packet-stream": {
3832
+
"version": "2.0.0",
3833
+
"resolved": "https://registry.npmjs.org/packet-stream/-/packet-stream-2.0.0.tgz",
3834
+
"integrity": "sha512-Gzhme5hOiqM/ZLMnZxHLLp794PDeOmmOAJtEF/MX1ApB8u36THuReuguYKVnNmyuZEcKqNZwFTM2BHorTpzDeg==",
3835
+
"license": "MIT"
3836
+
},
3837
+
"node_modules/packet-stream-codec": {
3838
+
"version": "1.1.1",
3839
+
"resolved": "https://registry.npmjs.org/packet-stream-codec/-/packet-stream-codec-1.1.1.tgz",
3840
+
"integrity": "sha512-7LINz+eibmP6ifADErg5EJclqIUuKg1HxcxDEMoPPlPu9py8Dp5CVylYcMDulgluKWZzUy5MN+DnmqJWcVtlfg==",
3841
+
"license": "MIT",
3842
+
"dependencies": {
3843
+
"pull-reader": "^1.2.4",
3844
+
"pull-through": "^1.0.17"
3845
+
}
3846
+
},
3847
+
"node_modules/pako": {
3848
+
"version": "1.0.11",
3849
+
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
3850
+
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
3851
+
"dev": true,
3852
+
"license": "(MIT AND Zlib)"
3853
+
},
3854
+
"node_modules/parents": {
3855
+
"version": "1.0.1",
3856
+
"resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
3857
+
"integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==",
3858
+
"dev": true,
3859
+
"license": "MIT",
3860
+
"dependencies": {
3861
+
"path-platform": "~0.11.15"
3862
+
}
3863
+
},
3864
+
"node_modules/parse-asn1": {
3865
+
"version": "5.0.0",
3866
+
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz",
3867
+
"integrity": "sha512-5UdkCzM6fENVxG4S3D7ivyWNozyK5ExOb4xdqW6/ukged2cG1/eQPL+L9Dem719A1Wfi3VvJ/ssSwzp9asI+rg==",
3868
+
"dev": true,
3869
+
"license": "ISC",
3870
+
"dependencies": {
3871
+
"asn1.js": "^4.0.0",
3872
+
"browserify-aes": "^1.0.0",
3873
+
"create-hash": "^1.1.0",
3874
+
"evp_bytestokey": "^1.0.0",
3875
+
"pbkdf2": "^3.0.3"
3876
+
}
3877
+
},
3878
+
"node_modules/path-array": {
3879
+
"version": "1.0.1",
3880
+
"resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz",
3881
+
"integrity": "sha512-teWG2rJTJJZi2kINKOsHcdIuHP7jy3D7pAsVgdhxMq8kaL2RnS5sg7YTlrClMVCIItcVbPTPI6eMBEoNxYahLA==",
3882
+
"license": "MIT",
3883
+
"optional": true,
3884
+
"dependencies": {
3885
+
"array-index": "^1.0.0"
3886
+
}
3887
+
},
3888
+
"node_modules/path-browserify": {
3889
+
"version": "0.0.0",
3890
+
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
3891
+
"integrity": "sha512-WA3pxi1olUQcsl82W576vkqhUSGp0uBtr/381pxx5WXLp3NC+AB99hUG3aGW7H0Kg9PFr1D8wv1iJeICe+9Mhw==",
3892
+
"dev": true,
3893
+
"license": "MIT"
3894
+
},
3895
+
"node_modules/path-is-absolute": {
3896
+
"version": "1.0.1",
3897
+
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3898
+
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
3899
+
"devOptional": true,
3900
+
"license": "MIT",
3901
+
"engines": {
3902
+
"node": ">=0.10.0"
3903
+
}
3904
+
},
3905
+
"node_modules/path-parse": {
3906
+
"version": "1.0.7",
3907
+
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3908
+
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
3909
+
"dev": true,
3910
+
"license": "MIT"
3911
+
},
3912
+
"node_modules/path-platform": {
3913
+
"version": "0.11.15",
3914
+
"resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
3915
+
"integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==",
3916
+
"dev": true,
3917
+
"license": "MIT",
3918
+
"engines": {
3919
+
"node": ">= 0.8.0"
3920
+
}
3921
+
},
3922
+
"node_modules/pbkdf2": {
3923
+
"version": "3.0.9",
3924
+
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.9.tgz",
3925
+
"integrity": "sha512-sga/my2defvIpHceQt0sJSQQ/L3Go0cwTEYp8iYBHOSwGIF2jNeila8OD/hRzrkC4bEZm6HIAaU17TEnWYrvgg==",
3926
+
"dev": true,
3927
+
"license": "MIT",
3928
+
"dependencies": {
3929
+
"create-hmac": "^1.1.2"
3930
+
},
3931
+
"engines": {
3932
+
"node": ">=0.12"
3933
+
}
3934
+
},
3935
+
"node_modules/peaks.js": {
3936
+
"version": "0.4.9",
3937
+
"resolved": "https://registry.npmjs.org/peaks.js/-/peaks.js-0.4.9.tgz",
3938
+
"integrity": "sha512-oJpEMKzFue8jdvtEpBzpkZyF2xvCYscNMTL7viQSMS1M4hP1uAlpFYebU7vxwCdE8dHTaocsXCwLhQzqVU1hZw==",
3939
+
"license": "LGPL-3.0",
3940
+
"dependencies": {
3941
+
"eventemitter2": "~1.0.0",
3942
+
"konva": "~1.0.0",
3943
+
"waveform-data": "^1.5.2"
3944
+
}
3945
+
},
3946
+
"node_modules/pinkie": {
3947
+
"version": "2.0.4",
3948
+
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
3949
+
"integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
3950
+
"license": "MIT",
3951
+
"optional": true,
3952
+
"engines": {
3953
+
"node": ">=0.10.0"
3954
+
}
3955
+
},
3956
+
"node_modules/pinkie-promise": {
3957
+
"version": "2.0.1",
3958
+
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
3959
+
"integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
3960
+
"license": "MIT",
3961
+
"optional": true,
3962
+
"dependencies": {
3963
+
"pinkie": "^2.0.0"
3964
+
},
3965
+
"engines": {
3966
+
"node": ">=0.10.0"
3967
+
}
3968
+
},
3969
+
"node_modules/pkijs": {
3970
+
"version": "1.3.27",
3971
+
"resolved": "https://registry.npmjs.org/pkijs/-/pkijs-1.3.27.tgz",
3972
+
"integrity": "sha512-iVLOmMksN/OdY/4q/Rt8zb65L2eGJDQouJHk0xfgLjMeQFbYf5PqVT5RHhiUjHSxkCbNNbXPgptU3BAKIOE/bQ==",
3973
+
"optional": true
3974
+
},
3975
+
"node_modules/prebuild": {
3976
+
"version": "4.3.0",
3977
+
"resolved": "https://registry.npmjs.org/prebuild/-/prebuild-4.3.0.tgz",
3978
+
"integrity": "sha512-jNtGco6vFhdwT9sfnn3JIC3SwN+shFIUYkalDt1qqyQHrkmEertkaDr/2EhRVTzuFiqOCHibv50/8gumJR6Vrg==",
3979
+
"license": "MIT",
3980
+
"optional": true,
3981
+
"dependencies": {
3982
+
"async": "^1.4.0",
3983
+
"execspawn": "^1.0.1",
3984
+
"expand-template": "^1.0.0",
3985
+
"ghreleases": "^1.0.2",
3986
+
"github-from-package": "0.0.0",
3987
+
"minimist": "^1.1.2",
3988
+
"mkdirp": "^0.5.1",
3989
+
"node-gyp": "^3.0.3",
3990
+
"node-ninja": "^1.0.1",
3991
+
"noop-logger": "^0.1.0",
3992
+
"npmlog": "^2.0.0",
3993
+
"os-homedir": "^1.0.1",
3994
+
"pump": "^1.0.0",
3995
+
"rc": "^1.0.3",
3996
+
"simple-get": "^1.4.2",
3997
+
"tar-fs": "^1.7.0",
3998
+
"tar-stream": "^1.2.1",
3999
+
"xtend": "^4.0.1"
4000
+
},
4001
+
"bin": {
4002
+
"prebuild": "bin.js"
4003
+
}
4004
+
},
4005
+
"node_modules/prebuild-install": {
4006
+
"version": "2.5.3",
4007
+
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz",
4008
+
"integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==",
4009
+
"license": "MIT",
4010
+
"dependencies": {
4011
+
"detect-libc": "^1.0.3",
4012
+
"expand-template": "^1.0.2",
4013
+
"github-from-package": "0.0.0",
4014
+
"minimist": "^1.2.0",
4015
+
"mkdirp": "^0.5.1",
4016
+
"node-abi": "^2.2.0",
4017
+
"noop-logger": "^0.1.1",
4018
+
"npmlog": "^4.0.1",
4019
+
"os-homedir": "^1.0.1",
4020
+
"pump": "^2.0.1",
4021
+
"rc": "^1.1.6",
4022
+
"simple-get": "^2.7.0",
4023
+
"tar-fs": "^1.13.0",
4024
+
"tunnel-agent": "^0.6.0",
4025
+
"which-pm-runs": "^1.0.0"
4026
+
},
4027
+
"bin": {
4028
+
"prebuild-install": "bin.js"
4029
+
}
4030
+
},
4031
+
"node_modules/prebuild-install/node_modules/gauge": {
4032
+
"version": "2.7.4",
4033
+
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
4034
+
"integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
4035
+
"deprecated": "This package is no longer supported.",
4036
+
"license": "ISC",
4037
+
"dependencies": {
4038
+
"aproba": "^1.0.3",
4039
+
"console-control-strings": "^1.0.0",
4040
+
"has-unicode": "^2.0.0",
4041
+
"object-assign": "^4.1.0",
4042
+
"signal-exit": "^3.0.0",
4043
+
"string-width": "^1.0.1",
4044
+
"strip-ansi": "^3.0.1",
4045
+
"wide-align": "^1.1.0"
4046
+
}
4047
+
},
4048
+
"node_modules/prebuild-install/node_modules/npmlog": {
4049
+
"version": "4.1.2",
4050
+
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
4051
+
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
4052
+
"deprecated": "This package is no longer supported.",
4053
+
"license": "ISC",
4054
+
"dependencies": {
4055
+
"are-we-there-yet": "~1.1.2",
4056
+
"console-control-strings": "~1.1.0",
4057
+
"gauge": "~2.7.3",
4058
+
"set-blocking": "~2.0.0"
4059
+
}
4060
+
},
4061
+
"node_modules/prebuild-install/node_modules/pump": {
4062
+
"version": "2.0.1",
4063
+
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
4064
+
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
4065
+
"license": "MIT",
4066
+
"dependencies": {
4067
+
"end-of-stream": "^1.1.0",
4068
+
"once": "^1.3.1"
4069
+
}
4070
+
},
4071
+
"node_modules/prebuild-install/node_modules/simple-get": {
4072
+
"version": "2.8.2",
4073
+
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz",
4074
+
"integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==",
4075
+
"license": "MIT",
4076
+
"dependencies": {
4077
+
"decompress-response": "^3.3.0",
4078
+
"once": "^1.3.1",
4079
+
"simple-concat": "^1.0.0"
4080
+
}
4081
+
},
4082
+
"node_modules/prebuild-install/node_modules/tunnel-agent": {
4083
+
"version": "0.6.0",
4084
+
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
4085
+
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
4086
+
"license": "Apache-2.0",
4087
+
"dependencies": {
4088
+
"safe-buffer": "^5.0.1"
4089
+
},
4090
+
"engines": {
4091
+
"node": "*"
4092
+
}
4093
+
},
4094
+
"node_modules/private-box": {
4095
+
"version": "0.2.1",
4096
+
"resolved": "https://registry.npmjs.org/private-box/-/private-box-0.2.1.tgz",
4097
+
"integrity": "sha512-+qsgNSa2uuGmFE1D++93+8oElktnLYaTAy3W7zay+Dcerw1NKHpfOBcvCz0z8+uOSJLhDHwH14ftBMMtSdRYIg==",
4098
+
"license": "MIT",
4099
+
"dependencies": {
4100
+
"chloride": "^2.2.1"
4101
+
}
4102
+
},
4103
+
"node_modules/process": {
4104
+
"version": "0.11.9",
4105
+
"resolved": "https://registry.npmjs.org/process/-/process-0.11.9.tgz",
4106
+
"integrity": "sha512-rBG9LeETmhkfw0lr4dB5y3p5NHQadv2gyr+yPgQ8OebVn9LS4CDL7JW6NCdyeE8lzGkQ+x+lyytd+nC26A1DtQ==",
4107
+
"dev": true,
4108
+
"license": "MIT",
4109
+
"engines": {
4110
+
"node": ">= 0.6.0"
4111
+
}
4112
+
},
4113
+
"node_modules/process-nextick-args": {
4114
+
"version": "1.0.7",
4115
+
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
4116
+
"integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==",
4117
+
"license": "MIT"
4118
+
},
4119
+
"node_modules/prr": {
4120
+
"version": "1.0.1",
4121
+
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
4122
+
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
4123
+
"license": "MIT"
4124
+
},
4125
+
"node_modules/public-encrypt": {
4126
+
"version": "4.0.0",
4127
+
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
4128
+
"integrity": "sha512-jypsKydIz+OGpL8/PLPlYtlOP8Sqx54lQa+46srROOvUj02byeX+7RoZH49emN9OZSFiKohPLDMTzWK4JNR5Zg==",
4129
+
"dev": true,
4130
+
"license": "MIT",
4131
+
"dependencies": {
4132
+
"bn.js": "^4.1.0",
4133
+
"browserify-rsa": "^4.0.0",
4134
+
"create-hash": "^1.1.0",
4135
+
"parse-asn1": "^5.0.0",
4136
+
"randombytes": "^2.0.1"
4137
+
}
4138
+
},
4139
+
"node_modules/pull-box-stream": {
4140
+
"version": "1.0.11",
4141
+
"resolved": "https://registry.npmjs.org/pull-box-stream/-/pull-box-stream-1.0.11.tgz",
4142
+
"integrity": "sha512-VGok3ZIsHNbHqh2JOj7cIaDtL4ozNWCGKZl8aCH8oRN4b5GgI0b2Urc+tXDo8czM/qeC/4GDss/YZmz6E9k+hQ==",
4143
+
"license": "MIT",
4144
+
"dependencies": {
4145
+
"chloride": "^2.1.1",
4146
+
"increment-buffer": "~1.0.0",
4147
+
"pull-reader": "^1.2.5",
4148
+
"pull-stream": "^3.2.3",
4149
+
"pull-through": "^1.0.18",
4150
+
"split-buffer": "~1.0.0"
4151
+
}
4152
+
},
4153
+
"node_modules/pull-cat": {
4154
+
"version": "1.1.11",
4155
+
"resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz",
4156
+
"integrity": "sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==",
4157
+
"license": "MIT"
4158
+
},
4159
+
"node_modules/pull-defer": {
4160
+
"version": "0.2.2",
4161
+
"resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz",
4162
+
"integrity": "sha512-NbaYHXu0dWKimEb8LdZmTJdte3tuIVWcoSf10v+OcyFx3Dh274xSzvZJYwD+IGRNfX9XEjyKczzEq76wQNV7Vw==",
4163
+
"license": "MIT"
4164
+
},
4165
+
"node_modules/pull-file": {
4166
+
"version": "0.5.0",
4167
+
"resolved": "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz",
4168
+
"integrity": "sha512-4s/IfBLebH/eWUlhp3F3M29mk+B1cryp3W99t/k9J/c033f+HyLLVB2EAMGoN02j8ff7ObkLF1tMaHok3nGS6Q==",
4169
+
"dev": true,
4170
+
"license": "MIT",
4171
+
"dependencies": {
4172
+
"pull-utf8-decoder": "^1.0.2"
4173
+
}
4174
+
},
4175
+
"node_modules/pull-flatmap": {
4176
+
"version": "0.0.1",
4177
+
"resolved": "https://registry.npmjs.org/pull-flatmap/-/pull-flatmap-0.0.1.tgz",
4178
+
"integrity": "sha512-9BgwZPZ6J22kPf9ExoVI3m2yMHdCK8uPf58p6L63t36IgH7NrCX+p3QV8cQ4JmYjwvXDZzimVuJ7IW7iLxm7cA==",
4179
+
"license": "MIT"
4180
+
},
4181
+
"node_modules/pull-goodbye": {
4182
+
"version": "0.0.1",
4183
+
"resolved": "https://registry.npmjs.org/pull-goodbye/-/pull-goodbye-0.0.1.tgz",
4184
+
"integrity": "sha512-np8g0M5/vP6eUX+JNam/k8VVZgZXYUwhXJoptJYLQAwa2rmlCsdITq5ZkMYhootjf2K2uA2jeEoPR2qsB0BkCw==",
4185
+
"license": "MIT"
4186
+
},
4187
+
"node_modules/pull-handshake": {
4188
+
"version": "1.1.4",
4189
+
"resolved": "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz",
4190
+
"integrity": "sha512-+dT8auWatbSNt1o43GKygECvOM2znXdyWwhEQaxztJSvxrNtEqo/wgZttknLfyxxbkbS6qUten6LsXTOwYj0yg==",
4191
+
"license": "MIT",
4192
+
"dependencies": {
4193
+
"pull-cat": "^1.1.9",
4194
+
"pull-pair": "~1.1.0",
4195
+
"pull-pushable": "^2.0.0",
4196
+
"pull-reader": "^1.2.3"
4197
+
}
4198
+
},
4199
+
"node_modules/pull-level": {
4200
+
"version": "2.0.3",
4201
+
"resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.3.tgz",
4202
+
"integrity": "sha512-UpmLNqNirc+1LiS7htBweOcqpciqYLT0c/dJYue7IR0wHOr3s8jwqWhdSQa23TcN2hcqbxaYg9TWqe/sGgIqJA==",
4203
+
"license": "MIT",
4204
+
"dependencies": {
4205
+
"level-post": "~1.0.3",
4206
+
"pull-cat": "^1.1.9",
4207
+
"pull-live": "^1.0.1",
4208
+
"pull-pushable": "^2.0.0",
4209
+
"pull-stream": "^3.4.0",
4210
+
"pull-window": "^2.1.4",
4211
+
"stream-to-pull-stream": "^1.7.1"
4212
+
}
4213
+
},
4214
+
"node_modules/pull-live": {
4215
+
"version": "1.0.1",
4216
+
"resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz",
4217
+
"integrity": "sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==",
4218
+
"license": "MIT",
4219
+
"dependencies": {
4220
+
"pull-cat": "^1.1.9",
4221
+
"pull-stream": "^3.4.0"
4222
+
}
4223
+
},
4224
+
"node_modules/pull-many": {
4225
+
"version": "1.0.9",
4226
+
"resolved": "https://registry.npmjs.org/pull-many/-/pull-many-1.0.9.tgz",
4227
+
"integrity": "sha512-+jUydDVlj/HsvtDqxWMSsiRq3B0HVo7RhBV4C0p2nZRS3mFTUEu9SPEBN+B5PMaW8KTnblYhTIaKg7oXgGnj4Q==",
4228
+
"license": "MIT",
4229
+
"dependencies": {
4230
+
"pull-stream": "^3.4.5"
4231
+
}
4232
+
},
4233
+
"node_modules/pull-next": {
4234
+
"version": "0.0.1",
4235
+
"resolved": "https://registry.npmjs.org/pull-next/-/pull-next-0.0.1.tgz",
4236
+
"integrity": "sha512-vhJtt8LzrZKtNzc3h/JQ8ReC76U+dLAAZN2n5fyJB8GlVYy9c1QxpKUpMvvCUtJ4TuO5GBLQgRU6HqBi0sHfNA==",
4237
+
"license": "MIT"
4238
+
},
4239
+
"node_modules/pull-pair": {
4240
+
"version": "1.1.0",
4241
+
"resolved": "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz",
4242
+
"integrity": "sha512-7VEFLxWnj2AKaN3AvtyaM508d1+56/ulSjDLu4j6kcd9DnEM6LfG8b1R9gCLqzIjJo5stFrWynVc6e451OW4LQ==",
4243
+
"license": "MIT"
4244
+
},
4245
+
"node_modules/pull-paramap": {
4246
+
"version": "1.2.2",
4247
+
"resolved": "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz",
4248
+
"integrity": "sha512-0ALwLcASif3KmKCXO4liySCKsTfC/mGYhRFch+xLvfJJrYOIfXPthrykDUZpeZtbjEXglPySzfUmYcnBqzTj5w==",
4249
+
"license": "MIT",
4250
+
"dependencies": {
4251
+
"looper": "^4.0.0"
4252
+
}
4253
+
},
4254
+
"node_modules/pull-paramap/node_modules/looper": {
4255
+
"version": "4.0.0",
4256
+
"resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz",
4257
+
"integrity": "sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw==",
4258
+
"license": "MIT"
4259
+
},
4260
+
"node_modules/pull-pause": {
4261
+
"version": "0.0.0",
4262
+
"resolved": "https://registry.npmjs.org/pull-pause/-/pull-pause-0.0.0.tgz",
4263
+
"integrity": "sha512-bbnrVNBeQUO5Vj1ejvl/XHyNAbR3qyZHmOYeTGxCyt1+g7ZM33YeMO9OeebUMKiAstZB/Rc3qrxAMB8mETQ01Q==",
4264
+
"license": "MIT"
4265
+
},
4266
+
"node_modules/pull-pushable": {
4267
+
"version": "2.0.1",
4268
+
"resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.0.1.tgz",
4269
+
"integrity": "sha512-hx9Dqgr2eQ6X/3n8EX7kBM9PiunMqlNCEgfxZtZMCKA+MKlWCWdVu7l4323+M4FMEYJfnzvkFYDnBN0CISGkZw==",
4270
+
"license": "MIT"
4271
+
},
4272
+
"node_modules/pull-reader": {
4273
+
"version": "1.2.8",
4274
+
"resolved": "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.8.tgz",
4275
+
"integrity": "sha512-lOZqGGlAB4uNl6wWkRkt/HwM3EigPqHnJ+u1JRIx/8cXkeJxT+nNEnLdDFfYtK28YEhXW7e7PCoO8VsrQyqDZw==",
4276
+
"license": "MIT"
4277
+
},
4278
+
"node_modules/pull-reconnect": {
4279
+
"version": "0.0.3",
4280
+
"resolved": "https://registry.npmjs.org/pull-reconnect/-/pull-reconnect-0.0.3.tgz",
4281
+
"integrity": "sha512-OrkKw8GzNmwEaHgXR62vEscIoWRAWgdMDwyUk4SVwEsf7gyBkoW1XgU1mQPJ+4vqwlxih4qAj1P7Weg26ox/Ng==",
4282
+
"license": "MIT",
4283
+
"dependencies": {
4284
+
"pull-defer": "^0.2.2"
4285
+
}
4286
+
},
4287
+
"node_modules/pull-scroll": {
4288
+
"version": "0.2.2",
4289
+
"resolved": "https://registry.npmjs.org/pull-scroll/-/pull-scroll-0.2.2.tgz",
4290
+
"integrity": "sha512-vlOBzb9DFERgVmmEpiP0E9zYI0ruB/Ke7k4+T5xTVfBbCeLF/ruFwR9PAch+LUfhWbYoZSH8PTS1AzJUKNkORw==",
4291
+
"license": "MIT",
4292
+
"dependencies": {
4293
+
"hyperscript": "^1.4.7",
4294
+
"is-visible": "^2.0.1",
4295
+
"observable": "^2.1.4",
4296
+
"pull-pause": "0.0.0",
4297
+
"pull-stream": "^3.0.1",
4298
+
"request-animation-loop": "^0.1.0"
4299
+
}
4300
+
},
4301
+
"node_modules/pull-sink-through": {
4302
+
"version": "0.0.0",
4303
+
"resolved": "https://registry.npmjs.org/pull-sink-through/-/pull-sink-through-0.0.0.tgz",
4304
+
"integrity": "sha512-XjpF/3+WRsWfw+XhPgj3I/6WO15VYOKLsXAtWt1sRKOqA6N7bnarut5zuE2GcxbAzspaQxKmMcbUYZ8QorPxcQ==",
4305
+
"license": "MIT"
4306
+
},
4307
+
"node_modules/pull-stream": {
4308
+
"version": "3.7.0",
4309
+
"resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.7.0.tgz",
4310
+
"integrity": "sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw==",
4311
+
"license": "MIT"
4312
+
},
4313
+
"node_modules/pull-through": {
4314
+
"version": "1.0.18",
4315
+
"resolved": "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz",
4316
+
"integrity": "sha512-t8BBRdKstI/JoWS3FAXRnBvo1ahoLcKo8nm8ZUzr4OUgIf47RodD6HjnPIpw/d6HQZaMu+TotLAYCNwLTnvcNw==",
4317
+
"license": "MIT",
4318
+
"dependencies": {
4319
+
"looper": "~3.0.0"
4320
+
}
4321
+
},
4322
+
"node_modules/pull-utf8-decoder": {
4323
+
"version": "1.0.2",
4324
+
"resolved": "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz",
4325
+
"integrity": "sha512-hpGheDlDMMEOkiBwXpiUqaFVR0SlGb23vZyJuHe1s8CWGJVcDEzhy9HHUEIuPjTEajYb90ikKsDmt6lkmTtk5g==",
4326
+
"dev": true,
4327
+
"license": "MIT"
4328
+
},
4329
+
"node_modules/pull-window": {
4330
+
"version": "2.1.4",
4331
+
"resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz",
4332
+
"integrity": "sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==",
4333
+
"license": "MIT",
4334
+
"dependencies": {
4335
+
"looper": "^2.0.0"
4336
+
}
4337
+
},
4338
+
"node_modules/pull-window/node_modules/looper": {
4339
+
"version": "2.0.0",
4340
+
"resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz",
4341
+
"integrity": "sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==",
4342
+
"license": "MIT"
4343
+
},
4344
+
"node_modules/pull-write": {
4345
+
"version": "1.1.4",
4346
+
"resolved": "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz",
4347
+
"integrity": "sha512-EkkwRg2EDfPQI1mzUxtSdx5kJAKpbSSoAwwP4+K3ENWUmWqehDQoSx/bM5VeYkl3Hrfkr3nsLyLL2TbfVO9HGw==",
4348
+
"license": "MIT",
4349
+
"dependencies": {
4350
+
"looper": "^4.0.0",
4351
+
"pull-cat": "^1.1.11",
4352
+
"pull-stream": "^3.4.5"
4353
+
}
4354
+
},
4355
+
"node_modules/pull-write/node_modules/looper": {
4356
+
"version": "4.0.0",
4357
+
"resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz",
4358
+
"integrity": "sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw==",
4359
+
"license": "MIT"
4360
+
},
4361
+
"node_modules/pull-ws": {
4362
+
"version": "3.2.8",
4363
+
"resolved": "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.8.tgz",
4364
+
"integrity": "sha512-DRvK+UDkoPEnAcsP1C3B7mbx3JgDk7NQrngxWLjunSZgoW6AaMApxLYq10eyrBRGVF4WC0spvOBc7BSF4ly9yg==",
4365
+
"license": "ISC",
4366
+
"dependencies": {
4367
+
"relative-url": "^1.0.2",
4368
+
"ws": "^1.1.0"
4369
+
}
4370
+
},
4371
+
"node_modules/pump": {
4372
+
"version": "1.0.1",
4373
+
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.1.tgz",
4374
+
"integrity": "sha512-AQkT8yuCm6LmumsJ/Ery8afinLeXPvfdya3ODy8rsyYqvKRnHvDaKyAzrIX5V3VV+dOB+yQcjWUbEjWxg4l0WQ==",
4375
+
"license": "MIT",
4376
+
"dependencies": {
4377
+
"end-of-stream": "^1.1.0",
4378
+
"once": "^1.3.1"
4379
+
}
4380
+
},
4381
+
"node_modules/punycode": {
4382
+
"version": "1.4.1",
4383
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
4384
+
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
4385
+
"dev": true,
4386
+
"license": "MIT"
4387
+
},
4388
+
"node_modules/pyconf": {
4389
+
"version": "1.1.2",
4390
+
"resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.2.tgz",
4391
+
"integrity": "sha512-axoR6k7p8dKYi6EjWYymuA1Xop/2fyMK0nrFwO9WVnGPGmdUeHHP3D+H6/QRNkhn0huRkEJqUcK9+K+Z2JToAg==",
4392
+
"license": "(MIT OR Apache-2.0)",
4393
+
"optional": true,
4394
+
"dependencies": {
4395
+
"safe-replace": "^1.0.2"
4396
+
}
4397
+
},
4398
+
"node_modules/qs": {
4399
+
"version": "6.2.1",
4400
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz",
4401
+
"integrity": "sha512-8yYCrxot1tgWocouWKNcewB8VdWuFe1Ab4GU38bg1gGNutR9bMMHaJgxDS5BGRVSLnyRrFhfJ8f04Er/kRmbLg==",
4402
+
"license": "BSD-3-Clause",
4403
+
"optional": true,
4404
+
"engines": {
4405
+
"node": ">=0.6"
4406
+
}
4407
+
},
4408
+
"node_modules/querystring": {
4409
+
"version": "0.2.0",
4410
+
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
4411
+
"integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
4412
+
"deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
4413
+
"dev": true,
4414
+
"engines": {
4415
+
"node": ">=0.4.x"
4416
+
}
4417
+
},
4418
+
"node_modules/querystring-es3": {
4419
+
"version": "0.2.1",
4420
+
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
4421
+
"integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
4422
+
"dev": true,
4423
+
"engines": {
4424
+
"node": ">=0.4.x"
4425
+
}
4426
+
},
4427
+
"node_modules/railroad-diagrams": {
4428
+
"version": "1.0.0",
4429
+
"resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
4430
+
"integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==",
4431
+
"license": "CC0-1.0"
4432
+
},
4433
+
"node_modules/randexp": {
4434
+
"version": "0.4.6",
4435
+
"resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
4436
+
"integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
4437
+
"license": "MIT",
4438
+
"dependencies": {
4439
+
"discontinuous-range": "1.0.0",
4440
+
"ret": "~0.1.10"
4441
+
},
4442
+
"engines": {
4443
+
"node": ">=0.12"
4444
+
}
4445
+
},
4446
+
"node_modules/randombytes": {
4447
+
"version": "2.0.3",
4448
+
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz",
4449
+
"integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==",
4450
+
"dev": true,
4451
+
"license": "MIT"
4452
+
},
4453
+
"node_modules/rc": {
4454
+
"version": "1.1.6",
4455
+
"resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
4456
+
"integrity": "sha512-kKP2v/do9XlmKORXSHhVRnrsS0LVUhwfFhs/7fsLxQDYxuR+LA46Zivb3XBgomwRUwmf5W6QDqyQxQIhE850eA==",
4457
+
"license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
4458
+
"dependencies": {
4459
+
"deep-extend": "~0.4.0",
4460
+
"ini": "~1.3.0",
4461
+
"minimist": "^1.2.0",
4462
+
"strip-json-comments": "~1.0.4"
4463
+
},
4464
+
"bin": {
4465
+
"rc": "index.js"
4466
+
}
4467
+
},
4468
+
"node_modules/read-only-stream": {
4469
+
"version": "2.0.0",
4470
+
"resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
4471
+
"integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==",
4472
+
"dev": true,
4473
+
"license": "MIT",
4474
+
"dependencies": {
4475
+
"readable-stream": "^2.0.2"
4476
+
}
4477
+
},
4478
+
"node_modules/readable-stream": {
4479
+
"version": "2.1.5",
4480
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
4481
+
"integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==",
4482
+
"license": "MIT",
4483
+
"dependencies": {
4484
+
"buffer-shims": "^1.0.0",
4485
+
"core-util-is": "~1.0.0",
4486
+
"inherits": "~2.0.1",
4487
+
"isarray": "~1.0.0",
4488
+
"process-nextick-args": "~1.0.6",
4489
+
"string_decoder": "~0.10.x",
4490
+
"util-deprecate": "~1.0.1"
4491
+
}
4492
+
},
4493
+
"node_modules/readable-stream/node_modules/isarray": {
4494
+
"version": "1.0.0",
4495
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
4496
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
4497
+
"license": "MIT"
4498
+
},
4499
+
"node_modules/readable-stream/node_modules/string_decoder": {
4500
+
"version": "0.10.31",
4501
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
4502
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
4503
+
"license": "MIT"
4504
+
},
4505
+
"node_modules/relative-url": {
4506
+
"version": "1.0.2",
4507
+
"resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz",
4508
+
"integrity": "sha512-jI1AmBVFFMXwQ3I6tIYVmVOjy8f+ogHbqkeb8/LL9tszEQiTV8I0l8XT4oEomUOoxfm698f92gYlNKeA/9LJVQ==",
4509
+
"license": "MIT"
4510
+
},
4511
+
"node_modules/request": {
4512
+
"version": "2.75.0",
4513
+
"resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz",
4514
+
"integrity": "sha512-uNXre8CefDRFBhfB1bL0CkKBD+5E1xmx69KMjl7p+bBc0vesXLQMS+iwsI2pKRlYZOOtLzkeBfz7jItKA3XlKQ==",
4515
+
"deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
4516
+
"license": "Apache-2.0",
4517
+
"optional": true,
4518
+
"dependencies": {
4519
+
"aws-sign2": "~0.6.0",
4520
+
"aws4": "^1.2.1",
4521
+
"bl": "~1.1.2",
4522
+
"caseless": "~0.11.0",
4523
+
"combined-stream": "~1.0.5",
4524
+
"extend": "~3.0.0",
4525
+
"forever-agent": "~0.6.1",
4526
+
"form-data": "~2.0.0",
4527
+
"har-validator": "~2.0.6",
4528
+
"hawk": "~3.1.3",
4529
+
"http-signature": "~1.1.0",
4530
+
"is-typedarray": "~1.0.0",
4531
+
"isstream": "~0.1.2",
4532
+
"json-stringify-safe": "~5.0.1",
4533
+
"mime-types": "~2.1.7",
4534
+
"node-uuid": "~1.4.7",
4535
+
"oauth-sign": "~0.8.1",
4536
+
"qs": "~6.2.0",
4537
+
"stringstream": "~0.0.4",
4538
+
"tough-cookie": "~2.3.0",
4539
+
"tunnel-agent": "~0.4.1"
4540
+
},
4541
+
"engines": {
4542
+
"node": ">=0.8.0"
4543
+
}
4544
+
},
4545
+
"node_modules/request-animation-loop": {
4546
+
"version": "0.1.0",
4547
+
"resolved": "https://registry.npmjs.org/request-animation-loop/-/request-animation-loop-0.1.0.tgz",
4548
+
"integrity": "sha512-r8aDYOFn3l8AfGbzoKH7d9HIzpr1TVFVCX4wuuYem5WTOtC/zISedBWXP6fdxUjdvEJS+okn0ezq7uJvNmN2yg==",
4549
+
"license": "ISC"
4550
+
},
4551
+
"node_modules/request/node_modules/bl": {
4552
+
"version": "1.1.2",
4553
+
"resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
4554
+
"integrity": "sha512-uVVYHEQk+OuWvCi5U+iquVXvvGCWXKawjwELIR2XMLsqfV/e2sGDClVBs8OlGIgGsStPRY/Es311YKYIlYCWAg==",
4555
+
"license": "MIT",
4556
+
"optional": true,
4557
+
"dependencies": {
4558
+
"readable-stream": "~2.0.5"
4559
+
}
4560
+
},
4561
+
"node_modules/request/node_modules/isarray": {
4562
+
"version": "1.0.0",
4563
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
4564
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
4565
+
"license": "MIT",
4566
+
"optional": true
4567
+
},
4568
+
"node_modules/request/node_modules/readable-stream": {
4569
+
"version": "2.0.6",
4570
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
4571
+
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
4572
+
"license": "MIT",
4573
+
"optional": true,
4574
+
"dependencies": {
4575
+
"core-util-is": "~1.0.0",
4576
+
"inherits": "~2.0.1",
4577
+
"isarray": "~1.0.0",
4578
+
"process-nextick-args": "~1.0.6",
4579
+
"string_decoder": "~0.10.x",
4580
+
"util-deprecate": "~1.0.1"
4581
+
}
4582
+
},
4583
+
"node_modules/request/node_modules/string_decoder": {
4584
+
"version": "0.10.31",
4585
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
4586
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
4587
+
"license": "MIT",
4588
+
"optional": true
4589
+
},
4590
+
"node_modules/resolve": {
4591
+
"version": "1.22.11",
4592
+
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
4593
+
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
4594
+
"dev": true,
4595
+
"license": "MIT",
4596
+
"dependencies": {
4597
+
"is-core-module": "^2.16.1",
4598
+
"path-parse": "^1.0.7",
4599
+
"supports-preserve-symlinks-flag": "^1.0.0"
4600
+
},
4601
+
"bin": {
4602
+
"resolve": "bin/resolve"
4603
+
},
4604
+
"engines": {
4605
+
"node": ">= 0.4"
4606
+
},
4607
+
"funding": {
4608
+
"url": "https://github.com/sponsors/ljharb"
4609
+
}
4610
+
},
4611
+
"node_modules/ret": {
4612
+
"version": "0.1.15",
4613
+
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
4614
+
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
4615
+
"license": "MIT",
4616
+
"engines": {
4617
+
"node": ">=0.12"
4618
+
}
4619
+
},
4620
+
"node_modules/rimraf": {
4621
+
"version": "2.5.4",
4622
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz",
4623
+
"integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==",
4624
+
"deprecated": "Rimraf versions prior to v4 are no longer supported",
4625
+
"license": "ISC",
4626
+
"optional": true,
4627
+
"dependencies": {
4628
+
"glob": "^7.0.5"
4629
+
},
4630
+
"bin": {
4631
+
"rimraf": "bin.js"
4632
+
}
4633
+
},
4634
+
"node_modules/ripemd160": {
4635
+
"version": "1.0.1",
4636
+
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz",
4637
+
"integrity": "sha512-J0YlH2ow/i7d5PJX9RC1XnjmZc7cNNYWe89PIlFszvHeiEtxzA1/VYePkjQ7l1SkUejAcHeDo3IVp2WIzstXXQ==",
4638
+
"dev": true,
4639
+
"license": "BSD-3-Clause"
4640
+
},
4641
+
"node_modules/rsa-compat": {
4642
+
"version": "1.2.7",
4643
+
"resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.2.7.tgz",
4644
+
"integrity": "sha512-k9l39pKnoQ257/Vu9mhbGiYvChc4BaiAtjJ/d6btyEi2+k46W94Xh+piof97ypzcD0pVdAnAMOXT6nb+2WxiaA==",
4645
+
"license": "(MIT OR Apache-2.0)",
4646
+
"optional": true,
4647
+
"dependencies": {
4648
+
"buffer-v6-polyfill": "^1.0.3",
4649
+
"node-forge": "^0.6.41"
4650
+
},
4651
+
"bin": {
4652
+
"rsa-keygen-js": "bin/rsa-keygen.js"
4653
+
},
4654
+
"optionalDependencies": {
4655
+
"ursa": "^0.9.4"
4656
+
}
4657
+
},
4658
+
"node_modules/safe-buffer": {
4659
+
"version": "5.2.1",
4660
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
4661
+
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
4662
+
"funding": [
4663
+
{
4664
+
"type": "github",
4665
+
"url": "https://github.com/sponsors/feross"
4666
+
},
4667
+
{
4668
+
"type": "patreon",
4669
+
"url": "https://www.patreon.com/feross"
4670
+
},
4671
+
{
4672
+
"type": "consulting",
4673
+
"url": "https://feross.org/support"
4674
+
}
4675
+
],
4676
+
"license": "MIT"
4677
+
},
4678
+
"node_modules/safe-replace": {
4679
+
"version": "1.0.2",
4680
+
"resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz",
4681
+
"integrity": "sha512-MpcY3osIccSpsVtlCswRxt1qaWqcQoUCVtOD/4fap2BoJAE2b5jP32s2K6VTFHQBN03Gb9CGVwn77T0cTcW1nw==",
4682
+
"license": "(MIT OR Apache-2.0)",
4683
+
"optional": true
4684
+
},
4685
+
"node_modules/secret-handshake": {
4686
+
"version": "1.1.1",
4687
+
"resolved": "https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.1.tgz",
4688
+
"integrity": "sha512-24n9/+iIVJ7VfdoY2qO1AfKg/CFEi1tPXV3+hUJLrbT9esH/W7mwvnMmD4Nbou7vOC6c+qIMOuxRlFCiVoa/eQ==",
4689
+
"license": "MIT",
4690
+
"dependencies": {
4691
+
"chloride": "^2.0.1",
4692
+
"deep-equal": "~1.0.0",
4693
+
"pull-box-stream": "^1.0.9",
4694
+
"pull-handshake": "^1.1.1",
4695
+
"pull-stream": "^3.4.5"
4696
+
}
4697
+
},
4698
+
"node_modules/semver": {
4699
+
"version": "5.7.2",
4700
+
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
4701
+
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
4702
+
"license": "ISC",
4703
+
"bin": {
4704
+
"semver": "bin/semver"
4705
+
}
4706
+
},
4707
+
"node_modules/separator-escape": {
4708
+
"version": "0.0.0",
4709
+
"resolved": "https://registry.npmjs.org/separator-escape/-/separator-escape-0.0.0.tgz",
4710
+
"integrity": "sha512-u5Na+20Qk6SEr/3MgAaw6JMddE5+nmhaI+a0PZ4AkfEwDc+zH/Qlm4pHwE2kquw2aZ39758YEkJaVOhFYiRzNQ==",
4711
+
"license": "MIT"
4712
+
},
4713
+
"node_modules/set-blocking": {
4714
+
"version": "2.0.0",
4715
+
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
4716
+
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
4717
+
"license": "ISC"
4718
+
},
4719
+
"node_modules/set-function-length": {
4720
+
"version": "1.2.2",
4721
+
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
4722
+
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
4723
+
"dev": true,
4724
+
"license": "MIT",
4725
+
"dependencies": {
4726
+
"define-data-property": "^1.1.4",
4727
+
"es-errors": "^1.3.0",
4728
+
"function-bind": "^1.1.2",
4729
+
"get-intrinsic": "^1.2.4",
4730
+
"gopd": "^1.0.1",
4731
+
"has-property-descriptors": "^1.0.2"
4732
+
},
4733
+
"engines": {
4734
+
"node": ">= 0.4"
4735
+
}
4736
+
},
4737
+
"node_modules/sha.js": {
4738
+
"version": "2.4.5",
4739
+
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz",
4740
+
"integrity": "sha512-459AP5kwdIhtMLLE1+h2q5a6E7hyY7Ri88GUIhFsyrQinKkm+7qj1ARHELow7GkFS7oimWmIwhXTSxBsuNuOsw==",
4741
+
"license": "MIT",
4742
+
"dependencies": {
4743
+
"inherits": "^2.0.1"
4744
+
},
4745
+
"bin": {
4746
+
"sha.js": "bin.js"
4747
+
}
4748
+
},
4749
+
"node_modules/shasum": {
4750
+
"version": "1.0.2",
4751
+
"resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
4752
+
"integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==",
4753
+
"dev": true,
4754
+
"license": "MIT",
4755
+
"dependencies": {
4756
+
"json-stable-stringify": "~0.0.0",
4757
+
"sha.js": "~2.4.4"
4758
+
}
4759
+
},
4760
+
"node_modules/shell-quote": {
4761
+
"version": "1.8.3",
4762
+
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
4763
+
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
4764
+
"dev": true,
4765
+
"license": "MIT",
4766
+
"engines": {
4767
+
"node": ">= 0.4"
4768
+
},
4769
+
"funding": {
4770
+
"url": "https://github.com/sponsors/ljharb"
4771
+
}
4772
+
},
4773
+
"node_modules/signal-exit": {
4774
+
"version": "3.0.1",
4775
+
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz",
4776
+
"integrity": "sha512-jMxoxd0fzr1lrcP3NJqu4d+DG0R41ZvTsnO8HUYmtN0oFzi0WijhuYJfsofAT7NhWcqhJfqa4auDDTTb0I1rYw==",
4777
+
"license": "ISC"
4778
+
},
4779
+
"node_modules/simple-concat": {
4780
+
"version": "1.0.1",
4781
+
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
4782
+
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
4783
+
"funding": [
4784
+
{
4785
+
"type": "github",
4786
+
"url": "https://github.com/sponsors/feross"
4787
+
},
4788
+
{
4789
+
"type": "patreon",
4790
+
"url": "https://www.patreon.com/feross"
4791
+
},
4792
+
{
4793
+
"type": "consulting",
4794
+
"url": "https://feross.org/support"
4795
+
}
4796
+
],
4797
+
"license": "MIT"
4798
+
},
4799
+
"node_modules/simple-get": {
4800
+
"version": "1.4.3",
4801
+
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz",
4802
+
"integrity": "sha512-ddVP3P/VdMhY0DFWh5oxKMThsGYjlEJBD/mXuyzfCHOqpaa56XpLDvtv4tzcQ1Z2CWgFGEu5zFwCCxpV1xV0fQ==",
4803
+
"license": "MIT",
4804
+
"optional": true,
4805
+
"dependencies": {
4806
+
"once": "^1.3.1",
4807
+
"unzip-response": "^1.0.0",
4808
+
"xtend": "^4.0.0"
4809
+
}
4810
+
},
4811
+
"node_modules/simple-mime": {
4812
+
"version": "0.1.0",
4813
+
"resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz",
4814
+
"integrity": "sha512-2EoTElzj77w0hV4lW6nWdA+MR+81hviMBhEc/ppUi0+Q311EFCvwKrGS7dcxqvGRKnUdbAyqPJtBQbRYgmtmvQ==",
4815
+
"engines": [
4816
+
"node >= 0.2.0"
4817
+
]
4818
+
},
4819
+
"node_modules/smart-buffer": {
4820
+
"version": "1.0.11",
4821
+
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.0.11.tgz",
4822
+
"integrity": "sha512-D6zJTJiHCgEX+caCflF8FK6bbCm7rOrw7T5DExcP/9kyCKWySJM4No7IJhzcF6d4oGys8+MSAFrjfaudrI02eg==",
4823
+
"license": "MIT",
4824
+
"engines": {
4825
+
"node": ">= 0.10.15",
4826
+
"npm": ">= 1.3.5"
4827
+
}
4828
+
},
4829
+
"node_modules/sntp": {
4830
+
"version": "1.0.9",
4831
+
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
4832
+
"integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==",
4833
+
"deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.",
4834
+
"optional": true,
4835
+
"dependencies": {
4836
+
"hoek": "2.x.x"
4837
+
},
4838
+
"engines": {
4839
+
"node": ">=0.8.0"
4840
+
}
4841
+
},
4842
+
"node_modules/socks": {
4843
+
"version": "1.1.9",
4844
+
"resolved": "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz",
4845
+
"integrity": "sha512-EgVaUkNNlJ/Fi4USs0QV8JzTxOgRcBOszWQPwderdc27LhgF1VWOiB9D1VzLtenGuezlyVe9GhscFlnicFHvsA==",
4846
+
"deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0",
4847
+
"license": "MIT",
4848
+
"dependencies": {
4849
+
"ip": "^1.1.2",
4850
+
"smart-buffer": "^1.0.4"
4851
+
},
4852
+
"engines": {
4853
+
"node": ">= 0.10.0",
4854
+
"npm": ">= 1.3.5"
4855
+
}
4856
+
},
4857
+
"node_modules/sodium-browserify": {
4858
+
"version": "1.2.0",
4859
+
"resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.0.tgz",
4860
+
"integrity": "sha512-tblnZTeTr80l+FmPnybHyGWKmPYbrnuVyepI3TSaJYoWaGhjPeEwwCpODVSnhtOK6y+y/yrEsbKY1svQBx9RXQ==",
4861
+
"license": "MIT",
4862
+
"dependencies": {
4863
+
"libsodium-wrappers": "^0.2.9",
4864
+
"sha.js": "^2.4.4",
4865
+
"tweetnacl": "^0.14.1"
4866
+
}
4867
+
},
4868
+
"node_modules/sodium-browserify-tweetnacl": {
4869
+
"version": "0.2.1",
4870
+
"resolved": "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.1.tgz",
4871
+
"integrity": "sha512-Zp2I5qebwmT3Lc3GXkluLgLySlMu0t/rRGgzyMbbIy4I2Mh8hAMtvWHqDt1xINS8gZl5ENgQnaQY0kXqvX0pug==",
4872
+
"license": "MIT",
4873
+
"dependencies": {
4874
+
"chloride-test": "^1.1.0",
4875
+
"ed2curve": "^0.1.4",
4876
+
"sha.js": "^2.4.5",
4877
+
"tweetnacl": "^0.14.1",
4878
+
"tweetnacl-auth": "^0.3.0"
4879
+
}
4880
+
},
4881
+
"node_modules/sodium-prebuilt": {
4882
+
"version": "1.0.22",
4883
+
"resolved": "https://registry.npmjs.org/sodium-prebuilt/-/sodium-prebuilt-1.0.22.tgz",
4884
+
"integrity": "sha512-yG+3uIjXjdmOVkhsrnkgIEiwln8km2qUUOQcv9+YzdZYHr2gPw2D/Y2xOdflmFE+wdMbF+FRW+SSieP+jpTvmg==",
4885
+
"hasInstallScript": true,
4886
+
"license": "MIT",
4887
+
"optional": true,
4888
+
"dependencies": {
4889
+
"nan": "^2.0.9",
4890
+
"prebuild": "^4.1.0"
4891
+
}
4892
+
},
4893
+
"node_modules/source-map": {
4894
+
"version": "0.5.6",
4895
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
4896
+
"integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
4897
+
"dev": true,
4898
+
"license": "BSD-3-Clause",
4899
+
"engines": {
4900
+
"node": ">=0.10.0"
4901
+
}
4902
+
},
4903
+
"node_modules/split-buffer": {
4904
+
"version": "1.0.0",
4905
+
"resolved": "https://registry.npmjs.org/split-buffer/-/split-buffer-1.0.0.tgz",
4906
+
"integrity": "sha512-cbHOF413jAsBL7JLpU1RWX07Xs+dPb25DbeCvwDzSN3+4bNmRPJa2QHpDdtREgGKgIfx6Tzj/jiqyOS3kNLPnQ==",
4907
+
"license": "MIT"
4908
+
},
4909
+
"node_modules/ssb-avatar": {
4910
+
"version": "0.2.0",
4911
+
"resolved": "https://registry.npmjs.org/ssb-avatar/-/ssb-avatar-0.2.0.tgz",
4912
+
"integrity": "sha512-rv1SwQDE7OhavLWIbTxvWf2R2Qq3svp7OLT+49OECr8kSrQN1XGQqeI1bVdzFSr0DBwjxHES56+2FLkhk6Qmvw==",
4913
+
"license": "MIT",
4914
+
"dependencies": {
4915
+
"pull-cat": "^1.1.9",
4916
+
"pull-stream": "^3.4.3",
4917
+
"ssb-msgs": "^5.2.0",
4918
+
"ssb-ref": "^2.3.2"
4919
+
}
4920
+
},
4921
+
"node_modules/ssb-client": {
4922
+
"version": "4.3.0",
4923
+
"resolved": "https://registry.npmjs.org/ssb-client/-/ssb-client-4.3.0.tgz",
4924
+
"integrity": "sha512-nYQYWa2KhzmkVsKqtngoeMY20CQHY/rClfz4RbvtjJUkUJgowoNxOEC7WGp+1EWh/hjrl2+LyAKJMs/OPiuRbg==",
4925
+
"license": "MIT",
4926
+
"dependencies": {
4927
+
"explain-error": "^1.0.1",
4928
+
"multiserver": "^1.7.0",
4929
+
"muxrpc": "^6.3.3",
4930
+
"ssb-config": "^2.0.0",
4931
+
"ssb-keys": "^6.0.0"
4932
+
}
4933
+
},
4934
+
"node_modules/ssb-config": {
4935
+
"version": "2.2.0",
4936
+
"resolved": "https://registry.npmjs.org/ssb-config/-/ssb-config-2.2.0.tgz",
4937
+
"integrity": "sha512-+ib7Xfw+6y4mlNNPv79FQhbVXGkzs147lScSjzy6mLXSfdOvQ+FCK1IkfH9rQwYqYBzvzqwpWiaWx0Uvl+vDHg==",
4938
+
"license": "MIT",
4939
+
"dependencies": {
4940
+
"deep-extend": "^0.4.0",
4941
+
"non-private-ip": "^1.2.1",
4942
+
"os-homedir": "^1.0.1",
4943
+
"rc": "^1.1.6"
4944
+
}
4945
+
},
4946
+
"node_modules/ssb-feed": {
4947
+
"version": "2.2.1",
4948
+
"resolved": "https://registry.npmjs.org/ssb-feed/-/ssb-feed-2.2.1.tgz",
4949
+
"integrity": "sha512-1V9KvBU3BHafWy6+090LJdpFg51qKCrvP27GqBje38KO2exIS1TlPq3Bfu17p7ME5jv3s7DRABx5vIhuQcV+XQ==",
4950
+
"license": "MIT",
4951
+
"dependencies": {
4952
+
"cont": "~1.0.3",
4953
+
"monotonic-timestamp": "~0.0.9",
4954
+
"pull-stream": "^3.4.2",
4955
+
"ssb-keys": "^6.0.0",
4956
+
"ssb-ref": "^2.0.0"
4957
+
}
4958
+
},
4959
+
"node_modules/ssb-git": {
4960
+
"version": "0.4.1",
4961
+
"resolved": "https://registry.npmjs.org/ssb-git/-/ssb-git-0.4.1.tgz",
4962
+
"integrity": "sha512-ynvSboLrJsOn3rW/kxM3IvmdFug5Tp/dj//K2D8tlT9ZxddYEmlOHKtYYafkcTCwy2H8HtnsTtyGie1hiLke3g==",
4963
+
"license": "Fair"
4964
+
},
4965
+
"node_modules/ssb-keys": {
4966
+
"version": "6.1.2",
4967
+
"resolved": "https://registry.npmjs.org/ssb-keys/-/ssb-keys-6.1.2.tgz",
4968
+
"integrity": "sha512-qOfeRDVcfPZ+SmZjfcOxC1eF8r5V5BNF4SPyGQeX4dq5/9D6t1LdAIesQnd7My8H6OK2uuF848NCqhf0qQHpMw==",
4969
+
"license": "MIT",
4970
+
"dependencies": {
4971
+
"blake2s": "~1.0.0",
4972
+
"chloride": "^2.2.0",
4973
+
"deep-equal": "~0.2.1",
4974
+
"hmac": "~1.0.1",
4975
+
"mkdirp": "~0.5.0",
4976
+
"private-box": "^0.2.1",
4977
+
"ssb-ref": "^2.0.0"
4978
+
}
4979
+
},
4980
+
"node_modules/ssb-keys/node_modules/deep-equal": {
4981
+
"version": "0.2.2",
4982
+
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
4983
+
"integrity": "sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ==",
4984
+
"license": "MIT"
4985
+
},
4986
+
"node_modules/ssb-links": {
4987
+
"version": "2.0.1",
4988
+
"resolved": "https://registry.npmjs.org/ssb-links/-/ssb-links-2.0.1.tgz",
4989
+
"integrity": "sha512-Kv6hmrhHQctlz/91Hct9fqheCuoTyagmR7/b73bco27TCaJGwUAenutauCEY+9YHnYkDSTKPT2vcVr7OJLXaVg==",
4990
+
"license": "MIT",
4991
+
"dependencies": {
4992
+
"flumeview-query": "^4.0.0",
4993
+
"pull-stream": "^3.1.0",
4994
+
"ssb-msgs": "^5.2.0",
4995
+
"streamview-links": "^2.0.0"
4996
+
}
4997
+
},
4998
+
"node_modules/ssb-markdown": {
4999
+
"version": "3.0.0",
5000
+
"resolved": "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.0.0.tgz",
5001
+
"integrity": "sha512-pHtIpsC4Nt30PyyK2fMVNC0w5Cy/jpHfp8xK03k5wyu4Vv4PtGovKK3g6UL2O/+8aw7ue3B+JiLpGDVUKL5suQ==",
5002
+
"license": "MIT",
5003
+
"dependencies": {
5004
+
"emoji-named-characters": "^1.0.2",
5005
+
"ssb-marked": "^0.5.4",
5006
+
"ssb-msgs": "^5.2.0",
5007
+
"ssb-ref": "^2.3.0"
5008
+
}
5009
+
},
5010
+
"node_modules/ssb-marked": {
5011
+
"version": "0.5.4",
5012
+
"resolved": "https://registry.npmjs.org/ssb-marked/-/ssb-marked-0.5.4.tgz",
5013
+
"integrity": "sha512-0iFQjakjxW7hxlai+GHE7T+xnJUsWA+cpPpr4Y7aEJGZXjgwMp80S8ZR7uRhqV1JG1z33LJRC7jgw23LilSJGA==",
5014
+
"license": "MIT",
5015
+
"bin": {
5016
+
"ssb-marked": "bin/marked"
5017
+
}
5018
+
},
5019
+
"node_modules/ssb-mentions": {
5020
+
"version": "0.1.0",
5021
+
"resolved": "https://registry.npmjs.org/ssb-mentions/-/ssb-mentions-0.1.0.tgz",
5022
+
"integrity": "sha512-L51ec1iGKNMz70ulzDB8UCWbIzMo/tge7VorqunOi/KV1XDtiWd/NdTIpcRdxGOR9Srf8T9K9DRYzHPU9sxDug==",
5023
+
"license": "MIT",
5024
+
"dependencies": {
5025
+
"ssb-marked": "^0.5.4",
5026
+
"ssb-ref": "^2.3.0"
5027
+
}
5028
+
},
5029
+
"node_modules/ssb-msgs": {
5030
+
"version": "5.2.0",
5031
+
"resolved": "https://registry.npmjs.org/ssb-msgs/-/ssb-msgs-5.2.0.tgz",
5032
+
"integrity": "sha512-a5SF3fnXhXhcEIT406QNPftf+9YbPWFYFABNudreB19RrE0N3JsJL7bm/eKWgVd0fXNpARZJF3f5BYYMUv6lFw==",
5033
+
"license": "MIT",
5034
+
"dependencies": {
5035
+
"ssb-ref": "^2.0.0"
5036
+
}
5037
+
},
5038
+
"node_modules/ssb-query": {
5039
+
"version": "0.1.2",
5040
+
"resolved": "https://registry.npmjs.org/ssb-query/-/ssb-query-0.1.2.tgz",
5041
+
"integrity": "sha512-cv4W/0a4rW/7YlrH7m7fKokORUdx+9DezorYQoIy8IMvFeYIoBpCFj230VsZ9/K0eCnvbE+eMK09NcVuCO2yvw==",
5042
+
"license": "MIT",
5043
+
"dependencies": {
5044
+
"explain-error": "^1.0.1",
5045
+
"pull-stream": "^3.4.2",
5046
+
"streamview-links": "^2.0.0"
5047
+
}
5048
+
},
5049
+
"node_modules/ssb-ref": {
5050
+
"version": "2.16.0",
5051
+
"resolved": "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.16.0.tgz",
5052
+
"integrity": "sha512-ylyrfz9NLxwTCbeDDAdLo++O3elhNs6/gUqMhZ22F+gSOIjwXy2X7dpg5Q1YTH7uALOSu307Rpo1UfK9sj7Sjw==",
5053
+
"license": "MIT",
5054
+
"dependencies": {
5055
+
"ip": "^1.1.3",
5056
+
"is-canonical-base64": "^1.1.1",
5057
+
"is-valid-domain": "~0.0.1",
5058
+
"multiserver-address": "^1.0.1"
5059
+
}
5060
+
},
5061
+
"node_modules/ssb-sort": {
5062
+
"version": "1.0.0",
5063
+
"resolved": "https://registry.npmjs.org/ssb-sort/-/ssb-sort-1.0.0.tgz",
5064
+
"integrity": "sha512-qahpQ/wnxoaSlK0QnQEwilANmuD9MhzTH9FNhwzhdyqs0ZXp2r0eOXPiwY7B/U5RJAQ0G8TBLUTrrhwWfh0T5w==",
5065
+
"license": "MIT",
5066
+
"dependencies": {
5067
+
"ssb-ref": "^2.3.0"
5068
+
}
5069
+
},
5070
+
"node_modules/ssb-ws": {
5071
+
"version": "0.6.2",
5072
+
"resolved": "https://registry.npmjs.org/ssb-ws/-/ssb-ws-0.6.2.tgz",
5073
+
"integrity": "sha512-RRtXWmGrnNFfZlE7pl3yAashMGmGI51NOOpIO00kjQwNIzoryUEIZRrtc5l9rqXRh5nlNIrcNLP/PEOAEpEPWQ==",
5074
+
"license": "MIT",
5075
+
"dependencies": {
5076
+
"multiblob-http": "^0.2.0",
5077
+
"multiserver": "^1.2.0",
5078
+
"muxrpc": "^6.3.3",
5079
+
"pull-stream": "^3.4.3",
5080
+
"ssb-ref": "^2.3.0",
5081
+
"ssb-sort": "0.0.0",
5082
+
"stack": "^0.1.0",
5083
+
"web-bootloader": "^0.1.0"
5084
+
},
5085
+
"optionalDependencies": {
5086
+
"letsencrypt-express": "^1.1.5"
5087
+
}
5088
+
},
5089
+
"node_modules/ssb-ws/node_modules/ssb-sort": {
5090
+
"version": "0.0.0",
5091
+
"resolved": "https://registry.npmjs.org/ssb-sort/-/ssb-sort-0.0.0.tgz",
5092
+
"integrity": "sha512-wd6WoIaQ+6UHXa5YYpTJtnMXIHgyQa1N9Pi43/DAgaaUX2w4RzmJIgW4x5EnQAH+8XRLB4XjNyRLqwsa/nKohA==",
5093
+
"license": "MIT",
5094
+
"dependencies": {
5095
+
"ssb-ref": "^2.3.0"
5096
+
}
5097
+
},
5098
+
"node_modules/sshpk": {
5099
+
"version": "1.10.1",
5100
+
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz",
5101
+
"integrity": "sha512-ywhcxCSLw4u+wfJM4XDCtuyXmGEiJ3kHZcnaiehYztqaRf3hj9RE8yamh77ToBD59GxfrQZawktGV+vm8cFdPw==",
5102
+
"license": "MIT",
5103
+
"optional": true,
5104
+
"dependencies": {
5105
+
"asn1": "~0.2.3",
5106
+
"assert-plus": "^1.0.0",
5107
+
"dashdash": "^1.12.0",
5108
+
"getpass": "^0.1.1"
5109
+
},
5110
+
"bin": {
5111
+
"sshpk-conv": "bin/sshpk-conv",
5112
+
"sshpk-sign": "bin/sshpk-sign",
5113
+
"sshpk-verify": "bin/sshpk-verify"
5114
+
},
5115
+
"engines": {
5116
+
"node": ">=0.10.0"
5117
+
},
5118
+
"optionalDependencies": {
5119
+
"bcrypt-pbkdf": "^1.0.0",
5120
+
"ecc-jsbn": "~0.1.1",
5121
+
"jodid25519": "^1.0.0",
5122
+
"jsbn": "~0.1.0",
5123
+
"tweetnacl": "~0.14.0"
5124
+
}
5125
+
},
5126
+
"node_modules/sshpk/node_modules/assert-plus": {
5127
+
"version": "1.0.0",
5128
+
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
5129
+
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
5130
+
"license": "MIT",
5131
+
"optional": true,
5132
+
"engines": {
5133
+
"node": ">=0.8"
5134
+
}
5135
+
},
5136
+
"node_modules/stack": {
5137
+
"version": "0.1.0",
5138
+
"resolved": "https://registry.npmjs.org/stack/-/stack-0.1.0.tgz",
5139
+
"integrity": "sha512-MCDcCsqemsYpCg/eeR48p6RqA18We4AaXcYmiZyppx27AA58oleDMZpG+ewRA61vG5iUeAGPHinkFQg/REZMfA==",
5140
+
"engines": [
5141
+
"node >= 0.2.0"
5142
+
]
5143
+
},
5144
+
"node_modules/stream-browserify": {
5145
+
"version": "2.0.1",
5146
+
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
5147
+
"integrity": "sha512-nmQnY9D9TlnfQIkYJCCWxvCcQODilFRZIw14gCMYQVXOiY4E1Ze1VMxB+6y3qdXHpTordULo2qWloHmNcNAQYw==",
5148
+
"dev": true,
5149
+
"license": "MIT",
5150
+
"dependencies": {
5151
+
"inherits": "~2.0.1",
5152
+
"readable-stream": "^2.0.2"
5153
+
}
5154
+
},
5155
+
"node_modules/stream-combiner2": {
5156
+
"version": "1.1.1",
5157
+
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
5158
+
"integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
5159
+
"dev": true,
5160
+
"license": "MIT",
5161
+
"dependencies": {
5162
+
"duplexer2": "~0.1.0",
5163
+
"readable-stream": "^2.0.2"
5164
+
}
5165
+
},
5166
+
"node_modules/stream-http": {
5167
+
"version": "3.2.0",
5168
+
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
5169
+
"integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
5170
+
"dev": true,
5171
+
"license": "MIT",
5172
+
"dependencies": {
5173
+
"builtin-status-codes": "^3.0.0",
5174
+
"inherits": "^2.0.4",
5175
+
"readable-stream": "^3.6.0",
5176
+
"xtend": "^4.0.2"
5177
+
}
5178
+
},
5179
+
"node_modules/stream-http/node_modules/inherits": {
5180
+
"version": "2.0.4",
5181
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
5182
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
5183
+
"dev": true,
5184
+
"license": "ISC"
5185
+
},
5186
+
"node_modules/stream-http/node_modules/readable-stream": {
5187
+
"version": "3.6.2",
5188
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
5189
+
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
5190
+
"dev": true,
5191
+
"license": "MIT",
5192
+
"dependencies": {
5193
+
"inherits": "^2.0.3",
5194
+
"string_decoder": "^1.1.1",
5195
+
"util-deprecate": "^1.0.1"
5196
+
},
5197
+
"engines": {
5198
+
"node": ">= 6"
5199
+
}
5200
+
},
5201
+
"node_modules/stream-http/node_modules/xtend": {
5202
+
"version": "4.0.2",
5203
+
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
5204
+
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
5205
+
"dev": true,
5206
+
"license": "MIT",
5207
+
"engines": {
5208
+
"node": ">=0.4"
5209
+
}
5210
+
},
5211
+
"node_modules/stream-splicer": {
5212
+
"version": "2.0.0",
5213
+
"resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
5214
+
"integrity": "sha512-lrpyV50Z1AGT5PC4KMKaZX0+4H9V/Dh/6q8NpGqHbNeuraq8etHPRYlUvca2yRemGVkUBBcdIuyhqKDdgkKzkQ==",
5215
+
"dev": true,
5216
+
"license": "MIT",
5217
+
"dependencies": {
5218
+
"inherits": "^2.0.1",
5219
+
"readable-stream": "^2.0.2"
5220
+
}
5221
+
},
5222
+
"node_modules/stream-to-pull-stream": {
5223
+
"version": "1.7.2",
5224
+
"resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz",
5225
+
"integrity": "sha512-KSa5iA3hxM33WYgeKY5CITZdArSw+GFjbTRb/NjSMLz+4o1ijkiub5A8HeD11cbcHMPnkBUNWDJaRmINSWgk8A==",
5226
+
"license": "MIT",
5227
+
"dependencies": {
5228
+
"looper": "^3.0.0",
5229
+
"pull-stream": "^3.2.3"
5230
+
}
5231
+
},
5232
+
"node_modules/streamview-links": {
5233
+
"version": "2.1.1",
5234
+
"resolved": "https://registry.npmjs.org/streamview-links/-/streamview-links-2.1.1.tgz",
5235
+
"integrity": "sha512-tmv/Afk/7X20B5LDULZ4gNNZuMR9tZPPSgNoZhLAlpZ9rCg/b0Gs0KFS9KweIJ96U+EU54SiOWjetzQynTPw/g==",
5236
+
"license": "MIT",
5237
+
"dependencies": {
5238
+
"bytewise": "^1.1.0",
5239
+
"explain-error": "^1.0.1",
5240
+
"level": "^1.4.0",
5241
+
"ltgt": "^2.1.2",
5242
+
"map-filter-reduce": "^3.0.2",
5243
+
"pull-level": "^2.0.2",
5244
+
"pull-live": "^1.0.1",
5245
+
"pull-paramap": "^1.1.3",
5246
+
"pull-sink-through": "0.0.0",
5247
+
"pull-stream": "^3.4.0",
5248
+
"pull-write": "^1.0.2"
5249
+
}
5250
+
},
5251
+
"node_modules/string_decoder": {
5252
+
"version": "1.3.0",
5253
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
5254
+
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
5255
+
"dev": true,
5256
+
"license": "MIT",
5257
+
"dependencies": {
5258
+
"safe-buffer": "~5.2.0"
5259
+
}
5260
+
},
5261
+
"node_modules/string-width": {
5262
+
"version": "1.0.2",
5263
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
5264
+
"integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
5265
+
"license": "MIT",
5266
+
"dependencies": {
5267
+
"code-point-at": "^1.0.0",
5268
+
"is-fullwidth-code-point": "^1.0.0",
5269
+
"strip-ansi": "^3.0.0"
5270
+
},
5271
+
"engines": {
5272
+
"node": ">=0.10.0"
5273
+
}
5274
+
},
5275
+
"node_modules/stringstream": {
5276
+
"version": "0.0.5",
5277
+
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
5278
+
"integrity": "sha512-QUQ1kThMjLRt4jA8lsn9lyIkE9bKafE7LDOL/nBBUY9Tfv2i3x1NAsVHG0uMCusFOWeeI6COhY/F20+avxRWSw==",
5279
+
"license": "MIT",
5280
+
"optional": true
5281
+
},
5282
+
"node_modules/strip-ansi": {
5283
+
"version": "3.0.1",
5284
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
5285
+
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
5286
+
"license": "MIT",
5287
+
"dependencies": {
5288
+
"ansi-regex": "^2.0.0"
5289
+
},
5290
+
"engines": {
5291
+
"node": ">=0.10.0"
5292
+
}
5293
+
},
5294
+
"node_modules/strip-json-comments": {
5295
+
"version": "1.0.4",
5296
+
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
5297
+
"integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==",
5298
+
"license": "MIT",
5299
+
"bin": {
5300
+
"strip-json-comments": "cli.js"
5301
+
},
5302
+
"engines": {
5303
+
"node": ">=0.8.0"
5304
+
}
5305
+
},
5306
+
"node_modules/style-properties": {
5307
+
"version": "1.3.1",
5308
+
"resolved": "https://registry.npmjs.org/style-properties/-/style-properties-1.3.1.tgz",
5309
+
"integrity": "sha512-n+uc4rCIzXUZ6197c98Lq63f8G0SpRj9kzIZT4QNQ0PYUR+D0kdXyZiBUyjE1KO2RtAc0ETRDPUxTImRFjvHig==",
5310
+
"license": "MIT"
5311
+
},
5312
+
"node_modules/subarg": {
5313
+
"version": "1.0.0",
5314
+
"resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
5315
+
"integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==",
5316
+
"dev": true,
5317
+
"license": "MIT",
5318
+
"dependencies": {
5319
+
"minimist": "^1.1.0"
5320
+
}
5321
+
},
5322
+
"node_modules/suggest-box": {
5323
+
"version": "2.2.2",
5324
+
"resolved": "https://registry.npmjs.org/suggest-box/-/suggest-box-2.2.2.tgz",
5325
+
"integrity": "sha512-c9oZ8KJHY5IKz4T2JkQWkwggjIptjn9Io4AMvjneNxu0kIdqeSL5lS+NhBKrEbrES/lNDex5rwZLZPSGELmT1g==",
5326
+
"license": "MIT",
5327
+
"dependencies": {
5328
+
"hyperscript": "~1.4.2",
5329
+
"textarea-caret-position": "^0.1.1"
5330
+
}
5331
+
},
5332
+
"node_modules/supports-color": {
5333
+
"version": "2.0.0",
5334
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
5335
+
"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
5336
+
"license": "MIT",
5337
+
"optional": true,
5338
+
"engines": {
5339
+
"node": ">=0.8.0"
5340
+
}
5341
+
},
5342
+
"node_modules/supports-preserve-symlinks-flag": {
5343
+
"version": "1.0.0",
5344
+
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
5345
+
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
5346
+
"dev": true,
5347
+
"license": "MIT",
5348
+
"engines": {
5349
+
"node": ">= 0.4"
5350
+
},
5351
+
"funding": {
5352
+
"url": "https://github.com/sponsors/ljharb"
5353
+
}
5354
+
},
5355
+
"node_modules/syntax-error": {
5356
+
"version": "1.1.6",
5357
+
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz",
5358
+
"integrity": "sha512-PR60b6QEsF95amTCi4TwqwH+FRTLjg90DOHiHBgvtauFafhnc8sDT4fXnNEXAbke1cCqrrJGDbFRlwSmo50mOQ==",
5359
+
"dev": true,
5360
+
"license": "MIT",
5361
+
"dependencies": {
5362
+
"acorn": "^2.7.0"
5363
+
}
5364
+
},
5365
+
"node_modules/syntax-error/node_modules/acorn": {
5366
+
"version": "2.7.0",
5367
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
5368
+
"integrity": "sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg==",
5369
+
"dev": true,
5370
+
"license": "MIT",
5371
+
"bin": {
5372
+
"acorn": "bin/acorn"
5373
+
},
5374
+
"engines": {
5375
+
"node": ">=0.4.0"
5376
+
}
5377
+
},
5378
+
"node_modules/tar": {
5379
+
"version": "2.2.1",
5380
+
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
5381
+
"integrity": "sha512-2Tw2uNtZqQTSHTIMbKHKFeAPmKcljrNKqKiIN7pu3V/CxYqRgS8DLXvMkFRrbtXlg6mTOQcuTX7DMj18Xi0dtg==",
5382
+
"deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.",
5383
+
"license": "ISC",
5384
+
"optional": true,
5385
+
"dependencies": {
5386
+
"block-stream": "*",
5387
+
"fstream": "^1.0.2",
5388
+
"inherits": "2"
5389
+
}
5390
+
},
5391
+
"node_modules/tar-fs": {
5392
+
"version": "1.13.2",
5393
+
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.13.2.tgz",
5394
+
"integrity": "sha512-2Aa6KmxE0o1aqYC/kfIEWsaAYkZUlm8S9kcwD3y5gG4v+mw8XtrhbgRwFPDYZSg+nvk1QsBUmKKOuNzhNSyb3w==",
5395
+
"license": "MIT",
5396
+
"dependencies": {
5397
+
"mkdirp": "^0.5.0",
5398
+
"pump": "^1.0.0",
5399
+
"tar-stream": "^1.1.2"
5400
+
}
5401
+
},
5402
+
"node_modules/tar-stream": {
5403
+
"version": "1.5.2",
5404
+
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz",
5405
+
"integrity": "sha512-X2iZpARyDjlkj6Tz3nlI1lY4a4k+xEatPgQg7O2WiUMTXIrjVp8R86K3AdWfHp+Q3jsaLE2FLlHES+PA5zwAhA==",
5406
+
"license": "MIT",
5407
+
"dependencies": {
5408
+
"bl": "^1.0.0",
5409
+
"end-of-stream": "^1.0.0",
5410
+
"readable-stream": "^2.0.0",
5411
+
"xtend": "^4.0.0"
5412
+
},
5413
+
"engines": {
5414
+
"node": ">= 0.8.0"
5415
+
}
5416
+
},
5417
+
"node_modules/text-node-searcher": {
5418
+
"version": "1.1.1",
5419
+
"resolved": "https://registry.npmjs.org/text-node-searcher/-/text-node-searcher-1.1.1.tgz",
5420
+
"integrity": "sha512-kQdQ9INlnxygZY9OPXE9LpSF4n2x2Cz7RXKGMiK7dIy717xYE3DLu25zOzK3o7ZKhy3f8yfcLsVzq//sc2aVvQ==",
5421
+
"license": "Fair"
5422
+
},
5423
+
"node_modules/textarea-caret-position": {
5424
+
"version": "0.1.1",
5425
+
"resolved": "https://registry.npmjs.org/textarea-caret-position/-/textarea-caret-position-0.1.1.tgz",
5426
+
"integrity": "sha512-Dns++qU6E9eh/IweI8fiFrkARbKUfuUoSSbf9mwJaSziJ5DBGkM2SJ0tKjLotqhj58vfh0bBQDPPmi1AgDS+lg==",
5427
+
"license": "ISC"
5428
+
},
5429
+
"node_modules/through": {
5430
+
"version": "2.3.8",
5431
+
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
5432
+
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
5433
+
"dev": true,
5434
+
"license": "MIT"
5435
+
},
5436
+
"node_modules/through2": {
5437
+
"version": "2.0.1",
5438
+
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
5439
+
"integrity": "sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw==",
5440
+
"dev": true,
5441
+
"license": "MIT",
5442
+
"dependencies": {
5443
+
"readable-stream": "~2.0.0",
5444
+
"xtend": "~4.0.0"
5445
+
}
5446
+
},
5447
+
"node_modules/through2/node_modules/isarray": {
5448
+
"version": "1.0.0",
5449
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
5450
+
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
5451
+
"dev": true,
5452
+
"license": "MIT"
5453
+
},
5454
+
"node_modules/through2/node_modules/readable-stream": {
5455
+
"version": "2.0.6",
5456
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
5457
+
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
5458
+
"dev": true,
5459
+
"license": "MIT",
5460
+
"dependencies": {
5461
+
"core-util-is": "~1.0.0",
5462
+
"inherits": "~2.0.1",
5463
+
"isarray": "~1.0.0",
5464
+
"process-nextick-args": "~1.0.6",
5465
+
"string_decoder": "~0.10.x",
5466
+
"util-deprecate": "~1.0.1"
5467
+
}
5468
+
},
5469
+
"node_modules/through2/node_modules/string_decoder": {
5470
+
"version": "0.10.31",
5471
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
5472
+
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
5473
+
"dev": true,
5474
+
"license": "MIT"
5475
+
},
5476
+
"node_modules/timers-browserify": {
5477
+
"version": "1.4.2",
5478
+
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
5479
+
"integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==",
5480
+
"dev": true,
5481
+
"dependencies": {
5482
+
"process": "~0.11.0"
5483
+
},
5484
+
"engines": {
5485
+
"node": ">=0.6.0"
5486
+
}
5487
+
},
5488
+
"node_modules/to-arraybuffer": {
5489
+
"version": "1.0.1",
5490
+
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
5491
+
"integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
5492
+
"dev": true,
5493
+
"license": "MIT"
5494
+
},
5495
+
"node_modules/tough-cookie": {
5496
+
"version": "2.3.1",
5497
+
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz",
5498
+
"integrity": "sha512-3C8DIrKkBO8q3BIqcUB6zPuqua6wCso6ddmRmHjbJ5/OfJ6rrw6zTf1DFDsBSZbKNKC1XzfVJRxZrdcxyjEOjA==",
5499
+
"license": "BSD-3-Clause",
5500
+
"optional": true,
5501
+
"engines": {
5502
+
"node": ">=0.8"
5503
+
}
5504
+
},
5505
+
"node_modules/tty-browserify": {
5506
+
"version": "0.0.1",
5507
+
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
5508
+
"integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
5509
+
"dev": true,
5510
+
"license": "MIT"
5511
+
},
5512
+
"node_modules/tunnel-agent": {
5513
+
"version": "0.4.3",
5514
+
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
5515
+
"integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==",
5516
+
"license": "Apache-2.0",
5517
+
"optional": true,
5518
+
"engines": {
5519
+
"node": "*"
5520
+
}
5521
+
},
5522
+
"node_modules/tweetnacl": {
5523
+
"version": "0.14.3",
5524
+
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz",
5525
+
"integrity": "sha512-wv+W579MMQ7iwO2XcHk72RPnBwAyRFMjizSdncxpyCHgA3jzbe8VQ5yGY5HEejR3AyywFaGIo5cJRR6ENdzFIA==",
5526
+
"license": "SEE LICENSE IN COPYING.txt"
5527
+
},
5528
+
"node_modules/tweetnacl-auth": {
5529
+
"version": "0.3.0",
5530
+
"resolved": "https://registry.npmjs.org/tweetnacl-auth/-/tweetnacl-auth-0.3.0.tgz",
5531
+
"integrity": "sha512-yUBiLzJAva46d0zc6HixMid3ELzbdeDNkR87ycu0/MLsv7CIEYw+j2fJ2+7K5gvdmmeHzwluHA6nu5lxBzA3xg==",
5532
+
"license": "Public domain",
5533
+
"dependencies": {
5534
+
"tweetnacl": "0.x.x"
5535
+
}
5536
+
},
5537
+
"node_modules/typedarray": {
5538
+
"version": "0.0.6",
5539
+
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
5540
+
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
5541
+
"dev": true,
5542
+
"license": "MIT"
5543
+
},
5544
+
"node_modules/typewise": {
5545
+
"version": "1.0.3",
5546
+
"resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
5547
+
"integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==",
5548
+
"license": "MIT",
5549
+
"dependencies": {
5550
+
"typewise-core": "^1.2.0"
5551
+
}
5552
+
},
5553
+
"node_modules/typewise-core": {
5554
+
"version": "1.2.0",
5555
+
"resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
5556
+
"integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==",
5557
+
"license": "MIT"
5558
+
},
5559
+
"node_modules/typewiselite": {
5560
+
"version": "1.0.0",
5561
+
"resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz",
5562
+
"integrity": "sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==",
5563
+
"license": "MIT"
5564
+
},
5565
+
"node_modules/ultron": {
5566
+
"version": "1.0.2",
5567
+
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
5568
+
"integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==",
5569
+
"license": "MIT"
5570
+
},
5571
+
"node_modules/umd": {
5572
+
"version": "3.0.1",
5573
+
"resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz",
5574
+
"integrity": "sha512-3npD+zDXGkXrLuoWfeeawVCNcRUnjcqLHWGifik86s+Md/YEoUqBt4yHsDNtwNLR6GY4hEw9eA/O13rD6/0skQ==",
5575
+
"dev": true,
5576
+
"license": "MIT",
5577
+
"bin": {
5578
+
"umd": "bin/cli.js"
5579
+
}
5580
+
},
5581
+
"node_modules/unzip-response": {
5582
+
"version": "1.0.1",
5583
+
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz",
5584
+
"integrity": "sha512-Gr4B7j6vDPqv2LKzC+5tC+j+vjV/PHNNQfNvuoRBzypaVkHwSwwcXIMG5B6KnKRup0oZFhwpjKcRZGKpI2EI1w==",
5585
+
"license": "MIT",
5586
+
"optional": true,
5587
+
"engines": {
5588
+
"node": ">=0.10.0"
5589
+
}
5590
+
},
5591
+
"node_modules/url": {
5592
+
"version": "0.11.0",
5593
+
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
5594
+
"integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
5595
+
"dev": true,
5596
+
"license": "MIT",
5597
+
"dependencies": {
5598
+
"punycode": "1.3.2",
5599
+
"querystring": "0.2.0"
5600
+
}
5601
+
},
5602
+
"node_modules/url-template": {
5603
+
"version": "2.0.8",
5604
+
"resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
5605
+
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
5606
+
"license": "BSD",
5607
+
"optional": true
5608
+
},
5609
+
"node_modules/url/node_modules/punycode": {
5610
+
"version": "1.3.2",
5611
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
5612
+
"integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
5613
+
"dev": true,
5614
+
"license": "MIT"
5615
+
},
5616
+
"node_modules/ursa": {
5617
+
"version": "0.9.4",
5618
+
"resolved": "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz",
5619
+
"integrity": "sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ==",
5620
+
"hasInstallScript": true,
5621
+
"license": "Apache-2.0",
5622
+
"optional": true,
5623
+
"dependencies": {
5624
+
"bindings": "^1.2.1",
5625
+
"nan": "^2.3.3"
5626
+
},
5627
+
"engines": {
5628
+
"node": ">=0.10.0"
5629
+
}
5630
+
},
5631
+
"node_modules/util": {
5632
+
"version": "0.10.4",
5633
+
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
5634
+
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
5635
+
"dev": true,
5636
+
"license": "MIT",
5637
+
"dependencies": {
5638
+
"inherits": "2.0.3"
5639
+
}
5640
+
},
5641
+
"node_modules/util-deprecate": {
5642
+
"version": "1.0.2",
5643
+
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5644
+
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
5645
+
"license": "MIT"
5646
+
},
5647
+
"node_modules/util-extend": {
5648
+
"version": "1.0.3",
5649
+
"resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
5650
+
"integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
5651
+
"license": "MIT",
5652
+
"optional": true
5653
+
},
5654
+
"node_modules/verror": {
5655
+
"version": "1.3.6",
5656
+
"resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
5657
+
"integrity": "sha512-i8GFYwImt5D5B8CPpi2jrDTy/faq4OEW+NkOTLSKcIdPfdYJvWv3VZddDKl0ByvBe6cJ2s5Mm2XDtv5c2pj/Eg==",
5658
+
"engines": [
5659
+
"node >=0.6.0"
5660
+
],
5661
+
"optional": true,
5662
+
"dependencies": {
5663
+
"extsprintf": "1.0.2"
5664
+
}
5665
+
},
5666
+
"node_modules/visualize-buffer": {
5667
+
"version": "0.0.0",
5668
+
"resolved": "https://registry.npmjs.org/visualize-buffer/-/visualize-buffer-0.0.0.tgz",
5669
+
"integrity": "sha512-Op/yhLNL8K+eb2LAlt/uiS9OBicVG9rtKuoe4H3yqi42Z95vQerlGkRr+MOKCdjBeucdeRiYDGQruNjUdw3KNw==",
5670
+
"license": "MIT"
5671
+
},
5672
+
"node_modules/vm-browserify": {
5673
+
"version": "1.1.2",
5674
+
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
5675
+
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
5676
+
"dev": true,
5677
+
"license": "MIT"
5678
+
},
5679
+
"node_modules/waveform-data": {
5680
+
"version": "1.5.3",
5681
+
"resolved": "https://registry.npmjs.org/waveform-data/-/waveform-data-1.5.3.tgz",
5682
+
"integrity": "sha512-4A9+iMBZ1KUkkkte6IYWA0dyBocp1K81ODBZ7iWGJig4PryfYZTKWLeb/MK+YGSzIVi7g2QfoXW6tOxbyMCvug==",
5683
+
"license": "LGPL-3.0",
5684
+
"dependencies": {
5685
+
"audio-context": "^0.1.0"
5686
+
}
5687
+
},
5688
+
"node_modules/web-bootloader": {
5689
+
"version": "0.1.2",
5690
+
"resolved": "https://registry.npmjs.org/web-bootloader/-/web-bootloader-0.1.2.tgz",
5691
+
"integrity": "sha512-qpD4MkUEPggBPUhiiVHssjTJKrlDMFT4DNuPkwpVv9bhhEP9LA/+LobCor4mUzuCJG+Yq/omQMVIHA9sM9o85w==",
5692
+
"license": "MIT",
5693
+
"dependencies": {
5694
+
"arraybuffer-base64": "^1.0.0",
5695
+
"binary-xhr": "0.0.2",
5696
+
"hyperfile": "^1.1.1",
5697
+
"hyperprogress": "^0.1.0"
5698
+
}
5699
+
},
5700
+
"node_modules/which": {
5701
+
"version": "1.2.11",
5702
+
"resolved": "https://registry.npmjs.org/which/-/which-1.2.11.tgz",
5703
+
"integrity": "sha512-8kWuAZrtPpcfj0UM1rpIJopAawk+Uz+KxNSxk0U0j9fmekidFSRDhyrHOEbD5qePWF6YicG1wSUuFA6BfsE3ig==",
5704
+
"license": "ISC",
5705
+
"optional": true,
5706
+
"dependencies": {
5707
+
"isexe": "^1.1.1"
5708
+
},
5709
+
"bin": {
5710
+
"which": "bin/which"
5711
+
}
5712
+
},
5713
+
"node_modules/which-pm-runs": {
5714
+
"version": "1.1.0",
5715
+
"resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",
5716
+
"integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==",
5717
+
"license": "MIT",
5718
+
"engines": {
5719
+
"node": ">=4"
5720
+
}
5721
+
},
5722
+
"node_modules/wide-align": {
5723
+
"version": "1.1.0",
5724
+
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz",
5725
+
"integrity": "sha512-rlD2ELOb94L+t1gMHCObqlC3QvrHVF1V5ipWEGm4vb9OK2C6ZTvluPg1Mfp2O9POtGb/3aZNxBpKOmx0JNVHSQ==",
5726
+
"license": "ISC",
5727
+
"dependencies": {
5728
+
"string-width": "^1.0.1"
5729
+
}
5730
+
},
5731
+
"node_modules/wordwrap": {
5732
+
"version": "0.0.3",
5733
+
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
5734
+
"integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==",
5735
+
"dev": true,
5736
+
"license": "MIT",
5737
+
"engines": {
5738
+
"node": ">=0.4.0"
5739
+
}
5740
+
},
5741
+
"node_modules/wrappy": {
5742
+
"version": "1.0.2",
5743
+
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
5744
+
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
5745
+
"license": "ISC"
5746
+
},
5747
+
"node_modules/ws": {
5748
+
"version": "1.1.1",
5749
+
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz",
5750
+
"integrity": "sha512-TRtCup+Fxoy1sW9funE4kPxA0KfaMc7g68DoKN+Uu9Ej+zr9We3DWVJ2XgiGtXlibqA7IWOV+Xe6xlUxPputfg==",
5751
+
"license": "MIT",
5752
+
"dependencies": {
5753
+
"options": ">=0.0.5",
5754
+
"ultron": "1.0.x"
5755
+
}
5756
+
},
5757
+
"node_modules/xtend": {
5758
+
"version": "4.0.1",
5759
+
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
5760
+
"integrity": "sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ==",
5761
+
"license": "MIT",
5762
+
"engines": {
5763
+
"node": ">=0.4"
5764
+
}
5765
+
}
5766
+
}
5767
+
}
+72
decent/package.json
+72
decent/package.json
···
1
+
{
2
+
"name": "patchbay",
3
+
"description": "a pluggable patchwork",
4
+
"version": "6.1.3",
5
+
"homepage": "https://github.com/dominictarr/patchbay",
6
+
"repository": {
7
+
"type": "git",
8
+
"url": "git://github.com/dominictarr/patchbay.git"
9
+
},
10
+
"browser": {
11
+
"electron": "./electron-shim.js"
12
+
},
13
+
"dependencies": {
14
+
"cont": "^1.0.3",
15
+
"dataurl-": "^0.1.0",
16
+
"depject": "^3.0.0",
17
+
"hjson": "^2.0.3",
18
+
"human-time": "0.0.1",
19
+
"hypercombo": "0.1.0",
20
+
"hypercrop": "^1.0.1",
21
+
"hyperfile": "^1.1.0",
22
+
"hyperlightbox": "^0.1.3",
23
+
"hyperprogress": "0.1.0",
24
+
"hyperscript": "^1.4.7",
25
+
"hypertabs": "^3.0.0",
26
+
"is-visible": "^2.0.4",
27
+
"kvgraph": "^0.1.0",
28
+
"map-filter-reduce": "^3.0.1",
29
+
"mime-types": "^2.1.11",
30
+
"moment": "^2.13.0",
31
+
"open-external": "^0.1.1",
32
+
"peaks.js": "^0.4.7",
33
+
"pull-cat": "^1.1.9",
34
+
"pull-many": "^1.0.7",
35
+
"pull-next": "^0.0.1",
36
+
"pull-paramap": "^1.1.6",
37
+
"pull-reconnect": "^0.0.3",
38
+
"pull-scroll": "^0.2.0",
39
+
"pull-stream": "^3.4.5",
40
+
"simple-mime": "^0.1.0",
41
+
"split-buffer": "^1.0.0",
42
+
"ssb-avatar": "^0.2.0",
43
+
"ssb-client": "^4.0.3",
44
+
"ssb-config": "^2.1.1",
45
+
"ssb-feed": "^2.2.1",
46
+
"ssb-git": "^0.4.1",
47
+
"ssb-keys": "^6.1.0",
48
+
"ssb-links": "^2.0.0",
49
+
"ssb-markdown": "^3.0.0",
50
+
"ssb-mentions": "^0.1.0",
51
+
"ssb-query": "^0.1.1",
52
+
"ssb-ref": "^2.6.2",
53
+
"ssb-sort": "^1.0.0",
54
+
"ssb-ws": "^0.6.2",
55
+
"suggest-box": "^2.2.1",
56
+
"text-node-searcher": "^1.1.0",
57
+
"visualize-buffer": "0.0.0"
58
+
},
59
+
"devDependencies": {
60
+
"browselectrify": "^1.0.1",
61
+
"browserify": "^16.5.2",
62
+
"indexhtmlify": "^1.3.1"
63
+
},
64
+
"scripts": {
65
+
"lite": "node scripts/style.js && mkdir -p build && browserify index.js | indexhtmlify --title \"Decent SSB\" > build/index.html",
66
+
"bundle": "node scripts/style.js && mkdir -p build && browselectrify index.js > build/bundle.js",
67
+
"graph": "node index.js | dot -Tsvg > graph.svg",
68
+
"test": "set -e; for t in test/*.js; do node $t; done"
69
+
},
70
+
"author": "Dominic Tarr <dominic.tarr@gmail.com> (http://dominictarr.com)",
71
+
"license": "MIT"
72
+
}
+40
decent/plugs.js
+40
decent/plugs.js
···
1
+
exports.first = function first(plug) {
2
+
return function () {
3
+
var args = [].slice.call(arguments)
4
+
for(var i = 0; i < plug.length; i++) {
5
+
var val = plug[i].apply(null, args)
6
+
if(val) return val
7
+
}
8
+
}
9
+
}
10
+
11
+
exports.map = function (plug) {
12
+
return function () {
13
+
var args = [].slice.call(arguments)
14
+
return plug.map(function (fn) {
15
+
if(fn) return fn.apply(null, args)
16
+
}).filter(Boolean)
17
+
}
18
+
}
19
+
20
+
exports.asyncConcat = function (plug) {
21
+
return function () {
22
+
var args = [].slice.call(arguments)
23
+
var cb = args.pop()
24
+
var allResults = []
25
+
var waiting = plug.length
26
+
plug.forEach(function (fn) {
27
+
if (!fn) return next()
28
+
fn.apply(null, args.concat(next))
29
+
})
30
+
function next(err, results) {
31
+
if (err) {
32
+
waiting = 0
33
+
return cb(err)
34
+
}
35
+
if (results) allResults = allResults.concat(results)
36
+
if (--waiting === 0) cb(null, allResults)
37
+
}
38
+
}
39
+
}
40
+
decent/screenshot-1767023640.png
decent/screenshot-1767023640.png
This is a binary file and will not be displayed.
+18
decent/scripts/build.js
+18
decent/scripts/build.js
···
1
+
var fs = require('fs')
2
+
var path = require('path')
3
+
4
+
console.log(
5
+
'module.exports = {\n'
6
+
+
7
+
fs.readdirSync(path.join(__dirname, process.argv[2]))
8
+
// .filter(function (file) {
9
+
// return file !== '_index.js' && /\.js$/.test(file)
10
+
// })
11
+
.map(function (file) {
12
+
return ' '+JSON.stringify(file) + ": require('./"+file+"')"
13
+
}).join(',\n')
14
+
+
15
+
'\n}'
16
+
)
17
+
18
+
+8
decent/scripts/create-index.js
+8
decent/scripts/create-index.js
+18
decent/scripts/dir.js
+18
decent/scripts/dir.js
···
1
+
var fs = require('fs')
2
+
var path = require('path')
3
+
4
+
console.log(
5
+
'module.exports = {\n'
6
+
+
7
+
fs.readdirSync(path.join(process.cwd(), process.argv[2]))
8
+
.filter(function (file) {
9
+
return file !== 'index.js' && /\.js$/.test(file)
10
+
})
11
+
.map(function (file) {
12
+
return ' '+JSON.stringify(file) + ": require('./"+file+"')"
13
+
}).join(',\n')
14
+
+
15
+
'\n}'
16
+
)
17
+
18
+
+8
decent/scripts/style.js
+8
decent/scripts/style.js
+293
decent/style.css
+293
decent/style.css
···
1
+
@import url('https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css');
2
+
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,400,0,0');
3
+
4
+
* {
5
+
box-sizing: border-box;
6
+
word-break: break-word;
7
+
}
8
+
9
+
body {
10
+
margin: 0;
11
+
}
12
+
13
+
textarea {
14
+
width: 100%;
15
+
box-sizing: border-box;
16
+
}
17
+
18
+
.screen {
19
+
position: absolute;
20
+
top: 0; bottom: 0;
21
+
left: 0; right: 0;
22
+
display: flex;
23
+
flex-direction: column;
24
+
overflow: hidden;
25
+
}
26
+
27
+
.screen__content {
28
+
flex: 1;
29
+
min-height: 0px;
30
+
overflow: hidden;
31
+
}
32
+
33
+
.lightbox {
34
+
background: rgba(0, 0, 0, 0.4);
35
+
z-index: 1000;
36
+
}
37
+
38
+
.lightbox__content {
39
+
max-width: 680px;
40
+
margin: 40px auto;
41
+
padding: 0 20px;
42
+
}
43
+
44
+
.message-confirm {
45
+
gap: 12px;
46
+
}
47
+
48
+
.message-confirm__controls {
49
+
justify-content: flex-end;
50
+
gap: 8px;
51
+
}
52
+
53
+
.column {
54
+
display: flex;
55
+
flex-direction: column;
56
+
min-height: 0px;
57
+
}
58
+
59
+
.row {
60
+
display: flex;
61
+
flex-direction: row;
62
+
min-height: 0px;
63
+
margin: 0;
64
+
padding: 0;
65
+
}
66
+
67
+
.scroll-y {
68
+
overflow-y: auto;
69
+
min-height: 0px;
70
+
}
71
+
72
+
.scroll-x {
73
+
overflow-x: auto;
74
+
min-width: 0px;
75
+
}
76
+
77
+
.scroller {
78
+
width: 100%;
79
+
}
80
+
81
+
.scroller__wrapper {
82
+
flex: 1;
83
+
width: 100%;
84
+
max-width: 680px;
85
+
margin-left: auto;
86
+
margin-right: auto;
87
+
padding: 0 20px 20px;
88
+
}
89
+
90
+
.message img {
91
+
max-width: 100%;
92
+
}
93
+
94
+
.message-card {
95
+
margin: 5px 0 0 0;
96
+
padding: 12px;
97
+
background-color: #f5f5f5;
98
+
border: 1px solid #e3e3e3;
99
+
border-radius: 4px;
100
+
box-shadow: none;
101
+
display: flex;
102
+
flex-direction: column;
103
+
}
104
+
105
+
.message--mini.message-card {
106
+
padding: 8px 12px 8px 12px;
107
+
}
108
+
109
+
.message .title {
110
+
margin-bottom: 6px;
111
+
}
112
+
113
+
.message_actions {
114
+
margin-top: 8px;
115
+
}
116
+
117
+
.avatar {
118
+
display: inline-flex;
119
+
align-items: flex-start;
120
+
gap: 8px;
121
+
}
122
+
123
+
.avatar .avatar_name {
124
+
display: inline-block;
125
+
line-height: 1.2;
126
+
}
127
+
128
+
.message-card .avatar img,
129
+
.message-card .avatar canvas,
130
+
.message-card .avatar svg {
131
+
display: block;
132
+
}
133
+
134
+
.message-card .title.row {
135
+
display: flex;
136
+
align-items: flex-start;
137
+
gap: 0;
138
+
padding-right: 12px;
139
+
}
140
+
141
+
.message-card .avatar {
142
+
flex: 0 0 auto;
143
+
}
144
+
145
+
.message-card .message_meta.row {
146
+
display: flex;
147
+
align-items: flex-start;
148
+
gap: 4px;
149
+
margin-left: auto;
150
+
align-self: flex-start;
151
+
margin-top: -4px;
152
+
justify-content: flex-end;
153
+
margin-right: -18px;
154
+
}
155
+
156
+
.message-card .message_content {
157
+
margin-top: 6px;
158
+
padding-left: 0;
159
+
}
160
+
161
+
.message-card .message_actions.row {
162
+
display: flex;
163
+
justify-content: flex-end;
164
+
margin-top: 8px;
165
+
padding-left: 0;
166
+
}
167
+
168
+
.message--mini.message-card.row {
169
+
display: flex;
170
+
flex-direction: row;
171
+
align-items: baseline;
172
+
gap: 0;
173
+
flex-wrap: wrap;
174
+
white-space: nowrap;
175
+
}
176
+
177
+
.message--mini.message-card .message_content {
178
+
margin-top: 0;
179
+
padding-left: 0;
180
+
display: inline;
181
+
margin-left: 6px;
182
+
min-width: 0;
183
+
overflow: hidden;
184
+
text-overflow: ellipsis;
185
+
white-space: nowrap;
186
+
}
187
+
188
+
.message--mini.message-card .message_content > div,
189
+
.message--mini.message-card .message_content > span,
190
+
.message--mini.message-card .message_content *,
191
+
.message--mini.message-card .message_content.markdown,
192
+
.message--mini.message-card .message_content.markdown * {
193
+
display: inline;
194
+
margin: 0;
195
+
padding: 0;
196
+
}
197
+
198
+
.message--mini.message-card .message_content br {
199
+
display: none;
200
+
}
201
+
202
+
.message--mini.message-card .avatar {
203
+
display: inline-flex;
204
+
align-items: flex-start;
205
+
gap: 0;
206
+
white-space: nowrap;
207
+
}
208
+
209
+
.message--mini.message-card .message_meta.row {
210
+
margin-left: auto;
211
+
white-space: nowrap;
212
+
margin-right: -4px;
213
+
gap: 4px;
214
+
}
215
+
216
+
.message--mini.message-card .message_raw {
217
+
flex: 1 0 100%;
218
+
width: 100%;
219
+
margin-top: 8px;
220
+
white-space: normal;
221
+
}
222
+
223
+
.message-card .actions > * {
224
+
margin-left: 8px;
225
+
}
226
+
227
+
.avatar--thumbnail {
228
+
width: 36px;
229
+
height: 36px;
230
+
border-radius: 4px;
231
+
}
232
+
233
+
.avatar--large {
234
+
width: 120px;
235
+
height: 120px;
236
+
border-radius: 6px;
237
+
}
238
+
239
+
.avatar--fullsize {
240
+
width: 50%;
241
+
height: auto;
242
+
border-radius: 6px;
243
+
}
244
+
245
+
.status {
246
+
display: inline-block;
247
+
width: 10px;
248
+
height: 10px;
249
+
margin-top: 15px;
250
+
border-radius: 100%;
251
+
background: #08c;
252
+
}
253
+
254
+
.error {
255
+
background: #bd362f;
256
+
}
257
+
258
+
.navbar .menu {
259
+
display: inline-block;
260
+
vertical-align: middle;
261
+
}
262
+
263
+
.navbar {
264
+
margin-bottom: 0;
265
+
}
266
+
267
+
.navbar .nav.pull-left {
268
+
float: left;
269
+
}
270
+
271
+
.navbar .pull-right {
272
+
float: right;
273
+
}
274
+
275
+
.material-symbols-outlined {
276
+
font-family: 'Material Symbols Outlined';
277
+
font-weight: normal;
278
+
font-style: normal;
279
+
font-size: 1em;
280
+
line-height: 1;
281
+
letter-spacing: normal;
282
+
text-transform: none;
283
+
display: inline-block;
284
+
white-space: nowrap;
285
+
word-wrap: normal;
286
+
direction: ltr;
287
+
-webkit-font-feature-settings: 'liga';
288
+
-webkit-font-smoothing: antialiased;
289
+
}
290
+
291
+
.nav__icon {
292
+
margin-right: 4px;
293
+
}
+51
decent/util.js
+51
decent/util.js
···
1
+
var pull = require('pull-stream')
2
+
var Next = require('pull-next')
3
+
4
+
function get (obj, path) {
5
+
if(!obj) return undefined
6
+
if('string' === typeof path) return obj[path]
7
+
if(Array.isArray(path)) {
8
+
for(var i = 0; obj && i < path.length; i++)
9
+
obj = obj[path[i]]
10
+
return obj
11
+
}
12
+
}
13
+
14
+
function clone (obj) {
15
+
var _obj = {}
16
+
for(var k in obj) _obj[k] = obj[k]
17
+
return _obj
18
+
}
19
+
20
+
exports.next = function (createStream, opts, property, range) {
21
+
22
+
range = range || (opts.reverse ? 'lt' : 'gt')
23
+
property = property || 'timestamp'
24
+
25
+
var last = null, count = -1
26
+
return Next(function () {
27
+
if(last) {
28
+
if(count === 0) return
29
+
var value = opts[range] = get(last, property)
30
+
if(value == null) return
31
+
last = null
32
+
}
33
+
return pull(
34
+
createStream(clone(opts)),
35
+
pull.through(function (msg) {
36
+
count ++
37
+
if(!msg.sync) {
38
+
last = msg
39
+
}
40
+
}, function (err) {
41
+
//retry on errors...
42
+
if(err) return count = -1
43
+
//end stream if there were no results
44
+
if(last == null) last = {}
45
+
})
46
+
)
47
+
})
48
+
}
49
+
50
+
51
+
+3795
decent/yarn.lock
+3795
decent/yarn.lock
···
1
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+
# yarn lockfile v1
3
+
4
+
5
+
abbrev@1:
6
+
version "1.0.9"
7
+
resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz"
8
+
integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==
9
+
10
+
abstract-leveldown@~2.4.0:
11
+
version "2.4.1"
12
+
resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz"
13
+
integrity sha512-sW2ic/lpOHcEhqCrUNgjN0EMhzsqNF8WO8YE5q3n/v3eVUBX24O/gAUMwwFj2BtC/DibKFXn/vA4WYhYt+NNnw==
14
+
dependencies:
15
+
xtend "~4.0.0"
16
+
17
+
abstract-leveldown@~2.6.1:
18
+
version "2.6.3"
19
+
resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz"
20
+
integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==
21
+
dependencies:
22
+
xtend "~4.0.0"
23
+
24
+
acorn-node@^1.8.2:
25
+
version "1.8.2"
26
+
resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz"
27
+
integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
28
+
dependencies:
29
+
acorn "^7.0.0"
30
+
acorn-walk "^7.0.0"
31
+
xtend "^4.0.2"
32
+
33
+
acorn-walk@^7.0.0:
34
+
version "7.2.0"
35
+
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
36
+
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
37
+
38
+
acorn@^1.0.3:
39
+
version "1.2.2"
40
+
resolved "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz"
41
+
integrity sha512-FsqWmApWGMGLKKNpHt12PMc5AK7BaZee0WRh04fCysmTzHe+rrKOa2MKjORhnzfpe4r0JnfdqHn02iDA9Dqj2A==
42
+
43
+
acorn@^2.7.0:
44
+
version "2.7.0"
45
+
resolved "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz"
46
+
integrity sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg==
47
+
48
+
acorn@^7.0.0:
49
+
version "7.4.1"
50
+
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
51
+
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
52
+
53
+
after@~0.8.1:
54
+
version "0.8.2"
55
+
resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz"
56
+
integrity sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==
57
+
58
+
ansi-regex@^2.0.0:
59
+
version "2.0.0"
60
+
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
61
+
integrity sha512-jCcLjwL2jOaTcRIaJkoRteMwNXg8nfJvwT/9K91kwZhH7bf4lsprqZ2+Qa7tSp8BYtejobOCBkDreC07q0KmZw==
62
+
63
+
ansi-styles@^2.2.1:
64
+
version "2.2.1"
65
+
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
66
+
integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==
67
+
68
+
ansi@^0.3.0, ansi@~0.3.1:
69
+
version "0.3.1"
70
+
resolved "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz"
71
+
integrity sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==
72
+
73
+
aproba@^1.0.3:
74
+
version "1.0.4"
75
+
resolved "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz"
76
+
integrity sha512-g4T1BR2vAjWV6GrBYeM7DmHUBe0WB45xRKKpNKxh4zHkUsjdGfANjdHY//9RzHi1XkWTLc1k58ddAUZ81yC8Cw==
77
+
78
+
are-we-there-yet@~1.1.2:
79
+
version "1.1.2"
80
+
resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz"
81
+
integrity sha512-Ph/5XGGWoEy6z2VsZmELQW3qZtrITchV1zMNt1OonqoSoYo9acY23weZ67fLKTaRdMEGBYDx/jDJBGS8YlwPvg==
82
+
dependencies:
83
+
delegates "^1.0.0"
84
+
readable-stream "^2.0.0 || ^1.1.13"
85
+
86
+
array-index@^1.0.0:
87
+
version "1.0.0"
88
+
resolved "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz"
89
+
integrity sha512-jesyNbBkLQgGZMSwA1FanaFjalb1mZUGxGeUEkSDidzgrbjBGhvizJkaItdhkt8eIHFOJC7nDsrXk+BaehTdRw==
90
+
dependencies:
91
+
debug "^2.2.0"
92
+
es6-symbol "^3.0.2"
93
+
94
+
arraybuffer-base64@^1.0.0:
95
+
version "1.0.0"
96
+
resolved "https://registry.npmjs.org/arraybuffer-base64/-/arraybuffer-base64-1.0.0.tgz"
97
+
integrity sha512-ObvQgZtJuUGEhaesM14KFwnqh4UbyUPwWdGvtDzQiQiZizxWL66X4H3jqmzV+KqrgtTUMRBV7YvXsmHyhPbIrA==
98
+
99
+
asn1.js@^4.0.0:
100
+
version "4.8.1"
101
+
resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.8.1.tgz"
102
+
integrity sha512-OSr5ZUGzhiOdp8RQEYLJmkFEb6tRKX11+m7mr7+8/U70T4B0GAQdyx1+ND7rfxv/qRR4LoVmE7ajkpJbGnd7nQ==
103
+
dependencies:
104
+
bn.js "^4.0.0"
105
+
inherits "^2.0.1"
106
+
minimalistic-assert "^1.0.0"
107
+
108
+
asn1@~0.2.3:
109
+
version "0.2.3"
110
+
resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz"
111
+
integrity sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==
112
+
113
+
asn1js@^1.2.12:
114
+
version "1.2.12"
115
+
resolved "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz"
116
+
integrity sha512-eCMbXmmQ/9HMLNJkWRjF8TdX2stMrmK4WiWMZFhhmiMOcmi9dO3XDCuWDAyYn7qb0Oq4PmA0TgnqmzOObmrjpw==
117
+
118
+
assert-plus@^0.2.0:
119
+
version "0.2.0"
120
+
resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"
121
+
integrity sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==
122
+
123
+
assert-plus@^1.0.0:
124
+
version "1.0.0"
125
+
resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
126
+
integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
127
+
128
+
assert@^1.4.0:
129
+
version "1.5.1"
130
+
resolved "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz"
131
+
integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==
132
+
dependencies:
133
+
object.assign "^4.1.4"
134
+
util "^0.10.4"
135
+
136
+
assert@~1.3.0:
137
+
version "1.3.0"
138
+
resolved "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz"
139
+
integrity sha512-5aKcpD+XnHpZ7EGxsuo6uoILNh0rvm0Ypa17GlkrF2CNSPhvdgi3ft9XsL2ajdVOI2I3xuGZnHvlXAeqTZYvXg==
140
+
dependencies:
141
+
util "0.10.3"
142
+
143
+
astw@^2.0.0:
144
+
version "2.0.0"
145
+
resolved "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz"
146
+
integrity sha512-W7zhYzCMisx5WQ9R99ZeTYoHk6wqwmCl55PzslcrI6ON6R3aayFxSaRY7Xzi7couwlC8Gsm2A1BGfKoqMMu4uA==
147
+
dependencies:
148
+
acorn "^1.0.3"
149
+
150
+
async@^1.4.0:
151
+
version "1.5.2"
152
+
resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
153
+
integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==
154
+
155
+
asynckit@^0.4.0:
156
+
version "0.4.0"
157
+
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
158
+
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
159
+
160
+
audio-context@^0.1.0:
161
+
version "0.1.0"
162
+
resolved "https://registry.npmjs.org/audio-context/-/audio-context-0.1.0.tgz"
163
+
integrity sha512-PkXXfY2f96sZf/w8JWCQZn4hHgRK3lqXNRgIPO9JgdwLOyOecH7PAuYFjWdUEDbJ7BuXudTf0WJek7A+XAFyAA==
164
+
dependencies:
165
+
global "~4.2.1"
166
+
167
+
aws-sign2@~0.6.0:
168
+
version "0.6.0"
169
+
resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"
170
+
integrity sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==
171
+
172
+
aws4@^1.2.1:
173
+
version "1.5.0"
174
+
resolved "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz"
175
+
integrity sha512-msbruB31mspZNtdkAMGIpHwGe3salMf4Bu53YJXsO/AmoxrgaVi3DLyP46XKYFKvKJ7Eh/BrLZGS0TMtyzbHlA==
176
+
177
+
balanced-match@^1.0.0:
178
+
version "1.0.2"
179
+
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
180
+
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
181
+
182
+
base64-js@^1.0.2:
183
+
version "1.2.0"
184
+
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz"
185
+
integrity sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg==
186
+
187
+
bcrypt-pbkdf@^1.0.0:
188
+
version "1.0.0"
189
+
resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz"
190
+
integrity sha512-1d7nPZyCV4TvkiRd3dZEqDrcj88tAe3ZxwkKeAJJ9eEoDIHyVPxGbmV1HMFVGa2XH4JHRrwUja36rLzR5BA60g==
191
+
dependencies:
192
+
tweetnacl "^0.14.3"
193
+
194
+
binary-search@^1.2.0:
195
+
version "1.3.2"
196
+
resolved "https://registry.npmjs.org/binary-search/-/binary-search-1.3.2.tgz"
197
+
integrity sha512-ldmlaGfbPu0LfRtPTdCG4oqHj56JYcZDR3xu0GqeXh3LsBXBt0utwBoILSJQIlxcS+GFn5jraOKlR0mGGaRPYw==
198
+
199
+
binary-xhr@0.0.2:
200
+
version "0.0.2"
201
+
resolved "https://registry.npmjs.org/binary-xhr/-/binary-xhr-0.0.2.tgz"
202
+
integrity sha512-KZ4RhQJRIIXimMnY9fbtwsa6x4kVMfusLdu1MWu87VJU6qBiG1nMr4lNPJHCGRCm2rSwH+gbqppLQ05ZQTTa/A==
203
+
dependencies:
204
+
inherits "1.0.0"
205
+
206
+
bindings@^1.2.1, bindings@~1.2.1:
207
+
version "1.2.1"
208
+
resolved "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz"
209
+
integrity sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g==
210
+
211
+
bl@^1.0.0, bl@~1.0.0:
212
+
version "1.0.3"
213
+
resolved "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz"
214
+
integrity sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==
215
+
dependencies:
216
+
readable-stream "~2.0.5"
217
+
218
+
bl@~1.1.2:
219
+
version "1.1.2"
220
+
resolved "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz"
221
+
integrity sha512-uVVYHEQk+OuWvCi5U+iquVXvvGCWXKawjwELIR2XMLsqfV/e2sGDClVBs8OlGIgGsStPRY/Es311YKYIlYCWAg==
222
+
dependencies:
223
+
readable-stream "~2.0.5"
224
+
225
+
blake2s@~1.0.0:
226
+
version "1.0.1"
227
+
resolved "https://registry.npmjs.org/blake2s/-/blake2s-1.0.1.tgz"
228
+
integrity sha512-KAkhueDkhTqQTxcHQ0uue9RNCkDbUr4dPLORhp2McvAYsIewMt2YxVwnO0DJnYJoe63kA5qYe+iK26NzSPfJzA==
229
+
230
+
block-stream@*:
231
+
version "0.0.9"
232
+
resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
233
+
integrity sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==
234
+
dependencies:
235
+
inherits "~2.0.0"
236
+
237
+
bluebird@^3.0.6:
238
+
version "3.4.6"
239
+
resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz"
240
+
integrity sha512-YvvhuCEE6vHQVlxe+ZTuZyXiA9RIXLz1X8YamApVDYf410Y/K0tBTpZ2bTVNsnPVSRviN/mfu2W42BnRfSXA2A==
241
+
242
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
243
+
version "4.11.6"
244
+
resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz"
245
+
integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==
246
+
247
+
boom@2.x.x:
248
+
version "2.10.1"
249
+
resolved "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
250
+
integrity sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==
251
+
dependencies:
252
+
hoek "2.x.x"
253
+
254
+
brace-expansion@^1.1.7:
255
+
version "1.1.12"
256
+
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
257
+
integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
258
+
dependencies:
259
+
balanced-match "^1.0.0"
260
+
concat-map "0.0.1"
261
+
262
+
brorand@^1.0.1:
263
+
version "1.0.6"
264
+
resolved "https://registry.npmjs.org/brorand/-/brorand-1.0.6.tgz"
265
+
integrity sha512-aCTTKVBjiqRQjfe1FEmvqxVkX9C3F8XCEPyU3mT/UF/58tZZMJxmno7HySXqxNCPeysUAMgS1YcICxQc6f+O4w==
266
+
267
+
browselectrify@^1.0.1:
268
+
version "1.0.1"
269
+
resolved "https://registry.npmjs.org/browselectrify/-/browselectrify-1.0.1.tgz"
270
+
integrity sha512-ETOPHKq7XrP9+92lOe5p9IFzXfojPcXz6+wcQOZMZ0Hh2jYz8H4lyvh+qnljYFo5fqzc5VzyEKEzQ2tFVDrwJg==
271
+
dependencies:
272
+
browserify "^13.0.1"
273
+
pull-cat "^1.1.10"
274
+
pull-file "^0.5.0"
275
+
pull-stream "^3.4.3"
276
+
stream-to-pull-stream "^1.7.0"
277
+
278
+
browser-pack@^6.0.1:
279
+
version "6.0.1"
280
+
resolved "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.1.tgz"
281
+
integrity sha512-NbySCoD9oUtZHaR5fSo2PWtno1WeipoTUUFHJSCD4kB7tKXI1J2A+0sdBPTZgab7KLyz54TDBXIkOaB1kNuwjQ==
282
+
dependencies:
283
+
combine-source-map "~0.7.1"
284
+
defined "^1.0.0"
285
+
JSONStream "^1.0.3"
286
+
through2 "^2.0.0"
287
+
umd "^3.0.0"
288
+
289
+
browser-resolve@^1.11.0, browser-resolve@^1.7.0:
290
+
version "1.11.2"
291
+
resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz"
292
+
integrity sha512-IBmTH6PPKm10Mnf/ja+YKXZEyH7pyrxBUbbyr0ZEDBGhNOIWVHo41gTWWU4DhYPKt6JIx2YwTsyrULjTsx7/+A==
293
+
dependencies:
294
+
resolve "1.1.7"
295
+
296
+
browser-resolve@^2.0.0:
297
+
version "2.0.0"
298
+
resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz"
299
+
integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==
300
+
dependencies:
301
+
resolve "^1.17.0"
302
+
303
+
browser-split@0.0.0:
304
+
version "0.0.0"
305
+
resolved "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz"
306
+
integrity sha512-CNXO3AXAS1H/kOGQkPjucm1161/XoF3aVkMfujqwk85XN/D/MkQMvoB81lXyX/2rerZS+hPAYYRR3mAW05awjQ==
307
+
308
+
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
309
+
version "1.0.6"
310
+
resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz"
311
+
integrity sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug==
312
+
dependencies:
313
+
buffer-xor "^1.0.2"
314
+
cipher-base "^1.0.0"
315
+
create-hash "^1.1.0"
316
+
evp_bytestokey "^1.0.0"
317
+
inherits "^2.0.1"
318
+
319
+
browserify-cipher@^1.0.0:
320
+
version "1.0.0"
321
+
resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz"
322
+
integrity sha512-eR/Xnl6GNhMILoylgYn0CXdb5rbDRp3awDF0KXd/S96E+l49E9EWjSmbJPPM03Gj0nX6Ihydv/3wmtml5hnGrw==
323
+
dependencies:
324
+
browserify-aes "^1.0.4"
325
+
browserify-des "^1.0.0"
326
+
evp_bytestokey "^1.0.0"
327
+
328
+
browserify-des@^1.0.0:
329
+
version "1.0.0"
330
+
resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz"
331
+
integrity sha512-8ryPIDvl6sFWCs8M8XOLjysP3BmwTUldIuX5yWHu76zazZpMguxHYFJI+kQ99a0lpuPF5jt+qzkFuMtjgo2xBg==
332
+
dependencies:
333
+
cipher-base "^1.0.1"
334
+
des.js "^1.0.0"
335
+
inherits "^2.0.1"
336
+
337
+
browserify-rsa@^4.0.0:
338
+
version "4.0.1"
339
+
resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz"
340
+
integrity sha512-+YpEyaLDDvvdzIxQ+cCx73r5YEhS3ANGOkiHdyWqW4t3gdeoNEYjSiQwntbU4Uo2/9yRkpYX3SRFeH+7jc2Duw==
341
+
dependencies:
342
+
bn.js "^4.1.0"
343
+
randombytes "^2.0.1"
344
+
345
+
browserify-sign@^4.0.0:
346
+
version "4.0.0"
347
+
resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz"
348
+
integrity sha512-jD8i7sSI7TXGxUzTS8JvpiXbyt6S4S56n+uiQ2ycWKB3aKEHN4IpuAowIjGBsPVkhk6LA2S2aQzi0J5eiagQcA==
349
+
dependencies:
350
+
bn.js "^4.1.1"
351
+
browserify-rsa "^4.0.0"
352
+
create-hash "^1.1.0"
353
+
create-hmac "^1.1.2"
354
+
elliptic "^6.0.0"
355
+
inherits "^2.0.1"
356
+
parse-asn1 "^5.0.0"
357
+
358
+
browserify-zlib@~0.1.2:
359
+
version "0.1.4"
360
+
resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz"
361
+
integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==
362
+
dependencies:
363
+
pako "~0.2.0"
364
+
365
+
browserify-zlib@~0.2.0:
366
+
version "0.2.0"
367
+
resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz"
368
+
integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
369
+
dependencies:
370
+
pako "~1.0.5"
371
+
372
+
browserify@^13.0.1:
373
+
version "13.1.0"
374
+
resolved "https://registry.npmjs.org/browserify/-/browserify-13.1.0.tgz"
375
+
integrity sha512-i5iASp425UxqX6nhOfsxJVLmm+GKvPcapI8RsPixFSNQQbSbrZsYYLzPK1amobpeOuDF7nJDq/upZYkmw/C59w==
376
+
dependencies:
377
+
assert "~1.3.0"
378
+
browser-pack "^6.0.1"
379
+
browser-resolve "^1.11.0"
380
+
browserify-zlib "~0.1.2"
381
+
buffer "^4.1.0"
382
+
concat-stream "~1.5.1"
383
+
console-browserify "^1.1.0"
384
+
constants-browserify "~1.0.0"
385
+
crypto-browserify "^3.0.0"
386
+
defined "^1.0.0"
387
+
deps-sort "^2.0.0"
388
+
domain-browser "~1.1.0"
389
+
duplexer2 "~0.1.2"
390
+
events "~1.1.0"
391
+
glob "^5.0.15"
392
+
has "^1.0.0"
393
+
htmlescape "^1.1.0"
394
+
https-browserify "~0.0.0"
395
+
inherits "~2.0.1"
396
+
insert-module-globals "^7.0.0"
397
+
JSONStream "^1.0.3"
398
+
labeled-stream-splicer "^2.0.0"
399
+
module-deps "^4.0.2"
400
+
os-browserify "~0.1.1"
401
+
parents "^1.0.1"
402
+
path-browserify "~0.0.0"
403
+
process "~0.11.0"
404
+
punycode "^1.3.2"
405
+
querystring-es3 "~0.2.0"
406
+
read-only-stream "^2.0.0"
407
+
readable-stream "^2.0.2"
408
+
resolve "^1.1.4"
409
+
shasum "^1.0.0"
410
+
shell-quote "^1.4.3"
411
+
stream-browserify "^2.0.0"
412
+
stream-http "^2.0.0"
413
+
string_decoder "~0.10.0"
414
+
subarg "^1.0.0"
415
+
syntax-error "^1.1.1"
416
+
through2 "^2.0.0"
417
+
timers-browserify "^1.0.1"
418
+
tty-browserify "~0.0.0"
419
+
url "~0.11.0"
420
+
util "~0.10.1"
421
+
vm-browserify "~0.0.1"
422
+
xtend "^4.0.0"
423
+
424
+
browserify@^16.5.2:
425
+
version "16.5.2"
426
+
resolved "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz"
427
+
integrity sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==
428
+
dependencies:
429
+
assert "^1.4.0"
430
+
browser-pack "^6.0.1"
431
+
browser-resolve "^2.0.0"
432
+
browserify-zlib "~0.2.0"
433
+
buffer "~5.2.1"
434
+
cached-path-relative "^1.0.0"
435
+
concat-stream "^1.6.0"
436
+
console-browserify "^1.1.0"
437
+
constants-browserify "~1.0.0"
438
+
crypto-browserify "^3.0.0"
439
+
defined "^1.0.0"
440
+
deps-sort "^2.0.0"
441
+
domain-browser "^1.2.0"
442
+
duplexer2 "~0.1.2"
443
+
events "^2.0.0"
444
+
glob "^7.1.0"
445
+
has "^1.0.0"
446
+
htmlescape "^1.1.0"
447
+
https-browserify "^1.0.0"
448
+
inherits "~2.0.1"
449
+
insert-module-globals "^7.0.0"
450
+
JSONStream "^1.0.3"
451
+
labeled-stream-splicer "^2.0.0"
452
+
mkdirp-classic "^0.5.2"
453
+
module-deps "^6.2.3"
454
+
os-browserify "~0.3.0"
455
+
parents "^1.0.1"
456
+
path-browserify "~0.0.0"
457
+
process "~0.11.0"
458
+
punycode "^1.3.2"
459
+
querystring-es3 "~0.2.0"
460
+
read-only-stream "^2.0.0"
461
+
readable-stream "^2.0.2"
462
+
resolve "^1.1.4"
463
+
shasum "^1.0.0"
464
+
shell-quote "^1.6.1"
465
+
stream-browserify "^2.0.0"
466
+
stream-http "^3.0.0"
467
+
string_decoder "^1.1.1"
468
+
subarg "^1.0.0"
469
+
syntax-error "^1.1.1"
470
+
through2 "^2.0.0"
471
+
timers-browserify "^1.0.1"
472
+
tty-browserify "0.0.1"
473
+
url "~0.11.0"
474
+
util "~0.10.1"
475
+
vm-browserify "^1.0.0"
476
+
xtend "^4.0.0"
477
+
478
+
buffer-from@^1.0.0:
479
+
version "1.1.2"
480
+
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
481
+
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
482
+
483
+
buffer-shims@^1.0.0:
484
+
version "1.0.0"
485
+
resolved "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
486
+
integrity sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==
487
+
488
+
buffer-v6-polyfill@^1.0.3:
489
+
version "1.0.3"
490
+
resolved "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.3.tgz"
491
+
integrity sha512-8erfTDCuA8sRrDomLB81Swwq04euTvxyqRMbg4NrCdIDDne95fwOkKfZCRvfXhlhukofq0qYOYzdPDYitEew+g==
492
+
493
+
buffer-xor@^1.0.2:
494
+
version "1.0.3"
495
+
resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz"
496
+
integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
497
+
498
+
buffer@^4.1.0:
499
+
version "4.9.1"
500
+
resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz"
501
+
integrity sha512-DNK4ruAqtyHaN8Zne7PkBTO+dD1Lr0YfTduMqlIyjvQIoztBkUxrvL+hKeLW8NXFKHOq/2upkxuoS9znQ9bW9A==
502
+
dependencies:
503
+
base64-js "^1.0.2"
504
+
ieee754 "^1.1.4"
505
+
isarray "^1.0.0"
506
+
507
+
buffer@~5.2.1:
508
+
version "5.2.1"
509
+
resolved "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz"
510
+
integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
511
+
dependencies:
512
+
base64-js "^1.0.2"
513
+
ieee754 "^1.1.4"
514
+
515
+
builtin-status-codes@^2.0.0:
516
+
version "2.0.0"
517
+
resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz"
518
+
integrity sha512-8KPx+JfZWi0K8L5sycIOA6/ZFZbaFKXDeUIXaqwUnhed1Ge1cB0wyq+bNDjKnL9AR2Uj3m/khkF6CDolsyMitA==
519
+
520
+
builtin-status-codes@^3.0.0:
521
+
version "3.0.0"
522
+
resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
523
+
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
524
+
525
+
bytewise-core@^1.2.2:
526
+
version "1.2.3"
527
+
resolved "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz"
528
+
integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==
529
+
dependencies:
530
+
typewise-core "^1.2"
531
+
532
+
bytewise@^1.1.0:
533
+
version "1.1.0"
534
+
resolved "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz"
535
+
integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==
536
+
dependencies:
537
+
bytewise-core "^1.2.2"
538
+
typewise "^1.0.3"
539
+
540
+
cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
541
+
version "1.1.0"
542
+
resolved "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz"
543
+
integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==
544
+
545
+
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
546
+
version "1.0.2"
547
+
resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz"
548
+
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
549
+
dependencies:
550
+
es-errors "^1.3.0"
551
+
function-bind "^1.1.2"
552
+
553
+
call-bind@^1.0.8:
554
+
version "1.0.8"
555
+
resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz"
556
+
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
557
+
dependencies:
558
+
call-bind-apply-helpers "^1.0.0"
559
+
es-define-property "^1.0.0"
560
+
get-intrinsic "^1.2.4"
561
+
set-function-length "^1.2.2"
562
+
563
+
call-bound@^1.0.3:
564
+
version "1.0.4"
565
+
resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
566
+
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
567
+
dependencies:
568
+
call-bind-apply-helpers "^1.0.2"
569
+
get-intrinsic "^1.3.0"
570
+
571
+
caseless@~0.11.0:
572
+
version "0.11.0"
573
+
resolved "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz"
574
+
integrity sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==
575
+
576
+
chalk@^1.1.1:
577
+
version "1.1.3"
578
+
resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
579
+
integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==
580
+
dependencies:
581
+
ansi-styles "^2.2.1"
582
+
escape-string-regexp "^1.0.2"
583
+
has-ansi "^2.0.0"
584
+
strip-ansi "^3.0.0"
585
+
supports-color "^2.0.0"
586
+
587
+
chloride-test@^1.1.0:
588
+
version "1.1.1"
589
+
resolved "https://registry.npmjs.org/chloride-test/-/chloride-test-1.1.1.tgz"
590
+
integrity sha512-zD9TVM771/NQCyzrfBRDo2WkS8oGOStSpRi86iP//hsqijm/cejf+BwiIldtv1Ujix4DQctmr1HrXXIbLa/M5g==
591
+
dependencies:
592
+
json-buffer "^2.0.11"
593
+
594
+
chloride@^2.0.1, chloride@^2.1.1, chloride@^2.2.0, chloride@^2.2.1:
595
+
version "2.2.4"
596
+
resolved "https://registry.npmjs.org/chloride/-/chloride-2.2.4.tgz"
597
+
integrity sha512-BqkVXAJnLjseg96sMBDuViGjHFi8cjBjs6c7M47hwwjiRgowkKL+ZOVE1ibiKdH/i7mTOAAaSQXR9goCSIHxuQ==
598
+
dependencies:
599
+
is-electron "^2.0.0"
600
+
sodium-browserify "^1.0.3"
601
+
sodium-browserify-tweetnacl "^0.2.0"
602
+
optionalDependencies:
603
+
sodium-prebuilt "1.0.22"
604
+
605
+
cipher-base@^1.0.0, cipher-base@^1.0.1:
606
+
version "1.0.3"
607
+
resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz"
608
+
integrity sha512-Ci/6dw5oG7K7Eqvpo3xbK3WYpZdT8RjSUn87DZHkKShDVbB9iIxCBKNXdm7IlpV+gwt7uDwZDhV0mmrRSkcOsA==
609
+
dependencies:
610
+
inherits "^2.0.1"
611
+
612
+
class-list@~0.1.0, class-list@~0.1.1:
613
+
version "0.1.1"
614
+
resolved "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz"
615
+
integrity sha512-zqR0uW+VsLtyQhixBhkdQ+z6B8+Y8HTh28kdSVjJ4zTTKM7Xz2asAQSya9VI6m/34F6N6Ktm0mrchKB+E5a8Xw==
616
+
dependencies:
617
+
indexof "0.0.1"
618
+
619
+
code-point-at@^1.0.0:
620
+
version "1.0.1"
621
+
resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz"
622
+
integrity sha512-EkgYXIIg8KktHWJo0nRM6NpAmoIg6tXxW91YX337LY06hUijIostM9dWfBt9O/4zue4ONqRvEQwo8diSEHrYvA==
623
+
dependencies:
624
+
number-is-nan "^1.0.0"
625
+
626
+
combine-source-map@~0.7.1:
627
+
version "0.7.2"
628
+
resolved "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz"
629
+
integrity sha512-MwoXgyZ+d44+GhTg4Vi0V9QcMSrH378vuBwR9riv7sv1r7mslA05tV1dT3+8KHLeoHe4mtM1r2K9xkbhJ451bA==
630
+
dependencies:
631
+
convert-source-map "~1.1.0"
632
+
inline-source-map "~0.6.0"
633
+
lodash.memoize "~3.0.3"
634
+
source-map "~0.5.3"
635
+
636
+
combined-stream@^1.0.5, combined-stream@~1.0.5:
637
+
version "1.0.5"
638
+
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
639
+
integrity sha512-JgSRe4l4UzPwpJuxfcPWEK1SCrL4dxNjp1uqrQLMop3QZUVo+hDU8w9BJKA4JPbulTWI+UzrI2UA3tK12yQ6bg==
640
+
dependencies:
641
+
delayed-stream "~1.0.0"
642
+
643
+
commander@^2.19.0, commander@^2.9.0:
644
+
version "2.20.3"
645
+
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
646
+
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
647
+
648
+
concat-map@0.0.1:
649
+
version "0.0.1"
650
+
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
651
+
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
652
+
653
+
concat-stream@^1.6.0, concat-stream@~1.6.0:
654
+
version "1.6.2"
655
+
resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"
656
+
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
657
+
dependencies:
658
+
buffer-from "^1.0.0"
659
+
inherits "^2.0.3"
660
+
readable-stream "^2.2.2"
661
+
typedarray "^0.0.6"
662
+
663
+
concat-stream@~1.5.0, concat-stream@~1.5.1:
664
+
version "1.5.2"
665
+
resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz"
666
+
integrity sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==
667
+
dependencies:
668
+
inherits "~2.0.1"
669
+
readable-stream "~2.0.0"
670
+
typedarray "~0.0.5"
671
+
672
+
console-browserify@^1.1.0:
673
+
version "1.1.0"
674
+
resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz"
675
+
integrity sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==
676
+
dependencies:
677
+
date-now "^0.1.4"
678
+
679
+
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
680
+
version "1.1.0"
681
+
resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
682
+
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
683
+
684
+
constants-browserify@~1.0.0:
685
+
version "1.0.0"
686
+
resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz"
687
+
integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
688
+
689
+
cont@^1.0.3, cont@~1.0.3:
690
+
version "1.0.3"
691
+
resolved "https://registry.npmjs.org/cont/-/cont-1.0.3.tgz"
692
+
integrity sha512-lZzUsnNnzBW4EN+Mll8J54cdHn6JzKyHpa9ftxxsPwkWfhdYRIHph9dFdmi0ibfqhnvR103tQ61eAF57FF87IA==
693
+
dependencies:
694
+
continuable "~1.2.0"
695
+
continuable-para "~1.2.0"
696
+
continuable-series "~1.2.0"
697
+
698
+
continuable-hash@~0.1.4:
699
+
version "0.1.4"
700
+
resolved "https://registry.npmjs.org/continuable-hash/-/continuable-hash-0.1.4.tgz"
701
+
integrity sha512-Gu5kdDzwmCymZ2tROViH0VYSd0iXDDaOjn8iG51FyZreS6OuqEJAE+a3sJ6/Ky6roKOHYHDYD8Ttxj+a1tyYrg==
702
+
dependencies:
703
+
continuable "~1.1.6"
704
+
705
+
continuable-list@~0.1.5:
706
+
version "0.1.6"
707
+
resolved "https://registry.npmjs.org/continuable-list/-/continuable-list-0.1.6.tgz"
708
+
integrity sha512-dqfYFtC/YRR4fUuZyJ8A+VKX/oV8E+atSCCcOvkuHsB6MFkiyI9LrDlUXCnHYowuuDu5vYqcAiRU2hiGXtcb7w==
709
+
dependencies:
710
+
continuable "~1.1.6"
711
+
712
+
continuable-para@~1.2.0:
713
+
version "1.2.0"
714
+
resolved "https://registry.npmjs.org/continuable-para/-/continuable-para-1.2.0.tgz"
715
+
integrity sha512-XjPo974RGEJqnvFVT9PWxG97d/NCg58mwmWDbKXqTZBZuUnMIjkx0vde+xerkUuymk8DR+YUAcllK8J5/O4Leg==
716
+
dependencies:
717
+
continuable-hash "~0.1.4"
718
+
continuable-list "~0.1.5"
719
+
720
+
continuable-series@~1.2.0:
721
+
version "1.2.0"
722
+
resolved "https://registry.npmjs.org/continuable-series/-/continuable-series-1.2.0.tgz"
723
+
integrity sha512-xMAlREs3m/IM0VCzuh0TRBXpjd6tl6zi3cMgiwcywIPFcCmNlcFNA6XCtA2cEx6Kq7EE6c1JVDVl3WGepp6a5g==
724
+
725
+
continuable@~1.1.6:
726
+
version "1.1.8"
727
+
resolved "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz"
728
+
integrity sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA==
729
+
730
+
continuable@~1.2.0:
731
+
version "1.2.0"
732
+
resolved "https://registry.npmjs.org/continuable/-/continuable-1.2.0.tgz"
733
+
integrity sha512-DMksZyrS34yEX+DTGyt9h8/6ONHRBH+PpQ5ev3YdCy5J41r0nMNv+psAujoeoT1mJf+fzKhzacR9o1M1ys2tBQ==
734
+
735
+
convert-source-map@~1.1.0:
736
+
version "1.1.3"
737
+
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz"
738
+
integrity sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==
739
+
740
+
core-util-is@~1.0.0:
741
+
version "1.0.2"
742
+
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
743
+
integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
744
+
745
+
create-ecdh@^4.0.0:
746
+
version "4.0.0"
747
+
resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz"
748
+
integrity sha512-7rYnhx2rzljQb/UszJC+KvDO8muh2kJm0meQ+VxlDoEHQ3vnZcaHRLCdIReCasEt3s5gJUy4FkkOw2L7HomsQQ==
749
+
dependencies:
750
+
bn.js "^4.1.0"
751
+
elliptic "^6.0.0"
752
+
753
+
create-hash@^1.1.0, create-hash@^1.1.1:
754
+
version "1.1.2"
755
+
resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz"
756
+
integrity sha512-pGMQxzwaMm3+Bsw36lktDMRB6q50KdoLxBY1hvB4jf/wB7bgmSACscKCVnJQpDwo7VoLKTMomEuaeNHKtNT/rw==
757
+
dependencies:
758
+
cipher-base "^1.0.1"
759
+
inherits "^2.0.1"
760
+
ripemd160 "^1.0.0"
761
+
sha.js "^2.3.6"
762
+
763
+
create-hmac@^1.1.0, create-hmac@^1.1.2:
764
+
version "1.1.4"
765
+
resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz"
766
+
integrity sha512-USPrJgMKn+vsZuEcvwmrZV7D2UWLhWlQJ9HHGrS84fxX6tSxfO6MAacnD6alDA3a0LAVtC1N3BU1Wb/6H/yUVQ==
767
+
dependencies:
768
+
create-hash "^1.1.0"
769
+
inherits "^2.0.1"
770
+
771
+
cryptiles@2.x.x:
772
+
version "2.0.5"
773
+
resolved "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"
774
+
integrity sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==
775
+
dependencies:
776
+
boom "2.x.x"
777
+
778
+
crypto-browserify@^3.0.0:
779
+
version "3.11.0"
780
+
resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz"
781
+
integrity sha512-P9qJXODwW1V0tNZ71FhQEViD3EEfFhojQMOiN1P8C7DrbMJSvU6l3cLnVN0G7ujoNpaQwvFYUPNuEYRyQcwMfA==
782
+
dependencies:
783
+
browserify-cipher "^1.0.0"
784
+
browserify-sign "^4.0.0"
785
+
create-ecdh "^4.0.0"
786
+
create-hash "^1.1.0"
787
+
create-hmac "^1.1.0"
788
+
diffie-hellman "^5.0.0"
789
+
inherits "^2.0.1"
790
+
pbkdf2 "^3.0.3"
791
+
public-encrypt "^4.0.0"
792
+
randombytes "^2.0.0"
793
+
794
+
d@^0.1.1, d@~0.1.1:
795
+
version "0.1.1"
796
+
resolved "https://registry.npmjs.org/d/-/d-0.1.1.tgz"
797
+
integrity sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==
798
+
dependencies:
799
+
es5-ext "~0.10.2"
800
+
801
+
dashdash@^1.12.0:
802
+
version "1.14.0"
803
+
resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz"
804
+
integrity sha512-yQoNs2JYflS72nKEufCisG/IytQVVtsIRGVUKPsxI0QZs/Q8gZVBR3YUxHYbW1mLT2Q41HQU4seotPHlEHw36Q==
805
+
dependencies:
806
+
assert-plus "^1.0.0"
807
+
808
+
dataurl-@^0.1.0:
809
+
version "0.1.0"
810
+
resolved "https://registry.npmjs.org/dataurl-/-/dataurl--0.1.0.tgz"
811
+
integrity sha512-J1Veu9JMYJIEl+jEiwhNzY+NoWFFsvEpv79YctEXquXr3PRB0xuAr4SZnGpm0MDJHiLIbOhu1VDPVQFOvlrwYw==
812
+
813
+
date-now@^0.1.4:
814
+
version "0.1.4"
815
+
resolved "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"
816
+
integrity sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw==
817
+
818
+
debug@^2.2.0:
819
+
version "2.2.0"
820
+
resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz"
821
+
integrity sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==
822
+
dependencies:
823
+
ms "0.7.1"
824
+
825
+
decompress-response@^3.3.0:
826
+
version "3.3.0"
827
+
resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz"
828
+
integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==
829
+
dependencies:
830
+
mimic-response "^1.0.0"
831
+
832
+
deep-equal@~0.2.1:
833
+
version "0.2.2"
834
+
resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz"
835
+
integrity sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ==
836
+
837
+
deep-equal@~1.0.0:
838
+
version "1.0.1"
839
+
resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz"
840
+
integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==
841
+
842
+
deep-extend@^0.4.0, deep-extend@~0.4.0:
843
+
version "0.4.1"
844
+
resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
845
+
integrity sha512-td/IpUMQ7E0yjmU8s3orgl5+Fvv41C8p0zzf+IRYVuE3bM5Fc0G3hyln0mz9VOPt5T7KahPU3hMdR0B6t9cdhQ==
846
+
847
+
deferred-leveldown@~1.2.1:
848
+
version "1.2.1"
849
+
resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz"
850
+
integrity sha512-g3fM2CbrCd7pfSUHsVlZoJ/VGM1Rk19Fq5BEyvZrrIptHuFn/pp+1o1LdGP87erNdYb59Wt2ePhfDjm+Go8/0A==
851
+
dependencies:
852
+
abstract-leveldown "~2.4.0"
853
+
854
+
define-data-property@^1.0.1, define-data-property@^1.1.4:
855
+
version "1.1.4"
856
+
resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz"
857
+
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
858
+
dependencies:
859
+
es-define-property "^1.0.0"
860
+
es-errors "^1.3.0"
861
+
gopd "^1.0.1"
862
+
863
+
define-properties@^1.2.1:
864
+
version "1.2.1"
865
+
resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz"
866
+
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
867
+
dependencies:
868
+
define-data-property "^1.0.1"
869
+
has-property-descriptors "^1.0.0"
870
+
object-keys "^1.1.1"
871
+
872
+
defined@^1.0.0:
873
+
version "1.0.0"
874
+
resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz"
875
+
integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==
876
+
877
+
delayed-stream@~1.0.0:
878
+
version "1.0.0"
879
+
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
880
+
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
881
+
882
+
delegates@^1.0.0:
883
+
version "1.0.0"
884
+
resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
885
+
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
886
+
887
+
depject@^3.0.0:
888
+
version "3.2.0"
889
+
resolved "https://registry.npmjs.org/depject/-/depject-3.2.0.tgz"
890
+
integrity sha512-dGRQTJo5BNdF2c/NUPj5xBDOrSh/ZtJ6kbPphLI9crr6xkP4xIbTzN49ORMCaOACT+tM7YGWZy4EpmqVnd9apQ==
891
+
dependencies:
892
+
libnested "^1.1.0"
893
+
894
+
deps-sort@^2.0.0:
895
+
version "2.0.0"
896
+
resolved "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz"
897
+
integrity sha512-SdbEF/hgr/EyZ2PfW1DzRT5jKUC7ilCmIMxH3WIqPAm9EGvpcudeS/eW7FbM3M7mYMsdopvkQhM5rVGAIW4wlg==
898
+
dependencies:
899
+
JSONStream "^1.0.3"
900
+
shasum "^1.0.0"
901
+
subarg "^1.0.0"
902
+
through2 "^2.0.0"
903
+
904
+
des.js@^1.0.0:
905
+
version "1.0.0"
906
+
resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz"
907
+
integrity sha512-QlJHGiTiOmW4z3EO0qKwjM2Mb+EmOlBHbpC6QgTiXB913NxMKttEuV2SJ+eLA12sMKDg1N8HnncfAtYaNnU+cg==
908
+
dependencies:
909
+
inherits "^2.0.1"
910
+
minimalistic-assert "^1.0.0"
911
+
912
+
detect-libc@^1.0.3:
913
+
version "1.0.3"
914
+
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz"
915
+
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
916
+
917
+
detective@^4.0.0:
918
+
version "4.3.1"
919
+
resolved "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz"
920
+
integrity sha512-/9qiE/5MI6RVAJhb6XTrYocC6MF2DixqvnFfsSq9iOGSwmEXIv8eNmOijOrsHpM1L5Cq1I/cKOCClzC9CmqJaQ==
921
+
dependencies:
922
+
acorn "^1.0.3"
923
+
defined "^1.0.0"
924
+
925
+
detective@^5.2.0:
926
+
version "5.2.1"
927
+
resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz"
928
+
integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
929
+
dependencies:
930
+
acorn-node "^1.8.2"
931
+
defined "^1.0.0"
932
+
minimist "^1.2.6"
933
+
934
+
diffie-hellman@^5.0.0:
935
+
version "5.0.2"
936
+
resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz"
937
+
integrity sha512-6bFNThpXO1MSkYrHm2SPXvfJQ3h4gChXxj5RToODJGCs7Df79q+KNJAiB71Nut2n50ZLc35NTOPVc7jYPPWwtg==
938
+
dependencies:
939
+
bn.js "^4.1.0"
940
+
miller-rabin "^4.0.0"
941
+
randombytes "^2.0.0"
942
+
943
+
discontinuous-range@1.0.0:
944
+
version "1.0.0"
945
+
resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz"
946
+
integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==
947
+
948
+
dom-walk@^0.1.0:
949
+
version "0.1.1"
950
+
resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz"
951
+
integrity sha512-8CGZnLAdYN/o0SHjlP3nLvliHpi2f/prVU63/Hc4DTDpBgsNVAJekegjFtxfZ7NTUEDzHUByjX1gT3eYakIKqg==
952
+
953
+
domain-browser@^1.2.0:
954
+
version "1.2.0"
955
+
resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz"
956
+
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
957
+
958
+
domain-browser@~1.1.0:
959
+
version "1.1.7"
960
+
resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz"
961
+
integrity sha512-fJ5MoHxe69h3E4/lJtFRhcWwLb04bhIBSfvCEMS1YDH+/9yEZTqBHTSTgch8nCP5tE5k2gdQEjodUqJzy7qJ9Q==
962
+
963
+
dunder-proto@^1.0.1:
964
+
version "1.0.1"
965
+
resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz"
966
+
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
967
+
dependencies:
968
+
call-bind-apply-helpers "^1.0.1"
969
+
es-errors "^1.3.0"
970
+
gopd "^1.2.0"
971
+
972
+
duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
973
+
version "0.1.4"
974
+
resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz"
975
+
integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==
976
+
dependencies:
977
+
readable-stream "^2.0.2"
978
+
979
+
duplexer2@~0.0.2:
980
+
version "0.0.2"
981
+
resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz"
982
+
integrity sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==
983
+
dependencies:
984
+
readable-stream "~1.1.9"
985
+
986
+
ecc-jsbn@~0.1.1:
987
+
version "0.1.1"
988
+
resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz"
989
+
integrity sha512-8Pvg9QY16SYajEL9W1Lk+9yM7XCK/MOq2wibslLZYAAEEkbAIO6mLkW+GFYbvvw8qTuDFzFMg40rS9IxkNCWPg==
990
+
dependencies:
991
+
jsbn "~0.1.0"
992
+
993
+
ed2curve@^0.1.4:
994
+
version "0.1.4"
995
+
resolved "https://registry.npmjs.org/ed2curve/-/ed2curve-0.1.4.tgz"
996
+
integrity sha512-hDZWhCHZ1wu4P2g2RVsM2MjDmmJzhvcsXr5qHUSBJZXvuhJSunhbVsWoBXdIe0/yTa3RV4UaWpOmFmrVsKr0wA==
997
+
dependencies:
998
+
tweetnacl "0.x.x"
999
+
1000
+
elliptic@^6.0.0:
1001
+
version "6.3.2"
1002
+
resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"
1003
+
integrity sha512-fWMXUkG+piyCogoOd+bUbMYBSO6y2W9BAo28CEZ6wJ06+ZQCgQ2ASgIIlKw/zj0Dny2pa+FN/Do5xMAF4NvUzg==
1004
+
dependencies:
1005
+
bn.js "^4.4.0"
1006
+
brorand "^1.0.1"
1007
+
hash.js "^1.0.0"
1008
+
inherits "^2.0.1"
1009
+
1010
+
emoji-named-characters@^1.0.2:
1011
+
version "1.0.2"
1012
+
resolved "https://registry.npmjs.org/emoji-named-characters/-/emoji-named-characters-1.0.2.tgz"
1013
+
integrity sha512-F9uKjyRsj7qjqZh7yjgHYa7XCgJgGI+nHTUqxkq/TDGuq0wLFbUX0wNes3XC6OA2j2Uu8PaeZD6hvCu5eO3lTA==
1014
+
1015
+
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1016
+
version "1.1.0"
1017
+
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz"
1018
+
integrity sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==
1019
+
dependencies:
1020
+
once "~1.3.0"
1021
+
1022
+
errno@~0.1.1:
1023
+
version "0.1.4"
1024
+
resolved "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz"
1025
+
integrity sha512-B6ww/BgkeBIfyIaOKPMW2zteXdAeXSfOTPv6kGhl3luYw4BOTopQ0EjdGFePGdajvBjLQZq12axGLtHnrp+/Pg==
1026
+
dependencies:
1027
+
prr "~0.0.0"
1028
+
1029
+
es-define-property@^1.0.0, es-define-property@^1.0.1:
1030
+
version "1.0.1"
1031
+
resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz"
1032
+
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
1033
+
1034
+
es-errors@^1.3.0:
1035
+
version "1.3.0"
1036
+
resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
1037
+
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
1038
+
1039
+
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
1040
+
version "1.1.1"
1041
+
resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz"
1042
+
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
1043
+
dependencies:
1044
+
es-errors "^1.3.0"
1045
+
1046
+
es5-ext@^0.10.7, es5-ext@~0.10.11, es5-ext@~0.10.2:
1047
+
version "0.10.12"
1048
+
resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz"
1049
+
integrity sha512-uHlaijZsSZkv+oudKIgdjiC0FtOhHP2oHbcc8kw7i9NQSwazocxfyv2RXOGpHnrUZ+CrrhpjdO+bt+Q9jFYG9g==
1050
+
dependencies:
1051
+
es6-iterator "2"
1052
+
es6-symbol "~3.1"
1053
+
1054
+
es6-iterator@2:
1055
+
version "2.0.0"
1056
+
resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz"
1057
+
integrity sha512-xaFGj2hKo5Np4lJZ3kF0x86zIHuW7qX4ppVhSNx4ya0H9fRYP2V7zBMNiMiw9qR4hKJDSrsDmf/Gq58mnu0tCg==
1058
+
dependencies:
1059
+
d "^0.1.1"
1060
+
es5-ext "^0.10.7"
1061
+
es6-symbol "3"
1062
+
1063
+
es6-symbol@^3.0.2, es6-symbol@~3.1, es6-symbol@3:
1064
+
version "3.1.0"
1065
+
resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz"
1066
+
integrity sha512-mcdWe5FToZm6UsH9ncf1KHfPnUJrdqQZh/or6ESLdg+c8ZnQqDyDuQAfxhf9z+QUC/bN8eLStlmPZHd+cMJONQ==
1067
+
dependencies:
1068
+
d "~0.1.1"
1069
+
es5-ext "~0.10.11"
1070
+
1071
+
escape-string-regexp@^1.0.2:
1072
+
version "1.0.5"
1073
+
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
1074
+
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
1075
+
1076
+
eventemitter2@~1.0.0:
1077
+
version "1.0.5"
1078
+
resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-1.0.5.tgz"
1079
+
integrity sha512-EUFhWUYzqqBZlzBMI+dPU8rnKXfQZEUnitnccQuEIAnvWFHCpt3+4fts2+4dpxLtlsiseVXCMFg37KjYChSxpg==
1080
+
1081
+
events@^2.0.0:
1082
+
version "2.1.0"
1083
+
resolved "https://registry.npmjs.org/events/-/events-2.1.0.tgz"
1084
+
integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==
1085
+
1086
+
events@~1.1.0:
1087
+
version "1.1.1"
1088
+
resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz"
1089
+
integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==
1090
+
1091
+
evp_bytestokey@^1.0.0:
1092
+
version "1.0.0"
1093
+
resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz"
1094
+
integrity sha512-ALeH0LCygUuJllS9VdUF1JLBxD37VHyxlFonQixBbQQLcO50OV2vIqPb1fRSz5WDv8aqTAnK9EMGGiF4fE6ToA==
1095
+
dependencies:
1096
+
create-hash "^1.1.1"
1097
+
1098
+
execspawn@^1.0.1:
1099
+
version "1.0.1"
1100
+
resolved "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz"
1101
+
integrity sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==
1102
+
dependencies:
1103
+
util-extend "^1.0.1"
1104
+
1105
+
expand-template@^1.0.0, expand-template@^1.0.2:
1106
+
version "1.0.3"
1107
+
resolved "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz"
1108
+
integrity sha512-Di+5Idl9j2FdaeXqrHdXTN9bv32nXHBMoNCzzqlwNWpHUXwcMegCbyO/m2kQQ4MTvaA1gKtmHnJHJTB+9TI1yg==
1109
+
1110
+
explain-error@^1.0.1, explain-error@^1.0.4:
1111
+
version "1.0.4"
1112
+
resolved "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz"
1113
+
integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ==
1114
+
1115
+
extend@~3.0.0:
1116
+
version "3.0.0"
1117
+
resolved "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz"
1118
+
integrity sha512-5mYyg57hpD+sFaJmgNL9BidQ5C7dmJE3U5vzlRWbuqG+8dytvYEoxvKs6Tj5cm3LpMsFvRt20qz1ckezmsOUgQ==
1119
+
1120
+
extsprintf@1.0.2:
1121
+
version "1.0.2"
1122
+
resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
1123
+
integrity sha512-g21Br4ELmVaKCVSUSSTXecKG+MiLcHFoby5RPPUmfZdhQTontXUOPf0QK/TvreRjgItRiyO928zxR4TCrnuwmA==
1124
+
1125
+
fast-future@~1.0.2:
1126
+
version "1.0.2"
1127
+
resolved "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz"
1128
+
integrity sha512-ZdgcQC4CDq0OlirlbmaV1Hvl9hrQBKwSJokpemb2Y82uzQ3mFaGxBCCTbr78t3obRsgjqrJAsEaYWZSK3oEcJQ==
1129
+
1130
+
flumeview-level@^2.1.0:
1131
+
version "2.1.1"
1132
+
resolved "https://registry.npmjs.org/flumeview-level/-/flumeview-level-2.1.1.tgz"
1133
+
integrity sha512-1hvF6npbtXZpSk4FGXF0M/PE4iGFZvXf6mx6pjo8ui7Qh0vy7alAqjJZGlcO27AeGOAjQCZYH7nSH+lmYu8hVg==
1134
+
dependencies:
1135
+
bytewise "^1.1.0"
1136
+
explain-error "^1.0.4"
1137
+
level "^1.7.0"
1138
+
ltgt "^2.1.3"
1139
+
mkdirp "^0.5.1"
1140
+
obv "0.0.0"
1141
+
pull-level "^2.0.3"
1142
+
pull-paramap "^1.2.1"
1143
+
pull-stream "^3.5.0"
1144
+
pull-write "^1.1.1"
1145
+
1146
+
flumeview-query@^4.0.0:
1147
+
version "4.0.1"
1148
+
resolved "https://registry.npmjs.org/flumeview-query/-/flumeview-query-4.0.1.tgz"
1149
+
integrity sha512-UkMRbcVJqVTfqlYCDzZf4cKgjl3EN3Ja8gOwbBykRIqVoIrdTV+IfhJ8z/bvtN7b27G+ctitcA0bDgPBN1uR2A==
1150
+
dependencies:
1151
+
explain-error "^1.0.1"
1152
+
flumeview-level "^2.1.0"
1153
+
map-filter-reduce "^3.0.2"
1154
+
pull-flatmap "0.0.1"
1155
+
pull-paramap "^1.1.3"
1156
+
pull-sink-through "0.0.0"
1157
+
pull-stream "^3.4.0"
1158
+
1159
+
forever-agent@~0.6.1:
1160
+
version "0.6.1"
1161
+
resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
1162
+
integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
1163
+
1164
+
form-data@~2.0.0:
1165
+
version "2.0.0"
1166
+
resolved "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz"
1167
+
integrity sha512-BWUNep0UvjzlIJgDsi0SFD3MvnLlwiRaVpfr82Hj2xgc9MJJcl1tSQj01CJDMG+w/kzm+vkZMmXwRM2XrkBuaA==
1168
+
dependencies:
1169
+
asynckit "^0.4.0"
1170
+
combined-stream "^1.0.5"
1171
+
mime-types "^2.1.11"
1172
+
1173
+
fs.realpath@^1.0.0:
1174
+
version "1.0.0"
1175
+
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
1176
+
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1177
+
1178
+
fstream@^1.0.0, fstream@^1.0.2:
1179
+
version "1.0.10"
1180
+
resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz"
1181
+
integrity sha512-c8PWyQzw0JRHCbK5H2c1IQJDuOm2ssGIsmtPsPmKbKETciucj8XYvsFVImrucP1rvlEYb2VF/WM/8Nc4VOK1tA==
1182
+
dependencies:
1183
+
graceful-fs "^4.1.2"
1184
+
inherits "~2.0.0"
1185
+
mkdirp ">=0.5 0"
1186
+
rimraf "2"
1187
+
1188
+
function-bind@^1.0.2, function-bind@^1.1.2:
1189
+
version "1.1.2"
1190
+
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
1191
+
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
1192
+
1193
+
gauge@~1.2.5:
1194
+
version "1.2.7"
1195
+
resolved "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz"
1196
+
integrity sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==
1197
+
dependencies:
1198
+
ansi "^0.3.0"
1199
+
has-unicode "^2.0.0"
1200
+
lodash.pad "^4.1.0"
1201
+
lodash.padend "^4.1.0"
1202
+
lodash.padstart "^4.1.0"
1203
+
1204
+
gauge@~2.7.3:
1205
+
version "2.7.4"
1206
+
resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
1207
+
integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==
1208
+
dependencies:
1209
+
aproba "^1.0.3"
1210
+
console-control-strings "^1.0.0"
1211
+
has-unicode "^2.0.0"
1212
+
object-assign "^4.1.0"
1213
+
signal-exit "^3.0.0"
1214
+
string-width "^1.0.1"
1215
+
strip-ansi "^3.0.1"
1216
+
wide-align "^1.1.0"
1217
+
1218
+
generate-function@^2.0.0:
1219
+
version "2.0.0"
1220
+
resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"
1221
+
integrity sha512-X46lB9wLCsgkyagCmX2Dev5od5j6niCr3UeMbXVDBVO4tlpXp3o4OFh+0gPTlkD3ZMixU8PCKxf0IMGQvPo8HQ==
1222
+
1223
+
generate-object-property@^1.1.0:
1224
+
version "1.2.0"
1225
+
resolved "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
1226
+
integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==
1227
+
dependencies:
1228
+
is-property "^1.0.0"
1229
+
1230
+
get-intrinsic@^1.2.4, get-intrinsic@^1.3.0:
1231
+
version "1.3.0"
1232
+
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz"
1233
+
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
1234
+
dependencies:
1235
+
call-bind-apply-helpers "^1.0.2"
1236
+
es-define-property "^1.0.1"
1237
+
es-errors "^1.3.0"
1238
+
es-object-atoms "^1.1.1"
1239
+
function-bind "^1.1.2"
1240
+
get-proto "^1.0.1"
1241
+
gopd "^1.2.0"
1242
+
has-symbols "^1.1.0"
1243
+
hasown "^2.0.2"
1244
+
math-intrinsics "^1.1.0"
1245
+
1246
+
get-proto@^1.0.1:
1247
+
version "1.0.1"
1248
+
resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz"
1249
+
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
1250
+
dependencies:
1251
+
dunder-proto "^1.0.1"
1252
+
es-object-atoms "^1.0.0"
1253
+
1254
+
getpass@^0.1.1:
1255
+
version "0.1.6"
1256
+
resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz"
1257
+
integrity sha512-Uj295v1VGRPhKEty7IiEzGYf2rAIEbcGQ8dxK5QrQuwP7tCW8ftD5o8FUsGW4MLdws4P3eKRBzo+mFySYYcimA==
1258
+
dependencies:
1259
+
assert-plus "^1.0.0"
1260
+
1261
+
ghreleases@^1.0.2:
1262
+
version "1.0.5"
1263
+
resolved "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.5.tgz"
1264
+
integrity sha512-fXmepLW+EDMe9i8navRMxhqHgIPqn1f91GA2QGA2u8xz/DnwFqnD4JudKLpKho2I9TC9Vb/qHvcXktism6Hp2w==
1265
+
dependencies:
1266
+
after "~0.8.1"
1267
+
ghrepos "~2.0.0"
1268
+
ghutils "~3.2.0"
1269
+
simple-mime "~0.1.0"
1270
+
url-template "~2.0.6"
1271
+
xtend "~4.0.0"
1272
+
1273
+
ghrepos@~2.0.0:
1274
+
version "2.0.0"
1275
+
resolved "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz"
1276
+
integrity sha512-WKekkei1vtl4rvciCSVBIz+l9rNmlAFto2ryk61emqiLUFXpVuWvdPUmP0NVgLv05uxsXGqvs8T+6xKfon49pg==
1277
+
dependencies:
1278
+
ghutils "~3.2.0"
1279
+
1280
+
ghutils@~3.2.0:
1281
+
version "3.2.0"
1282
+
resolved "https://registry.npmjs.org/ghutils/-/ghutils-3.2.0.tgz"
1283
+
integrity sha512-VY9pgUWCr8OBTAv6LHxLL5vdF6ECe7hVdz/TmKb8TtSHn+q+n2vg9sgXwDhMnzbjR39F2j1mrZwhPDwiP8gapA==
1284
+
dependencies:
1285
+
jsonist "~1.2.0"
1286
+
xtend "~4.0.0"
1287
+
1288
+
github-from-package@0.0.0:
1289
+
version "0.0.0"
1290
+
resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz"
1291
+
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
1292
+
1293
+
glob@^5.0.15:
1294
+
version "5.0.15"
1295
+
resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
1296
+
integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==
1297
+
dependencies:
1298
+
inflight "^1.0.4"
1299
+
inherits "2"
1300
+
minimatch "2 || 3"
1301
+
once "^1.3.0"
1302
+
path-is-absolute "^1.0.0"
1303
+
1304
+
glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, "glob@3 || 4 || 5 || 6 || 7":
1305
+
version "7.2.3"
1306
+
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
1307
+
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1308
+
dependencies:
1309
+
fs.realpath "^1.0.0"
1310
+
inflight "^1.0.4"
1311
+
inherits "2"
1312
+
minimatch "^3.1.1"
1313
+
once "^1.3.0"
1314
+
path-is-absolute "^1.0.0"
1315
+
1316
+
global@~4.2.1:
1317
+
version "4.2.1"
1318
+
resolved "https://registry.npmjs.org/global/-/global-4.2.1.tgz"
1319
+
integrity sha512-z0c5wOXm1QKf+carsplKebLIGjpzWaq1RcjTRZRw/aD5FojM3vgWYp+/S8IdBgOYtds5T+RIuCXH2Z1GciU3BA==
1320
+
dependencies:
1321
+
min-document "^2.6.1"
1322
+
process "~0.5.1"
1323
+
1324
+
gopd@^1.0.1, gopd@^1.2.0:
1325
+
version "1.2.0"
1326
+
resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
1327
+
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
1328
+
1329
+
graceful-fs@^4.1.2:
1330
+
version "4.1.9"
1331
+
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz"
1332
+
integrity sha512-XoXYnP6yTKfmZYVQJ089K4GdLHvvHWDYN9JcR1hskHIjAFrtAlryPmJQ+bgqs/L9fu0OjahI9d3MTgbtNvbiuA==
1333
+
1334
+
har-validator@~2.0.6:
1335
+
version "2.0.6"
1336
+
resolved "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz"
1337
+
integrity sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==
1338
+
dependencies:
1339
+
chalk "^1.1.1"
1340
+
commander "^2.9.0"
1341
+
is-my-json-valid "^2.12.4"
1342
+
pinkie-promise "^2.0.0"
1343
+
1344
+
has-ansi@^2.0.0:
1345
+
version "2.0.0"
1346
+
resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
1347
+
integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==
1348
+
dependencies:
1349
+
ansi-regex "^2.0.0"
1350
+
1351
+
has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
1352
+
version "1.0.2"
1353
+
resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
1354
+
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
1355
+
dependencies:
1356
+
es-define-property "^1.0.0"
1357
+
1358
+
has-symbols@^1.1.0:
1359
+
version "1.1.0"
1360
+
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz"
1361
+
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
1362
+
1363
+
has-unicode@^2.0.0:
1364
+
version "2.0.1"
1365
+
resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
1366
+
integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
1367
+
1368
+
has@^1.0.0:
1369
+
version "1.0.1"
1370
+
resolved "https://registry.npmjs.org/has/-/has-1.0.1.tgz"
1371
+
integrity sha512-8wpov6mGFPJ/SYWGQIFo6t0yuNWoO9MkSq3flX8LhiGmbIUhDETp9knPMcIm0Xig1ybWsw6gq2w0gCz1JHD+Qw==
1372
+
dependencies:
1373
+
function-bind "^1.0.2"
1374
+
1375
+
hash.js@^1.0.0:
1376
+
version "1.0.3"
1377
+
resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz"
1378
+
integrity sha512-J0ew1WQhNTfUrH4VYckHyBLq3WzyKJleK8HPeWVIFtgu/mUBKy1fKtk3drOijR2T1gh0ZqC6EZ06uGRgdMASSg==
1379
+
dependencies:
1380
+
inherits "^2.0.1"
1381
+
1382
+
hasown@^2.0.2:
1383
+
version "2.0.2"
1384
+
resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
1385
+
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
1386
+
dependencies:
1387
+
function-bind "^1.1.2"
1388
+
1389
+
hawk@~3.1.3:
1390
+
version "3.1.3"
1391
+
resolved "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz"
1392
+
integrity sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==
1393
+
dependencies:
1394
+
boom "2.x.x"
1395
+
cryptiles "2.x.x"
1396
+
hoek "2.x.x"
1397
+
sntp "1.x.x"
1398
+
1399
+
hjson@^2.0.3:
1400
+
version "2.1.0"
1401
+
resolved "https://registry.npmjs.org/hjson/-/hjson-2.1.0.tgz"
1402
+
integrity sha512-6++LRZE+zCbSoo1y8xnJcGjsXQE6aQmRQb6UytsdzLv1tf9KL31DGpBV5GXsppDyN6nsphRBXC7dGoS5kTHKGw==
1403
+
1404
+
hmac@~1.0.1:
1405
+
version "1.0.1"
1406
+
resolved "https://registry.npmjs.org/hmac/-/hmac-1.0.1.tgz"
1407
+
integrity sha512-7pSzEtIx7WBY04FDVFvdU7gufDrdthJIfQuW3eM6tSNcCWWBW2zSYDgYT74vwys74vuasInzgo5e1Rc4Uoh70Q==
1408
+
1409
+
hoek@2.x.x:
1410
+
version "2.16.3"
1411
+
resolved "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
1412
+
integrity sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==
1413
+
1414
+
homedir@^0.6.0:
1415
+
version "0.6.0"
1416
+
resolved "https://registry.npmjs.org/homedir/-/homedir-0.6.0.tgz"
1417
+
integrity sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA==
1418
+
1419
+
html-element@^2.0.0:
1420
+
version "2.1.1"
1421
+
resolved "https://registry.npmjs.org/html-element/-/html-element-2.1.1.tgz"
1422
+
integrity sha512-HqX1EEj/9TzXgyRBf0hF7geW8xUiH6kcyFsM+ReZqff9qdmDCazGYxrsi3ny4BEhc/nqT0jqT6fI3ZpxxJXNqg==
1423
+
dependencies:
1424
+
class-list "~0.1.1"
1425
+
1426
+
html-element@~1.3.0:
1427
+
version "1.3.0"
1428
+
resolved "https://registry.npmjs.org/html-element/-/html-element-1.3.0.tgz"
1429
+
integrity sha512-ZueZhoU2xwAIh8WMQbBkX5zTjOf0KRcDin9Nd91DotBXOLEdmxSDy5172LuGywD/P09KB0Wnb9HN1x4+DvabAw==
1430
+
dependencies:
1431
+
class-list "~0.1.1"
1432
+
1433
+
htmlescape@^1.1.0:
1434
+
version "1.1.1"
1435
+
resolved "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz"
1436
+
integrity sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==
1437
+
1438
+
http-signature@~1.1.0:
1439
+
version "1.1.1"
1440
+
resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz"
1441
+
integrity sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==
1442
+
dependencies:
1443
+
assert-plus "^0.2.0"
1444
+
jsprim "^1.2.2"
1445
+
sshpk "^1.7.0"
1446
+
1447
+
https-browserify@^1.0.0:
1448
+
version "1.0.0"
1449
+
resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz"
1450
+
integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==
1451
+
1452
+
https-browserify@~0.0.0:
1453
+
version "0.0.1"
1454
+
resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz"
1455
+
integrity sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ==
1456
+
1457
+
human-time@0.0.1:
1458
+
version "0.0.1"
1459
+
resolved "https://registry.npmjs.org/human-time/-/human-time-0.0.1.tgz"
1460
+
integrity sha512-A+xgXNarLizEqp9iHGy9Y4dII0VI/b0NV3qzpdjlInsiLouojaXUG1mLEMMWxlO2X7Kbg+UYw+18oKb74ZWwXQ==
1461
+
1462
+
hypercombo@0.1.0:
1463
+
version "0.1.0"
1464
+
resolved "https://registry.npmjs.org/hypercombo/-/hypercombo-0.1.0.tgz"
1465
+
integrity sha512-lJaTVukYWcNi5igfF4gus6UzERJoiv3n8eL6ao6Mwp1PZ9hLenMWGm2ytkyViLLRBhvE2xyExVJ4Td4LAXNUUg==
1466
+
dependencies:
1467
+
hyperscript "^2.0.2"
1468
+
pull-stream "^3.4.3"
1469
+
1470
+
hypercrop@^1.0.1:
1471
+
version "1.0.1"
1472
+
resolved "https://registry.npmjs.org/hypercrop/-/hypercrop-1.0.1.tgz"
1473
+
integrity sha512-y07l6JWSJ6k02WD+7PdJNNWCUAv8864muzL6lrl1/QAv7LBifck6/CF0/oitWRYAHfoNbBtIdUCb7qLyvM5Wgw==
1474
+
dependencies:
1475
+
hyperscript "^1.4.7"
1476
+
1477
+
hyperfile@^1.1.0, hyperfile@^1.1.1:
1478
+
version "1.1.1"
1479
+
resolved "https://registry.npmjs.org/hyperfile/-/hyperfile-1.1.1.tgz"
1480
+
integrity sha512-XTRgT2XZRFgVxpXphgqVuec8DxEIGAdb8PNLibU2AOAW+8C059j/H4YefMS92I22ogQT4tWUInDf2yK0zNSG9g==
1481
+
dependencies:
1482
+
hyperscript "^1.4.7"
1483
+
1484
+
hyperlightbox@^0.1.3:
1485
+
version "0.1.3"
1486
+
resolved "https://registry.npmjs.org/hyperlightbox/-/hyperlightbox-0.1.3.tgz"
1487
+
integrity sha512-r1JKOMJtmjsR/erwmLlxqXpuCjVqy/D4g0d9FmDxmZWVhBPs3t1yQWPxIPul6CLoGrWFlrYXWneYIsZCg6KPeg==
1488
+
dependencies:
1489
+
hyperscript "^1.4.7"
1490
+
1491
+
hyperprogress@^0.1.0, hyperprogress@0.1.0:
1492
+
version "0.1.0"
1493
+
resolved "https://registry.npmjs.org/hyperprogress/-/hyperprogress-0.1.0.tgz"
1494
+
integrity sha512-5VniZ4Kk7bcqcw7qqOuplIQiUB8pvBUSGaJoCa/opb/EdH6hfHwvVqRCmI+LE2EmIq1vDHq8X6mfnz1SgY9JXA==
1495
+
1496
+
hyperquest@~1.2.0:
1497
+
version "1.2.0"
1498
+
resolved "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz"
1499
+
integrity sha512-N6QwIYr/ENmsE3+0aNA/x8M+jHF0wedvc9ZiGAhg7KK6TxwtJTSR95b0invqaLFPqUrsngYUrc4LVmLtrl7kvw==
1500
+
dependencies:
1501
+
duplexer2 "~0.0.2"
1502
+
through2 "~0.6.3"
1503
+
1504
+
hyperscript@^1.4.7, hyperscript@~1.4.2:
1505
+
version "1.4.7"
1506
+
resolved "https://registry.npmjs.org/hyperscript/-/hyperscript-1.4.7.tgz"
1507
+
integrity sha512-5/qa//3SJb60obSEb3MsCMIVMEtAtgnX73uQw96WvH7Zlx6v0b6h8WEk+FNXL+pRW6TSBjmC36P2h8hIjqujaw==
1508
+
dependencies:
1509
+
browser-split "0.0.0"
1510
+
class-list "~0.1.0"
1511
+
html-element "~1.3.0"
1512
+
1513
+
hyperscript@^2.0.2:
1514
+
version "2.0.2"
1515
+
resolved "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz"
1516
+
integrity sha512-uggBAYfHFC5WyZQXlJ61BNZbPmJbschcvfYNhYdZWCp+0J8KYb5Du8nQuk8Ru+ThoCNb01B0tPtnTRqnrFBkVg==
1517
+
dependencies:
1518
+
browser-split "0.0.0"
1519
+
class-list "~0.1.0"
1520
+
html-element "^2.0.0"
1521
+
1522
+
hypertabs@^3.0.0:
1523
+
version "3.0.3"
1524
+
resolved "https://registry.npmjs.org/hypertabs/-/hypertabs-3.0.3.tgz"
1525
+
integrity sha512-pIwSU/t4r/h+OnYv2aAu9fGn4juoy6hKdVYbIJPtafXB9n3OwESgqbUnI6y+ZSAT77VvrAGbo8pP7riAml8IDw==
1526
+
dependencies:
1527
+
hyperscript "^1.4.7"
1528
+
1529
+
ieee754@^1.1.4:
1530
+
version "1.1.8"
1531
+
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz"
1532
+
integrity sha512-/aoyv2Nt7mGLnCAWzE0C1WH9Xd8ZsqR0f4Pjwxputi1JNm01+InyAYQotF4N+ulEIjbEsJo22NOHr+U/XEZ1Pw==
1533
+
1534
+
increment-buffer@~1.0.0:
1535
+
version "1.0.0"
1536
+
resolved "https://registry.npmjs.org/increment-buffer/-/increment-buffer-1.0.0.tgz"
1537
+
integrity sha512-IgOr5HpHN4nBRLB/q4ynnMtQSDYfbWMxpGKje/Llk5R26DrOlRQVV3fXkhuTA4XsEV9gMYnRDbfom1pcT61QZg==
1538
+
1539
+
indexhtmlify@^1.3.1:
1540
+
version "1.3.1"
1541
+
resolved "https://registry.npmjs.org/indexhtmlify/-/indexhtmlify-1.3.1.tgz"
1542
+
integrity sha512-34IP9FW9k/YqFVwuFMx2/pVbryiI9EAJsfYy+OXU3IMbnlIenYBvRxLvPruQjKuTkqxdemeVar+gjkNB8NdExQ==
1543
+
dependencies:
1544
+
optimist "~0.6.0"
1545
+
through2 "^0.4.1"
1546
+
1547
+
indexof@0.0.1:
1548
+
version "0.0.1"
1549
+
resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz"
1550
+
integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==
1551
+
1552
+
inflight@^1.0.4:
1553
+
version "1.0.5"
1554
+
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz"
1555
+
integrity sha512-ZOr/ZZjWvVTQML+yBDtsvuVlC9zkWqmaZVZTWP7XdfMTmoO3qjIP26vjfDKDJ6zA9ZffGlnm6Ry5t965o+WUgA==
1556
+
dependencies:
1557
+
once "^1.3.0"
1558
+
wrappy "1"
1559
+
1560
+
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.3:
1561
+
version "2.0.3"
1562
+
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
1563
+
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
1564
+
1565
+
inherits@^2.0.4:
1566
+
version "2.0.4"
1567
+
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
1568
+
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1569
+
1570
+
inherits@1.0.0:
1571
+
version "1.0.0"
1572
+
resolved "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"
1573
+
integrity sha512-5KfXESjCAfFQel2TLqhr18NEz++UiWVIA0jwHzs2Kbvb3e+r+G/eVhRfoZbaPCL0PnERvK5YeMgh02O4eenufw==
1574
+
1575
+
inherits@2.0.1:
1576
+
version "2.0.1"
1577
+
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
1578
+
integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==
1579
+
1580
+
ini@~1.3.0:
1581
+
version "1.3.4"
1582
+
resolved "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
1583
+
integrity sha512-VUA7WAWNCWfm6/8f9kAb8Y6iGBWnmCfgFS5dTrv2C38LLm1KUmpY388mCVCJCsMKQomvOQ1oW8/edXdChd9ZXQ==
1584
+
1585
+
inline-source-map@~0.6.0:
1586
+
version "0.6.2"
1587
+
resolved "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz"
1588
+
integrity sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==
1589
+
dependencies:
1590
+
source-map "~0.5.3"
1591
+
1592
+
insert-module-globals@^7.0.0:
1593
+
version "7.0.1"
1594
+
resolved "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz"
1595
+
integrity sha512-tjMZcZBS2NtqlX87Y6mlEIUSdftJ2VxlVXSQkrJNBUUB7xgnRIgdVO7nM9DpNl58U1Nejm+ahTjMEQiUpjvA+w==
1596
+
dependencies:
1597
+
combine-source-map "~0.7.1"
1598
+
concat-stream "~1.5.1"
1599
+
is-buffer "^1.1.0"
1600
+
JSONStream "^1.0.3"
1601
+
lexical-scope "^1.2.0"
1602
+
process "~0.11.0"
1603
+
through2 "^2.0.0"
1604
+
xtend "^4.0.0"
1605
+
1606
+
ip@^1.1.2, ip@^1.1.3:
1607
+
version "1.1.3"
1608
+
resolved "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz"
1609
+
integrity sha512-M7h6UQnULysP4/3m97qCEAQ0GwgMv6JEr7dPJ3Rd3ttfr6LIiSBxe46TGixBFDgfQaa6MIKj30tDvH+pImI5VA==
1610
+
1611
+
ip@~0.3.2:
1612
+
version "0.3.3"
1613
+
resolved "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz"
1614
+
integrity sha512-VXpBTSFo8wNvJVwCxlncVwd2hYbzX8egxidocX2oKt6H5tJzLjrzG6gTNoHSNsKtIyelb528n/7sa86kqlnNiA==
1615
+
1616
+
is-buffer@^1.1.0:
1617
+
version "1.1.4"
1618
+
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz"
1619
+
integrity sha512-LdKAPZcV+EfT6PvN90Un/Rnn1g8cL1BfzEBdz6d3Y6CUzMyUVWHewXxyuiNFkLwRKgpDMYHrocdqjMsYTDkOow==
1620
+
1621
+
is-canonical-base64@^1.1.1:
1622
+
version "1.1.1"
1623
+
resolved "https://registry.npmjs.org/is-canonical-base64/-/is-canonical-base64-1.1.1.tgz"
1624
+
integrity sha512-o6t/DwgEapC0bsloqtegAQyZzQXaQ5+8fzsyf2KmLqupC2ifLFq/lMQiFCJeGpdSrK1o6GL+WW2lRU050lLlFg==
1625
+
1626
+
is-core-module@^2.16.1:
1627
+
version "2.16.1"
1628
+
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz"
1629
+
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
1630
+
dependencies:
1631
+
hasown "^2.0.2"
1632
+
1633
+
is-electron@^2.0.0:
1634
+
version "2.0.0"
1635
+
resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.0.0.tgz"
1636
+
integrity sha512-VDe6eanPIpm1XBj1VDE7yaeNCW6LDcrFOxo3H2pV0Evp0y0drgUTcGUDDV8HGlR3DN5/I93duMdUJy0je1TvQw==
1637
+
1638
+
is-fullwidth-code-point@^1.0.0:
1639
+
version "1.0.0"
1640
+
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
1641
+
integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==
1642
+
dependencies:
1643
+
number-is-nan "^1.0.0"
1644
+
1645
+
is-my-json-valid@^2.12.4:
1646
+
version "2.15.0"
1647
+
resolved "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz"
1648
+
integrity sha512-32CTy9FyiPq2qLVcb5Jh3pScUj5aLP0NRqACYT1bkJs5zIJsfzcsMs+W1sk4p5FEY5r5CuSjJ1VuYKZsA32ohg==
1649
+
dependencies:
1650
+
generate-function "^2.0.0"
1651
+
generate-object-property "^1.1.0"
1652
+
jsonpointer "^4.0.0"
1653
+
xtend "^4.0.0"
1654
+
1655
+
is-property@^1.0.0:
1656
+
version "1.0.2"
1657
+
resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
1658
+
integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==
1659
+
1660
+
is-typedarray@~1.0.0:
1661
+
version "1.0.0"
1662
+
resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
1663
+
integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
1664
+
1665
+
is-valid-domain@~0.0.1:
1666
+
version "0.0.2"
1667
+
resolved "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.0.2.tgz"
1668
+
integrity sha512-cu39FMag8bRXovdSr/Y7YqaE/2b4ItrJij/fPPDYo89JVn21C3LR6Buatf0hYAcqimLZs0POodwHE4WDihLrqA==
1669
+
1670
+
is-visible@^2.0.1, is-visible@^2.0.4:
1671
+
version "2.1.1"
1672
+
resolved "https://registry.npmjs.org/is-visible/-/is-visible-2.1.1.tgz"
1673
+
integrity sha512-oddKCOHCwcZWwbbY9aYkJWMlFMbrqU0lN8S7AU3VCQfcczD3FrpMfeYa0lTq/n6SUsub0U8MrJKDMU9/s0mLaw==
1674
+
dependencies:
1675
+
iselement "^1.1.3"
1676
+
style-properties "^1.3.1"
1677
+
1678
+
is@^3.1.0:
1679
+
version "3.1.0"
1680
+
resolved "https://registry.npmjs.org/is/-/is-3.1.0.tgz"
1681
+
integrity sha512-GvIjiMYxR9fgscrtCvSK31+0gNiFZrp01qlbaD2ed91FQc+0YwT33ncK5iUmPRi2R6ULjSPeIJx6JpelBoanpQ==
1682
+
1683
+
isarray@^1.0.0, isarray@~1.0.0:
1684
+
version "1.0.0"
1685
+
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
1686
+
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
1687
+
1688
+
isarray@~0.0.1, isarray@0.0.1:
1689
+
version "0.0.1"
1690
+
resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
1691
+
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
1692
+
1693
+
iselement@^1.1.3:
1694
+
version "1.1.4"
1695
+
resolved "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz"
1696
+
integrity sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw==
1697
+
1698
+
isexe@^1.1.1:
1699
+
version "1.1.2"
1700
+
resolved "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz"
1701
+
integrity sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==
1702
+
1703
+
isstream@~0.1.2:
1704
+
version "0.1.2"
1705
+
resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
1706
+
integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
1707
+
1708
+
jodid25519@^1.0.0:
1709
+
version "1.0.2"
1710
+
resolved "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz"
1711
+
integrity sha512-b2Zna/wGIyTzi0Gemg27JYUaRyTyBETw5GnqyVQMr71uojOYMrgkD2+Px3bG2ZFi7/zTUXJSDoGoBOhMixq7tg==
1712
+
dependencies:
1713
+
jsbn "~0.1.0"
1714
+
1715
+
jsbn@~0.1.0:
1716
+
version "0.1.0"
1717
+
resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz"
1718
+
integrity sha512-nSJUKpgMhIK31baMn1+o+ykqan4LBGpeoQguOposJRYzectoBq94PDeRu8wwaJwHMoD7FTGjILdRyWZRuL9pAw==
1719
+
1720
+
json-buffer@^2.0.11:
1721
+
version "2.0.11"
1722
+
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz"
1723
+
integrity sha512-Wu4/hxSZX7Krzjor+sZHWaRau6Be4WQHlrkl3v8cmxRBBewF2TotlgHUedKQJyFiUyFxnK/ZlRYnR9UNVZ7pkg==
1724
+
1725
+
json-schema@0.2.3:
1726
+
version "0.2.3"
1727
+
resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"
1728
+
integrity sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==
1729
+
1730
+
json-stable-stringify@~0.0.0:
1731
+
version "0.0.1"
1732
+
resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz"
1733
+
integrity sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==
1734
+
dependencies:
1735
+
jsonify "~0.0.0"
1736
+
1737
+
json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1:
1738
+
version "5.0.1"
1739
+
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
1740
+
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
1741
+
1742
+
jsonify@~0.0.0:
1743
+
version "0.0.0"
1744
+
resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"
1745
+
integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==
1746
+
1747
+
jsonist@~1.2.0:
1748
+
version "1.2.0"
1749
+
resolved "https://registry.npmjs.org/jsonist/-/jsonist-1.2.0.tgz"
1750
+
integrity sha512-qEH2OvbVeHXh0T/elR24TEIy7MB+nbYAwNvpsbAcIzNtVYZ13/mVk0o3ENLu8AUB/ZhIbrmDpyi6sysYUIElpA==
1751
+
dependencies:
1752
+
bl "~1.0.0"
1753
+
hyperquest "~1.2.0"
1754
+
json-stringify-safe "~5.0.0"
1755
+
xtend "~4.0.0"
1756
+
1757
+
jsonparse@^1.2.0:
1758
+
version "1.2.0"
1759
+
resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz"
1760
+
integrity sha512-LkDEYtKnPFI9hQ/IURETe6F1dUH80cbRkaF6RaViSwoSNPwaxQpi6TgJGvJKyLQ2/9pQW+XCxK3hBoR44RAjkg==
1761
+
1762
+
jsonpointer@^4.0.0:
1763
+
version "4.0.0"
1764
+
resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz"
1765
+
integrity sha512-BSyv7u/pT7TCkuAi6PK67D/qa8Q1cDCrh0SHkacQWs7yg2X84pz8b7SbBr3FLNrd8NDAUlInT+DNbR1N4RsT/A==
1766
+
1767
+
JSONStream@^1.0.3:
1768
+
version "1.2.1"
1769
+
resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.2.1.tgz"
1770
+
integrity sha512-yLfH7+rxS2SHQAUgnBMoBGmXHB6NlYl46SazFADcom/wVBD0Idb2iP6CHvih8OZe4R98f6bJ2/XM+nBLxK69Kg==
1771
+
dependencies:
1772
+
jsonparse "^1.2.0"
1773
+
through ">=2.2.7 <3"
1774
+
1775
+
jsprim@^1.2.2:
1776
+
version "1.3.1"
1777
+
resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz"
1778
+
integrity sha512-bxYB8xe0/KIpYlNbZcA9e+lNquVmdPUGmZFNIQiAHPxkUDK2THIq3R+7VVgnv3UkZ63BrJ10+IeNZuew4Pso9Q==
1779
+
dependencies:
1780
+
extsprintf "1.0.2"
1781
+
json-schema "0.2.3"
1782
+
verror "1.3.6"
1783
+
1784
+
konva@~1.0.0:
1785
+
version "1.0.3"
1786
+
resolved "https://registry.npmjs.org/konva/-/konva-1.0.3.tgz"
1787
+
integrity sha512-PIRcWGh3LWXGtA3vH6cHAy604bzOckNIUBBQN1onBYPvfj9a73DgrVlqe5RqjPD3ChdfDAs2GuVE97jJpfRU7A==
1788
+
1789
+
kvgraph@^0.1.0:
1790
+
version "0.1.0"
1791
+
resolved "https://registry.npmjs.org/kvgraph/-/kvgraph-0.1.0.tgz"
1792
+
integrity sha512-A7Cn9SNXC3G+MnymR8rYg5k9qxKq+RRBUpWzKmuDB/2Dmvhl4jFt3B0kEuwR9D5DgkitfwqKy75wILepoqQKcg==
1793
+
1794
+
labeled-stream-splicer@^2.0.0:
1795
+
version "2.0.0"
1796
+
resolved "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz"
1797
+
integrity sha512-/6dSMZcWGSgSny5DzaW9L3mOIqhz6B/CCjmuszf8tfy/puNSNCJfCDAZGXZTrOdyNnIWNB1PR+bfrxHDPQwhLw==
1798
+
dependencies:
1799
+
inherits "^2.0.1"
1800
+
isarray "~0.0.1"
1801
+
stream-splicer "^2.0.0"
1802
+
1803
+
letiny-core@^2.0.1:
1804
+
version "2.0.3"
1805
+
resolved "https://registry.npmjs.org/letiny-core/-/letiny-core-2.0.3.tgz"
1806
+
integrity sha512-xOpwakxcZpDrArZe8mJuWSwc4qtk4RhWbUy37S+ah4adF8TKa9ftHA/k9wvEkDuNhZa5S0AVxxYnMITCZRwj9g==
1807
+
dependencies:
1808
+
node-forge "^0.6.38"
1809
+
request "^2.55.0"
1810
+
rsa-compat "^1.2.3"
1811
+
optionalDependencies:
1812
+
ursa "^0.9.1"
1813
+
1814
+
letsencrypt-express@^1.1.5:
1815
+
version "1.2.0"
1816
+
resolved "https://registry.npmjs.org/letsencrypt-express/-/letsencrypt-express-1.2.0.tgz"
1817
+
integrity sha512-G4ierluY4zsE3SURjeY+irkvhlXoE8md9xxgjt9fC8o0Plzw1WOn6I0oCuBuIFuP9jItypUEYtngP1+ZizcxyQ==
1818
+
dependencies:
1819
+
homedir "^0.6.0"
1820
+
letsencrypt "^1.5.0"
1821
+
localhost.daplie.com-certificates "^1.1.2"
1822
+
mkdirp "^0.5.1"
1823
+
1824
+
letsencrypt@^1.5.0:
1825
+
version "1.5.8"
1826
+
resolved "https://registry.npmjs.org/letsencrypt/-/letsencrypt-1.5.8.tgz"
1827
+
integrity sha512-Oz5jOtYA3Up3Drud5r4n9Zr2+n3M8e8QHjqHMaGrNxAoU2RxoY01fPkY6Prb7rSr/7G98e0lmBSjk7vnuAJj7A==
1828
+
dependencies:
1829
+
asn1js "^1.2.12"
1830
+
bluebird "^3.0.6"
1831
+
homedir "^0.6.0"
1832
+
letiny-core "^2.0.1"
1833
+
mkdirp "^0.5.1"
1834
+
node.extend "^1.1.5"
1835
+
pkijs "^1.3.27"
1836
+
pyconf "^1.1.2"
1837
+
request "^2.67.0"
1838
+
rsa-compat "^1.2.1"
1839
+
safe-replace "^1.0.2"
1840
+
1841
+
level-codec@~6.1.0:
1842
+
version "6.1.0"
1843
+
resolved "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz"
1844
+
integrity sha512-pPceZJpp/7HKN8R4oaSoHg2qxQPwo/d+RG+yeBBJQ5TI+rq9P5WWGMlpeXDTR/0QeXcGJstdRLYp/GGxKTrqOQ==
1845
+
1846
+
level-errors@^1.0.3, level-errors@~1.0.3:
1847
+
version "1.0.4"
1848
+
resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz"
1849
+
integrity sha512-DEwrtBVEsv2SJY4VB1zsg9gG3ZheXjl52bmsXG7/jE7XM5sqxjaxxej9AaMqmGoxjsr5o0khYuzZTEhcgBQtyw==
1850
+
dependencies:
1851
+
errno "~0.1.1"
1852
+
1853
+
level-iterator-stream@~1.3.0:
1854
+
version "1.3.1"
1855
+
resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz"
1856
+
integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==
1857
+
dependencies:
1858
+
inherits "^2.0.1"
1859
+
level-errors "^1.0.3"
1860
+
readable-stream "^1.0.33"
1861
+
xtend "^4.0.0"
1862
+
1863
+
level-packager@~1.2.0:
1864
+
version "1.2.0"
1865
+
resolved "https://registry.npmjs.org/level-packager/-/level-packager-1.2.0.tgz"
1866
+
integrity sha512-oDyGwYgTAz9/08Q32M+S869wyBJ+GxV40nra+ihp9I+TcxIKm04h5Ievy6/d1Ljwjw+x4IOmJ6Xs4djBIJ8FSQ==
1867
+
dependencies:
1868
+
levelup "~1.3.0"
1869
+
1870
+
level-post@~1.0.3:
1871
+
version "1.0.5"
1872
+
resolved "https://registry.npmjs.org/level-post/-/level-post-1.0.5.tgz"
1873
+
integrity sha512-A2VlgnSWjXuMnk4CAw0aWJnQZyrHcTd9Q34/cy23z3eD0QhaNdP/5zFd4wT0ALbzqfL6V3LLfqvu27A72s7n0A==
1874
+
dependencies:
1875
+
ltgt "^2.1.2"
1876
+
1877
+
level@^1.4.0, level@^1.7.0:
1878
+
version "1.7.0"
1879
+
resolved "https://registry.npmjs.org/level/-/level-1.7.0.tgz"
1880
+
integrity sha512-Ev92KRZGGJiKs86pK4v9XwEdOxrzXfD5bzaxbwdyNokyXK4WBd0V8OW/KD0rsgKTicp0ocja6Un7hCwYNDy+0g==
1881
+
dependencies:
1882
+
level-packager "~1.2.0"
1883
+
leveldown "~1.7.0"
1884
+
1885
+
leveldown@~1.7.0:
1886
+
version "1.7.2"
1887
+
resolved "https://registry.npmjs.org/leveldown/-/leveldown-1.7.2.tgz"
1888
+
integrity sha512-SV57VxeejUnuUodKRmKQ2JJzGkHl4u6+8cpiWOIUR1tUrLn8FeeTiU2t4jT/P5dE1ORYArfgoXE2Vfzrb6nOWQ==
1889
+
dependencies:
1890
+
abstract-leveldown "~2.6.1"
1891
+
bindings "~1.2.1"
1892
+
fast-future "~1.0.2"
1893
+
nan "~2.6.1"
1894
+
prebuild-install "^2.1.0"
1895
+
1896
+
levelup@~1.3.0:
1897
+
version "1.3.3"
1898
+
resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.3.tgz"
1899
+
integrity sha512-3umRkkE0PuPT5tQFY234TZFg2+KHTOUdD2q5x5eVtVPteB4TpSOQRIkVMndGalp92AY6gXrcFCQxVSMXQZzOjw==
1900
+
dependencies:
1901
+
deferred-leveldown "~1.2.1"
1902
+
level-codec "~6.1.0"
1903
+
level-errors "~1.0.3"
1904
+
level-iterator-stream "~1.3.0"
1905
+
prr "~1.0.1"
1906
+
semver "~5.1.0"
1907
+
xtend "~4.0.0"
1908
+
1909
+
lexical-scope@^1.2.0:
1910
+
version "1.2.0"
1911
+
resolved "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz"
1912
+
integrity sha512-ntJ8IcBCuKwudML7vAuT/L0aIMU0+9vO25K4CjLPYgzf1NZ0bAhJJBZrvkO+oUGgKcbdkH8UZdRsaEg+wULLRw==
1913
+
dependencies:
1914
+
astw "^2.0.0"
1915
+
1916
+
libnested@^1.1.0:
1917
+
version "1.5.2"
1918
+
resolved "https://registry.npmjs.org/libnested/-/libnested-1.5.2.tgz"
1919
+
integrity sha512-DbiwHL8454goYRp5Xn9vUA5XU6x8rNh8BmZ7ywSTUhVBIiDS7ev/FT6+AwU2/ZKW2jEOC7WKhpkJfExaQwosRA==
1920
+
1921
+
libsodium-wrappers@^0.2.9:
1922
+
version "0.2.12"
1923
+
resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.2.12.tgz"
1924
+
integrity sha512-kv+7+E2Qmi3OlCeGjgXcINjGtrnUhkqQGBj43/feVpAYQ6fTqh6cxwVdPXzEXDHrzbc0IVH3wGiTPzPOvGvPPA==
1925
+
dependencies:
1926
+
libsodium "0.2.12"
1927
+
1928
+
libsodium@0.2.12:
1929
+
version "0.2.12"
1930
+
resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.2.12.tgz"
1931
+
integrity sha512-Jk86VGDdn8lFVltGjHbNiXjlJAIqu37VmXmIh2B0D8IZWuWZhjXBM78TRFVz0oneJIYTfusJT+wWNJ30WG2RFw==
1932
+
1933
+
localhost.daplie.com-certificates@^1.1.2:
1934
+
version "1.2.3"
1935
+
resolved "https://registry.npmjs.org/localhost.daplie.com-certificates/-/localhost.daplie.com-certificates-1.2.3.tgz"
1936
+
integrity sha512-8kmWJPMMn9JwNWHHHlqbcZfYLwumazAabk21A9fTIhfanwJp9oTj44wXpmgada6BBZG8r3RO8zf3wxAlslj7HQ==
1937
+
1938
+
lodash.memoize@~3.0.3:
1939
+
version "3.0.4"
1940
+
resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz"
1941
+
integrity sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==
1942
+
1943
+
lodash.pad@^4.1.0:
1944
+
version "4.5.1"
1945
+
resolved "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz"
1946
+
integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==
1947
+
1948
+
lodash.padend@^4.1.0:
1949
+
version "4.6.1"
1950
+
resolved "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz"
1951
+
integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==
1952
+
1953
+
lodash.padstart@^4.1.0:
1954
+
version "4.6.1"
1955
+
resolved "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz"
1956
+
integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==
1957
+
1958
+
looper@^2.0.0:
1959
+
version "2.0.0"
1960
+
resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz"
1961
+
integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==
1962
+
1963
+
looper@^3.0.0, looper@~3.0.0:
1964
+
version "3.0.0"
1965
+
resolved "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz"
1966
+
integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==
1967
+
1968
+
looper@^4.0.0:
1969
+
version "4.0.0"
1970
+
resolved "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz"
1971
+
integrity sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw==
1972
+
1973
+
ltgt@^2.1.2, ltgt@^2.1.3:
1974
+
version "2.2.1"
1975
+
resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz"
1976
+
integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==
1977
+
1978
+
map-filter-reduce@^3.0.1, map-filter-reduce@^3.0.2:
1979
+
version "3.0.2"
1980
+
resolved "https://registry.npmjs.org/map-filter-reduce/-/map-filter-reduce-3.0.2.tgz"
1981
+
integrity sha512-UfkKV1zgBsNJ2PdUpf/fEdoUopKL+U1B+lpW3YQbl49hMW2ZLrzYdY6/99q79HmFnR22jXVkS4LIvaFqy+KYIA==
1982
+
dependencies:
1983
+
binary-search "^1.2.0"
1984
+
pull-sink-through "0.0.0"
1985
+
pull-stream "^3.4.3"
1986
+
typewiselite "^1.0.0"
1987
+
1988
+
math-intrinsics@^1.1.0:
1989
+
version "1.1.0"
1990
+
resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
1991
+
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
1992
+
1993
+
miller-rabin@^4.0.0:
1994
+
version "4.0.0"
1995
+
resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz"
1996
+
integrity sha512-aaZr5VprJSt03eVBJEsG+LOI2ccb/j+DXrnme/z/2M2+K9TRM7IY0+Csko/8dYF3XlUHvgPhrcDZfOAHXYqiZg==
1997
+
dependencies:
1998
+
bn.js "^4.0.0"
1999
+
brorand "^1.0.1"
2000
+
2001
+
mime-db@~1.24.0:
2002
+
version "1.24.0"
2003
+
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz"
2004
+
integrity sha512-0XGpuLCNPqkv3vYiRjh1w6h4RbIGWyCh8OnXejta9INkFX0M8ENYth8O0As8rSGDxzEO1PafhiaqQdtqhtA2lw==
2005
+
2006
+
mime-types@^2.1.11, mime-types@~2.1.7:
2007
+
version "2.1.12"
2008
+
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz"
2009
+
integrity sha512-irQD8Ww11AaU8vbCRjMuaq4huvb2ITxVg/VDBrvf8keFtbWZ3zbGO0tvsCMbD7JlR8mOYw0WbAqi4sL8KGUd5w==
2010
+
dependencies:
2011
+
mime-db "~1.24.0"
2012
+
2013
+
mimic-response@^1.0.0:
2014
+
version "1.0.1"
2015
+
resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"
2016
+
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
2017
+
2018
+
min-document@^2.6.1:
2019
+
version "2.19.0"
2020
+
resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz"
2021
+
integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==
2022
+
dependencies:
2023
+
dom-walk "^0.1.0"
2024
+
2025
+
minimalistic-assert@^1.0.0:
2026
+
version "1.0.0"
2027
+
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz"
2028
+
integrity sha512-0xPOgDvW9sfA9OrHHCuSRZhj/e+L82RGLFf0b9EsvagmQpGnRYtztTIuq1JR3biVE7u+Mu2jWZqSxvZ8CaMrBQ==
2029
+
2030
+
minimatch@^3.0.2, minimatch@^3.1.1, "minimatch@2 || 3", minimatch@3:
2031
+
version "3.1.2"
2032
+
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
2033
+
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
2034
+
dependencies:
2035
+
brace-expansion "^1.1.7"
2036
+
2037
+
minimist@^1.1.0, minimist@^1.1.2, minimist@^1.2.0, minimist@^1.2.6:
2038
+
version "1.2.8"
2039
+
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
2040
+
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
2041
+
2042
+
minimist@~0.0.1:
2043
+
version "0.0.10"
2044
+
resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz"
2045
+
integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==
2046
+
2047
+
minimist@0.0.8:
2048
+
version "0.0.8"
2049
+
resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
2050
+
integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==
2051
+
2052
+
mkdirp-classic@^0.5.2:
2053
+
version "0.5.3"
2054
+
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
2055
+
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
2056
+
2057
+
mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0:
2058
+
version "0.5.1"
2059
+
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
2060
+
integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==
2061
+
dependencies:
2062
+
minimist "0.0.8"
2063
+
2064
+
module-deps@^4.0.2:
2065
+
version "4.0.7"
2066
+
resolved "https://registry.npmjs.org/module-deps/-/module-deps-4.0.7.tgz"
2067
+
integrity sha512-3MGZkxdZLoKxOuBd50SzjrbHMgYbdOewnx0AsbKDTrlIKUkTA4ZBprnvvbWqq8d4FcdaqNiZ/HG5X+1zcWrU7g==
2068
+
dependencies:
2069
+
browser-resolve "^1.7.0"
2070
+
concat-stream "~1.5.0"
2071
+
defined "^1.0.0"
2072
+
detective "^4.0.0"
2073
+
duplexer2 "^0.1.2"
2074
+
inherits "^2.0.1"
2075
+
JSONStream "^1.0.3"
2076
+
parents "^1.0.0"
2077
+
readable-stream "^2.0.2"
2078
+
resolve "^1.1.3"
2079
+
stream-combiner2 "^1.1.1"
2080
+
subarg "^1.0.0"
2081
+
through2 "^2.0.0"
2082
+
xtend "^4.0.0"
2083
+
2084
+
module-deps@^6.2.3:
2085
+
version "6.2.3"
2086
+
resolved "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz"
2087
+
integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==
2088
+
dependencies:
2089
+
browser-resolve "^2.0.0"
2090
+
cached-path-relative "^1.0.2"
2091
+
concat-stream "~1.6.0"
2092
+
defined "^1.0.0"
2093
+
detective "^5.2.0"
2094
+
duplexer2 "^0.1.2"
2095
+
inherits "^2.0.1"
2096
+
JSONStream "^1.0.3"
2097
+
parents "^1.0.0"
2098
+
readable-stream "^2.0.2"
2099
+
resolve "^1.4.0"
2100
+
stream-combiner2 "^1.1.1"
2101
+
subarg "^1.0.0"
2102
+
through2 "^2.0.0"
2103
+
xtend "^4.0.0"
2104
+
2105
+
moment@^2.13.0:
2106
+
version "2.15.1"
2107
+
resolved "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz"
2108
+
integrity sha512-VRuqlq9ET3eUjWkqgZtUegkYF664TRWaxmgwlHxboe653wv4stNaVKDufNfCDcGFu1EA2Bm26bD0NWLaFMHfvA==
2109
+
2110
+
monotonic-timestamp@~0.0.9:
2111
+
version "0.0.9"
2112
+
resolved "https://registry.npmjs.org/monotonic-timestamp/-/monotonic-timestamp-0.0.9.tgz"
2113
+
integrity sha512-PQcys7iTcXiMyW8cgK5B/fhKGteB/WLqWN1f+s7IJHyyRd80JnJYoNo03kTQcGZhVtsKz5kEWiS7W94gfY6qcQ==
2114
+
2115
+
moo@^0.5.0:
2116
+
version "0.5.2"
2117
+
resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz"
2118
+
integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==
2119
+
2120
+
ms@0.7.1:
2121
+
version "0.7.1"
2122
+
resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
2123
+
integrity sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==
2124
+
2125
+
multiblob-http@^0.2.0:
2126
+
version "0.2.0"
2127
+
resolved "https://registry.npmjs.org/multiblob-http/-/multiblob-http-0.2.0.tgz"
2128
+
integrity sha512-VdlUaHrYxW3d/DgpHC8aOnBO/rEH6fcbSM2qPAtco9a0wB7H+5qU+vAawQaHnuK+eltIGuslC3HZ+orKU/6JeQ==
2129
+
dependencies:
2130
+
pull-stream "^3.4.3"
2131
+
stream-to-pull-stream "^1.7.0"
2132
+
2133
+
multiserver-address@^1.0.1:
2134
+
version "1.0.1"
2135
+
resolved "https://registry.npmjs.org/multiserver-address/-/multiserver-address-1.0.1.tgz"
2136
+
integrity sha512-IfZMAGs9onCLkYNSnNBri3JxuvhQYllMyh3W9ry86iEDcfW9uPVsHTHDsjDxQtL+dPq3byshmA+Y4LN2wLHwNw==
2137
+
dependencies:
2138
+
nearley "^2.15.1"
2139
+
2140
+
multiserver@^1.2.0, multiserver@^1.7.0:
2141
+
version "1.7.2"
2142
+
resolved "https://registry.npmjs.org/multiserver/-/multiserver-1.7.2.tgz"
2143
+
integrity sha512-oGwzuh64wmyxF9/w8jdCyYbmPFFhbRuKgc+/SZGS7PgNWUk9ilYQ7vyzysSMytzv/IiurHS96/ymRWre2DvByw==
2144
+
dependencies:
2145
+
pull-cat "~1.1.5"
2146
+
pull-stream "^3.4.3"
2147
+
pull-ws "^3.2.2"
2148
+
secret-handshake "^1.1.1"
2149
+
separator-escape "0.0.0"
2150
+
socks "1.1.9"
2151
+
stream-to-pull-stream "^1.7.2"
2152
+
2153
+
muxrpc@^6.3.3:
2154
+
version "6.3.3"
2155
+
resolved "https://registry.npmjs.org/muxrpc/-/muxrpc-6.3.3.tgz"
2156
+
integrity sha512-h/qoJuzuWpWMPIbiYOT5nJXgmRUOIAg1ycAOTyOsupjXJETna5l2w7LFvmaJJ2vIDJha4M60l54QHrbqEcGlmA==
2157
+
dependencies:
2158
+
explain-error "^1.0.1"
2159
+
packet-stream "~2.0.0"
2160
+
packet-stream-codec "^1.1.1"
2161
+
pull-goodbye "~0.0.1"
2162
+
pull-stream "^3.2.3"
2163
+
2164
+
nan@^2.0.9, nan@^2.3.3, nan@~2.6.1:
2165
+
version "2.6.2"
2166
+
resolved "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz"
2167
+
integrity sha512-K3AyXBwEX6HF3eV46B9YLyyJ66DiBI66v+pTQfz+AyMOdOtg2aH/3WNSDbb3cVDLfPEJmx70aDu60aDTG5x+sw==
2168
+
2169
+
nearley@^2.15.1:
2170
+
version "2.20.1"
2171
+
resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz"
2172
+
integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==
2173
+
dependencies:
2174
+
commander "^2.19.0"
2175
+
moo "^0.5.0"
2176
+
railroad-diagrams "^1.0.0"
2177
+
randexp "0.4.6"
2178
+
2179
+
node-abi@^2.2.0:
2180
+
version "2.30.1"
2181
+
resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz"
2182
+
integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==
2183
+
dependencies:
2184
+
semver "^5.4.1"
2185
+
2186
+
node-forge@^0.6.38, node-forge@^0.6.41:
2187
+
version "0.6.43"
2188
+
resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.6.43.tgz"
2189
+
integrity sha512-m6rYQ6vzGNdZIYZCo4X5sm5iUiqpvp/He4vOXUdP0WzKJ9cHTC/Wz6nzBjZUYiSCLv+C3YGvtcAIxP1Mx1iqcw==
2190
+
2191
+
node-gyp@^3.0.3:
2192
+
version "3.4.0"
2193
+
resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.4.0.tgz"
2194
+
integrity sha512-HtmskmW14d8KGUYYHKFx+W4k2oGeoDLHylGsgRXYh75yFsSrv7/Dw3sdAmuJ4AB/auxa4P5/NC70W4+jFrcofw==
2195
+
dependencies:
2196
+
fstream "^1.0.0"
2197
+
glob "^7.0.3"
2198
+
graceful-fs "^4.1.2"
2199
+
minimatch "^3.0.2"
2200
+
mkdirp "^0.5.0"
2201
+
nopt "2 || 3"
2202
+
npmlog "0 || 1 || 2 || 3"
2203
+
osenv "0"
2204
+
path-array "^1.0.0"
2205
+
request "2"
2206
+
rimraf "2"
2207
+
semver "2.x || 3.x || 4 || 5"
2208
+
tar "^2.0.0"
2209
+
which "1"
2210
+
2211
+
node-ninja@^1.0.1:
2212
+
version "1.0.2"
2213
+
resolved "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz"
2214
+
integrity sha512-wMtWsG2QZI1Z5V7GciX9OI2DVT0PuDRIDQfe3L3rJsQ1qN1Gm3QQhoNtb4PMRi7gq4ByvEIYtPwHC7YbEf5yxw==
2215
+
dependencies:
2216
+
fstream "^1.0.0"
2217
+
glob "3 || 4 || 5 || 6 || 7"
2218
+
graceful-fs "^4.1.2"
2219
+
minimatch "3"
2220
+
mkdirp "^0.5.0"
2221
+
nopt "2 || 3"
2222
+
npmlog "0 || 1 || 2"
2223
+
osenv "0"
2224
+
path-array "^1.0.0"
2225
+
request "2"
2226
+
rimraf "2"
2227
+
semver "2.x || 3.x || 4 || 5"
2228
+
tar "^2.0.0"
2229
+
which "1"
2230
+
2231
+
node-uuid@~1.4.7:
2232
+
version "1.4.7"
2233
+
resolved "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
2234
+
integrity sha512-1ufwSb+P48JyWDskpICvUCAXNaIFcNeln/hhg6yViwOoJ6g26SfaFoYIuGu0grRUsxqeJkC2aq5wAxXo1bT/FA==
2235
+
2236
+
node.extend@^1.1.5:
2237
+
version "1.1.6"
2238
+
resolved "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz"
2239
+
integrity sha512-dkI3ZpV4lhARrqGS/zTJpOaypTvZ1AXdvUc86TjrxQbWyOGq5J/pfptiiThIzraKGmaDpnwGiDOIL+yACUSpGA==
2240
+
dependencies:
2241
+
is "^3.1.0"
2242
+
2243
+
non-private-ip@^1.2.1:
2244
+
version "1.4.1"
2245
+
resolved "https://registry.npmjs.org/non-private-ip/-/non-private-ip-1.4.1.tgz"
2246
+
integrity sha512-Bpl5pRs6HPP8vL/b0yDzEy20HXKNVz6I6PR1rCxAIwjOBpC3T/BfFv036gUNstxtoAVxBKgFL14FfWzC7fxENA==
2247
+
dependencies:
2248
+
ip "~0.3.2"
2249
+
2250
+
noop-logger@^0.1.0, noop-logger@^0.1.1:
2251
+
version "0.1.1"
2252
+
resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz"
2253
+
integrity sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==
2254
+
2255
+
"nopt@2 || 3":
2256
+
version "3.0.6"
2257
+
resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"
2258
+
integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==
2259
+
dependencies:
2260
+
abbrev "1"
2261
+
2262
+
npmlog@^2.0.0, "npmlog@0 || 1 || 2", "npmlog@0 || 1 || 2 || 3":
2263
+
version "2.0.4"
2264
+
resolved "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz"
2265
+
integrity sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ==
2266
+
dependencies:
2267
+
ansi "~0.3.1"
2268
+
are-we-there-yet "~1.1.2"
2269
+
gauge "~1.2.5"
2270
+
2271
+
npmlog@^4.0.1:
2272
+
version "4.1.2"
2273
+
resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"
2274
+
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
2275
+
dependencies:
2276
+
are-we-there-yet "~1.1.2"
2277
+
console-control-strings "~1.1.0"
2278
+
gauge "~2.7.3"
2279
+
set-blocking "~2.0.0"
2280
+
2281
+
number-is-nan@^1.0.0:
2282
+
version "1.0.1"
2283
+
resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
2284
+
integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==
2285
+
2286
+
oauth-sign@~0.8.1:
2287
+
version "0.8.2"
2288
+
resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz"
2289
+
integrity sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==
2290
+
2291
+
object-assign@^4.1.0:
2292
+
version "4.1.0"
2293
+
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz"
2294
+
integrity sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==
2295
+
2296
+
object-keys@^1.1.1:
2297
+
version "1.1.1"
2298
+
resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
2299
+
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
2300
+
2301
+
object-keys@~0.4.0:
2302
+
version "0.4.0"
2303
+
resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz"
2304
+
integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==
2305
+
2306
+
object.assign@^4.1.4:
2307
+
version "4.1.7"
2308
+
resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz"
2309
+
integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
2310
+
dependencies:
2311
+
call-bind "^1.0.8"
2312
+
call-bound "^1.0.3"
2313
+
define-properties "^1.2.1"
2314
+
es-object-atoms "^1.0.0"
2315
+
has-symbols "^1.1.0"
2316
+
object-keys "^1.1.1"
2317
+
2318
+
observable@^2.1.4:
2319
+
version "2.1.4"
2320
+
resolved "https://registry.npmjs.org/observable/-/observable-2.1.4.tgz"
2321
+
integrity sha512-YP03BvfvWSu3IZgcByNp5d9mNJAMjJG8TI2z9rrAR0jQvVH6csE+3VPkAemR0n3hOlI5vJ7gWgg0YPGUFZaQBg==
2322
+
2323
+
obv@0.0.0:
2324
+
version "0.0.0"
2325
+
resolved "https://registry.npmjs.org/obv/-/obv-0.0.0.tgz"
2326
+
integrity sha512-bLAyq8rbd2+Kam6hckUvufIAqIKuYJxaSeVOpsdd+FIZsm14s9vn0rnplqlSaFq9XJFAFsZy+9UHyPuviHC9hA==
2327
+
2328
+
once@^1.3.0, once@^1.3.1:
2329
+
version "1.4.0"
2330
+
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
2331
+
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
2332
+
dependencies:
2333
+
wrappy "1"
2334
+
2335
+
once@~1.3.0:
2336
+
version "1.3.3"
2337
+
resolved "https://registry.npmjs.org/once/-/once-1.3.3.tgz"
2338
+
integrity sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==
2339
+
dependencies:
2340
+
wrappy "1"
2341
+
2342
+
open-external@^0.1.1:
2343
+
version "0.1.1"
2344
+
resolved "https://registry.npmjs.org/open-external/-/open-external-0.1.1.tgz"
2345
+
integrity sha512-rSzSGztPVglGoM7nYpoDdP+tiC8kywl0qICGH7A7Dt0cXHYmCGy0y2Abo9fNU1zElFg9tWHQMo1bkJjWq7NQdQ==
2346
+
2347
+
optimist@~0.6.0:
2348
+
version "0.6.1"
2349
+
resolved "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz"
2350
+
integrity sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==
2351
+
dependencies:
2352
+
minimist "~0.0.1"
2353
+
wordwrap "~0.0.2"
2354
+
2355
+
options@>=0.0.5:
2356
+
version "0.0.6"
2357
+
resolved "https://registry.npmjs.org/options/-/options-0.0.6.tgz"
2358
+
integrity sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==
2359
+
2360
+
os-browserify@~0.1.1:
2361
+
version "0.1.2"
2362
+
resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz"
2363
+
integrity sha512-aZicJZccvxWOZ0Bja2eAch2L8RIJWBuRYmM8Gwl/JjNtRltH0Itcz4eH/ESyuIWfse8cc93ZCf0XrzhXK2HEDA==
2364
+
2365
+
os-browserify@~0.3.0:
2366
+
version "0.3.0"
2367
+
resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz"
2368
+
integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==
2369
+
2370
+
os-homedir@^1.0.0, os-homedir@^1.0.1:
2371
+
version "1.0.2"
2372
+
resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
2373
+
integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==
2374
+
2375
+
os-tmpdir@^1.0.0:
2376
+
version "1.0.2"
2377
+
resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
2378
+
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
2379
+
2380
+
osenv@0:
2381
+
version "0.1.3"
2382
+
resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz"
2383
+
integrity sha512-18fsEKxrUnXycnkcq1EE/i3tGFdhtugTycAlVM5PVazmrVTPA8XV/FCFA0482qJoR8OZa3WGzxxj3SNxJz5O7Q==
2384
+
dependencies:
2385
+
os-homedir "^1.0.0"
2386
+
os-tmpdir "^1.0.0"
2387
+
2388
+
packet-stream-codec@^1.1.1:
2389
+
version "1.1.1"
2390
+
resolved "https://registry.npmjs.org/packet-stream-codec/-/packet-stream-codec-1.1.1.tgz"
2391
+
integrity sha512-7LINz+eibmP6ifADErg5EJclqIUuKg1HxcxDEMoPPlPu9py8Dp5CVylYcMDulgluKWZzUy5MN+DnmqJWcVtlfg==
2392
+
dependencies:
2393
+
pull-reader "^1.2.4"
2394
+
pull-through "^1.0.17"
2395
+
2396
+
packet-stream@~2.0.0:
2397
+
version "2.0.0"
2398
+
resolved "https://registry.npmjs.org/packet-stream/-/packet-stream-2.0.0.tgz"
2399
+
integrity sha512-Gzhme5hOiqM/ZLMnZxHLLp794PDeOmmOAJtEF/MX1ApB8u36THuReuguYKVnNmyuZEcKqNZwFTM2BHorTpzDeg==
2400
+
2401
+
pako@~0.2.0:
2402
+
version "0.2.9"
2403
+
resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz"
2404
+
integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
2405
+
2406
+
pako@~1.0.5:
2407
+
version "1.0.11"
2408
+
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
2409
+
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
2410
+
2411
+
parents@^1.0.0, parents@^1.0.1:
2412
+
version "1.0.1"
2413
+
resolved "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz"
2414
+
integrity sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==
2415
+
dependencies:
2416
+
path-platform "~0.11.15"
2417
+
2418
+
parse-asn1@^5.0.0:
2419
+
version "5.0.0"
2420
+
resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz"
2421
+
integrity sha512-5UdkCzM6fENVxG4S3D7ivyWNozyK5ExOb4xdqW6/ukged2cG1/eQPL+L9Dem719A1Wfi3VvJ/ssSwzp9asI+rg==
2422
+
dependencies:
2423
+
asn1.js "^4.0.0"
2424
+
browserify-aes "^1.0.0"
2425
+
create-hash "^1.1.0"
2426
+
evp_bytestokey "^1.0.0"
2427
+
pbkdf2 "^3.0.3"
2428
+
2429
+
path-array@^1.0.0:
2430
+
version "1.0.1"
2431
+
resolved "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz"
2432
+
integrity sha512-teWG2rJTJJZi2kINKOsHcdIuHP7jy3D7pAsVgdhxMq8kaL2RnS5sg7YTlrClMVCIItcVbPTPI6eMBEoNxYahLA==
2433
+
dependencies:
2434
+
array-index "^1.0.0"
2435
+
2436
+
path-browserify@~0.0.0:
2437
+
version "0.0.0"
2438
+
resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz"
2439
+
integrity sha512-WA3pxi1olUQcsl82W576vkqhUSGp0uBtr/381pxx5WXLp3NC+AB99hUG3aGW7H0Kg9PFr1D8wv1iJeICe+9Mhw==
2440
+
2441
+
path-is-absolute@^1.0.0:
2442
+
version "1.0.1"
2443
+
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
2444
+
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
2445
+
2446
+
path-parse@^1.0.7:
2447
+
version "1.0.7"
2448
+
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
2449
+
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
2450
+
2451
+
path-platform@~0.11.15:
2452
+
version "0.11.15"
2453
+
resolved "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz"
2454
+
integrity sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==
2455
+
2456
+
pbkdf2@^3.0.3:
2457
+
version "3.0.9"
2458
+
resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.9.tgz"
2459
+
integrity sha512-sga/my2defvIpHceQt0sJSQQ/L3Go0cwTEYp8iYBHOSwGIF2jNeila8OD/hRzrkC4bEZm6HIAaU17TEnWYrvgg==
2460
+
dependencies:
2461
+
create-hmac "^1.1.2"
2462
+
2463
+
peaks.js@^0.4.7:
2464
+
version "0.4.9"
2465
+
resolved "https://registry.npmjs.org/peaks.js/-/peaks.js-0.4.9.tgz"
2466
+
integrity sha512-oJpEMKzFue8jdvtEpBzpkZyF2xvCYscNMTL7viQSMS1M4hP1uAlpFYebU7vxwCdE8dHTaocsXCwLhQzqVU1hZw==
2467
+
dependencies:
2468
+
eventemitter2 "~1.0.0"
2469
+
konva "~1.0.0"
2470
+
waveform-data "^1.5.2"
2471
+
2472
+
pinkie-promise@^2.0.0:
2473
+
version "2.0.1"
2474
+
resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
2475
+
integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
2476
+
dependencies:
2477
+
pinkie "^2.0.0"
2478
+
2479
+
pinkie@^2.0.0:
2480
+
version "2.0.4"
2481
+
resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
2482
+
integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
2483
+
2484
+
pkijs@^1.3.27:
2485
+
version "1.3.27"
2486
+
resolved "https://registry.npmjs.org/pkijs/-/pkijs-1.3.27.tgz"
2487
+
integrity sha512-iVLOmMksN/OdY/4q/Rt8zb65L2eGJDQouJHk0xfgLjMeQFbYf5PqVT5RHhiUjHSxkCbNNbXPgptU3BAKIOE/bQ==
2488
+
2489
+
prebuild-install@^2.1.0:
2490
+
version "2.5.3"
2491
+
resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz"
2492
+
integrity sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==
2493
+
dependencies:
2494
+
detect-libc "^1.0.3"
2495
+
expand-template "^1.0.2"
2496
+
github-from-package "0.0.0"
2497
+
minimist "^1.2.0"
2498
+
mkdirp "^0.5.1"
2499
+
node-abi "^2.2.0"
2500
+
noop-logger "^0.1.1"
2501
+
npmlog "^4.0.1"
2502
+
os-homedir "^1.0.1"
2503
+
pump "^2.0.1"
2504
+
rc "^1.1.6"
2505
+
simple-get "^2.7.0"
2506
+
tar-fs "^1.13.0"
2507
+
tunnel-agent "^0.6.0"
2508
+
which-pm-runs "^1.0.0"
2509
+
2510
+
prebuild@^4.1.0:
2511
+
version "4.3.0"
2512
+
resolved "https://registry.npmjs.org/prebuild/-/prebuild-4.3.0.tgz"
2513
+
integrity sha512-jNtGco6vFhdwT9sfnn3JIC3SwN+shFIUYkalDt1qqyQHrkmEertkaDr/2EhRVTzuFiqOCHibv50/8gumJR6Vrg==
2514
+
dependencies:
2515
+
async "^1.4.0"
2516
+
execspawn "^1.0.1"
2517
+
expand-template "^1.0.0"
2518
+
ghreleases "^1.0.2"
2519
+
github-from-package "0.0.0"
2520
+
minimist "^1.1.2"
2521
+
mkdirp "^0.5.1"
2522
+
node-gyp "^3.0.3"
2523
+
node-ninja "^1.0.1"
2524
+
noop-logger "^0.1.0"
2525
+
npmlog "^2.0.0"
2526
+
os-homedir "^1.0.1"
2527
+
pump "^1.0.0"
2528
+
rc "^1.0.3"
2529
+
simple-get "^1.4.2"
2530
+
tar-fs "^1.7.0"
2531
+
tar-stream "^1.2.1"
2532
+
xtend "^4.0.1"
2533
+
2534
+
private-box@^0.2.1:
2535
+
version "0.2.1"
2536
+
resolved "https://registry.npmjs.org/private-box/-/private-box-0.2.1.tgz"
2537
+
integrity sha512-+qsgNSa2uuGmFE1D++93+8oElktnLYaTAy3W7zay+Dcerw1NKHpfOBcvCz0z8+uOSJLhDHwH14ftBMMtSdRYIg==
2538
+
dependencies:
2539
+
chloride "^2.2.1"
2540
+
2541
+
process-nextick-args@~1.0.6:
2542
+
version "1.0.7"
2543
+
resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
2544
+
integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==
2545
+
2546
+
process-nextick-args@~2.0.0:
2547
+
version "2.0.1"
2548
+
resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
2549
+
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
2550
+
2551
+
process@~0.11.0:
2552
+
version "0.11.9"
2553
+
resolved "https://registry.npmjs.org/process/-/process-0.11.9.tgz"
2554
+
integrity sha512-rBG9LeETmhkfw0lr4dB5y3p5NHQadv2gyr+yPgQ8OebVn9LS4CDL7JW6NCdyeE8lzGkQ+x+lyytd+nC26A1DtQ==
2555
+
2556
+
process@~0.5.1:
2557
+
version "0.5.2"
2558
+
resolved "https://registry.npmjs.org/process/-/process-0.5.2.tgz"
2559
+
integrity sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA==
2560
+
2561
+
prr@~0.0.0:
2562
+
version "0.0.0"
2563
+
resolved "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz"
2564
+
integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==
2565
+
2566
+
prr@~1.0.1:
2567
+
version "1.0.1"
2568
+
resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"
2569
+
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
2570
+
2571
+
public-encrypt@^4.0.0:
2572
+
version "4.0.0"
2573
+
resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz"
2574
+
integrity sha512-jypsKydIz+OGpL8/PLPlYtlOP8Sqx54lQa+46srROOvUj02byeX+7RoZH49emN9OZSFiKohPLDMTzWK4JNR5Zg==
2575
+
dependencies:
2576
+
bn.js "^4.1.0"
2577
+
browserify-rsa "^4.0.0"
2578
+
create-hash "^1.1.0"
2579
+
parse-asn1 "^5.0.0"
2580
+
randombytes "^2.0.1"
2581
+
2582
+
pull-box-stream@^1.0.9:
2583
+
version "1.0.11"
2584
+
resolved "https://registry.npmjs.org/pull-box-stream/-/pull-box-stream-1.0.11.tgz"
2585
+
integrity sha512-VGok3ZIsHNbHqh2JOj7cIaDtL4ozNWCGKZl8aCH8oRN4b5GgI0b2Urc+tXDo8czM/qeC/4GDss/YZmz6E9k+hQ==
2586
+
dependencies:
2587
+
chloride "^2.1.1"
2588
+
increment-buffer "~1.0.0"
2589
+
pull-reader "^1.2.5"
2590
+
pull-stream "^3.2.3"
2591
+
pull-through "^1.0.18"
2592
+
split-buffer "~1.0.0"
2593
+
2594
+
pull-cat@^1.1.10, pull-cat@^1.1.11, pull-cat@^1.1.9, pull-cat@~1.1.5:
2595
+
version "1.1.11"
2596
+
resolved "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz"
2597
+
integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==
2598
+
2599
+
pull-defer@^0.2.2:
2600
+
version "0.2.2"
2601
+
resolved "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz"
2602
+
integrity sha512-NbaYHXu0dWKimEb8LdZmTJdte3tuIVWcoSf10v+OcyFx3Dh274xSzvZJYwD+IGRNfX9XEjyKczzEq76wQNV7Vw==
2603
+
2604
+
pull-file@^0.5.0:
2605
+
version "0.5.0"
2606
+
resolved "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz"
2607
+
integrity sha512-4s/IfBLebH/eWUlhp3F3M29mk+B1cryp3W99t/k9J/c033f+HyLLVB2EAMGoN02j8ff7ObkLF1tMaHok3nGS6Q==
2608
+
dependencies:
2609
+
pull-utf8-decoder "^1.0.2"
2610
+
2611
+
pull-flatmap@0.0.1:
2612
+
version "0.0.1"
2613
+
resolved "https://registry.npmjs.org/pull-flatmap/-/pull-flatmap-0.0.1.tgz"
2614
+
integrity sha512-9BgwZPZ6J22kPf9ExoVI3m2yMHdCK8uPf58p6L63t36IgH7NrCX+p3QV8cQ4JmYjwvXDZzimVuJ7IW7iLxm7cA==
2615
+
2616
+
pull-goodbye@~0.0.1:
2617
+
version "0.0.1"
2618
+
resolved "https://registry.npmjs.org/pull-goodbye/-/pull-goodbye-0.0.1.tgz"
2619
+
integrity sha512-np8g0M5/vP6eUX+JNam/k8VVZgZXYUwhXJoptJYLQAwa2rmlCsdITq5ZkMYhootjf2K2uA2jeEoPR2qsB0BkCw==
2620
+
2621
+
pull-handshake@^1.1.1:
2622
+
version "1.1.4"
2623
+
resolved "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz"
2624
+
integrity sha512-+dT8auWatbSNt1o43GKygECvOM2znXdyWwhEQaxztJSvxrNtEqo/wgZttknLfyxxbkbS6qUten6LsXTOwYj0yg==
2625
+
dependencies:
2626
+
pull-cat "^1.1.9"
2627
+
pull-pair "~1.1.0"
2628
+
pull-pushable "^2.0.0"
2629
+
pull-reader "^1.2.3"
2630
+
2631
+
pull-level@^2.0.2, pull-level@^2.0.3:
2632
+
version "2.0.3"
2633
+
resolved "https://registry.npmjs.org/pull-level/-/pull-level-2.0.3.tgz"
2634
+
integrity sha512-UpmLNqNirc+1LiS7htBweOcqpciqYLT0c/dJYue7IR0wHOr3s8jwqWhdSQa23TcN2hcqbxaYg9TWqe/sGgIqJA==
2635
+
dependencies:
2636
+
level-post "~1.0.3"
2637
+
pull-cat "^1.1.9"
2638
+
pull-live "^1.0.1"
2639
+
pull-pushable "^2.0.0"
2640
+
pull-stream "^3.4.0"
2641
+
pull-window "^2.1.4"
2642
+
stream-to-pull-stream "^1.7.1"
2643
+
2644
+
pull-live@^1.0.1:
2645
+
version "1.0.1"
2646
+
resolved "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz"
2647
+
integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==
2648
+
dependencies:
2649
+
pull-cat "^1.1.9"
2650
+
pull-stream "^3.4.0"
2651
+
2652
+
pull-many@^1.0.7:
2653
+
version "1.0.9"
2654
+
resolved "https://registry.npmjs.org/pull-many/-/pull-many-1.0.9.tgz"
2655
+
integrity sha512-+jUydDVlj/HsvtDqxWMSsiRq3B0HVo7RhBV4C0p2nZRS3mFTUEu9SPEBN+B5PMaW8KTnblYhTIaKg7oXgGnj4Q==
2656
+
dependencies:
2657
+
pull-stream "^3.4.5"
2658
+
2659
+
pull-next@^0.0.1:
2660
+
version "0.0.1"
2661
+
resolved "https://registry.npmjs.org/pull-next/-/pull-next-0.0.1.tgz"
2662
+
integrity sha512-vhJtt8LzrZKtNzc3h/JQ8ReC76U+dLAAZN2n5fyJB8GlVYy9c1QxpKUpMvvCUtJ4TuO5GBLQgRU6HqBi0sHfNA==
2663
+
2664
+
pull-pair@~1.1.0:
2665
+
version "1.1.0"
2666
+
resolved "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz"
2667
+
integrity sha512-7VEFLxWnj2AKaN3AvtyaM508d1+56/ulSjDLu4j6kcd9DnEM6LfG8b1R9gCLqzIjJo5stFrWynVc6e451OW4LQ==
2668
+
2669
+
pull-paramap@^1.1.3, pull-paramap@^1.1.6, pull-paramap@^1.2.1:
2670
+
version "1.2.2"
2671
+
resolved "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz"
2672
+
integrity sha512-0ALwLcASif3KmKCXO4liySCKsTfC/mGYhRFch+xLvfJJrYOIfXPthrykDUZpeZtbjEXglPySzfUmYcnBqzTj5w==
2673
+
dependencies:
2674
+
looper "^4.0.0"
2675
+
2676
+
pull-pause@0.0.0:
2677
+
version "0.0.0"
2678
+
resolved "https://registry.npmjs.org/pull-pause/-/pull-pause-0.0.0.tgz"
2679
+
integrity sha512-bbnrVNBeQUO5Vj1ejvl/XHyNAbR3qyZHmOYeTGxCyt1+g7ZM33YeMO9OeebUMKiAstZB/Rc3qrxAMB8mETQ01Q==
2680
+
2681
+
pull-pushable@^2.0.0:
2682
+
version "2.0.1"
2683
+
resolved "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.0.1.tgz"
2684
+
integrity sha512-hx9Dqgr2eQ6X/3n8EX7kBM9PiunMqlNCEgfxZtZMCKA+MKlWCWdVu7l4323+M4FMEYJfnzvkFYDnBN0CISGkZw==
2685
+
2686
+
pull-reader@^1.2.3, pull-reader@^1.2.4, pull-reader@^1.2.5:
2687
+
version "1.2.8"
2688
+
resolved "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.8.tgz"
2689
+
integrity sha512-lOZqGGlAB4uNl6wWkRkt/HwM3EigPqHnJ+u1JRIx/8cXkeJxT+nNEnLdDFfYtK28YEhXW7e7PCoO8VsrQyqDZw==
2690
+
2691
+
pull-reconnect@^0.0.3:
2692
+
version "0.0.3"
2693
+
resolved "https://registry.npmjs.org/pull-reconnect/-/pull-reconnect-0.0.3.tgz"
2694
+
integrity sha512-OrkKw8GzNmwEaHgXR62vEscIoWRAWgdMDwyUk4SVwEsf7gyBkoW1XgU1mQPJ+4vqwlxih4qAj1P7Weg26ox/Ng==
2695
+
dependencies:
2696
+
pull-defer "^0.2.2"
2697
+
2698
+
pull-scroll@^0.2.0:
2699
+
version "0.2.2"
2700
+
resolved "https://registry.npmjs.org/pull-scroll/-/pull-scroll-0.2.2.tgz"
2701
+
integrity sha512-vlOBzb9DFERgVmmEpiP0E9zYI0ruB/Ke7k4+T5xTVfBbCeLF/ruFwR9PAch+LUfhWbYoZSH8PTS1AzJUKNkORw==
2702
+
dependencies:
2703
+
hyperscript "^1.4.7"
2704
+
is-visible "^2.0.1"
2705
+
observable "^2.1.4"
2706
+
pull-pause "0.0.0"
2707
+
pull-stream "^3.0.1"
2708
+
request-animation-loop "^0.1.0"
2709
+
2710
+
pull-sink-through@0.0.0:
2711
+
version "0.0.0"
2712
+
resolved "https://registry.npmjs.org/pull-sink-through/-/pull-sink-through-0.0.0.tgz"
2713
+
integrity sha512-XjpF/3+WRsWfw+XhPgj3I/6WO15VYOKLsXAtWt1sRKOqA6N7bnarut5zuE2GcxbAzspaQxKmMcbUYZ8QorPxcQ==
2714
+
2715
+
pull-stream@^3.0.1, pull-stream@^3.1.0, pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.4.2, pull-stream@^3.4.3, pull-stream@^3.4.5, pull-stream@^3.5.0:
2716
+
version "3.7.0"
2717
+
resolved "https://registry.npmjs.org/pull-stream/-/pull-stream-3.7.0.tgz"
2718
+
integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw==
2719
+
2720
+
pull-through@^1.0.17, pull-through@^1.0.18:
2721
+
version "1.0.18"
2722
+
resolved "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz"
2723
+
integrity sha512-t8BBRdKstI/JoWS3FAXRnBvo1ahoLcKo8nm8ZUzr4OUgIf47RodD6HjnPIpw/d6HQZaMu+TotLAYCNwLTnvcNw==
2724
+
dependencies:
2725
+
looper "~3.0.0"
2726
+
2727
+
pull-utf8-decoder@^1.0.2:
2728
+
version "1.0.2"
2729
+
resolved "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz"
2730
+
integrity sha512-hpGheDlDMMEOkiBwXpiUqaFVR0SlGb23vZyJuHe1s8CWGJVcDEzhy9HHUEIuPjTEajYb90ikKsDmt6lkmTtk5g==
2731
+
2732
+
pull-window@^2.1.4:
2733
+
version "2.1.4"
2734
+
resolved "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz"
2735
+
integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==
2736
+
dependencies:
2737
+
looper "^2.0.0"
2738
+
2739
+
pull-write@^1.0.2, pull-write@^1.1.1:
2740
+
version "1.1.4"
2741
+
resolved "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz"
2742
+
integrity sha512-EkkwRg2EDfPQI1mzUxtSdx5kJAKpbSSoAwwP4+K3ENWUmWqehDQoSx/bM5VeYkl3Hrfkr3nsLyLL2TbfVO9HGw==
2743
+
dependencies:
2744
+
looper "^4.0.0"
2745
+
pull-cat "^1.1.11"
2746
+
pull-stream "^3.4.5"
2747
+
2748
+
pull-ws@^3.2.2:
2749
+
version "3.2.8"
2750
+
resolved "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.8.tgz"
2751
+
integrity sha512-DRvK+UDkoPEnAcsP1C3B7mbx3JgDk7NQrngxWLjunSZgoW6AaMApxLYq10eyrBRGVF4WC0spvOBc7BSF4ly9yg==
2752
+
dependencies:
2753
+
relative-url "^1.0.2"
2754
+
ws "^1.1.0"
2755
+
2756
+
pump@^1.0.0:
2757
+
version "1.0.1"
2758
+
resolved "https://registry.npmjs.org/pump/-/pump-1.0.1.tgz"
2759
+
integrity sha512-AQkT8yuCm6LmumsJ/Ery8afinLeXPvfdya3ODy8rsyYqvKRnHvDaKyAzrIX5V3VV+dOB+yQcjWUbEjWxg4l0WQ==
2760
+
dependencies:
2761
+
end-of-stream "^1.1.0"
2762
+
once "^1.3.1"
2763
+
2764
+
pump@^2.0.1:
2765
+
version "2.0.1"
2766
+
resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz"
2767
+
integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
2768
+
dependencies:
2769
+
end-of-stream "^1.1.0"
2770
+
once "^1.3.1"
2771
+
2772
+
punycode@^1.3.2:
2773
+
version "1.4.1"
2774
+
resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
2775
+
integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
2776
+
2777
+
punycode@1.3.2:
2778
+
version "1.3.2"
2779
+
resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
2780
+
integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
2781
+
2782
+
pyconf@^1.1.2:
2783
+
version "1.1.2"
2784
+
resolved "https://registry.npmjs.org/pyconf/-/pyconf-1.1.2.tgz"
2785
+
integrity sha512-axoR6k7p8dKYi6EjWYymuA1Xop/2fyMK0nrFwO9WVnGPGmdUeHHP3D+H6/QRNkhn0huRkEJqUcK9+K+Z2JToAg==
2786
+
dependencies:
2787
+
safe-replace "^1.0.2"
2788
+
2789
+
qs@~6.2.0:
2790
+
version "6.2.1"
2791
+
resolved "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz"
2792
+
integrity sha512-8yYCrxot1tgWocouWKNcewB8VdWuFe1Ab4GU38bg1gGNutR9bMMHaJgxDS5BGRVSLnyRrFhfJ8f04Er/kRmbLg==
2793
+
2794
+
querystring-es3@~0.2.0:
2795
+
version "0.2.1"
2796
+
resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"
2797
+
integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==
2798
+
2799
+
querystring@0.2.0:
2800
+
version "0.2.0"
2801
+
resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"
2802
+
integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==
2803
+
2804
+
railroad-diagrams@^1.0.0:
2805
+
version "1.0.0"
2806
+
resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz"
2807
+
integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==
2808
+
2809
+
randexp@0.4.6:
2810
+
version "0.4.6"
2811
+
resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz"
2812
+
integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==
2813
+
dependencies:
2814
+
discontinuous-range "1.0.0"
2815
+
ret "~0.1.10"
2816
+
2817
+
randombytes@^2.0.0, randombytes@^2.0.1:
2818
+
version "2.0.3"
2819
+
resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz"
2820
+
integrity sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==
2821
+
2822
+
rc@^1.0.3, rc@^1.1.6:
2823
+
version "1.1.6"
2824
+
resolved "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz"
2825
+
integrity sha512-kKP2v/do9XlmKORXSHhVRnrsS0LVUhwfFhs/7fsLxQDYxuR+LA46Zivb3XBgomwRUwmf5W6QDqyQxQIhE850eA==
2826
+
dependencies:
2827
+
deep-extend "~0.4.0"
2828
+
ini "~1.3.0"
2829
+
minimist "^1.2.0"
2830
+
strip-json-comments "~1.0.4"
2831
+
2832
+
read-only-stream@^2.0.0:
2833
+
version "2.0.0"
2834
+
resolved "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz"
2835
+
integrity sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==
2836
+
dependencies:
2837
+
readable-stream "^2.0.2"
2838
+
2839
+
readable-stream@^1.0.33:
2840
+
version "1.1.14"
2841
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
2842
+
integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==
2843
+
dependencies:
2844
+
core-util-is "~1.0.0"
2845
+
inherits "~2.0.1"
2846
+
isarray "0.0.1"
2847
+
string_decoder "~0.10.x"
2848
+
2849
+
readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.0:
2850
+
version "2.1.5"
2851
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz"
2852
+
integrity sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==
2853
+
dependencies:
2854
+
buffer-shims "^1.0.0"
2855
+
core-util-is "~1.0.0"
2856
+
inherits "~2.0.1"
2857
+
isarray "~1.0.0"
2858
+
process-nextick-args "~1.0.6"
2859
+
string_decoder "~0.10.x"
2860
+
util-deprecate "~1.0.1"
2861
+
2862
+
readable-stream@^2.2.2:
2863
+
version "2.3.8"
2864
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
2865
+
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
2866
+
dependencies:
2867
+
core-util-is "~1.0.0"
2868
+
inherits "~2.0.3"
2869
+
isarray "~1.0.0"
2870
+
process-nextick-args "~2.0.0"
2871
+
safe-buffer "~5.1.1"
2872
+
string_decoder "~1.1.1"
2873
+
util-deprecate "~1.0.1"
2874
+
2875
+
readable-stream@^3.6.0:
2876
+
version "3.6.2"
2877
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
2878
+
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
2879
+
dependencies:
2880
+
inherits "^2.0.3"
2881
+
string_decoder "^1.1.1"
2882
+
util-deprecate "^1.0.1"
2883
+
2884
+
"readable-stream@>=1.0.33-1 <1.1.0-0":
2885
+
version "1.0.34"
2886
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz"
2887
+
integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
2888
+
dependencies:
2889
+
core-util-is "~1.0.0"
2890
+
inherits "~2.0.1"
2891
+
isarray "0.0.1"
2892
+
string_decoder "~0.10.x"
2893
+
2894
+
readable-stream@~1.0.17:
2895
+
version "1.0.34"
2896
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz"
2897
+
integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
2898
+
dependencies:
2899
+
core-util-is "~1.0.0"
2900
+
inherits "~2.0.1"
2901
+
isarray "0.0.1"
2902
+
string_decoder "~0.10.x"
2903
+
2904
+
readable-stream@~1.1.9:
2905
+
version "1.1.14"
2906
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
2907
+
integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==
2908
+
dependencies:
2909
+
core-util-is "~1.0.0"
2910
+
inherits "~2.0.1"
2911
+
isarray "0.0.1"
2912
+
string_decoder "~0.10.x"
2913
+
2914
+
readable-stream@~2.0.0:
2915
+
version "2.0.6"
2916
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
2917
+
integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==
2918
+
dependencies:
2919
+
core-util-is "~1.0.0"
2920
+
inherits "~2.0.1"
2921
+
isarray "~1.0.0"
2922
+
process-nextick-args "~1.0.6"
2923
+
string_decoder "~0.10.x"
2924
+
util-deprecate "~1.0.1"
2925
+
2926
+
readable-stream@~2.0.5:
2927
+
version "2.0.6"
2928
+
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
2929
+
integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==
2930
+
dependencies:
2931
+
core-util-is "~1.0.0"
2932
+
inherits "~2.0.1"
2933
+
isarray "~1.0.0"
2934
+
process-nextick-args "~1.0.6"
2935
+
string_decoder "~0.10.x"
2936
+
util-deprecate "~1.0.1"
2937
+
2938
+
relative-url@^1.0.2:
2939
+
version "1.0.2"
2940
+
resolved "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz"
2941
+
integrity sha512-jI1AmBVFFMXwQ3I6tIYVmVOjy8f+ogHbqkeb8/LL9tszEQiTV8I0l8XT4oEomUOoxfm698f92gYlNKeA/9LJVQ==
2942
+
2943
+
request-animation-loop@^0.1.0:
2944
+
version "0.1.0"
2945
+
resolved "https://registry.npmjs.org/request-animation-loop/-/request-animation-loop-0.1.0.tgz"
2946
+
integrity sha512-r8aDYOFn3l8AfGbzoKH7d9HIzpr1TVFVCX4wuuYem5WTOtC/zISedBWXP6fdxUjdvEJS+okn0ezq7uJvNmN2yg==
2947
+
2948
+
request@^2.55.0, request@^2.67.0, request@2:
2949
+
version "2.75.0"
2950
+
resolved "https://registry.npmjs.org/request/-/request-2.75.0.tgz"
2951
+
integrity sha512-uNXre8CefDRFBhfB1bL0CkKBD+5E1xmx69KMjl7p+bBc0vesXLQMS+iwsI2pKRlYZOOtLzkeBfz7jItKA3XlKQ==
2952
+
dependencies:
2953
+
aws-sign2 "~0.6.0"
2954
+
aws4 "^1.2.1"
2955
+
bl "~1.1.2"
2956
+
caseless "~0.11.0"
2957
+
combined-stream "~1.0.5"
2958
+
extend "~3.0.0"
2959
+
forever-agent "~0.6.1"
2960
+
form-data "~2.0.0"
2961
+
har-validator "~2.0.6"
2962
+
hawk "~3.1.3"
2963
+
http-signature "~1.1.0"
2964
+
is-typedarray "~1.0.0"
2965
+
isstream "~0.1.2"
2966
+
json-stringify-safe "~5.0.1"
2967
+
mime-types "~2.1.7"
2968
+
node-uuid "~1.4.7"
2969
+
oauth-sign "~0.8.1"
2970
+
qs "~6.2.0"
2971
+
stringstream "~0.0.4"
2972
+
tough-cookie "~2.3.0"
2973
+
tunnel-agent "~0.4.1"
2974
+
2975
+
resolve@^1.1.3, resolve@1.1.7:
2976
+
version "1.1.7"
2977
+
resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz"
2978
+
integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==
2979
+
2980
+
resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0:
2981
+
version "1.22.11"
2982
+
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz"
2983
+
integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
2984
+
dependencies:
2985
+
is-core-module "^2.16.1"
2986
+
path-parse "^1.0.7"
2987
+
supports-preserve-symlinks-flag "^1.0.0"
2988
+
2989
+
ret@~0.1.10:
2990
+
version "0.1.15"
2991
+
resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
2992
+
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
2993
+
2994
+
rimraf@2:
2995
+
version "2.5.4"
2996
+
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz"
2997
+
integrity sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==
2998
+
dependencies:
2999
+
glob "^7.0.5"
3000
+
3001
+
ripemd160@^1.0.0:
3002
+
version "1.0.1"
3003
+
resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz"
3004
+
integrity sha512-J0YlH2ow/i7d5PJX9RC1XnjmZc7cNNYWe89PIlFszvHeiEtxzA1/VYePkjQ7l1SkUejAcHeDo3IVp2WIzstXXQ==
3005
+
3006
+
rsa-compat@^1.2.1, rsa-compat@^1.2.3:
3007
+
version "1.2.7"
3008
+
resolved "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.2.7.tgz"
3009
+
integrity sha512-k9l39pKnoQ257/Vu9mhbGiYvChc4BaiAtjJ/d6btyEi2+k46W94Xh+piof97ypzcD0pVdAnAMOXT6nb+2WxiaA==
3010
+
dependencies:
3011
+
buffer-v6-polyfill "^1.0.3"
3012
+
node-forge "^0.6.41"
3013
+
optionalDependencies:
3014
+
ursa "^0.9.4"
3015
+
3016
+
safe-buffer@^5.0.1, safe-buffer@~5.2.0:
3017
+
version "5.2.1"
3018
+
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
3019
+
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
3020
+
3021
+
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
3022
+
version "5.1.2"
3023
+
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
3024
+
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
3025
+
3026
+
safe-replace@^1.0.2:
3027
+
version "1.0.2"
3028
+
resolved "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz"
3029
+
integrity sha512-MpcY3osIccSpsVtlCswRxt1qaWqcQoUCVtOD/4fap2BoJAE2b5jP32s2K6VTFHQBN03Gb9CGVwn77T0cTcW1nw==
3030
+
3031
+
secret-handshake@^1.1.1:
3032
+
version "1.1.1"
3033
+
resolved "https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.1.tgz"
3034
+
integrity sha512-24n9/+iIVJ7VfdoY2qO1AfKg/CFEi1tPXV3+hUJLrbT9esH/W7mwvnMmD4Nbou7vOC6c+qIMOuxRlFCiVoa/eQ==
3035
+
dependencies:
3036
+
chloride "^2.0.1"
3037
+
deep-equal "~1.0.0"
3038
+
pull-box-stream "^1.0.9"
3039
+
pull-handshake "^1.1.1"
3040
+
pull-stream "^3.4.5"
3041
+
3042
+
semver@^5.4.1, "semver@2.x || 3.x || 4 || 5":
3043
+
version "5.7.2"
3044
+
resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
3045
+
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
3046
+
3047
+
semver@~5.1.0:
3048
+
version "5.1.1"
3049
+
resolved "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz"
3050
+
integrity sha512-bNx9Zdbi1OUN62PbKeG4IgGG8YILX/nkHJ0NQEBwg5FmX8qTJfqhYd3reqkm0DxHCC8nkazb6UjNiBSHCBWVtA==
3051
+
3052
+
separator-escape@0.0.0:
3053
+
version "0.0.0"
3054
+
resolved "https://registry.npmjs.org/separator-escape/-/separator-escape-0.0.0.tgz"
3055
+
integrity sha512-u5Na+20Qk6SEr/3MgAaw6JMddE5+nmhaI+a0PZ4AkfEwDc+zH/Qlm4pHwE2kquw2aZ39758YEkJaVOhFYiRzNQ==
3056
+
3057
+
set-blocking@~2.0.0:
3058
+
version "2.0.0"
3059
+
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
3060
+
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
3061
+
3062
+
set-function-length@^1.2.2:
3063
+
version "1.2.2"
3064
+
resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz"
3065
+
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
3066
+
dependencies:
3067
+
define-data-property "^1.1.4"
3068
+
es-errors "^1.3.0"
3069
+
function-bind "^1.1.2"
3070
+
get-intrinsic "^1.2.4"
3071
+
gopd "^1.0.1"
3072
+
has-property-descriptors "^1.0.2"
3073
+
3074
+
sha.js@^2.3.6, sha.js@^2.4.4, sha.js@^2.4.5, sha.js@~2.4.4:
3075
+
version "2.4.5"
3076
+
resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz"
3077
+
integrity sha512-459AP5kwdIhtMLLE1+h2q5a6E7hyY7Ri88GUIhFsyrQinKkm+7qj1ARHELow7GkFS7oimWmIwhXTSxBsuNuOsw==
3078
+
dependencies:
3079
+
inherits "^2.0.1"
3080
+
3081
+
shasum@^1.0.0:
3082
+
version "1.0.2"
3083
+
resolved "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz"
3084
+
integrity sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==
3085
+
dependencies:
3086
+
json-stable-stringify "~0.0.0"
3087
+
sha.js "~2.4.4"
3088
+
3089
+
shell-quote@^1.4.3, shell-quote@^1.6.1:
3090
+
version "1.8.3"
3091
+
resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz"
3092
+
integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
3093
+
3094
+
signal-exit@^3.0.0:
3095
+
version "3.0.1"
3096
+
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz"
3097
+
integrity sha512-jMxoxd0fzr1lrcP3NJqu4d+DG0R41ZvTsnO8HUYmtN0oFzi0WijhuYJfsofAT7NhWcqhJfqa4auDDTTb0I1rYw==
3098
+
3099
+
simple-concat@^1.0.0:
3100
+
version "1.0.1"
3101
+
resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz"
3102
+
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
3103
+
3104
+
simple-get@^1.4.2:
3105
+
version "1.4.3"
3106
+
resolved "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz"
3107
+
integrity sha512-ddVP3P/VdMhY0DFWh5oxKMThsGYjlEJBD/mXuyzfCHOqpaa56XpLDvtv4tzcQ1Z2CWgFGEu5zFwCCxpV1xV0fQ==
3108
+
dependencies:
3109
+
once "^1.3.1"
3110
+
unzip-response "^1.0.0"
3111
+
xtend "^4.0.0"
3112
+
3113
+
simple-get@^2.7.0:
3114
+
version "2.8.2"
3115
+
resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz"
3116
+
integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==
3117
+
dependencies:
3118
+
decompress-response "^3.3.0"
3119
+
once "^1.3.1"
3120
+
simple-concat "^1.0.0"
3121
+
3122
+
simple-mime@^0.1.0, simple-mime@~0.1.0:
3123
+
version "0.1.0"
3124
+
resolved "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz"
3125
+
integrity sha512-2EoTElzj77w0hV4lW6nWdA+MR+81hviMBhEc/ppUi0+Q311EFCvwKrGS7dcxqvGRKnUdbAyqPJtBQbRYgmtmvQ==
3126
+
3127
+
smart-buffer@^1.0.4:
3128
+
version "1.0.11"
3129
+
resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.0.11.tgz"
3130
+
integrity sha512-D6zJTJiHCgEX+caCflF8FK6bbCm7rOrw7T5DExcP/9kyCKWySJM4No7IJhzcF6d4oGys8+MSAFrjfaudrI02eg==
3131
+
3132
+
sntp@1.x.x:
3133
+
version "1.0.9"
3134
+
resolved "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
3135
+
integrity sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==
3136
+
dependencies:
3137
+
hoek "2.x.x"
3138
+
3139
+
socks@1.1.9:
3140
+
version "1.1.9"
3141
+
resolved "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz"
3142
+
integrity sha512-EgVaUkNNlJ/Fi4USs0QV8JzTxOgRcBOszWQPwderdc27LhgF1VWOiB9D1VzLtenGuezlyVe9GhscFlnicFHvsA==
3143
+
dependencies:
3144
+
ip "^1.1.2"
3145
+
smart-buffer "^1.0.4"
3146
+
3147
+
sodium-browserify-tweetnacl@^0.2.0:
3148
+
version "0.2.1"
3149
+
resolved "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.1.tgz"
3150
+
integrity sha512-Zp2I5qebwmT3Lc3GXkluLgLySlMu0t/rRGgzyMbbIy4I2Mh8hAMtvWHqDt1xINS8gZl5ENgQnaQY0kXqvX0pug==
3151
+
dependencies:
3152
+
chloride-test "^1.1.0"
3153
+
ed2curve "^0.1.4"
3154
+
sha.js "^2.4.5"
3155
+
tweetnacl "^0.14.1"
3156
+
tweetnacl-auth "^0.3.0"
3157
+
3158
+
sodium-browserify@^1.0.3:
3159
+
version "1.2.0"
3160
+
resolved "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.0.tgz"
3161
+
integrity sha512-tblnZTeTr80l+FmPnybHyGWKmPYbrnuVyepI3TSaJYoWaGhjPeEwwCpODVSnhtOK6y+y/yrEsbKY1svQBx9RXQ==
3162
+
dependencies:
3163
+
libsodium-wrappers "^0.2.9"
3164
+
sha.js "^2.4.4"
3165
+
tweetnacl "^0.14.1"
3166
+
3167
+
sodium-prebuilt@1.0.22:
3168
+
version "1.0.22"
3169
+
resolved "https://registry.npmjs.org/sodium-prebuilt/-/sodium-prebuilt-1.0.22.tgz"
3170
+
integrity sha512-yG+3uIjXjdmOVkhsrnkgIEiwln8km2qUUOQcv9+YzdZYHr2gPw2D/Y2xOdflmFE+wdMbF+FRW+SSieP+jpTvmg==
3171
+
dependencies:
3172
+
nan "^2.0.9"
3173
+
prebuild "^4.1.0"
3174
+
3175
+
source-map@~0.5.3:
3176
+
version "0.5.6"
3177
+
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz"
3178
+
integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==
3179
+
3180
+
split-buffer@^1.0.0, split-buffer@~1.0.0:
3181
+
version "1.0.0"
3182
+
resolved "https://registry.npmjs.org/split-buffer/-/split-buffer-1.0.0.tgz"
3183
+
integrity sha512-cbHOF413jAsBL7JLpU1RWX07Xs+dPb25DbeCvwDzSN3+4bNmRPJa2QHpDdtREgGKgIfx6Tzj/jiqyOS3kNLPnQ==
3184
+
3185
+
ssb-avatar@^0.2.0:
3186
+
version "0.2.0"
3187
+
resolved "https://registry.npmjs.org/ssb-avatar/-/ssb-avatar-0.2.0.tgz"
3188
+
integrity sha512-rv1SwQDE7OhavLWIbTxvWf2R2Qq3svp7OLT+49OECr8kSrQN1XGQqeI1bVdzFSr0DBwjxHES56+2FLkhk6Qmvw==
3189
+
dependencies:
3190
+
pull-cat "^1.1.9"
3191
+
pull-stream "^3.4.3"
3192
+
ssb-msgs "^5.2.0"
3193
+
ssb-ref "^2.3.2"
3194
+
3195
+
ssb-client@^4.0.3:
3196
+
version "4.3.0"
3197
+
resolved "https://registry.npmjs.org/ssb-client/-/ssb-client-4.3.0.tgz"
3198
+
integrity sha512-nYQYWa2KhzmkVsKqtngoeMY20CQHY/rClfz4RbvtjJUkUJgowoNxOEC7WGp+1EWh/hjrl2+LyAKJMs/OPiuRbg==
3199
+
dependencies:
3200
+
explain-error "^1.0.1"
3201
+
multiserver "^1.7.0"
3202
+
muxrpc "^6.3.3"
3203
+
ssb-config "^2.0.0"
3204
+
ssb-keys "^6.0.0"
3205
+
3206
+
ssb-config@^2.0.0, ssb-config@^2.1.1:
3207
+
version "2.2.0"
3208
+
resolved "https://registry.npmjs.org/ssb-config/-/ssb-config-2.2.0.tgz"
3209
+
integrity sha512-+ib7Xfw+6y4mlNNPv79FQhbVXGkzs147lScSjzy6mLXSfdOvQ+FCK1IkfH9rQwYqYBzvzqwpWiaWx0Uvl+vDHg==
3210
+
dependencies:
3211
+
deep-extend "^0.4.0"
3212
+
non-private-ip "^1.2.1"
3213
+
os-homedir "^1.0.1"
3214
+
rc "^1.1.6"
3215
+
3216
+
ssb-feed@^2.2.1:
3217
+
version "2.2.1"
3218
+
resolved "https://registry.npmjs.org/ssb-feed/-/ssb-feed-2.2.1.tgz"
3219
+
integrity sha512-1V9KvBU3BHafWy6+090LJdpFg51qKCrvP27GqBje38KO2exIS1TlPq3Bfu17p7ME5jv3s7DRABx5vIhuQcV+XQ==
3220
+
dependencies:
3221
+
cont "~1.0.3"
3222
+
monotonic-timestamp "~0.0.9"
3223
+
pull-stream "^3.4.2"
3224
+
ssb-keys "^6.0.0"
3225
+
ssb-ref "^2.0.0"
3226
+
3227
+
ssb-git@^0.4.1:
3228
+
version "0.4.1"
3229
+
resolved "https://registry.npmjs.org/ssb-git/-/ssb-git-0.4.1.tgz"
3230
+
integrity sha512-ynvSboLrJsOn3rW/kxM3IvmdFug5Tp/dj//K2D8tlT9ZxddYEmlOHKtYYafkcTCwy2H8HtnsTtyGie1hiLke3g==
3231
+
3232
+
ssb-keys@^6.0.0, ssb-keys@^6.1.0:
3233
+
version "6.1.2"
3234
+
resolved "https://registry.npmjs.org/ssb-keys/-/ssb-keys-6.1.2.tgz"
3235
+
integrity sha512-qOfeRDVcfPZ+SmZjfcOxC1eF8r5V5BNF4SPyGQeX4dq5/9D6t1LdAIesQnd7My8H6OK2uuF848NCqhf0qQHpMw==
3236
+
dependencies:
3237
+
blake2s "~1.0.0"
3238
+
chloride "^2.2.0"
3239
+
deep-equal "~0.2.1"
3240
+
hmac "~1.0.1"
3241
+
mkdirp "~0.5.0"
3242
+
private-box "^0.2.1"
3243
+
ssb-ref "^2.0.0"
3244
+
3245
+
ssb-links@^2.0.0:
3246
+
version "2.0.1"
3247
+
resolved "https://registry.npmjs.org/ssb-links/-/ssb-links-2.0.1.tgz"
3248
+
integrity sha512-Kv6hmrhHQctlz/91Hct9fqheCuoTyagmR7/b73bco27TCaJGwUAenutauCEY+9YHnYkDSTKPT2vcVr7OJLXaVg==
3249
+
dependencies:
3250
+
flumeview-query "^4.0.0"
3251
+
pull-stream "^3.1.0"
3252
+
ssb-msgs "^5.2.0"
3253
+
streamview-links "^2.0.0"
3254
+
3255
+
ssb-markdown@^3.0.0:
3256
+
version "3.0.0"
3257
+
resolved "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.0.0.tgz"
3258
+
integrity sha512-pHtIpsC4Nt30PyyK2fMVNC0w5Cy/jpHfp8xK03k5wyu4Vv4PtGovKK3g6UL2O/+8aw7ue3B+JiLpGDVUKL5suQ==
3259
+
dependencies:
3260
+
emoji-named-characters "^1.0.2"
3261
+
ssb-marked "^0.5.4"
3262
+
ssb-msgs "^5.2.0"
3263
+
ssb-ref "^2.3.0"
3264
+
3265
+
ssb-marked@^0.5.4:
3266
+
version "0.5.4"
3267
+
resolved "https://registry.npmjs.org/ssb-marked/-/ssb-marked-0.5.4.tgz"
3268
+
integrity sha512-0iFQjakjxW7hxlai+GHE7T+xnJUsWA+cpPpr4Y7aEJGZXjgwMp80S8ZR7uRhqV1JG1z33LJRC7jgw23LilSJGA==
3269
+
3270
+
ssb-mentions@^0.1.0:
3271
+
version "0.1.0"
3272
+
resolved "https://registry.npmjs.org/ssb-mentions/-/ssb-mentions-0.1.0.tgz"
3273
+
integrity sha512-L51ec1iGKNMz70ulzDB8UCWbIzMo/tge7VorqunOi/KV1XDtiWd/NdTIpcRdxGOR9Srf8T9K9DRYzHPU9sxDug==
3274
+
dependencies:
3275
+
ssb-marked "^0.5.4"
3276
+
ssb-ref "^2.3.0"
3277
+
3278
+
ssb-msgs@^5.2.0:
3279
+
version "5.2.0"
3280
+
resolved "https://registry.npmjs.org/ssb-msgs/-/ssb-msgs-5.2.0.tgz"
3281
+
integrity sha512-a5SF3fnXhXhcEIT406QNPftf+9YbPWFYFABNudreB19RrE0N3JsJL7bm/eKWgVd0fXNpARZJF3f5BYYMUv6lFw==
3282
+
dependencies:
3283
+
ssb-ref "^2.0.0"
3284
+
3285
+
ssb-query@^0.1.1:
3286
+
version "0.1.2"
3287
+
resolved "https://registry.npmjs.org/ssb-query/-/ssb-query-0.1.2.tgz"
3288
+
integrity sha512-cv4W/0a4rW/7YlrH7m7fKokORUdx+9DezorYQoIy8IMvFeYIoBpCFj230VsZ9/K0eCnvbE+eMK09NcVuCO2yvw==
3289
+
dependencies:
3290
+
explain-error "^1.0.1"
3291
+
pull-stream "^3.4.2"
3292
+
streamview-links "^2.0.0"
3293
+
3294
+
ssb-ref@^2.0.0, ssb-ref@^2.3.0, ssb-ref@^2.3.2, ssb-ref@^2.6.2:
3295
+
version "2.16.0"
3296
+
resolved "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.16.0.tgz"
3297
+
integrity sha512-ylyrfz9NLxwTCbeDDAdLo++O3elhNs6/gUqMhZ22F+gSOIjwXy2X7dpg5Q1YTH7uALOSu307Rpo1UfK9sj7Sjw==
3298
+
dependencies:
3299
+
ip "^1.1.3"
3300
+
is-canonical-base64 "^1.1.1"
3301
+
is-valid-domain "~0.0.1"
3302
+
multiserver-address "^1.0.1"
3303
+
3304
+
ssb-sort@^1.0.0:
3305
+
version "1.0.0"
3306
+
resolved "https://registry.npmjs.org/ssb-sort/-/ssb-sort-1.0.0.tgz"
3307
+
integrity sha512-qahpQ/wnxoaSlK0QnQEwilANmuD9MhzTH9FNhwzhdyqs0ZXp2r0eOXPiwY7B/U5RJAQ0G8TBLUTrrhwWfh0T5w==
3308
+
dependencies:
3309
+
ssb-ref "^2.3.0"
3310
+
3311
+
ssb-sort@0.0.0:
3312
+
version "0.0.0"
3313
+
resolved "https://registry.npmjs.org/ssb-sort/-/ssb-sort-0.0.0.tgz"
3314
+
integrity sha512-wd6WoIaQ+6UHXa5YYpTJtnMXIHgyQa1N9Pi43/DAgaaUX2w4RzmJIgW4x5EnQAH+8XRLB4XjNyRLqwsa/nKohA==
3315
+
dependencies:
3316
+
ssb-ref "^2.3.0"
3317
+
3318
+
ssb-ws@^0.6.2:
3319
+
version "0.6.2"
3320
+
resolved "https://registry.npmjs.org/ssb-ws/-/ssb-ws-0.6.2.tgz"
3321
+
integrity sha512-RRtXWmGrnNFfZlE7pl3yAashMGmGI51NOOpIO00kjQwNIzoryUEIZRrtc5l9rqXRh5nlNIrcNLP/PEOAEpEPWQ==
3322
+
dependencies:
3323
+
multiblob-http "^0.2.0"
3324
+
multiserver "^1.2.0"
3325
+
muxrpc "^6.3.3"
3326
+
pull-stream "^3.4.3"
3327
+
ssb-ref "^2.3.0"
3328
+
ssb-sort "0.0.0"
3329
+
stack "^0.1.0"
3330
+
web-bootloader "^0.1.0"
3331
+
optionalDependencies:
3332
+
letsencrypt-express "^1.1.5"
3333
+
3334
+
sshpk@^1.7.0:
3335
+
version "1.10.1"
3336
+
resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz"
3337
+
integrity sha512-ywhcxCSLw4u+wfJM4XDCtuyXmGEiJ3kHZcnaiehYztqaRf3hj9RE8yamh77ToBD59GxfrQZawktGV+vm8cFdPw==
3338
+
dependencies:
3339
+
asn1 "~0.2.3"
3340
+
assert-plus "^1.0.0"
3341
+
dashdash "^1.12.0"
3342
+
getpass "^0.1.1"
3343
+
optionalDependencies:
3344
+
bcrypt-pbkdf "^1.0.0"
3345
+
ecc-jsbn "~0.1.1"
3346
+
jodid25519 "^1.0.0"
3347
+
jsbn "~0.1.0"
3348
+
tweetnacl "~0.14.0"
3349
+
3350
+
stack@^0.1.0:
3351
+
version "0.1.0"
3352
+
resolved "https://registry.npmjs.org/stack/-/stack-0.1.0.tgz"
3353
+
integrity sha512-MCDcCsqemsYpCg/eeR48p6RqA18We4AaXcYmiZyppx27AA58oleDMZpG+ewRA61vG5iUeAGPHinkFQg/REZMfA==
3354
+
3355
+
stream-browserify@^2.0.0:
3356
+
version "2.0.1"
3357
+
resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz"
3358
+
integrity sha512-nmQnY9D9TlnfQIkYJCCWxvCcQODilFRZIw14gCMYQVXOiY4E1Ze1VMxB+6y3qdXHpTordULo2qWloHmNcNAQYw==
3359
+
dependencies:
3360
+
inherits "~2.0.1"
3361
+
readable-stream "^2.0.2"
3362
+
3363
+
stream-combiner2@^1.1.1:
3364
+
version "1.1.1"
3365
+
resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz"
3366
+
integrity sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==
3367
+
dependencies:
3368
+
duplexer2 "~0.1.0"
3369
+
readable-stream "^2.0.2"
3370
+
3371
+
stream-http@^2.0.0:
3372
+
version "2.4.0"
3373
+
resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.4.0.tgz"
3374
+
integrity sha512-W+HxMdxUvvJVzlqe4sa2bwymVmsYyCcF95pms8ilZXDjXvt8rEadIgMFdjvIgdkWqxmcqAKlv1Wyf6bxHj4jPQ==
3375
+
dependencies:
3376
+
builtin-status-codes "^2.0.0"
3377
+
inherits "^2.0.1"
3378
+
readable-stream "^2.1.0"
3379
+
to-arraybuffer "^1.0.0"
3380
+
xtend "^4.0.0"
3381
+
3382
+
stream-http@^3.0.0:
3383
+
version "3.2.0"
3384
+
resolved "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz"
3385
+
integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==
3386
+
dependencies:
3387
+
builtin-status-codes "^3.0.0"
3388
+
inherits "^2.0.4"
3389
+
readable-stream "^3.6.0"
3390
+
xtend "^4.0.2"
3391
+
3392
+
stream-splicer@^2.0.0:
3393
+
version "2.0.0"
3394
+
resolved "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz"
3395
+
integrity sha512-lrpyV50Z1AGT5PC4KMKaZX0+4H9V/Dh/6q8NpGqHbNeuraq8etHPRYlUvca2yRemGVkUBBcdIuyhqKDdgkKzkQ==
3396
+
dependencies:
3397
+
inherits "^2.0.1"
3398
+
readable-stream "^2.0.2"
3399
+
3400
+
stream-to-pull-stream@^1.7.0, stream-to-pull-stream@^1.7.1, stream-to-pull-stream@^1.7.2:
3401
+
version "1.7.2"
3402
+
resolved "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz"
3403
+
integrity sha512-KSa5iA3hxM33WYgeKY5CITZdArSw+GFjbTRb/NjSMLz+4o1ijkiub5A8HeD11cbcHMPnkBUNWDJaRmINSWgk8A==
3404
+
dependencies:
3405
+
looper "^3.0.0"
3406
+
pull-stream "^3.2.3"
3407
+
3408
+
streamview-links@^2.0.0:
3409
+
version "2.1.1"
3410
+
resolved "https://registry.npmjs.org/streamview-links/-/streamview-links-2.1.1.tgz"
3411
+
integrity sha512-tmv/Afk/7X20B5LDULZ4gNNZuMR9tZPPSgNoZhLAlpZ9rCg/b0Gs0KFS9KweIJ96U+EU54SiOWjetzQynTPw/g==
3412
+
dependencies:
3413
+
bytewise "^1.1.0"
3414
+
explain-error "^1.0.1"
3415
+
level "^1.4.0"
3416
+
ltgt "^2.1.2"
3417
+
map-filter-reduce "^3.0.2"
3418
+
pull-level "^2.0.2"
3419
+
pull-live "^1.0.1"
3420
+
pull-paramap "^1.1.3"
3421
+
pull-sink-through "0.0.0"
3422
+
pull-stream "^3.4.0"
3423
+
pull-write "^1.0.2"
3424
+
3425
+
string_decoder@^1.1.1:
3426
+
version "1.3.0"
3427
+
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
3428
+
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
3429
+
dependencies:
3430
+
safe-buffer "~5.2.0"
3431
+
3432
+
string_decoder@~0.10.0, string_decoder@~0.10.x:
3433
+
version "0.10.31"
3434
+
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
3435
+
integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
3436
+
3437
+
string_decoder@~1.1.1:
3438
+
version "1.1.1"
3439
+
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
3440
+
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
3441
+
dependencies:
3442
+
safe-buffer "~5.1.0"
3443
+
3444
+
string-width@^1.0.1:
3445
+
version "1.0.2"
3446
+
resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
3447
+
integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==
3448
+
dependencies:
3449
+
code-point-at "^1.0.0"
3450
+
is-fullwidth-code-point "^1.0.0"
3451
+
strip-ansi "^3.0.0"
3452
+
3453
+
stringstream@~0.0.4:
3454
+
version "0.0.5"
3455
+
resolved "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz"
3456
+
integrity sha512-QUQ1kThMjLRt4jA8lsn9lyIkE9bKafE7LDOL/nBBUY9Tfv2i3x1NAsVHG0uMCusFOWeeI6COhY/F20+avxRWSw==
3457
+
3458
+
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
3459
+
version "3.0.1"
3460
+
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
3461
+
integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
3462
+
dependencies:
3463
+
ansi-regex "^2.0.0"
3464
+
3465
+
strip-json-comments@~1.0.4:
3466
+
version "1.0.4"
3467
+
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
3468
+
integrity sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==
3469
+
3470
+
style-properties@^1.3.1:
3471
+
version "1.3.1"
3472
+
resolved "https://registry.npmjs.org/style-properties/-/style-properties-1.3.1.tgz"
3473
+
integrity sha512-n+uc4rCIzXUZ6197c98Lq63f8G0SpRj9kzIZT4QNQ0PYUR+D0kdXyZiBUyjE1KO2RtAc0ETRDPUxTImRFjvHig==
3474
+
3475
+
subarg@^1.0.0:
3476
+
version "1.0.0"
3477
+
resolved "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz"
3478
+
integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==
3479
+
dependencies:
3480
+
minimist "^1.1.0"
3481
+
3482
+
suggest-box@^2.2.1:
3483
+
version "2.2.2"
3484
+
resolved "https://registry.npmjs.org/suggest-box/-/suggest-box-2.2.2.tgz"
3485
+
integrity sha512-c9oZ8KJHY5IKz4T2JkQWkwggjIptjn9Io4AMvjneNxu0kIdqeSL5lS+NhBKrEbrES/lNDex5rwZLZPSGELmT1g==
3486
+
dependencies:
3487
+
hyperscript "~1.4.2"
3488
+
textarea-caret-position "^0.1.1"
3489
+
3490
+
supports-color@^2.0.0:
3491
+
version "2.0.0"
3492
+
resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
3493
+
integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==
3494
+
3495
+
supports-preserve-symlinks-flag@^1.0.0:
3496
+
version "1.0.0"
3497
+
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
3498
+
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
3499
+
3500
+
syntax-error@^1.1.1:
3501
+
version "1.1.6"
3502
+
resolved "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz"
3503
+
integrity sha512-PR60b6QEsF95amTCi4TwqwH+FRTLjg90DOHiHBgvtauFafhnc8sDT4fXnNEXAbke1cCqrrJGDbFRlwSmo50mOQ==
3504
+
dependencies:
3505
+
acorn "^2.7.0"
3506
+
3507
+
tar-fs@^1.13.0, tar-fs@^1.7.0:
3508
+
version "1.13.2"
3509
+
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-1.13.2.tgz"
3510
+
integrity sha512-2Aa6KmxE0o1aqYC/kfIEWsaAYkZUlm8S9kcwD3y5gG4v+mw8XtrhbgRwFPDYZSg+nvk1QsBUmKKOuNzhNSyb3w==
3511
+
dependencies:
3512
+
mkdirp "^0.5.0"
3513
+
pump "^1.0.0"
3514
+
tar-stream "^1.1.2"
3515
+
3516
+
tar-stream@^1.1.2, tar-stream@^1.2.1:
3517
+
version "1.5.2"
3518
+
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz"
3519
+
integrity sha512-X2iZpARyDjlkj6Tz3nlI1lY4a4k+xEatPgQg7O2WiUMTXIrjVp8R86K3AdWfHp+Q3jsaLE2FLlHES+PA5zwAhA==
3520
+
dependencies:
3521
+
bl "^1.0.0"
3522
+
end-of-stream "^1.0.0"
3523
+
readable-stream "^2.0.0"
3524
+
xtend "^4.0.0"
3525
+
3526
+
tar@^2.0.0:
3527
+
version "2.2.1"
3528
+
resolved "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
3529
+
integrity sha512-2Tw2uNtZqQTSHTIMbKHKFeAPmKcljrNKqKiIN7pu3V/CxYqRgS8DLXvMkFRrbtXlg6mTOQcuTX7DMj18Xi0dtg==
3530
+
dependencies:
3531
+
block-stream "*"
3532
+
fstream "^1.0.2"
3533
+
inherits "2"
3534
+
3535
+
text-node-searcher@^1.1.0:
3536
+
version "1.1.1"
3537
+
resolved "https://registry.npmjs.org/text-node-searcher/-/text-node-searcher-1.1.1.tgz"
3538
+
integrity sha512-kQdQ9INlnxygZY9OPXE9LpSF4n2x2Cz7RXKGMiK7dIy717xYE3DLu25zOzK3o7ZKhy3f8yfcLsVzq//sc2aVvQ==
3539
+
3540
+
textarea-caret-position@^0.1.1:
3541
+
version "0.1.1"
3542
+
resolved "https://registry.npmjs.org/textarea-caret-position/-/textarea-caret-position-0.1.1.tgz"
3543
+
integrity sha512-Dns++qU6E9eh/IweI8fiFrkARbKUfuUoSSbf9mwJaSziJ5DBGkM2SJ0tKjLotqhj58vfh0bBQDPPmi1AgDS+lg==
3544
+
3545
+
"through@>=2.2.7 <3":
3546
+
version "2.3.8"
3547
+
resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
3548
+
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
3549
+
3550
+
through2@^0.4.1:
3551
+
version "0.4.2"
3552
+
resolved "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz"
3553
+
integrity sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==
3554
+
dependencies:
3555
+
readable-stream "~1.0.17"
3556
+
xtend "~2.1.1"
3557
+
3558
+
through2@^2.0.0:
3559
+
version "2.0.1"
3560
+
resolved "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz"
3561
+
integrity sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw==
3562
+
dependencies:
3563
+
readable-stream "~2.0.0"
3564
+
xtend "~4.0.0"
3565
+
3566
+
through2@~0.6.3:
3567
+
version "0.6.5"
3568
+
resolved "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz"
3569
+
integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==
3570
+
dependencies:
3571
+
readable-stream ">=1.0.33-1 <1.1.0-0"
3572
+
xtend ">=4.0.0 <4.1.0-0"
3573
+
3574
+
timers-browserify@^1.0.1:
3575
+
version "1.4.2"
3576
+
resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz"
3577
+
integrity sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==
3578
+
dependencies:
3579
+
process "~0.11.0"
3580
+
3581
+
to-arraybuffer@^1.0.0:
3582
+
version "1.0.1"
3583
+
resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
3584
+
integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
3585
+
3586
+
tough-cookie@~2.3.0:
3587
+
version "2.3.1"
3588
+
resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz"
3589
+
integrity sha512-3C8DIrKkBO8q3BIqcUB6zPuqua6wCso6ddmRmHjbJ5/OfJ6rrw6zTf1DFDsBSZbKNKC1XzfVJRxZrdcxyjEOjA==
3590
+
3591
+
tty-browserify@~0.0.0, tty-browserify@0.0.1:
3592
+
version "0.0.1"
3593
+
resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz"
3594
+
integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
3595
+
3596
+
tunnel-agent@^0.6.0:
3597
+
version "0.6.0"
3598
+
resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
3599
+
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
3600
+
dependencies:
3601
+
safe-buffer "^5.0.1"
3602
+
3603
+
tunnel-agent@~0.4.1:
3604
+
version "0.4.3"
3605
+
resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz"
3606
+
integrity sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==
3607
+
3608
+
tweetnacl-auth@^0.3.0:
3609
+
version "0.3.0"
3610
+
resolved "https://registry.npmjs.org/tweetnacl-auth/-/tweetnacl-auth-0.3.0.tgz"
3611
+
integrity sha512-yUBiLzJAva46d0zc6HixMid3ELzbdeDNkR87ycu0/MLsv7CIEYw+j2fJ2+7K5gvdmmeHzwluHA6nu5lxBzA3xg==
3612
+
dependencies:
3613
+
tweetnacl "0.x.x"
3614
+
3615
+
tweetnacl@^0.14.1, tweetnacl@^0.14.3, tweetnacl@~0.14.0, tweetnacl@0.x.x:
3616
+
version "0.14.3"
3617
+
resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz"
3618
+
integrity sha512-wv+W579MMQ7iwO2XcHk72RPnBwAyRFMjizSdncxpyCHgA3jzbe8VQ5yGY5HEejR3AyywFaGIo5cJRR6ENdzFIA==
3619
+
3620
+
typedarray@^0.0.6, typedarray@~0.0.5:
3621
+
version "0.0.6"
3622
+
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
3623
+
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
3624
+
3625
+
typewise-core@^1.2, typewise-core@^1.2.0:
3626
+
version "1.2.0"
3627
+
resolved "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz"
3628
+
integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==
3629
+
3630
+
typewise@^1.0.3:
3631
+
version "1.0.3"
3632
+
resolved "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz"
3633
+
integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==
3634
+
dependencies:
3635
+
typewise-core "^1.2.0"
3636
+
3637
+
typewiselite@^1.0.0:
3638
+
version "1.0.0"
3639
+
resolved "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz"
3640
+
integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==
3641
+
3642
+
ultron@1.0.x:
3643
+
version "1.0.2"
3644
+
resolved "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz"
3645
+
integrity sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==
3646
+
3647
+
umd@^3.0.0:
3648
+
version "3.0.1"
3649
+
resolved "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz"
3650
+
integrity sha512-3npD+zDXGkXrLuoWfeeawVCNcRUnjcqLHWGifik86s+Md/YEoUqBt4yHsDNtwNLR6GY4hEw9eA/O13rD6/0skQ==
3651
+
3652
+
unzip-response@^1.0.0:
3653
+
version "1.0.1"
3654
+
resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz"
3655
+
integrity sha512-Gr4B7j6vDPqv2LKzC+5tC+j+vjV/PHNNQfNvuoRBzypaVkHwSwwcXIMG5B6KnKRup0oZFhwpjKcRZGKpI2EI1w==
3656
+
3657
+
url-template@~2.0.6:
3658
+
version "2.0.8"
3659
+
resolved "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz"
3660
+
integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==
3661
+
3662
+
url@~0.11.0:
3663
+
version "0.11.0"
3664
+
resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz"
3665
+
integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==
3666
+
dependencies:
3667
+
punycode "1.3.2"
3668
+
querystring "0.2.0"
3669
+
3670
+
ursa@^0.9.1, ursa@^0.9.4:
3671
+
version "0.9.4"
3672
+
resolved "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz"
3673
+
integrity sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ==
3674
+
dependencies:
3675
+
bindings "^1.2.1"
3676
+
nan "^2.3.3"
3677
+
3678
+
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
3679
+
version "1.0.2"
3680
+
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
3681
+
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
3682
+
3683
+
util-extend@^1.0.1:
3684
+
version "1.0.3"
3685
+
resolved "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz"
3686
+
integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==
3687
+
3688
+
util@^0.10.4, util@~0.10.1:
3689
+
version "0.10.4"
3690
+
resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz"
3691
+
integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
3692
+
dependencies:
3693
+
inherits "2.0.3"
3694
+
3695
+
util@0.10.3:
3696
+
version "0.10.3"
3697
+
resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
3698
+
integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==
3699
+
dependencies:
3700
+
inherits "2.0.1"
3701
+
3702
+
verror@1.3.6:
3703
+
version "1.3.6"
3704
+
resolved "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
3705
+
integrity sha512-i8GFYwImt5D5B8CPpi2jrDTy/faq4OEW+NkOTLSKcIdPfdYJvWv3VZddDKl0ByvBe6cJ2s5Mm2XDtv5c2pj/Eg==
3706
+
dependencies:
3707
+
extsprintf "1.0.2"
3708
+
3709
+
visualize-buffer@0.0.0:
3710
+
version "0.0.0"
3711
+
resolved "https://registry.npmjs.org/visualize-buffer/-/visualize-buffer-0.0.0.tgz"
3712
+
integrity sha512-Op/yhLNL8K+eb2LAlt/uiS9OBicVG9rtKuoe4H3yqi42Z95vQerlGkRr+MOKCdjBeucdeRiYDGQruNjUdw3KNw==
3713
+
3714
+
vm-browserify@^1.0.0:
3715
+
version "1.1.2"
3716
+
resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"
3717
+
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
3718
+
3719
+
vm-browserify@~0.0.1:
3720
+
version "0.0.4"
3721
+
resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz"
3722
+
integrity sha512-NyZNR3WDah+NPkjh/YmhuWSsT4a0mF0BJYgUmvrJ70zxjTXh5Y2Asobxlh0Nfs0PCFB5FVpRJft7NozAWFMwLQ==
3723
+
dependencies:
3724
+
indexof "0.0.1"
3725
+
3726
+
waveform-data@^1.5.2:
3727
+
version "1.5.3"
3728
+
resolved "https://registry.npmjs.org/waveform-data/-/waveform-data-1.5.3.tgz"
3729
+
integrity sha512-4A9+iMBZ1KUkkkte6IYWA0dyBocp1K81ODBZ7iWGJig4PryfYZTKWLeb/MK+YGSzIVi7g2QfoXW6tOxbyMCvug==
3730
+
dependencies:
3731
+
audio-context "^0.1.0"
3732
+
3733
+
web-bootloader@^0.1.0:
3734
+
version "0.1.2"
3735
+
resolved "https://registry.npmjs.org/web-bootloader/-/web-bootloader-0.1.2.tgz"
3736
+
integrity sha512-qpD4MkUEPggBPUhiiVHssjTJKrlDMFT4DNuPkwpVv9bhhEP9LA/+LobCor4mUzuCJG+Yq/omQMVIHA9sM9o85w==
3737
+
dependencies:
3738
+
arraybuffer-base64 "^1.0.0"
3739
+
binary-xhr "0.0.2"
3740
+
hyperfile "^1.1.1"
3741
+
hyperprogress "^0.1.0"
3742
+
3743
+
which-pm-runs@^1.0.0:
3744
+
version "1.1.0"
3745
+
resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz"
3746
+
integrity sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==
3747
+
3748
+
which@1:
3749
+
version "1.2.11"
3750
+
resolved "https://registry.npmjs.org/which/-/which-1.2.11.tgz"
3751
+
integrity sha512-8kWuAZrtPpcfj0UM1rpIJopAawk+Uz+KxNSxk0U0j9fmekidFSRDhyrHOEbD5qePWF6YicG1wSUuFA6BfsE3ig==
3752
+
dependencies:
3753
+
isexe "^1.1.1"
3754
+
3755
+
wide-align@^1.1.0:
3756
+
version "1.1.0"
3757
+
resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz"
3758
+
integrity sha512-rlD2ELOb94L+t1gMHCObqlC3QvrHVF1V5ipWEGm4vb9OK2C6ZTvluPg1Mfp2O9POtGb/3aZNxBpKOmx0JNVHSQ==
3759
+
dependencies:
3760
+
string-width "^1.0.1"
3761
+
3762
+
wordwrap@~0.0.2:
3763
+
version "0.0.3"
3764
+
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
3765
+
integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==
3766
+
3767
+
wrappy@1:
3768
+
version "1.0.2"
3769
+
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
3770
+
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
3771
+
3772
+
ws@^1.1.0:
3773
+
version "1.1.1"
3774
+
resolved "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz"
3775
+
integrity sha512-TRtCup+Fxoy1sW9funE4kPxA0KfaMc7g68DoKN+Uu9Ej+zr9We3DWVJ2XgiGtXlibqA7IWOV+Xe6xlUxPputfg==
3776
+
dependencies:
3777
+
options ">=0.0.5"
3778
+
ultron "1.0.x"
3779
+
3780
+
xtend@^4.0.0, xtend@^4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0:
3781
+
version "4.0.1"
3782
+
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
3783
+
integrity sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ==
3784
+
3785
+
xtend@^4.0.2:
3786
+
version "4.0.2"
3787
+
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
3788
+
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
3789
+
3790
+
xtend@~2.1.1:
3791
+
version "2.1.2"
3792
+
resolved "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz"
3793
+
integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==
3794
+
dependencies:
3795
+
object-keys "~0.4.0"
+7
lib/frontend.js
+7
lib/frontend.js
···
15
15
var patchbayDir = path.join(__dirname, '..', 'patchbay')
16
16
var patchbayIndex = path.join(patchbayDir, 'build', 'index.html')
17
17
var hasPatchbay = fs.existsSync(patchbayIndex)
18
+
var wsCfg = config && config.ws ? config.ws : {}
19
+
var wsHost = typeof wsCfg.host === 'string' ? wsCfg.host : '127.0.0.1'
20
+
var wsPort = typeof wsCfg.port === 'number' ? wsCfg.port : 8989
21
+
22
+
if (hasPatchbay) {
23
+
console.log('Patchbay launched at http://' + wsHost + ':' + wsPort + '/')
24
+
}
18
25
19
26
function serveFile (res, filePath) {
20
27
var ext = path.extname(filePath)
+177
plugins/decent-ui.js
+177
plugins/decent-ui.js
···
1
+
var fs = require('fs')
2
+
var http = require('http')
3
+
var path = require('path')
4
+
5
+
var DEFAULT_PORT = 8888
6
+
var DEFAULT_HOST = '127.0.0.1'
7
+
var MIME_MAP = {
8
+
'.html': 'text/html; charset=utf-8',
9
+
'.css': 'text/css; charset=utf-8',
10
+
'.js': 'application/javascript; charset=utf-8',
11
+
'.json': 'application/json; charset=utf-8',
12
+
'.jpg': 'image/jpeg',
13
+
'.jpeg': 'image/jpeg',
14
+
'.png': 'image/png',
15
+
'.svg': 'image/svg+xml'
16
+
}
17
+
18
+
function getContentType (filePath) {
19
+
var ext = path.extname(filePath).toLowerCase()
20
+
return MIME_MAP[ext] || 'application/octet-stream'
21
+
}
22
+
23
+
function resolvePath (reqPath) {
24
+
var pathname = (reqPath || '/').split('?')[0]
25
+
if (!pathname || pathname === '/') pathname = '/index.html'
26
+
var relative = pathname.replace(/^\/+/, '')
27
+
if (!relative) relative = 'index.html'
28
+
if (relative.indexOf('..') !== -1) return null
29
+
return relative
30
+
}
31
+
32
+
exports.name = 'decent-ui'
33
+
exports.version = '1.0.0'
34
+
exports.manifest = {}
35
+
36
+
exports.init = function (sbot, config) {
37
+
var decentDir = path.join(__dirname, '..', 'decent', 'build')
38
+
var cfg = config && config.decent ? config.decent : {}
39
+
var port = typeof cfg.port === 'number' ? cfg.port : DEFAULT_PORT
40
+
var hasHost = cfg && Object.prototype.hasOwnProperty.call(cfg, 'host')
41
+
var host = hasHost && typeof cfg.host === 'string' ? cfg.host : null
42
+
var wsCfg = config && config.ws ? config.ws : {}
43
+
if (!host && typeof wsCfg.host === 'string')
44
+
host = wsCfg.host
45
+
if (!host)
46
+
host = DEFAULT_HOST
47
+
var wsPort = typeof wsCfg.port === 'number' ? wsCfg.port : 8989
48
+
49
+
function respondNotFound (res) {
50
+
res.statusCode = 404
51
+
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
52
+
res.end('Not found')
53
+
}
54
+
55
+
function respondInvalid (res) {
56
+
res.statusCode = 400
57
+
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
58
+
res.end('Invalid request')
59
+
}
60
+
61
+
function getBaseHost (hostHeader) {
62
+
if (!hostHeader || typeof hostHeader !== 'string') return null
63
+
if (hostHeader[0] === '[') {
64
+
var end = hostHeader.indexOf(']')
65
+
if (end === -1) return hostHeader
66
+
return hostHeader.slice(0, end + 1)
67
+
}
68
+
var colon = hostHeader.indexOf(':')
69
+
if (colon === -1) return hostHeader
70
+
return hostHeader.slice(0, colon)
71
+
}
72
+
73
+
function getRemoteForRequest (req) {
74
+
if (!sbot || !sbot.id || typeof sbot.id !== 'string') return null
75
+
if (!req || !req.headers) return null
76
+
77
+
var hostHeader = req.headers['x-forwarded-host'] || req.headers.host
78
+
var baseHost = getBaseHost(hostHeader)
79
+
if (!baseHost) return null
80
+
81
+
var proto = 'http'
82
+
if (req.connection && req.connection.encrypted)
83
+
proto = 'https'
84
+
else if (typeof req.headers['x-forwarded-proto'] === 'string')
85
+
proto = req.headers['x-forwarded-proto'].split(',')[0].trim()
86
+
87
+
var wsProto = proto === 'https' ? 'wss' : 'ws'
88
+
89
+
var i = sbot.id.indexOf('.')
90
+
var key = i === -1 ? sbot.id.substring(1) : sbot.id.substring(1, i)
91
+
92
+
return wsProto + '://' + baseHost + ':' + wsPort + '~shs:' + key
93
+
}
94
+
95
+
function serveStatic (req, res) {
96
+
if (req.method !== 'GET' && req.method !== 'HEAD') {
97
+
respondInvalid(res)
98
+
return
99
+
}
100
+
101
+
var relPath = resolvePath(req.url)
102
+
if (!relPath) {
103
+
respondInvalid(res)
104
+
return
105
+
}
106
+
107
+
var filePath = path.join(decentDir, relPath)
108
+
fs.stat(filePath, function (err, stat) {
109
+
if (err || !stat || !stat.isFile()) {
110
+
respondNotFound(res)
111
+
return
112
+
}
113
+
114
+
if (relPath === 'index.html' && req.method === 'GET') {
115
+
return fs.readFile(filePath, 'utf8', function (readErr, html) {
116
+
if (readErr) {
117
+
respondNotFound(res)
118
+
return
119
+
}
120
+
121
+
var remote = getRemoteForRequest(req)
122
+
if (remote) {
123
+
var script = '<script>window.PATCHBAY_REMOTE = ' +
124
+
JSON.stringify(remote) +
125
+
';</script>'
126
+
html = html.replace('</head>', script + '</head>')
127
+
}
128
+
129
+
res.writeHead(200, {'Content-Type': getContentType(filePath)})
130
+
res.end(html)
131
+
})
132
+
}
133
+
134
+
res.writeHead(200, {'Content-Type': getContentType(filePath)})
135
+
136
+
if (req.method === 'HEAD') {
137
+
res.end()
138
+
return
139
+
}
140
+
141
+
fs.createReadStream(filePath).pipe(res)
142
+
})
143
+
}
144
+
145
+
var server = http.createServer(serveStatic)
146
+
var startUrl = null
147
+
148
+
server.on('error', function (err) {
149
+
console.error('decent-ui server error:', err.message || err)
150
+
})
151
+
152
+
server.listen(port, host, function () {
153
+
var addr = server.address()
154
+
var address = addr && addr.address ? addr.address : host
155
+
var listeningPort = addr && addr.port ? addr.port : port
156
+
startUrl = 'http://' + address + ':' + listeningPort + '/'
157
+
console.log('Decent launched at ' + startUrl)
158
+
})
159
+
160
+
var closed = false
161
+
function closeServer (cb) {
162
+
if (closed) return cb && cb()
163
+
closed = true
164
+
server.close(function () {
165
+
cb && cb()
166
+
})
167
+
}
168
+
169
+
process.once('exit', closeServer)
170
+
171
+
return {
172
+
decent: {
173
+
port: port,
174
+
host: host
175
+
}
176
+
}
177
+
}
-263
plugins/rest-bridge/index.js
-263
plugins/rest-bridge/index.js
···
1
-
'use strict'
2
-
3
-
var http = require('http')
4
-
var URL = require('url').URL
5
-
var pull = require('pull-stream')
6
-
7
-
exports.name = 'rest-bridge'
8
-
exports.version = '1.0.0'
9
-
exports.manifest = {}
10
-
11
-
function parseIntParam (value, fallback) {
12
-
var num = parseInt(value, 10)
13
-
return Number.isFinite(num) && num >= 0 ? num : fallback
14
-
}
15
-
16
-
function setCors (res) {
17
-
res.setHeader('Access-Control-Allow-Origin', '*')
18
-
res.setHeader('Access-Control-Allow-Headers', 'content-type')
19
-
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,OPTIONS')
20
-
}
21
-
22
-
function sendJson (res, status, payload) {
23
-
setCors(res)
24
-
res.statusCode = status
25
-
res.setHeader('Content-Type', 'application/json; charset=utf-8')
26
-
res.end(JSON.stringify(payload))
27
-
}
28
-
29
-
function sendNotFound (res) {
30
-
sendJson(res, 404, {error: 'not found'})
31
-
}
32
-
33
-
function readJsonBody (req, cb) {
34
-
var limit = 2 * 1024 * 1024
35
-
var data = ''
36
-
var done = false
37
-
38
-
function finish (err, value) {
39
-
if (done) return
40
-
done = true
41
-
cb(err, value)
42
-
}
43
-
44
-
req.on('data', function (chunk) {
45
-
if (done) return
46
-
data += chunk
47
-
if (data.length > limit) {
48
-
req.destroy()
49
-
finish(new Error('request entity too large'))
50
-
}
51
-
})
52
-
53
-
req.on('error', function (err) {
54
-
finish(err)
55
-
})
56
-
57
-
req.on('end', function () {
58
-
if (done) return
59
-
if (!data) return finish(null, null)
60
-
try {
61
-
finish(null, JSON.parse(data))
62
-
} catch (err) {
63
-
finish(err)
64
-
}
65
-
})
66
-
}
67
-
68
-
exports.init = function (sbot, config) {
69
-
var restConfig = config.restBridge || {}
70
-
if (restConfig.enabled === false) return {}
71
-
72
-
var listenHost = restConfig.host || '0.0.0.0'
73
-
var listenPort = restConfig.port || 8927
74
-
75
-
function respondStatus (res) {
76
-
var status = null
77
-
if (typeof sbot.status === 'function') {
78
-
try { status = sbot.status() }
79
-
catch (err) { status = {error: err.message} }
80
-
}
81
-
82
-
var body = {
83
-
message: 'ssb rest bridge',
84
-
id: sbot.id,
85
-
public: config.keys && config.keys.public,
86
-
curve: config.keys && config.keys.curve,
87
-
host: config.host || 'localhost',
88
-
port: config.port,
89
-
rest: {host: listenHost, port: listenPort}
90
-
}
91
-
if (status) body.status = status
92
-
sendJson(res, 200, body)
93
-
}
94
-
95
-
function respondFeed (res, searchParams) {
96
-
if (typeof sbot.createLogStream !== 'function') {
97
-
return sendJson(res, 503, {error: 'log stream unavailable'})
98
-
}
99
-
100
-
var limit = parseIntParam(searchParams.get('limit'), 100)
101
-
var reverse = searchParams.get('reverse') !== 'false'
102
-
var opts = {limit: limit, reverse: reverse}
103
-
104
-
pull(
105
-
sbot.createLogStream(opts),
106
-
pull.collect(function (err, msgs) {
107
-
if (err) return sendJson(res, 500, {error: err.message})
108
-
sendJson(res, 200, msgs)
109
-
})
110
-
)
111
-
}
112
-
113
-
function respondAuthorFeed (res, author, searchParams) {
114
-
if (typeof sbot.createHistoryStream !== 'function') {
115
-
return sendJson(res, 503, {error: 'history stream unavailable'})
116
-
}
117
-
var since = parseIntParam(searchParams.get('since'), 0)
118
-
var limit = parseIntParam(searchParams.get('limit'), -1)
119
-
var opts = {
120
-
id: author,
121
-
seq: since > 0 ? since + 1 : 1,
122
-
live: false,
123
-
keys: true,
124
-
values: true
125
-
}
126
-
if (limit >= 0) opts.limit = limit
127
-
128
-
pull(
129
-
sbot.createHistoryStream(opts),
130
-
pull.collect(function (err, msgs) {
131
-
if (err) return sendJson(res, 500, {error: err.message})
132
-
sendJson(res, 200, msgs)
133
-
})
134
-
)
135
-
}
136
-
137
-
function handlePublish (req, res) {
138
-
readJsonBody(req, function (err, payload) {
139
-
if (err) return sendJson(res, 400, {error: err.message})
140
-
if (!payload || typeof payload !== 'object') {
141
-
return sendJson(res, 400, {error: 'payload must be an object'})
142
-
}
143
-
if (payload.content && typeof payload.content === 'object') {
144
-
if (typeof sbot.publish !== 'function') {
145
-
return sendJson(res, 503, {error: 'publish unavailable'})
146
-
}
147
-
return sbot.publish(payload.content, function (err2, msg) {
148
-
if (err2) return sendJson(res, 500, {error: err2.message})
149
-
sendJson(res, 200, msg)
150
-
})
151
-
}
152
-
if (payload.msg && typeof payload.msg === 'object') {
153
-
if (typeof sbot.add !== 'function') {
154
-
return sendJson(res, 503, {error: 'add unavailable'})
155
-
}
156
-
return sbot.add(payload.msg, function (err3, msg) {
157
-
if (err3) return sendJson(res, 500, {error: err3.message})
158
-
sendJson(res, 200, msg)
159
-
})
160
-
}
161
-
sendJson(res, 400, {error: 'payload must include content or msg'})
162
-
})
163
-
}
164
-
165
-
function handleFeedAppend (req, res) {
166
-
if (typeof sbot.add !== 'function') {
167
-
return sendJson(res, 503, {error: 'add unavailable'})
168
-
}
169
-
readJsonBody(req, function (err, payload) {
170
-
if (err) return sendJson(res, 400, {error: err.message})
171
-
if (!payload || typeof payload !== 'object' || typeof payload.msg !== 'object') {
172
-
return sendJson(res, 400, {error: 'missing msg'})
173
-
}
174
-
sbot.add(payload.msg, function (err2, msg) {
175
-
if (err2) return sendJson(res, 500, {error: err2.message})
176
-
sendJson(res, 200, msg)
177
-
})
178
-
})
179
-
}
180
-
181
-
function respondLog (res) {
182
-
if (typeof sbot.createLogStream !== 'function') {
183
-
return sendJson(res, 503, {error: 'log stream unavailable'})
184
-
}
185
-
pull(
186
-
sbot.createLogStream({limit: 100, reverse: true}),
187
-
pull.collect(function (err, msgs) {
188
-
if (err) return sendJson(res, 500, {error: err.message})
189
-
sendJson(res, 200, msgs)
190
-
})
191
-
)
192
-
}
193
-
194
-
function handleRequest (req, res) {
195
-
var method = (req.method || 'GET').toUpperCase()
196
-
var parsedUrl = new URL(req.url, 'http://localhost')
197
-
var pathname = parsedUrl.pathname
198
-
199
-
if (method === 'OPTIONS') {
200
-
setCors(res)
201
-
res.writeHead(204)
202
-
return res.end()
203
-
}
204
-
205
-
if (method === 'GET' && pathname === '/status') {
206
-
return respondStatus(res)
207
-
}
208
-
209
-
if (method === 'GET' && pathname === '/feed') {
210
-
return respondFeed(res, parsedUrl.searchParams)
211
-
}
212
-
213
-
if (method === 'GET' && pathname === '/log.json') {
214
-
return respondLog(res)
215
-
}
216
-
217
-
if (method === 'POST' && pathname === '/publish') {
218
-
return handlePublish(req, res)
219
-
}
220
-
221
-
if (pathname.indexOf('/feeds/') === 0) {
222
-
var author = decodeURIComponent(pathname.substring('/feeds/'.length))
223
-
if (!author) return sendJson(res, 400, {error: 'missing author'})
224
-
if (method === 'GET') {
225
-
return respondAuthorFeed(res, author, parsedUrl.searchParams)
226
-
}
227
-
if (method === 'POST') {
228
-
return handleFeedAppend(req, res)
229
-
}
230
-
}
231
-
232
-
if (method === 'GET' && pathname === '/') {
233
-
return sendJson(res, 200, {
234
-
message: 'ssb rest bridge',
235
-
endpoints: ['/status', '/feed', '/log.json', '/feeds/:id', '/publish (POST)', '/feeds/:id (POST)']
236
-
})
237
-
}
238
-
239
-
return sendNotFound(res)
240
-
}
241
-
242
-
var server = http.createServer(handleRequest)
243
-
server.listen(listenPort, listenHost, function () {
244
-
if (typeof sbot.emit === 'function') {
245
-
sbot.emit('log:info', ['rest-bridge', 'listen', listenHost + ':' + listenPort])
246
-
} else {
247
-
console.log('[rest-bridge] listening on %s:%s', listenHost, listenPort)
248
-
}
249
-
})
250
-
251
-
if (sbot.close && typeof sbot.close.hook === 'function') {
252
-
sbot.close.hook(function (fn, args) {
253
-
server.close()
254
-
return fn.apply(this, args)
255
-
})
256
-
}
257
-
258
-
return {
259
-
address: function () {
260
-
return {host: listenHost, port: listenPort}
261
-
}
262
-
}
263
-
}