zcatalyst-cli 1.19.0 → 1.20.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.
|
@@ -31,6 +31,11 @@ const client_1 = require("../util/client");
|
|
|
31
31
|
const runtime_1 = __importDefault(require("../../util_modules/constants/lib/runtime"));
|
|
32
32
|
const fn_utils_1 = require("../../fn-utils");
|
|
33
33
|
const client_utils_1 = require("../../client-utils");
|
|
34
|
+
const port_resolver_1 = __importDefault(require("../../port-resolver"));
|
|
35
|
+
const http_1 = require("http");
|
|
36
|
+
const fs_1 = require("../../util_modules/fs");
|
|
37
|
+
const server_1 = require("../../util_modules/server");
|
|
38
|
+
const open_1 = __importDefault(require("open"));
|
|
34
39
|
exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
40
|
var _a, _b;
|
|
36
41
|
const orgAPI = yield (0, endpoints_1.orgAPI)();
|
|
@@ -95,10 +100,56 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
95
100
|
return (0, project_2.fillProjectPayload)(selectedOrg, selectedProject);
|
|
96
101
|
}
|
|
97
102
|
if (selectedProject === 0) {
|
|
98
|
-
|
|
99
|
-
|
|
103
|
+
let projectId = null;
|
|
104
|
+
const userActionError = yield new Promise((res, rej) => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
|
+
const callbackPort = yield port_resolver_1.default.getFreePort(3000, 10, false);
|
|
106
|
+
const accessUrl = new URL(`/baas/${(0, project_1.getEnvId)()}/index#/?port=${callbackPort}&type=cli`, `${constants_1.ORIGIN.admin}`);
|
|
107
|
+
const server = (0, http_1.createServer)((req, resp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
var _c, _d;
|
|
109
|
+
try {
|
|
110
|
+
if (!((_c = req.url) === null || _c === void 0 ? void 0 : _c.includes('/success'))) {
|
|
111
|
+
resp.writeHead(404);
|
|
112
|
+
resp.end();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const htmlFile = yield fs_1.ASYNC.readFile((0, path_1.join)(__dirname, '../../../templates/projectSuccess.html'));
|
|
116
|
+
projectId = (_d = req.url) === null || _d === void 0 ? void 0 : _d.split('?')[1].split('=')[1];
|
|
117
|
+
resp.setHeader('Content-Type', 'text/html');
|
|
118
|
+
resp.writeHead(200);
|
|
119
|
+
resp.end(htmlFile, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
req.socket.destroy();
|
|
121
|
+
yield destroyer.destroy().catch((err) => (0, logger_1.debug)(err));
|
|
122
|
+
res();
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
yield destroyer.destroy().catch((err) => (0, logger_1.debug)(err));
|
|
127
|
+
res(e);
|
|
128
|
+
}
|
|
129
|
+
}));
|
|
130
|
+
const destroyer = new server_1.ConnectionDestroyer(server);
|
|
131
|
+
server.listen(callbackPort, '127.0.0.1', () => {
|
|
132
|
+
const urlString = accessUrl.toString();
|
|
133
|
+
(0, logger_1.info)();
|
|
134
|
+
(0, logger_1.info)('Visit this URL on this device to proceed:');
|
|
135
|
+
(0, logger_1.info)(ansi_colors_1.bold.underline(urlString));
|
|
136
|
+
(0, logger_1.info)();
|
|
137
|
+
(0, open_1.default)(urlString).catch();
|
|
138
|
+
});
|
|
139
|
+
server.on('error', (err) => {
|
|
140
|
+
rej(err);
|
|
141
|
+
});
|
|
100
142
|
}));
|
|
101
|
-
|
|
143
|
+
if (userActionError) {
|
|
144
|
+
throw new error_1.default('Error while verifying user action', {
|
|
145
|
+
original: userActionError,
|
|
146
|
+
exit: 2
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (projectId === null) {
|
|
150
|
+
throw new error_1.default('Project ID not found', { exit: 2 });
|
|
151
|
+
}
|
|
152
|
+
selectedProject = yield projectAPI.getProject(projectId);
|
|
102
153
|
return (0, project_2.fillProjectPayload)(selectedOrg, selectedProject, true);
|
|
103
154
|
}
|
|
104
155
|
const [zipArchive, template, importRes] = yield (0, import_1.iacImport)();
|
package/package.json
CHANGED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
3
|
+
|
|
4
|
+
const PACKAGE_JSON = require('../package.json');
|
|
5
|
+
const HTTPS = require('https');
|
|
6
|
+
const VERSION = PACKAGE_JSON.version;
|
|
7
|
+
const NPM_REGISTRY_LINK = process.env.NPM_REGISTRY_LINK;
|
|
8
|
+
const RELEASE_NOTES_LINK = process.env.RELEASE_NOTES_LINK;
|
|
9
|
+
const API_KEY = process.env.API_KEY;
|
|
10
|
+
|
|
11
|
+
const INSTALL_COMMAND = `npm install -g zcatalyst-cli@${VERSION}`;
|
|
12
|
+
const CHANNEL_NAMES = (process.env.CHANNEL_NAMES || '').split(',');
|
|
13
|
+
|
|
14
|
+
const notify = async () => {
|
|
15
|
+
const message = {
|
|
16
|
+
text: `Hey Team, we've released a new version of [ZCatalyst-CLI](${NPM_REGISTRY_LINK}) :fireworks: \n\n *Version:* \`v${VERSION}\``,
|
|
17
|
+
bot: {
|
|
18
|
+
name: 'Dx Tools Update',
|
|
19
|
+
image: 'https://www.zohowebstatic.com/sites/default/files/catalyst/catalyst-logo.svg'
|
|
20
|
+
},
|
|
21
|
+
card: {
|
|
22
|
+
title: 'Announcement',
|
|
23
|
+
thumbnail: 'https://public-catlab-development.zohostratus.in/megaphone.gif',
|
|
24
|
+
theme: 'modern-inline'
|
|
25
|
+
},
|
|
26
|
+
slides: [
|
|
27
|
+
{
|
|
28
|
+
type: 'text',
|
|
29
|
+
title: 'Installation Command',
|
|
30
|
+
data: '```' + INSTALL_COMMAND + '```'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
title: 'Release Notes',
|
|
35
|
+
data: `${RELEASE_NOTES_LINK}`
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
if (!CHANNEL_NAMES || !Array.isArray(CHANNEL_NAMES) || CHANNEL_NAMES.length === 0) {
|
|
41
|
+
console.error('Invalid channels: ' + process.env.CHANNEL_NAMES);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
await Promise.all(
|
|
46
|
+
CHANNEL_NAMES.map((channel) => {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
try {
|
|
49
|
+
const reqOpts = {
|
|
50
|
+
hostname: 'cliq.zoho.com',
|
|
51
|
+
path: `/company/64396901/api/v2/channelsbyname/${channel}/message?zapikey=${API_KEY}`,
|
|
52
|
+
qs: {},
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'content-type': 'application/json'
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const req = HTTPS.request(reqOpts, async (res) => {
|
|
59
|
+
if (res.statusCode === 204) {
|
|
60
|
+
console.log('Notification successful: ' + channel);
|
|
61
|
+
return resolve();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const data = [];
|
|
65
|
+
res.on('data', (chunk) => {
|
|
66
|
+
data.push(chunk);
|
|
67
|
+
});
|
|
68
|
+
res.on('end', () => {
|
|
69
|
+
const resStr = Buffer.concat(data).toString();
|
|
70
|
+
reject(
|
|
71
|
+
new Error(
|
|
72
|
+
`API ERROR ::: ${req.method} ::: https://${req.host}${req.path} ::: ${res.statusCode} ::: ${resStr}`
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
req.on('error', reject);
|
|
78
|
+
req.write(JSON.stringify(message));
|
|
79
|
+
req.end();
|
|
80
|
+
} catch (er) {
|
|
81
|
+
if (er instanceof Error) {
|
|
82
|
+
return reject(er);
|
|
83
|
+
}
|
|
84
|
+
const error = new Error();
|
|
85
|
+
error.cause = er;
|
|
86
|
+
return reject(error);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
})
|
|
90
|
+
).catch((er) => {
|
|
91
|
+
console.error('Error sending notifications: ', er);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
console.log('All Notifications sent successfully');
|
|
96
|
+
process.exit(0);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
notify();
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
+
<title>Catalyst CLI</title>
|
|
8
|
+
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
|
10
|
+
<style media="screen">
|
|
11
|
+
html,
|
|
12
|
+
body {
|
|
13
|
+
height: 100%;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
body {
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.modalbox.success,
|
|
24
|
+
.modalbox.error {
|
|
25
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
|
|
26
|
+
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
27
|
+
-webkit-border-radius: 2px;
|
|
28
|
+
-moz-border-radius: 2px;
|
|
29
|
+
border-radius: 2px;
|
|
30
|
+
background: #fff;
|
|
31
|
+
padding: 25px 25px 15px;
|
|
32
|
+
text-align: center;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.modalbox.success.animate .icon,
|
|
36
|
+
.modalbox.error.animate .icon {
|
|
37
|
+
-webkit-animation: fall-in 0.75s;
|
|
38
|
+
-moz-animation: fall-in 0.75s;
|
|
39
|
+
-o-animation: fall-in 0.75s;
|
|
40
|
+
animation: fall-in 0.75s;
|
|
41
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.modalbox.success h1,
|
|
45
|
+
.modalbox.error h1 {
|
|
46
|
+
font-family: 'Montserrat', sans-serif;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.modalbox.success p,
|
|
50
|
+
.modalbox.error p {
|
|
51
|
+
font-family: 'Open Sans', sans-serif;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.modalbox.success button,
|
|
55
|
+
.modalbox.error button,
|
|
56
|
+
.modalbox.success button:active,
|
|
57
|
+
.modalbox.error button:active,
|
|
58
|
+
.modalbox.success button:focus,
|
|
59
|
+
.modalbox.error button:focus {
|
|
60
|
+
-webkit-transition: all 0.1s ease-in-out;
|
|
61
|
+
transition: all 0.1s ease-in-out;
|
|
62
|
+
-webkit-border-radius: 30px;
|
|
63
|
+
-moz-border-radius: 30px;
|
|
64
|
+
border-radius: 30px;
|
|
65
|
+
margin-top: 15px;
|
|
66
|
+
width: 80%;
|
|
67
|
+
background: transparent;
|
|
68
|
+
color: #4caf50;
|
|
69
|
+
border-color: #4caf50;
|
|
70
|
+
outline: none;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.modalbox.success button:hover,
|
|
74
|
+
.modalbox.error button:hover,
|
|
75
|
+
.modalbox.success button:active:hover,
|
|
76
|
+
.modalbox.error button:active:hover,
|
|
77
|
+
.modalbox.success button:focus:hover,
|
|
78
|
+
.modalbox.error button:focus:hover {
|
|
79
|
+
color: #fff;
|
|
80
|
+
background: #4caf50;
|
|
81
|
+
border-color: transparent;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.modalbox.success .icon,
|
|
85
|
+
.modalbox.error .icon {
|
|
86
|
+
position: relative;
|
|
87
|
+
margin: 0 auto;
|
|
88
|
+
margin-top: -75px;
|
|
89
|
+
background: #4caf50;
|
|
90
|
+
height: 100px;
|
|
91
|
+
width: 100px;
|
|
92
|
+
border-radius: 50%;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.modalbox.success .icon span,
|
|
96
|
+
.modalbox.error .icon span {
|
|
97
|
+
font-size: 4em;
|
|
98
|
+
color: #fff;
|
|
99
|
+
text-align: center;
|
|
100
|
+
padding-top: 20px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.modalbox.error button,
|
|
104
|
+
.modalbox.error button:active,
|
|
105
|
+
.modalbox.error button:focus {
|
|
106
|
+
color: #f44336;
|
|
107
|
+
border-color: #f44336;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.modalbox.error button:hover,
|
|
111
|
+
.modalbox.error button:active:hover,
|
|
112
|
+
.modalbox.error button:focus:hover {
|
|
113
|
+
color: #fff;
|
|
114
|
+
background: #f44336;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.modalbox.error .icon {
|
|
118
|
+
background: #f44336;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.modalbox.error .icon span {
|
|
122
|
+
padding-top: 25px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.center {
|
|
126
|
+
float: none;
|
|
127
|
+
margin-left: auto;
|
|
128
|
+
margin-right: auto;
|
|
129
|
+
/* stupid browser compat. smh */
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@-webkit-keyframes fall-in {
|
|
133
|
+
0% {
|
|
134
|
+
-ms-transform: scale(3, 3);
|
|
135
|
+
-webkit-transform: scale(3, 3);
|
|
136
|
+
transform: scale(3, 3);
|
|
137
|
+
opacity: 0;
|
|
138
|
+
}
|
|
139
|
+
50% {
|
|
140
|
+
-ms-transform: scale(1, 1);
|
|
141
|
+
-webkit-transform: scale(1, 1);
|
|
142
|
+
transform: scale(1, 1);
|
|
143
|
+
opacity: 1;
|
|
144
|
+
}
|
|
145
|
+
60% {
|
|
146
|
+
-ms-transform: scale(1.1, 1.1);
|
|
147
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
148
|
+
transform: scale(1.1, 1.1);
|
|
149
|
+
}
|
|
150
|
+
100% {
|
|
151
|
+
-ms-transform: scale(1, 1);
|
|
152
|
+
-webkit-transform: scale(1, 1);
|
|
153
|
+
transform: scale(1, 1);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@-moz-keyframes fall-in {
|
|
158
|
+
0% {
|
|
159
|
+
-ms-transform: scale(3, 3);
|
|
160
|
+
-webkit-transform: scale(3, 3);
|
|
161
|
+
transform: scale(3, 3);
|
|
162
|
+
opacity: 0;
|
|
163
|
+
}
|
|
164
|
+
50% {
|
|
165
|
+
-ms-transform: scale(1, 1);
|
|
166
|
+
-webkit-transform: scale(1, 1);
|
|
167
|
+
transform: scale(1, 1);
|
|
168
|
+
opacity: 1;
|
|
169
|
+
}
|
|
170
|
+
60% {
|
|
171
|
+
-ms-transform: scale(1.1, 1.1);
|
|
172
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
173
|
+
transform: scale(1.1, 1.1);
|
|
174
|
+
}
|
|
175
|
+
100% {
|
|
176
|
+
-ms-transform: scale(1, 1);
|
|
177
|
+
-webkit-transform: scale(1, 1);
|
|
178
|
+
transform: scale(1, 1);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@-o-keyframes fall-in {
|
|
183
|
+
0% {
|
|
184
|
+
-ms-transform: scale(3, 3);
|
|
185
|
+
-webkit-transform: scale(3, 3);
|
|
186
|
+
transform: scale(3, 3);
|
|
187
|
+
opacity: 0;
|
|
188
|
+
}
|
|
189
|
+
50% {
|
|
190
|
+
-ms-transform: scale(1, 1);
|
|
191
|
+
-webkit-transform: scale(1, 1);
|
|
192
|
+
transform: scale(1, 1);
|
|
193
|
+
opacity: 1;
|
|
194
|
+
}
|
|
195
|
+
60% {
|
|
196
|
+
-ms-transform: scale(1.1, 1.1);
|
|
197
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
198
|
+
transform: scale(1.1, 1.1);
|
|
199
|
+
}
|
|
200
|
+
100% {
|
|
201
|
+
-ms-transform: scale(1, 1);
|
|
202
|
+
-webkit-transform: scale(1, 1);
|
|
203
|
+
transform: scale(1, 1);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@-webkit-keyframes plunge {
|
|
208
|
+
0% {
|
|
209
|
+
margin-top: -100%;
|
|
210
|
+
}
|
|
211
|
+
100% {
|
|
212
|
+
margin-top: 25%;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@-moz-keyframes plunge {
|
|
217
|
+
0% {
|
|
218
|
+
margin-top: -100%;
|
|
219
|
+
}
|
|
220
|
+
100% {
|
|
221
|
+
margin-top: 25%;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@-o-keyframes plunge {
|
|
226
|
+
0% {
|
|
227
|
+
margin-top: -100%;
|
|
228
|
+
}
|
|
229
|
+
100% {
|
|
230
|
+
margin-top: 25%;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@-moz-keyframes fall-in {
|
|
235
|
+
0% {
|
|
236
|
+
-ms-transform: scale(3, 3);
|
|
237
|
+
-webkit-transform: scale(3, 3);
|
|
238
|
+
transform: scale(3, 3);
|
|
239
|
+
opacity: 0;
|
|
240
|
+
}
|
|
241
|
+
50% {
|
|
242
|
+
-ms-transform: scale(1, 1);
|
|
243
|
+
-webkit-transform: scale(1, 1);
|
|
244
|
+
transform: scale(1, 1);
|
|
245
|
+
opacity: 1;
|
|
246
|
+
}
|
|
247
|
+
60% {
|
|
248
|
+
-ms-transform: scale(1.1, 1.1);
|
|
249
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
250
|
+
transform: scale(1.1, 1.1);
|
|
251
|
+
}
|
|
252
|
+
100% {
|
|
253
|
+
-ms-transform: scale(1, 1);
|
|
254
|
+
-webkit-transform: scale(1, 1);
|
|
255
|
+
transform: scale(1, 1);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@-webkit-keyframes fall-in {
|
|
260
|
+
0% {
|
|
261
|
+
-ms-transform: scale(3, 3);
|
|
262
|
+
-webkit-transform: scale(3, 3);
|
|
263
|
+
transform: scale(3, 3);
|
|
264
|
+
opacity: 0;
|
|
265
|
+
}
|
|
266
|
+
50% {
|
|
267
|
+
-ms-transform: scale(1, 1);
|
|
268
|
+
-webkit-transform: scale(1, 1);
|
|
269
|
+
transform: scale(1, 1);
|
|
270
|
+
opacity: 1;
|
|
271
|
+
}
|
|
272
|
+
60% {
|
|
273
|
+
-ms-transform: scale(1.1, 1.1);
|
|
274
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
275
|
+
transform: scale(1.1, 1.1);
|
|
276
|
+
}
|
|
277
|
+
100% {
|
|
278
|
+
-ms-transform: scale(1, 1);
|
|
279
|
+
-webkit-transform: scale(1, 1);
|
|
280
|
+
transform: scale(1, 1);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@-o-keyframes fall-in {
|
|
285
|
+
0% {
|
|
286
|
+
-ms-transform: scale(3, 3);
|
|
287
|
+
-webkit-transform: scale(3, 3);
|
|
288
|
+
transform: scale(3, 3);
|
|
289
|
+
opacity: 0;
|
|
290
|
+
}
|
|
291
|
+
50% {
|
|
292
|
+
-ms-transform: scale(1, 1);
|
|
293
|
+
-webkit-transform: scale(1, 1);
|
|
294
|
+
transform: scale(1, 1);
|
|
295
|
+
opacity: 1;
|
|
296
|
+
}
|
|
297
|
+
60% {
|
|
298
|
+
-ms-transform: scale(1.1, 1.1);
|
|
299
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
300
|
+
transform: scale(1.1, 1.1);
|
|
301
|
+
}
|
|
302
|
+
100% {
|
|
303
|
+
-ms-transform: scale(1, 1);
|
|
304
|
+
-webkit-transform: scale(1, 1);
|
|
305
|
+
transform: scale(1, 1);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
@keyframes fall-in {
|
|
310
|
+
0% {
|
|
311
|
+
-ms-transform: scale(3, 3);
|
|
312
|
+
-webkit-transform: scale(3, 3);
|
|
313
|
+
transform: scale(3, 3);
|
|
314
|
+
opacity: 0;
|
|
315
|
+
}
|
|
316
|
+
50% {
|
|
317
|
+
-ms-transform: scale(1, 1);
|
|
318
|
+
-webkit-transform: scale(1, 1);
|
|
319
|
+
transform: scale(1, 1);
|
|
320
|
+
opacity: 1;
|
|
321
|
+
}
|
|
322
|
+
60% {
|
|
323
|
+
-ms-transform: scale(1.1, 1.1);
|
|
324
|
+
-webkit-transform: scale(1.1, 1.1);
|
|
325
|
+
transform: scale(1.1, 1.1);
|
|
326
|
+
}
|
|
327
|
+
100% {
|
|
328
|
+
-ms-transform: scale(1, 1);
|
|
329
|
+
-webkit-transform: scale(1, 1);
|
|
330
|
+
transform: scale(1, 1);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
@-moz-keyframes plunge {
|
|
335
|
+
0% {
|
|
336
|
+
margin-top: -100%;
|
|
337
|
+
}
|
|
338
|
+
100% {
|
|
339
|
+
margin-top: 15%;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
@-webkit-keyframes plunge {
|
|
344
|
+
0% {
|
|
345
|
+
margin-top: -100%;
|
|
346
|
+
}
|
|
347
|
+
100% {
|
|
348
|
+
margin-top: 15%;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@-o-keyframes plunge {
|
|
353
|
+
0% {
|
|
354
|
+
margin-top: -100%;
|
|
355
|
+
}
|
|
356
|
+
100% {
|
|
357
|
+
margin-top: 15%;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
@keyframes plunge {
|
|
362
|
+
0% {
|
|
363
|
+
margin-top: -100%;
|
|
364
|
+
}
|
|
365
|
+
100% {
|
|
366
|
+
margin-top: 15%;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
</style>
|
|
370
|
+
</head>
|
|
371
|
+
|
|
372
|
+
<body>
|
|
373
|
+
<div class="container">
|
|
374
|
+
<div class="row">
|
|
375
|
+
<div class="modalbox success col-sm-8 col-md-6 col-lg-5 center animate">
|
|
376
|
+
<div class="icon">
|
|
377
|
+
<span class="glyphicon glyphicon-ok"></span>
|
|
378
|
+
</div>
|
|
379
|
+
<!--/.icon-->
|
|
380
|
+
<h1>Project Created!</h1>
|
|
381
|
+
<p>You can close this window and
|
|
382
|
+
<br>continue using the <b>CLI</b></p>
|
|
383
|
+
</div>
|
|
384
|
+
<!--/.success-->
|
|
385
|
+
</div>
|
|
386
|
+
<!--/.row-->
|
|
387
|
+
</div>
|
|
388
|
+
<!--/.container-->
|
|
389
|
+
</body>
|
|
390
|
+
|
|
391
|
+
</html>
|