deploy.sh 0.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -0
- package/.eslintrc +7 -9
- package/.github/workflows/ci.yml +48 -0
- package/.husky/pre-commit +5 -0
- package/{test/fixtures/unknown/.gitkeep → .prettierrc} +0 -0
- package/.release-it.json +5 -0
- package/CHANGELOG.md +26 -0
- package/README.md +5 -6
- package/__tests__/fixtures/unknown/.gitkeep +0 -0
- package/__tests__/lib/classifier.test.js +49 -0
- package/__tests__/lib/helpers/util.test.js +57 -0
- package/bin/deploy-delete.js +14 -0
- package/bin/deploy-deploy.js +34 -59
- package/bin/deploy-list.js +25 -52
- package/bin/deploy-login.js +36 -52
- package/bin/deploy-logout.js +9 -40
- package/bin/deploy-logs.js +22 -48
- package/bin/deploy-open.js +14 -37
- package/bin/deploy-register.js +37 -50
- package/bin/deploy-server.js +8 -5
- package/bin/deploy-whoami.js +8 -37
- package/bin/deploy.js +145 -19
- package/{test/fixtures → examples}/docker/Dockerfile +0 -0
- package/examples/docker/index.js +12 -0
- package/examples/node/index.js +8 -0
- package/{test/fixtures → examples}/node/package.json +0 -0
- package/examples/static/index.html +22 -0
- package/{test/fixtures → examples}/static/main.css +4 -2
- package/examples/static/out.gifcd +0 -0
- package/generate-docs.js +55 -0
- package/index.js +54 -55
- package/jsdoc.json +6 -3
- package/lib/classifier.js +24 -17
- package/lib/deploy.js +56 -64
- package/lib/helpers/cli.js +178 -207
- package/lib/helpers/util.js +94 -21
- package/lib/models/deployment.js +415 -474
- package/lib/models/request.js +77 -66
- package/lib/models/user.js +119 -144
- package/lib/server.js +187 -97
- package/lib/static/not-found.html +30 -0
- package/lib/static/page-could-not-load.html +30 -0
- package/lib/static/static-server.js +70 -0
- package/package.json +47 -34
- package/website/README.md +41 -0
- package/website/babel.config.js +3 -0
- package/website/docs/api/_category_.yml +1 -0
- package/website/docs/api/lib/classifier.js.md +11 -0
- package/website/docs/api/lib/deploy.js.md +13 -0
- package/website/docs/api/lib/helpers/cli.js.md +193 -0
- package/website/docs/api/lib/helpers/util.js.md +65 -0
- package/website/docs/api/lib/models/deployment.js.md +171 -0
- package/website/docs/api/lib/models/request.js.md +67 -0
- package/website/docs/api/lib/models/user.js.md +92 -0
- package/website/docs/api/lib/server.js.md +0 -0
- package/website/docs/api/lib/static/static-server.js.md +0 -0
- package/website/docs/intro.md +57 -0
- package/website/docusaurus.config.js +82 -0
- package/website/package-lock.json +25218 -0
- package/website/package.json +39 -0
- package/website/sidebars.js +31 -0
- package/website/src/components/HomepageFeatures/index.js +79 -0
- package/website/src/components/HomepageFeatures/styles.module.css +11 -0
- package/website/src/css/custom.css +39 -0
- package/website/src/pages/index.js +57 -0
- package/website/src/pages/index.module.css +23 -0
- package/website/static/.nojekyll +0 -0
- package/website/static/example.gif +0 -0
- package/website/static/example.mov +0 -0
- package/website/static/img/favicon.ico +0 -0
- package/website/static/img/intro/deploy.png +0 -0
- package/website/static/img/intro/logs.png +0 -0
- package/{docs → website/static/img}/logo.png +0 -0
- package/{docs → website/static/img}/logo.pxm +0 -0
- package/{docs → website/static/img}/logo@2x.png +0 -0
- package/.npmignore +0 -9
- package/.travis.yml +0 -9
- package/TODO.md +0 -12
- package/docs/code/classifier.js.html +0 -116
- package/docs/code/deploy.js.html +0 -138
- package/docs/code/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/code/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/code/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/code/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/code/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/code/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/code/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/docs/code/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/docs/code/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/docs/code/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/docs/code/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/docs/code/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/docs/code/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/docs/code/global.html +0 -325
- package/docs/code/helpers_cli.js.html +0 -351
- package/docs/code/helpers_util.js.html +0 -127
- package/docs/code/index.html +0 -81
- package/docs/code/models_deployment.js.html +0 -593
- package/docs/code/models_request.js.html +0 -150
- package/docs/code/models_user.js.html +0 -232
- package/docs/code/module-lib_classifier.html +0 -246
- package/docs/code/module-lib_deploy.html +0 -350
- package/docs/code/module-lib_helpers_cli.html +0 -2067
- package/docs/code/module-lib_helpers_util.html +0 -608
- package/docs/code/module-models_deployment-Deployment.html +0 -359
- package/docs/code/module-models_deployment-DeploymentSchema.html +0 -359
- package/docs/code/module-models_deployment.Deployment.html +0 -359
- package/docs/code/module-models_deployment.html +0 -1851
- package/docs/code/module-models_request-Request.html +0 -409
- package/docs/code/module-models_request-RequestSchema.html +0 -359
- package/docs/code/module-models_request.html +0 -446
- package/docs/code/module-models_user-User.html +0 -306
- package/docs/code/module-models_user-UserSchema.html +0 -306
- package/docs/code/module-models_user.User.html +0 -306
- package/docs/code/module-models_user.html +0 -1200
- package/docs/code/scripts/linenumber.js +0 -25
- package/docs/code/scripts/prettify/Apache-License-2.0.txt +0 -202
- package/docs/code/scripts/prettify/lang-css.js +0 -2
- package/docs/code/scripts/prettify/prettify.js +0 -28
- package/docs/code/styles/jsdoc-default.css +0 -692
- package/docs/code/styles/prettify-jsdoc.css +0 -111
- package/docs/code/styles/prettify-tomorrow.css +0 -132
- package/docs/example-docker.gif +0 -0
- package/docs/example-node.gif +0 -0
- package/docs/example-static.gif +0 -0
- package/docs/index.html +0 -50
- package/docs/main.css +0 -12
- package/docs/psychic-min.css +0 -1
- package/lib/helpers/static-server.js +0 -69
- package/test/fixtures/docker/index.js +0 -12
- package/test/fixtures/node/index.js +0 -8
- package/test/fixtures/static/index.html +0 -14
- package/test/lib/classifier.js +0 -51
- package/test/lib/helpers/util.js +0 -30
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/* JSDoc prettify.js theme */
|
|
2
|
-
|
|
3
|
-
/* plain text */
|
|
4
|
-
.pln {
|
|
5
|
-
color: #000000;
|
|
6
|
-
font-weight: normal;
|
|
7
|
-
font-style: normal;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/* string content */
|
|
11
|
-
.str {
|
|
12
|
-
color: hsl(104, 100%, 24%);
|
|
13
|
-
font-weight: normal;
|
|
14
|
-
font-style: normal;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/* a keyword */
|
|
18
|
-
.kwd {
|
|
19
|
-
color: #000000;
|
|
20
|
-
font-weight: bold;
|
|
21
|
-
font-style: normal;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* a comment */
|
|
25
|
-
.com {
|
|
26
|
-
font-weight: normal;
|
|
27
|
-
font-style: italic;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/* a type name */
|
|
31
|
-
.typ {
|
|
32
|
-
color: #000000;
|
|
33
|
-
font-weight: normal;
|
|
34
|
-
font-style: normal;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/* a literal value */
|
|
38
|
-
.lit {
|
|
39
|
-
color: #006400;
|
|
40
|
-
font-weight: normal;
|
|
41
|
-
font-style: normal;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* punctuation */
|
|
45
|
-
.pun {
|
|
46
|
-
color: #000000;
|
|
47
|
-
font-weight: bold;
|
|
48
|
-
font-style: normal;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* lisp open bracket */
|
|
52
|
-
.opn {
|
|
53
|
-
color: #000000;
|
|
54
|
-
font-weight: bold;
|
|
55
|
-
font-style: normal;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* lisp close bracket */
|
|
59
|
-
.clo {
|
|
60
|
-
color: #000000;
|
|
61
|
-
font-weight: bold;
|
|
62
|
-
font-style: normal;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* a markup tag name */
|
|
66
|
-
.tag {
|
|
67
|
-
color: #006400;
|
|
68
|
-
font-weight: normal;
|
|
69
|
-
font-style: normal;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/* a markup attribute name */
|
|
73
|
-
.atn {
|
|
74
|
-
color: #006400;
|
|
75
|
-
font-weight: normal;
|
|
76
|
-
font-style: normal;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* a markup attribute value */
|
|
80
|
-
.atv {
|
|
81
|
-
color: #006400;
|
|
82
|
-
font-weight: normal;
|
|
83
|
-
font-style: normal;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/* a declaration */
|
|
87
|
-
.dec {
|
|
88
|
-
color: #000000;
|
|
89
|
-
font-weight: bold;
|
|
90
|
-
font-style: normal;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* a variable name */
|
|
94
|
-
.var {
|
|
95
|
-
color: #000000;
|
|
96
|
-
font-weight: normal;
|
|
97
|
-
font-style: normal;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/* a function name */
|
|
101
|
-
.fun {
|
|
102
|
-
color: #000000;
|
|
103
|
-
font-weight: bold;
|
|
104
|
-
font-style: normal;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/* Specify class=linenums on a pre to get line numbering */
|
|
108
|
-
ol.linenums {
|
|
109
|
-
margin-top: 0;
|
|
110
|
-
margin-bottom: 0;
|
|
111
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/* Tomorrow Theme */
|
|
2
|
-
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
|
3
|
-
/* Pretty printing styles. Used with prettify.js. */
|
|
4
|
-
/* SPAN elements with the classes below are added by prettyprint. */
|
|
5
|
-
/* plain text */
|
|
6
|
-
.pln {
|
|
7
|
-
color: #4d4d4c; }
|
|
8
|
-
|
|
9
|
-
@media screen {
|
|
10
|
-
/* string content */
|
|
11
|
-
.str {
|
|
12
|
-
color: hsl(104, 100%, 24%); }
|
|
13
|
-
|
|
14
|
-
/* a keyword */
|
|
15
|
-
.kwd {
|
|
16
|
-
color: hsl(240, 100%, 50%); }
|
|
17
|
-
|
|
18
|
-
/* a comment */
|
|
19
|
-
.com {
|
|
20
|
-
color: hsl(0, 0%, 60%); }
|
|
21
|
-
|
|
22
|
-
/* a type name */
|
|
23
|
-
.typ {
|
|
24
|
-
color: hsl(240, 100%, 32%); }
|
|
25
|
-
|
|
26
|
-
/* a literal value */
|
|
27
|
-
.lit {
|
|
28
|
-
color: hsl(240, 100%, 40%); }
|
|
29
|
-
|
|
30
|
-
/* punctuation */
|
|
31
|
-
.pun {
|
|
32
|
-
color: #000000; }
|
|
33
|
-
|
|
34
|
-
/* lisp open bracket */
|
|
35
|
-
.opn {
|
|
36
|
-
color: #000000; }
|
|
37
|
-
|
|
38
|
-
/* lisp close bracket */
|
|
39
|
-
.clo {
|
|
40
|
-
color: #000000; }
|
|
41
|
-
|
|
42
|
-
/* a markup tag name */
|
|
43
|
-
.tag {
|
|
44
|
-
color: #c82829; }
|
|
45
|
-
|
|
46
|
-
/* a markup attribute name */
|
|
47
|
-
.atn {
|
|
48
|
-
color: #f5871f; }
|
|
49
|
-
|
|
50
|
-
/* a markup attribute value */
|
|
51
|
-
.atv {
|
|
52
|
-
color: #3e999f; }
|
|
53
|
-
|
|
54
|
-
/* a declaration */
|
|
55
|
-
.dec {
|
|
56
|
-
color: #f5871f; }
|
|
57
|
-
|
|
58
|
-
/* a variable name */
|
|
59
|
-
.var {
|
|
60
|
-
color: #c82829; }
|
|
61
|
-
|
|
62
|
-
/* a function name */
|
|
63
|
-
.fun {
|
|
64
|
-
color: #4271ae; } }
|
|
65
|
-
/* Use higher contrast and text-weight for printable form. */
|
|
66
|
-
@media print, projection {
|
|
67
|
-
.str {
|
|
68
|
-
color: #060; }
|
|
69
|
-
|
|
70
|
-
.kwd {
|
|
71
|
-
color: #006;
|
|
72
|
-
font-weight: bold; }
|
|
73
|
-
|
|
74
|
-
.com {
|
|
75
|
-
color: #600;
|
|
76
|
-
font-style: italic; }
|
|
77
|
-
|
|
78
|
-
.typ {
|
|
79
|
-
color: #404;
|
|
80
|
-
font-weight: bold; }
|
|
81
|
-
|
|
82
|
-
.lit {
|
|
83
|
-
color: #044; }
|
|
84
|
-
|
|
85
|
-
.pun, .opn, .clo {
|
|
86
|
-
color: #440; }
|
|
87
|
-
|
|
88
|
-
.tag {
|
|
89
|
-
color: #006;
|
|
90
|
-
font-weight: bold; }
|
|
91
|
-
|
|
92
|
-
.atn {
|
|
93
|
-
color: #404; }
|
|
94
|
-
|
|
95
|
-
.atv {
|
|
96
|
-
color: #060; } }
|
|
97
|
-
/* Style */
|
|
98
|
-
/*
|
|
99
|
-
pre.prettyprint {
|
|
100
|
-
background: white;
|
|
101
|
-
font-family: Consolas, Monaco, 'Andale Mono', monospace;
|
|
102
|
-
font-size: 12px;
|
|
103
|
-
line-height: 1.5;
|
|
104
|
-
border: 1px solid #ccc;
|
|
105
|
-
padding: 10px; }
|
|
106
|
-
*/
|
|
107
|
-
|
|
108
|
-
/* Specify class=linenums on a pre to get line numbering */
|
|
109
|
-
ol.linenums {
|
|
110
|
-
margin-top: 0;
|
|
111
|
-
margin-bottom: 0; }
|
|
112
|
-
|
|
113
|
-
/* IE indents via margin-left */
|
|
114
|
-
li.L0,
|
|
115
|
-
li.L1,
|
|
116
|
-
li.L2,
|
|
117
|
-
li.L3,
|
|
118
|
-
li.L4,
|
|
119
|
-
li.L5,
|
|
120
|
-
li.L6,
|
|
121
|
-
li.L7,
|
|
122
|
-
li.L8,
|
|
123
|
-
li.L9 {
|
|
124
|
-
/* */ }
|
|
125
|
-
|
|
126
|
-
/* Alternate shading for lines */
|
|
127
|
-
li.L1,
|
|
128
|
-
li.L3,
|
|
129
|
-
li.L5,
|
|
130
|
-
li.L7,
|
|
131
|
-
li.L9 {
|
|
132
|
-
/* */ }
|
package/docs/example-docker.gif
DELETED
|
Binary file
|
package/docs/example-node.gif
DELETED
|
Binary file
|
package/docs/example-static.gif
DELETED
|
Binary file
|
package/docs/index.html
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>deploy.sh</title>
|
|
6
|
-
<link href="./psychic-min.css" rel="stylesheet" type="text/css"/>
|
|
7
|
-
<link href="./main.css" rel="stylesheet" type="text/css"/>
|
|
8
|
-
<script>
|
|
9
|
-
document.addEventListener('DOMContentLoaded', function(){
|
|
10
|
-
document.querySelector('#example-switcher').onchange = function(e) {
|
|
11
|
-
document.querySelector('#example-image').src = e.target.value;
|
|
12
|
-
}
|
|
13
|
-
}, false);
|
|
14
|
-
</script>
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<div style="height:100%;width:100%;position:relative;">
|
|
18
|
-
<div class="navbar navbar-center">
|
|
19
|
-
<div class="container">
|
|
20
|
-
<div class="navbar-title">
|
|
21
|
-
<a href="https://github.com/gabrielcsapo/deploy.sh" class="text-black tooltip-bottom" data-tooltip="☁️ open source continuous deployment service">deploy.sh</a>
|
|
22
|
-
</div>
|
|
23
|
-
<div class="nav">
|
|
24
|
-
<a class="text-black" href="./code/index.html">Docs</a>
|
|
25
|
-
<a class="text-black" href="https://github.com/gabrielcsapo/deploy.sh">Source</a>
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="text-center">
|
|
30
|
-
<div style="position:absolute;top:50%;transform:translateY(-50%);">
|
|
31
|
-
<pre style="width:50%;margin:0 auto 30px;"> npm install deploy.sh -g </pre>
|
|
32
|
-
<select style="display:inline-block;" id="example-switcher">
|
|
33
|
-
<option value="example-static.gif"> static website </option>
|
|
34
|
-
<option value="example-node.gif"> node application </option>
|
|
35
|
-
<option value="example-docker.gif"> docker image </option>
|
|
36
|
-
</select>
|
|
37
|
-
<br/>
|
|
38
|
-
<br/>
|
|
39
|
-
<img id="example-image" src="./example-static.gif" alt="static example being uploaded">
|
|
40
|
-
</div>
|
|
41
|
-
<br/>
|
|
42
|
-
</div>
|
|
43
|
-
<div class="navbar navbar-center" style="bottom:0px;position:absolute;">
|
|
44
|
-
<div class="container text-center">
|
|
45
|
-
<div class="text-black">Made with ☕️ by @gabrielcsapo</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
</body>
|
|
50
|
-
</html>
|
package/docs/main.css
DELETED
package/docs/psychic-min.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}hr{display:block;box-sizing:content-box;text-align:center;border:0;height:0;border-top:1px solid #cfcfc4;border-bottom:1px solid rgba(255,255,255,.3)}hr.ellipsis{border-top:0;border-bottom:0}hr.ellipsis:before{font-weight:400;font-style:italic;font-size:28px;letter-spacing:.6em;font-size:13px;content:'...';display:inline-block;margin-left:.6em;color:#000;position:relative}pre{display:block;padding:10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;white-space:normal;background-color:#f5f5f5;border-radius:5px;border-left:.3rem solid transparent}blockquote{padding:10px 20px;font-size:17.5px;border-left:5px solid #eee}code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}a{color:#0079ad;text-decoration:none;font-weight:300}small{color:inherit;font-size:75%;font-weight:400}.alert{padding:10px 0 10px 10px;border-radius:5px;border:1px solid #cfcfc4;position:relative}.alert>.alert-close{font-size:25px;line-height:15px;position:absolute;right:10px;top:10px}.alert.alert-white{background-color:#fff;border:1px solid #e6e6e6}.alert.alert-white *{color:#000}.alert.alert-black{background-color:#000;border:1px solid #000}.alert.alert-black *{color:#fff}.alert.alert-default{background-color:#cfcfc4;border:1px solid #bdbdae}.alert.alert-default *{color:#fff}.alert.alert-primary{background-color:#779ecb;border:1px solid #608dc2}.alert.alert-primary *{color:#fff}.alert.alert-success{background-color:#7d7;border:1px solid #5cd65c}.alert.alert-success *{color:#fff}.alert.alert-info{background-color:#9bddff;border:1px solid #72cfff}.alert.alert-info *{color:#fff}.alert.alert-warning{background-color:#ffb347;border:1px solid #ffa626}.alert.alert-warning *{color:#fff}.alert.alert-danger{background-color:#ff6961;border:1px solid #ff483e}.alert.alert-danger *{color:#fff}.badge{display:table-cell;padding:8px 8px 8px 8px;border-radius:100px;border:1px solid #cfcfc4;text-align:center;vertical-align:middle}.badge.badge-white{background-color:#fff;color:#000}.badge.border-white{color:#000}.badge.badge-black{background-color:#000;color:#fff}.badge.border-black{color:#000}.badge.badge-default{background-color:#cfcfc4;color:#fff}.badge.border-default{color:#cfcfc4}.badge.badge-primary{background-color:#779ecb;color:#fff}.badge.border-primary{color:#779ecb}.badge.badge-success{background-color:#7d7;color:#fff}.badge.border-success{color:#7d7}.badge.badge-info{background-color:#9bddff;color:#fff}.badge.border-info{color:#9bddff}.badge.badge-warning{background-color:#ffb347;color:#fff}.badge.border-warning{color:#ffb347}.badge.badge-danger{background-color:#ff6961;color:#fff}.badge.border-danger{color:#ff6961}label{display:inline-block;margin-bottom:.5rem}input,select,textarea{display:block;padding:.375rem 1% .375rem 1%;line-height:1.5}select{background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px' fill='#adadad'><polyline points='46.139,15.518 25.166,36.49 4.193,15.519'/></svg>");background-color:#fff;border:1px solid #cfcfc4;background-repeat:no-repeat;background-position:right 10px top 5px;background-size:16px 16px;padding:5px 30px 5px 15px;width:auto;text-align:center;border-radius:5px;appearance:none;-webkit-appearance:none;outline:0}select:active,select:focus{outline:0}select.input-white{border-color:#fff}select.input-black{border-color:#a6a6a6}select.input-default{border-color:#eeeeea}select.input-primary{border-color:#cfdded}select.input-success{border-color:#cff3cf}select.input-info{border-color:#dcf3ff}select.input-warning{border-color:#ffe4bf}select.input-danger{border-color:#ffcbc8}input,textarea{width:98%;margin:0;padding:.375rem 1% .375rem 1%;background-color:#fff;background-image:none;border:1px solid #cfcfc4;border-radius:.25rem}input:focus,textarea:focus{border-color:#779ecb;outline:0}input.input-white,textarea.input-white{border-color:#fff}input.input-white:focus,textarea.input-white:focus{border-color:#bfbfbf}input.input-black,textarea.input-black{border-color:#a6a6a6}input.input-black:focus,textarea.input-black:focus{border-color:#000}input.input-default,textarea.input-default{border-color:#eeeeea}input.input-default:focus,textarea.input-default:focus{border-color:#a2a28c}input.input-primary,textarea.input-primary{border-color:#cfdded}input.input-primary:focus,textarea.input-primary:focus{border-color:#4375af}input.input-success,textarea.input-success{border-color:#cff3cf}input.input-success:focus,textarea.input-success:focus{border-color:#3c3}input.input-info,textarea.input-info{border-color:#dcf3ff}input.input-info:focus,textarea.input-info:focus{border-color:#35baff}input.input-warning,textarea.input-warning{border-color:#ffe4bf}input.input-warning:focus,textarea.input-warning:focus{border-color:#f49000}input.input-danger,textarea.input-danger{border-color:#ffcbc8}input.input-danger:focus,textarea.input-danger:focus{border-color:#ff1509}.btn-group{margin:10px;display:inline-block}.btn-group>.btn{margin:-3px;border-radius:0}.btn-group>.btn:first-child{border-radius:5px 0 0 5px}.btn-group>.btn:last-child{border-radius:0 5px 5px 0}.btn{padding:12px 18px;margin:10px;cursor:pointer;display:inline-block;text-align:center;background-color:#fff;border-radius:5px;border:1px solid #cfcfc4;color:#655d5d}.btn:hover{border-color:#d6d6cd}.btn:active{opacity:.5}.btn:focus{outline:0}.btn.btn-block{width:100%}.btn.border-white{color:#fff}.btn.border-white:active,.btn.border-white:hover{border-color:#fff}.btn.border-white:active{border-color:#d9d9d9;opacity:.5}.btn.btn-white{color:#000;border:1px solid #d9d9d9;background-color:#fff}.btn.btn-white:active,.btn.btn-white:hover{border-color:#d9d9d9}.btn.btn-white:hover{background-color:#fff}.btn.btn-white:active{background-color:#d9d9d9;opacity:.5}.btn.border-black{color:#000}.btn.border-black:active,.btn.border-black:hover{border-color:#262626}.btn.border-black:active{border-color:#000;opacity:.5}.btn.btn-black{color:#fff;border:1px solid #000;background-color:#000}.btn.btn-black:active,.btn.btn-black:hover{border-color:#000}.btn.btn-black:hover{background-color:#262626}.btn.btn-black:active{background-color:#000;opacity:.5}.btn.border-default{color:#cfcfc4}.btn.border-default:active,.btn.border-default:hover{border-color:#d6d6cd}.btn.border-default:active{border-color:#b4b4a3;opacity:.5}.btn.btn-default{color:#fff;border:1px solid #b4b4a3;background-color:#cfcfc4}.btn.btn-default:active,.btn.btn-default:hover{border-color:#b4b4a3}.btn.btn-default:hover{background-color:#d6d6cd}.btn.btn-default:active{background-color:#b4b4a3;opacity:.5}.btn.border-primary{color:#779ecb}.btn.border-primary:active,.btn.border-primary:hover{border-color:#8badd3}.btn.border-primary:active{border-color:#5485be;opacity:.5}.btn.btn-primary{color:#fff;border:1px solid #5485be;background-color:#779ecb}.btn.btn-primary:active,.btn.btn-primary:hover{border-color:#5485be}.btn.btn-primary:hover{background-color:#8badd3}.btn.btn-primary:active{background-color:#5485be;opacity:.5}.btn.border-success{color:#7d7}.btn.border-success:active,.btn.border-success:hover{border-color:#8be28b}.btn.border-success:active{border-color:#4ed34e;opacity:.5}.btn.btn-success{color:#fff;border:1px solid #4ed34e;background-color:#7d7}.btn.btn-success:active,.btn.btn-success:hover{border-color:#4ed34e}.btn.btn-success:hover{background-color:#8be28b}.btn.btn-success:active{background-color:#4ed34e;opacity:.5}.btn.border-info{color:#9bddff}.btn.border-info:active,.btn.border-info:hover{border-color:#aae2ff}.btn.border-info:active{border-color:#5dc8ff;opacity:.5}.btn.btn-info{color:#fff;border:1px solid #5dc8ff;background-color:#9bddff}.btn.btn-info:active,.btn.btn-info:hover{border-color:#5dc8ff}.btn.btn-info:hover{background-color:#aae2ff}.btn.btn-info:active{background-color:#5dc8ff;opacity:.5}.btn.border-warning{color:#ffb347}.btn.border-warning:active,.btn.border-warning:hover{border-color:#ffbe63}.btn.border-warning:active{border-color:#ff9f16;opacity:.5}.btn.btn-warning{color:#fff;border:1px solid #ff9f16;background-color:#ffb347}.btn.btn-warning:active,.btn.btn-warning:hover{border-color:#ff9f16}.btn.btn-warning:hover{background-color:#ffbe63}.btn.btn-warning:active{background-color:#ff9f16;opacity:.5}.btn.border-danger{color:#ff6961}.btn.border-danger:active,.btn.border-danger:hover{border-color:#ff7f79}.btn.border-danger:active{border-color:#ff372c;opacity:.5}.btn.btn-danger{color:#fff;border:1px solid #ff372c;background-color:#ff6961}.btn.btn-danger:active,.btn.btn-danger:hover{border-color:#ff372c}.btn.btn-danger:hover{background-color:#ff7f79}.btn.btn-danger:active{background-color:#ff372c;opacity:.5}.grid{width:100%}.grid:after{clear:both;visibility:hidden;display:block;font-size:0;content:' ';height:0}.grid>*>*{word-wrap:break-word}.grid>div{float:left;box-sizing:border-box;min-height:1px}.grid>.col-0-12{display:none}.grid>.col-1-12{width:8.333333333333332%;margin-left:0;margin-right:0}.grid>.col-2-12{width:16.666666666666664%;margin-left:0;margin-right:0}.grid>.col-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-4-12{width:33.33333333333333%;margin-left:0;margin-right:0}.grid>.col-5-12{width:41.66666666666667%;margin-left:0;margin-right:0}.grid>.col-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-7-12{width:58.333333333333336%;margin-left:0;margin-right:0}.grid>.col-8-12{width:66.66666666666666%;margin-left:0;margin-right:0}.grid>.col-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-10-12{width:83.33333333333334%;margin-left:0;margin-right:0}.grid>.col-11-12{width:91.66666666666666%;margin-left:0;margin-right:0}.grid>.col-12-12{width:100%;margin-left:0;margin-right:0}@media screen and (min-width:16em){.grid>.col-xs-0-12{display:none}.grid>.col-xs-1-12{width:8.3333%;margin-left:0;margin-right:0}.grid>.col-xs-2-12{width:16.6666%;margin-left:0;margin-right:0}.grid>.col-xs-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-xs-4-12{width:33.3333%;margin-left:0;margin-right:0}.grid>.col-xs-5-12{width:41.6666%;margin-left:0;margin-right:0}.grid>.col-xs-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-xs-7-12{width:58.3333%;margin-left:0;margin-right:0}.grid>.col-xs-8-12{width:66.6666%;margin-left:0;margin-right:0}.grid>.col-xs-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-xs-10-12{width:83.3333%;margin-left:0;margin-right:0}.grid>.col-xs-11-12{width:91.6666%;margin-left:0;margin-right:0}.grid>.col-xs-12-12{width:100%;margin-left:0;margin-right:0}}@media screen and (min-width:32em){.grid>.col-sm-0-12{display:none}.grid>.col-sm-1-12{width:8.3333%;margin-left:0;margin-right:0}.grid>.col-sm-2-12{width:16.6666%;margin-left:0;margin-right:0}.grid>.col-sm-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-sm-4-12{width:33.3333%;margin-left:0;margin-right:0}.grid>.col-sm-5-12{width:41.6666%;margin-left:0;margin-right:0}.grid>.col-sm-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-sm-7-12{width:58.3333%;margin-left:0;margin-right:0}.grid>.col-sm-8-12{width:66.6666%;margin-left:0;margin-right:0}.grid>.col-sm-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-sm-10-12{width:83.3333%;margin-left:0;margin-right:0}.grid>.col-sm-11-12{width:91.6666%;margin-left:0;margin-right:0}.grid>.col-sm-12-12{width:100%;margin-left:0;margin-right:0}}@media screen and (min-width:48em){.grid>.col-md-0-12{display:none}.grid>.col-md-1-12{width:8.3333%;margin-left:0;margin-right:0}.grid>.col-md-2-12{width:16.6666%;margin-left:0;margin-right:0}.grid>.col-md-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-md-4-12{width:33.3333%;margin-left:0;margin-right:0}.grid>.col-md-5-12{width:41.6666%;margin-left:0;margin-right:0}.grid>.col-md-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-md-7-12{width:58.3333%;margin-left:0;margin-right:0}.grid>.col-md-8-12{width:66.6666%;margin-left:0;margin-right:0}.grid>.col-md-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-md-10-12{width:83.3333%;margin-left:0;margin-right:0}.grid>.col-md-11-12{width:91.6666%;margin-left:0;margin-right:0}.grid>.col-md-12-12{width:100%;margin-left:0;margin-right:0}}@media screen and (min-width:64em){.grid>.col-lg-0-12{display:none}.grid>.col-lg-1-12{width:8.3333%;margin-left:0;margin-right:0}.grid>.col-lg-2-12{width:16.6666%;margin-left:0;margin-right:0}.grid>.col-lg-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-lg-4-12{width:33.3333%;margin-left:0;margin-right:0}.grid>.col-lg-5-12{width:41.6666%;margin-left:0;margin-right:0}.grid>.col-lg-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-lg-7-12{width:58.3333%;margin-left:0;margin-right:0}.grid>.col-lg-8-12{width:66.6666%;margin-left:0;margin-right:0}.grid>.col-lg-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-lg-10-12{width:83.3333%;margin-left:0;margin-right:0}.grid>.col-lg-11-12{width:91.6666%;margin-left:0;margin-right:0}.grid>.col-lg-12-12{width:100%;margin-left:0;margin-right:0}}@media screen and (min-width:80em){.grid>.col-xl-0-12{display:none}.grid>.col-xl-1-12{width:8.3333%;margin-left:0;margin-right:0}.grid>.col-xl-2-12{width:16.6666%;margin-left:0;margin-right:0}.grid>.col-xl-3-12{width:25%;margin-left:0;margin-right:0}.grid>.col-xl-4-12{width:33.3333%;margin-left:0;margin-right:0}.grid>.col-xl-5-12{width:41.6666%;margin-left:0;margin-right:0}.grid>.col-xl-6-12{width:50%;margin-left:0;margin-right:0}.grid>.col-xl-7-12{width:58.3333%;margin-left:0;margin-right:0}.grid>.col-xl-8-12{width:66.6666%;margin-left:0;margin-right:0}.grid>.col-xl-9-12{width:75%;margin-left:0;margin-right:0}.grid>.col-xl-10-12{width:83.3333%;margin-left:0;margin-right:0}.grid>.col-xl-11-12{width:91.6666%;margin-left:0;margin-right:0}.grid>.col-xl-12-12{width:100%;margin-left:0;margin-right:0}}body{margin:0}.text-white,.text-white>*{color:#fff!important}.background-white{background-color:#fff!important}.border-white{border-color:#fff!important}.text-black,.text-black>*{color:#000!important}.background-black{background-color:#000!important}.border-black{border-color:#000!important}.text-default,.text-default>*{color:#cfcfc4!important}.background-default{background-color:#cfcfc4!important}.border-default{border-color:#cfcfc4!important}.text-primary,.text-primary>*{color:#779ecb!important}.background-primary{background-color:#779ecb!important}.border-primary{border-color:#779ecb!important}.text-success,.text-success>*{color:#7d7!important}.background-success{background-color:#7d7!important}.border-success{border-color:#7d7!important}.text-info,.text-info>*{color:#9bddff!important}.background-info{background-color:#9bddff!important}.border-info{border-color:#9bddff!important}.text-warning,.text-warning>*{color:#ffb347!important}.background-warning{background-color:#ffb347!important}.border-warning{border-color:#ffb347!important}.text-danger,.text-danger>*{color:#ff6961!important}.background-danger{background-color:#ff6961!important}.border-danger{border-color:#ff6961!important}.responsive{width:100%;height:auto}.text-right{text-align:right}.text-left{text-align:left}.text-center{text-align:center}.list{list-style:none;margin:0;padding:0}.list>.list-item{clear:both;min-height:30px;height:auto;line-height:30px;overflow:auto;padding:10px;border:1px solid #cfcfc4;border-bottom:0 solid transparent}.list>.list-item>.badge{float:right;line-height:20px}.list>.list-item.list-item-white{color:#000;border-color:#fff;background-color:#fff}.list>.list-item.list-item-white *{color:#000}.list>.list-item.list-item-black{color:#fff;border-color:#333;background-color:#000}.list>.list-item.list-item-black *{color:#fff}.list>.list-item.list-item-default{color:#fff;border-color:#d9d9d0;background-color:#cfcfc4}.list>.list-item.list-item-default *{color:#fff}.list>.list-item.list-item-primary{color:#fff;border-color:#92b1d5;background-color:#779ecb}.list>.list-item.list-item-primary *{color:#fff}.list>.list-item.list-item-success{color:#fff;border-color:#92e492;background-color:#7d7}.list>.list-item.list-item-success *{color:#fff}.list>.list-item.list-item-info{color:#fff;border-color:#afe4ff;background-color:#9bddff}.list>.list-item.list-item-info *{color:#fff}.list>.list-item.list-item-warning{color:#fff;border-color:#ffc26c;background-color:#ffb347}.list>.list-item.list-item-warning *{color:#fff}.list>.list-item.list-item-danger{color:#fff;border-color:#ff8781;background-color:#ff6961}.list>.list-item.list-item-danger *{color:#fff}.list>.list-item:first-child{border-radius:5px 5px 0 0}.list>.list-item:last-child{border-bottom:1px solid #cfcfc4;border-radius:0 0 5px 5px}.list>.list-item:only-child{border-radius:5px}.list>.list-item>.list-item-right{float:right}.list>.list-item>.list-item-left{float:left}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(50,50,50,.6);z-index:99999;opacity:0;pointer-events:none}.modal.active,.modal.modal-active,.modal:target{opacity:1;pointer-events:auto}.modal.modal-absolute{position:absolute;z-index:1}.modal.modal-absolute>div{position:absolute}.modal>div{min-width:400px;max-width:90%;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:5px 20px 13px 20px;border-radius:0;background:#fff}.modal.modal-white>div{border-left:10px solid #fff;color:#000}.modal.modal-black>div{border-left:10px solid #000;color:#000}.modal.modal-default>div{border-left:10px solid #cfcfc4;color:#000}.modal.modal-primary>div{border-left:10px solid #779ecb;color:#000}.modal.modal-success>div{border-left:10px solid #7d7;color:#000}.modal.modal-info>div{border-left:10px solid #9bddff;color:#000}.modal.modal-warning>div{border-left:10px solid #ffb347;color:#000}.modal.modal-danger>div{border-left:10px solid #ff6961;color:#000}.modal-close{line-height:25px;position:absolute;right:5px;text-align:center;top:5px;width:24px;text-decoration:none}.navbar *{font-weight:300;display:inline-block;text-decoration:none}.navbar{position:relative;min-height:50px;width:100%;display:table}.navbar>.container{border-width:0 0 1px 0}.navbar.navbar-fixed{position:fixed;z-index:100000}.navbar.navbar-center>.container{border-width:0 1px 1px 1px;margin:0 auto;width:50%;position:relative}.navbar.navbar-center>.container>.navbar-content{margin:0}.navbar.border-white>.container{border-style:solid}.navbar.navbar-white>.container{background-color:#fff}.navbar.navbar-white>.container>.nav a.active,.navbar.navbar-white>.container>.nav a:hover,.navbar.navbar-white>.container>.nav a:target{background-color:#fff}.navbar.border-black>.container{border-style:solid}.navbar.navbar-black>.container{background-color:#000}.navbar.navbar-black>.container>.nav a.active,.navbar.navbar-black>.container>.nav a:hover,.navbar.navbar-black>.container>.nav a:target{background-color:#a6a6a6}.navbar.border-default>.container{border-style:solid}.navbar.navbar-default>.container{background-color:#cfcfc4}.navbar.navbar-default>.container>.nav a.active,.navbar.navbar-default>.container>.nav a:hover,.navbar.navbar-default>.container>.nav a:target{background-color:#eeeeea}.navbar.border-primary>.container{border-style:solid}.navbar.navbar-primary>.container{background-color:#779ecb}.navbar.navbar-primary>.container>.nav a.active,.navbar.navbar-primary>.container>.nav a:hover,.navbar.navbar-primary>.container>.nav a:target{background-color:#cfdded}.navbar.border-success>.container{border-style:solid}.navbar.navbar-success>.container{background-color:#7d7}.navbar.navbar-success>.container>.nav a.active,.navbar.navbar-success>.container>.nav a:hover,.navbar.navbar-success>.container>.nav a:target{background-color:#cff3cf}.navbar.border-info>.container{border-style:solid}.navbar.navbar-info>.container{background-color:#9bddff}.navbar.navbar-info>.container>.nav a.active,.navbar.navbar-info>.container>.nav a:hover,.navbar.navbar-info>.container>.nav a:target{background-color:#dcf3ff}.navbar.border-warning>.container{border-style:solid}.navbar.navbar-warning>.container{background-color:#ffb347}.navbar.navbar-warning>.container>.nav a.active,.navbar.navbar-warning>.container>.nav a:hover,.navbar.navbar-warning>.container>.nav a:target{background-color:#ffe4bf}.navbar.border-danger>.container{border-style:solid}.navbar.navbar-danger>.container{background-color:#ff6961}.navbar.navbar-danger>.container>.nav a.active,.navbar.navbar-danger>.container>.nav a:hover,.navbar.navbar-danger>.container>.nav a:target{background-color:#ffcbc8}.navbar>.container{clear:both;margin:0 auto 0 auto;display:table;width:100%;height:60px}.navbar>.container>.nav{float:right;margin:0 20px 0 0;display:inline-block}.navbar>.container>.nav>select{background-color:transparent}.navbar>.container>.nav>a{padding:20px 10px 22px 10px}.navbar>.container>.nav>a:active,.navbar>.container>.nav>a:hover,.navbar>.container>.nav>a:target{opacity:.6}.navbar .navbar-title{float:left;display:inline-block;margin:20px 0 0 20px}.panel{border:1px solid #cfcfc4;border-radius:5px}.panel.panel-white{border:1px solid #fff}.panel.panel-white .panel-footer,.panel.panel-white>.panel-heading{background-color:#fff;color:#000}.panel.panel-black{border:1px solid #000}.panel.panel-black .panel-footer,.panel.panel-black>.panel-heading{background-color:#000;color:#fff}.panel.panel-default{border:1px solid #cfcfc4}.panel.panel-default .panel-footer,.panel.panel-default>.panel-heading{background-color:#cfcfc4;color:#fff}.panel.panel-primary{border:1px solid #779ecb}.panel.panel-primary .panel-footer,.panel.panel-primary>.panel-heading{background-color:#779ecb;color:#fff}.panel.panel-success{border:1px solid #7d7}.panel.panel-success .panel-footer,.panel.panel-success>.panel-heading{background-color:#7d7;color:#fff}.panel.panel-info{border:1px solid #9bddff}.panel.panel-info .panel-footer,.panel.panel-info>.panel-heading{background-color:#9bddff;color:#fff}.panel.panel-warning{border:1px solid #ffb347}.panel.panel-warning .panel-footer,.panel.panel-warning>.panel-heading{background-color:#ffb347;color:#fff}.panel.panel-danger{border:1px solid #ff6961}.panel.panel-danger .panel-footer,.panel.panel-danger>.panel-heading{background-color:#ff6961;color:#fff}.panel .panel-footer,.panel .panel-heading,.panel>.panel-body{padding:15px}.panel>.panel-heading{top:0}.panel>.panel-footer{bottom:0}.tooltip,[data-tooltip]{position:relative;cursor:pointer}.tooltip:after,.tooltip:before,[data-tooltip]:after,[data-tooltip]:before{position:absolute;visibility:hidden;opacity:0;-webkit-transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-webkit-transform .2s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-webkit-transform .2s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,transform .2s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,transform .2s cubic-bezier(.71,1.7,.77,1.24),-webkit-transform .2s cubic-bezier(.71,1.7,.77,1.24);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:none}.tooltip:focus:after,.tooltip:focus:before,.tooltip:hover:after,.tooltip:hover:before,[data-tooltip]:focus:after,[data-tooltip]:focus:before,[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;opacity:1}.tooltip:before,[data-tooltip]:before{z-index:1001;border:6px solid transparent;background:0 0;content:""}.tooltip:after,[data-tooltip]:after{z-index:1000;padding:8px;min-width:160px;width:auto;background-color:#000;background-color:rgba(51,51,51,.9);color:#fff;content:attr(data-tooltip);font-size:14px;line-height:1.2}.tooltip-top:after,.tooltip-top:before,.tooltip:after,.tooltip:before,[data-tooltip]:after,[data-tooltip]:before{bottom:100%;left:50%}.tooltip-top:before,.tooltip:before,[data-tooltip]:before{margin-left:-6px;margin-bottom:-12px;border-top-color:#000;border-top-color:rgba(51,51,51,.9)}.tooltip-top:after,.tooltip:after,[data-tooltip]:after{margin-left:-80px}.tooltip-top:focus:after,.tooltip-top:focus:before,.tooltip-top:hover:after,.tooltip-top:hover:before,.tooltip:focus:after,.tooltip:focus:before,.tooltip:hover:after,.tooltip:hover:before,[data-tooltip]:focus:after,[data-tooltip]:focus:before,[data-tooltip]:hover:after,[data-tooltip]:hover:before{-webkit-transform:translateY(-12px);transform:translateY(-12px)}.tooltip-left:after,.tooltip-left:before{right:100%;bottom:50%;left:auto}.tooltip-left:before{margin-left:0;margin-right:-12px;margin-bottom:0;border-top-color:transparent;border-left-color:#000;border-left-color:rgba(51,51,51,.9)}.tooltip-left:focus:after,.tooltip-left:focus:before,.tooltip-left:hover:after,.tooltip-left:hover:before{-webkit-transform:translateX(-12px);transform:translateX(-12px)}.tooltip-bottom:after,.tooltip-bottom:before{top:100%;bottom:auto;left:50%}.tooltip-bottom:before{margin-top:-12px;margin-bottom:0;border-top-color:transparent;border-bottom-color:#000;border-bottom-color:rgba(51,51,51,.9)}.tooltip-bottom:focus:after,.tooltip-bottom:focus:before,.tooltip-bottom:hover:after,.tooltip-bottom:hover:before{-webkit-transform:translateY(12px);transform:translateY(12px)}.tooltip-right:after,.tooltip-right:before{bottom:50%;left:100%}.tooltip-right:before{margin-bottom:0;margin-left:-12px;border-top-color:transparent;border-right-color:#000;border-right-color:rgba(51,51,51,.9)}.tooltip-right:focus:after,.tooltip-right:focus:before,.tooltip-right:hover:after,.tooltip-right:hover:before{-webkit-transform:translateX(12px);transform:translateX(12px)}.tooltip-left:before,.tooltip-right:before{top:3px}.tooltip-left:after,.tooltip-right:after{margin-left:0;margin-bottom:-16px}[class^=tooltip-]{border-bottom:1px dotted #000;text-decoration:none}.progress{width:100%;border:1px solid #cfcfc4;text-align:center}.progress .progress-fill{font-size:16px;height:15px;padding:10px 0 10px 0;background-color:#779ecb}.progress .progress-fill.progress-fill-white{background-color:#fff;color:#000}.progress .progress-fill.progress-fill-white:hover{background-color:#fff}.progress .progress-fill.progress-fill-black{background-color:#000;color:#fff}.progress .progress-fill.progress-fill-black:hover{background-color:#404040}.progress .progress-fill.progress-fill-default{background-color:#cfcfc4;color:#fff}.progress .progress-fill.progress-fill-default:hover{background-color:#dbdbd3}.progress .progress-fill.progress-fill-primary{background-color:#779ecb;color:#fff}.progress .progress-fill.progress-fill-primary:hover{background-color:#99b6d8}.progress .progress-fill.progress-fill-success{background-color:#7d7;color:#fff}.progress .progress-fill.progress-fill-success:hover{background-color:#99e599}.progress .progress-fill.progress-fill-info{background-color:#9bddff;color:#fff}.progress .progress-fill.progress-fill-info:hover{background-color:#b4e6ff}.progress .progress-fill.progress-fill-warning{background-color:#ffb347;color:#fff}.progress .progress-fill.progress-fill-warning:hover{background-color:#ffc675}.progress .progress-fill.progress-fill-danger{background-color:#ff6961;color:#fff}.progress .progress-fill.progress-fill-danger:hover{background-color:#ff8f89}.spinner-overlay{position:relative;top:0;left:0;width:100%;height:100%;z-index:3}.spinner-wrapper{text-align:center;position:relative;top:calc(50% - 50px)}.spinner-wrapper>.spinner{min-height:30px;min-width:30px}.spinner-message{box-sizing:border-box;width:100%;margin-top:30px;text-align:center;font-weight:400;z-index:100;outline:0}.spinner{display:inline-block;min-height:20px;height:auto;min-width:20px;width:auto;background-color:transparent;animation:rotation .7s infinite linear;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid transparent;border-top:3px solid #2180c0;border-radius:100%}.spinner.spinner-absolute{position:absolute}.spinner.spinner-white{border-top:3px solid #fff}.spinner.spinner-white.spinner-done{border-color:#fff;border-width:3px 3px 3px 3px}.spinner.spinner-white.done:after{border-width:0 3px 0 3px}.spinner.spinner-black{border-top:3px solid #000}.spinner.spinner-black.spinner-done{border-color:#000;border-width:3px 3px 3px 3px}.spinner.spinner-black.done:after{border-width:0 3px 0 3px}.spinner.spinner-default{border-top:3px solid #cfcfc4}.spinner.spinner-default.spinner-done{border-color:#cfcfc4;border-width:3px 3px 3px 3px}.spinner.spinner-default.done:after{border-width:0 3px 0 3px}.spinner.spinner-primary{border-top:3px solid #779ecb}.spinner.spinner-primary.spinner-done{border-color:#779ecb;border-width:3px 3px 3px 3px}.spinner.spinner-primary.done:after{border-width:0 3px 0 3px}.spinner.spinner-success{border-top:3px solid #7d7}.spinner.spinner-success.spinner-done{border-color:#7d7;border-width:3px 3px 3px 3px}.spinner.spinner-success.done:after{border-width:0 3px 0 3px}.spinner.spinner-info{border-top:3px solid #9bddff}.spinner.spinner-info.spinner-done{border-color:#9bddff;border-width:3px 3px 3px 3px}.spinner.spinner-info.done:after{border-width:0 3px 0 3px}.spinner.spinner-warning{border-top:3px solid #ffb347}.spinner.spinner-warning.spinner-done{border-color:#ffb347;border-width:3px 3px 3px 3px}.spinner.spinner-warning.done:after{border-width:0 3px 0 3px}.spinner.spinner-danger{border-top:3px solid #ff6961}.spinner.spinner-danger.spinner-done{border-color:#ff6961;border-width:3px 3px 3px 3px}.spinner.spinner-danger.done:after{border-width:0 3px 0 3px}@-moz-keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@-webkit-keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@-o-keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.table{text-align:center;word-break:break-all}.table.table-white{border:none}.table.table-white thead>tr>th{color:#fff}.table.table-white td,.table.table-white th{color:#fff;border-bottom:.1rem solid #fff}.table.table-black{border:none}.table.table-black thead>tr>th{color:#000}.table.table-black td,.table.table-black th{color:#0d0d0d;border-bottom:.1rem solid #000}.table.table-default{border:none}.table.table-default thead>tr>th{color:#cfcfc4}.table.table-default td,.table.table-default th{color:#d1d1c7;border-bottom:.1rem solid #cfcfc4}.table.table-primary{border:none}.table.table-primary thead>tr>th{color:#779ecb}.table.table-primary td,.table.table-primary th{color:#7ea3ce;border-bottom:.1rem solid #779ecb}.table.table-success{border:none}.table.table-success thead>tr>th{color:#7d7}.table.table-success td,.table.table-success th{color:#7edf7e;border-bottom:.1rem solid #7d7}.table.table-info{border:none}.table.table-info thead>tr>th{color:#9bddff}.table.table-info td,.table.table-info th{color:#a0dfff;border-bottom:.1rem solid #9bddff}.table.table-warning{border:none}.table.table-warning thead>tr>th{color:#ffb347}.table.table-warning td,.table.table-warning th{color:#ffb750;border-bottom:.1rem solid #ffb347}.table.table-danger{border:none}.table.table-danger thead>tr>th{color:#ff6961}.table.table-danger td,.table.table-danger th{color:#ff7069;border-bottom:.1rem solid #ff6961}.table thead>tr>th{font-weight:700}.table tbody tr:last-child>th{border-bottom:0}.table tfoot td:empty{padding:0}.table td,.table th{border-bottom:.1rem solid #e1e1e1;text-align:left;padding:10px}.table.responsive{border-collapse:collapse;border-spacing:0;display:table}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const http = require('http');
|
|
2
|
-
const Url = require('url');
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
|
|
6
|
-
const port = process.env.PORT;
|
|
7
|
-
|
|
8
|
-
const map = {
|
|
9
|
-
'.ico': 'image/x-icon',
|
|
10
|
-
'.html': 'text/html',
|
|
11
|
-
'.js': 'text/javascript',
|
|
12
|
-
'.json': 'application/json',
|
|
13
|
-
'.css': 'text/css',
|
|
14
|
-
'.png': 'image/png',
|
|
15
|
-
'.jpg': 'image/jpeg',
|
|
16
|
-
'.wav': 'audio/wav',
|
|
17
|
-
'.mp3': 'audio/mpeg',
|
|
18
|
-
'.svg': 'image/svg+xml',
|
|
19
|
-
'.pdf': 'application/pdf',
|
|
20
|
-
'.doc': 'application/msword'
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const cache = {};
|
|
24
|
-
|
|
25
|
-
http.createServer((req, res) => {
|
|
26
|
-
let { url } = req;
|
|
27
|
-
|
|
28
|
-
if (url === '/') url = '/index.html';
|
|
29
|
-
|
|
30
|
-
console.log(`${req.method} ${url}`); // eslint-disable-line
|
|
31
|
-
|
|
32
|
-
const parsedUrl = Url.parse(url);
|
|
33
|
-
let pathname = `.${parsedUrl.pathname}`;
|
|
34
|
-
|
|
35
|
-
if(cache[pathname]) {
|
|
36
|
-
res.setHeader('Content-Type', cache[pathname]['Content-Type']);
|
|
37
|
-
return res.end(cache[pathname]['data']);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const ext = path.parse(pathname).ext;
|
|
41
|
-
|
|
42
|
-
fs.exists(pathname, (exist) => {
|
|
43
|
-
if (!exist) {
|
|
44
|
-
res.statusCode = 404;
|
|
45
|
-
res.end(`File ${pathname} not found!`);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (fs.statSync(pathname).isDirectory()) pathname += '/index' + ext;
|
|
50
|
-
|
|
51
|
-
fs.readFile(pathname, (err, data) => {
|
|
52
|
-
if (err) {
|
|
53
|
-
res.statusCode = 500;
|
|
54
|
-
res.end(`Error getting the file: ${err}.`);
|
|
55
|
-
} else {
|
|
56
|
-
cache[pathname] = {
|
|
57
|
-
'Content-Type': map[ext] || 'text/plain',
|
|
58
|
-
data
|
|
59
|
-
};
|
|
60
|
-
// if the file is found, set Content-type and send data
|
|
61
|
-
res.setHeader('Content-Type', map[ext] || 'text/plain');
|
|
62
|
-
res.end(data);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
}).listen(parseInt(port), () => {
|
|
68
|
-
console.log(`Server listening on port ${port}`); // eslint-disable-line
|
|
69
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const http = require('http');
|
|
2
|
-
const port = process.env.PORT || 8000;
|
|
3
|
-
|
|
4
|
-
const server = http.createServer((req, res) => {
|
|
5
|
-
res.writeHead(200, { 'Content-type': 'text/html; charset=utf-8' });
|
|
6
|
-
res.write('Hello World 🌎');
|
|
7
|
-
res.end();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
server.listen(port, () => {
|
|
11
|
-
console.log('🚀 server has liftoff');
|
|
12
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<link rel="stylesheet" href="./main.css">
|
|
6
|
-
<title>Hello World</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<div style="text-align:center;width:100%;position:absolute;top:50%;transform:translateY(-50%);">
|
|
10
|
-
<h1> Welcome </h1>
|
|
11
|
-
<small> <i> This is deployed on the ⛅️ </i> </small>
|
|
12
|
-
</div>
|
|
13
|
-
</body>
|
|
14
|
-
</html>
|
package/test/lib/classifier.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
const test = require('tape');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
|
|
4
|
-
const classifier = require('../../lib/classifier');
|
|
5
|
-
|
|
6
|
-
test('@lib/classifier', (t) => {
|
|
7
|
-
t.plan(4);
|
|
8
|
-
|
|
9
|
-
const baseDirectory = path.resolve(__dirname, '..', 'fixtures');
|
|
10
|
-
|
|
11
|
-
t.test('should be able to classify static site', (t) => {
|
|
12
|
-
const directory = path.resolve(baseDirectory, 'static');
|
|
13
|
-
const output = classifier(directory);
|
|
14
|
-
t.deepEqual(output, {
|
|
15
|
-
type: 'static',
|
|
16
|
-
build: `\n FROM mhart/alpine-node:base-8\n WORKDIR ${directory}\n ADD . .\n\n CMD ["node", "index.js"]\n `
|
|
17
|
-
});
|
|
18
|
-
t.end();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
t.test('should be able to classify node site', (t) => {
|
|
22
|
-
const directory = path.resolve(baseDirectory, 'node');
|
|
23
|
-
const output = classifier(directory);
|
|
24
|
-
t.deepEqual(output, {
|
|
25
|
-
type: 'node',
|
|
26
|
-
build: `\n FROM mhart/alpine-node:8\n WORKDIR ${directory}\n ADD . .\n\n RUN npm install\n\n CMD ["npm", "start"]\n `
|
|
27
|
-
});
|
|
28
|
-
t.end();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
t.test('should be able to classify docker site', (t) => {
|
|
32
|
-
const directory = path.resolve(baseDirectory, 'docker');
|
|
33
|
-
const output = classifier(directory);
|
|
34
|
-
|
|
35
|
-
t.deepEqual(output, {
|
|
36
|
-
type: 'docker',
|
|
37
|
-
build: `FROM mhart/alpine-node:8\nWORKDIR ${directory}\nADD . .\n\nCMD ["node", "index.js"]\n`
|
|
38
|
-
});
|
|
39
|
-
t.end();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
t.test('should be able to classify unknown deploy target', (t) => {
|
|
43
|
-
const directory = path.resolve(baseDirectory, 'unknown');
|
|
44
|
-
const output = classifier(directory);
|
|
45
|
-
|
|
46
|
-
t.deepEqual(output, {
|
|
47
|
-
type: 'unknown'
|
|
48
|
-
});
|
|
49
|
-
t.end();
|
|
50
|
-
});
|
|
51
|
-
});
|
package/test/lib/helpers/util.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
const test = require('tape');
|
|
2
|
-
|
|
3
|
-
const { getPort, hash, contains } = require('../../../lib/helpers/util');
|
|
4
|
-
|
|
5
|
-
test('@lib/util', (t) => {
|
|
6
|
-
t.plan(3);
|
|
7
|
-
|
|
8
|
-
t.test('@getPort: should be able return a valid port', (t) => {
|
|
9
|
-
getPort((error, port) => {
|
|
10
|
-
t.ok(!error);
|
|
11
|
-
t.ok(Number.isInteger(port));
|
|
12
|
-
t.end();
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
t.test('@hash: should return a proper lowercase hash', (t) => {
|
|
17
|
-
const ret = hash(6);
|
|
18
|
-
t.ok(ret.length, 6);
|
|
19
|
-
t.ok(ret.toLowerCase(), ret);
|
|
20
|
-
t.end();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
t.test('@contains: should be able to return a proper conditional for truthy and false cases', (t) => {
|
|
24
|
-
t.ok(contains(['index.html', 'main.css'], ['index.html', '!Dockerfile', '!package.json']));
|
|
25
|
-
t.notOk(contains(['index.html', 'main.css', 'Dockerfile'], ['index.html', '!Dockerfile', '!package.json']));
|
|
26
|
-
t.notOk(contains([], ['index.html', '!Dockerfile', '!package.json']));
|
|
27
|
-
t.end();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
});
|