bdy 1.22.55 → 1.22.56-master
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/distTs/package.json +1 -1
- package/distTs/src/cliIndex.js +2 -0
- package/distTs/src/command/login.js +40 -24
- package/distTs/src/command/register.js +38 -0
- package/distTs/src/texts.js +18 -5
- package/distTs/src/utils.js +38 -4
- package/package.json +1 -1
package/distTs/package.json
CHANGED
package/distTs/src/cliIndex.js
CHANGED
|
@@ -25,6 +25,7 @@ const api_1 = __importDefault(require("./command/api"));
|
|
|
25
25
|
const domain_1 = __importDefault(require("./command/domain"));
|
|
26
26
|
const main_1 = __importDefault(require("./main"));
|
|
27
27
|
const distro_1 = __importDefault(require("./command/distro"));
|
|
28
|
+
const register_1 = __importDefault(require("./command/register"));
|
|
28
29
|
function cliIndex() {
|
|
29
30
|
const program = (0, utils_1.newCommand)('', texts_1.DESC_PROGRAM);
|
|
30
31
|
program.hook('preAction', pre_1.default);
|
|
@@ -43,6 +44,7 @@ function cliIndex() {
|
|
|
43
44
|
program.addCommand(domain_1.default);
|
|
44
45
|
program.addCommand(distro_1.default);
|
|
45
46
|
program.addCommand(login_1.default);
|
|
47
|
+
program.addCommand(register_1.default);
|
|
46
48
|
program.addCommand(whoami_1.default);
|
|
47
49
|
program.addCommand(logout_1.default);
|
|
48
50
|
program.addCommand(workspace_1.default);
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.authorize = authorize;
|
|
6
7
|
const cfg_1 = __importDefault(require("../tunnel/cfg"));
|
|
7
8
|
const output_1 = __importDefault(require("../output"));
|
|
8
9
|
const node_http_1 = __importDefault(require("node:http"));
|
|
@@ -36,13 +37,18 @@ const OAUTH_CLIENT_APP_SCOPES = [
|
|
|
36
37
|
function getRedirectUrl(api) {
|
|
37
38
|
return `https://${api}/oauth2/cli`;
|
|
38
39
|
}
|
|
39
|
-
async function waitForOpen(abortCode, seconds = 3) {
|
|
40
|
-
output_1.default.normal(texts_1.TXT_LOGIN_OPENING);
|
|
40
|
+
async function waitForOpen(isRegister, abortCode, seconds = 3) {
|
|
41
|
+
output_1.default.normal(isRegister ? texts_1.TXT_REGISTER_OPENING : texts_1.TXT_LOGIN_OPENING);
|
|
41
42
|
let star = true;
|
|
42
43
|
const now = Date.now();
|
|
43
44
|
for (;;) {
|
|
44
45
|
output_1.default.clearPreviousLine();
|
|
45
|
-
|
|
46
|
+
if (isRegister) {
|
|
47
|
+
output_1.default.normal(star ? texts_1.TXT_REGISTER_OPENING_STAR : texts_1.TXT_REGISTER_OPENING);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
output_1.default.normal(star ? texts_1.TXT_LOGIN_OPENING_STAR : texts_1.TXT_LOGIN_OPENING);
|
|
51
|
+
}
|
|
46
52
|
star = !star;
|
|
47
53
|
await (0, utils_1.sleep)(500);
|
|
48
54
|
if (Date.now() > now + seconds * 1000 || abortCode.signal.aborted)
|
|
@@ -50,12 +56,13 @@ async function waitForOpen(abortCode, seconds = 3) {
|
|
|
50
56
|
}
|
|
51
57
|
output_1.default.clearPreviousLine();
|
|
52
58
|
}
|
|
53
|
-
async function oauthServer(api, clientId, clientSecret) {
|
|
59
|
+
async function oauthServer(api, clientId, clientSecret, forceRegisterEmail, forceRegisterName) {
|
|
60
|
+
const isRegister = !!forceRegisterEmail && !!forceRegisterName;
|
|
54
61
|
const ApiClient = require('../api/client').default;
|
|
55
62
|
const open = require('open').default;
|
|
56
63
|
const redirectUrl = getRedirectUrl(api);
|
|
57
64
|
const ts = setTimeout(() => {
|
|
58
|
-
output_1.default.exitError(texts_1.ERR_LOGIN_HTTP_CANCEL);
|
|
65
|
+
output_1.default.exitError(isRegister ? texts_1.ERR_REGISTER_HTTP_CANCEL : texts_1.ERR_LOGIN_HTTP_CANCEL);
|
|
59
66
|
}, OAUTH_TIMEOUT);
|
|
60
67
|
return new Promise((resolve) => {
|
|
61
68
|
const state = (0, uuid_1.v4)();
|
|
@@ -104,17 +111,20 @@ async function oauthServer(api, clientId, clientSecret) {
|
|
|
104
111
|
output_1.default.exitError(texts_1.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN);
|
|
105
112
|
});
|
|
106
113
|
s.listen(OAUTH_CLIENT_APP_PORT, OAUTH_CLIENT_APP_HOST, async () => {
|
|
107
|
-
|
|
114
|
+
let url = `https://${api}/oauth2/authorize?type=web_server&client_id=${encodeURIComponent(clientId)}&redirect_uri=${encodeURIComponent(redirectUrl)}&response_type=code&scope=${encodeURIComponent(OAUTH_CLIENT_APP_SCOPES.join(' '))}&state=${encodeURIComponent(state)}`;
|
|
115
|
+
if (isRegister) {
|
|
116
|
+
url += `®ister_email=${encodeURIComponent(forceRegisterEmail)}®ister_name=${encodeURIComponent(forceRegisterName)}`;
|
|
117
|
+
}
|
|
108
118
|
try {
|
|
109
119
|
await open(url);
|
|
110
120
|
}
|
|
111
121
|
catch {
|
|
112
122
|
// do nothing
|
|
113
123
|
}
|
|
114
|
-
await waitForOpen(abortCode);
|
|
124
|
+
await waitForOpen(isRegister, abortCode);
|
|
115
125
|
if (abortCode.signal.aborted)
|
|
116
126
|
return;
|
|
117
|
-
output_1.default.dim(texts_1.TXT_LOGIN_OPEN_URL);
|
|
127
|
+
output_1.default.dim(isRegister ? texts_1.TXT_REGISTER_OPEN_URL : texts_1.TXT_LOGIN_OPEN_URL);
|
|
118
128
|
output_1.default.normal('');
|
|
119
129
|
output_1.default.dim(url.replace(/%/g, '%%'));
|
|
120
130
|
output_1.default.normal('');
|
|
@@ -135,7 +145,7 @@ async function oauthServer(api, clientId, clientSecret) {
|
|
|
135
145
|
}
|
|
136
146
|
else if (err.name === 'ExitPromptError') {
|
|
137
147
|
clearTimeout(ts);
|
|
138
|
-
output_1.default.exitError(texts_1.ERR_LOGIN_HTTP_CANCEL);
|
|
148
|
+
output_1.default.exitError(isRegister ? texts_1.ERR_REGISTER_HTTP_CANCEL : texts_1.ERR_LOGIN_HTTP_CANCEL);
|
|
139
149
|
}
|
|
140
150
|
}
|
|
141
151
|
}
|
|
@@ -181,12 +191,12 @@ async function getOrCreateApp(api) {
|
|
|
181
191
|
clientToken,
|
|
182
192
|
};
|
|
183
193
|
}
|
|
184
|
-
async function authorizeOAuth(api) {
|
|
194
|
+
async function authorizeOAuth(api, forceRegisterEmail, forceRegisterName) {
|
|
185
195
|
const { clientId, clientSecret, clientToken } = await getOrCreateApp(api);
|
|
186
|
-
const { token, refreshToken } = await oauthServer(api, clientId, clientSecret);
|
|
196
|
+
const { token, refreshToken } = await oauthServer(api, clientId, clientSecret, forceRegisterEmail, forceRegisterName);
|
|
187
197
|
return { token, refreshToken, clientId, clientSecret, clientToken };
|
|
188
198
|
}
|
|
189
|
-
async function authorizeToken(api, token, refreshToken, clientId, clientSecret, clientToken, workspace) {
|
|
199
|
+
async function authorizeToken(isRegister, api, token, refreshToken, clientId, clientSecret, clientToken, workspace) {
|
|
190
200
|
const ApiClient = require('../api/client').default;
|
|
191
201
|
cfg_1.default.setApiToken(token);
|
|
192
202
|
cfg_1.default.setApiRefreshToken(refreshToken);
|
|
@@ -205,22 +215,18 @@ async function authorizeToken(api, token, refreshToken, clientId, clientSecret,
|
|
|
205
215
|
workspace = await output_1.default.selectWorkspace(w.workspaces);
|
|
206
216
|
}
|
|
207
217
|
cfg_1.default.setWorkspace(workspace);
|
|
208
|
-
output_1.default.exitSuccess(texts_1.TXT_LOGIN_SUCCESS);
|
|
218
|
+
output_1.default.exitSuccess(isRegister ? texts_1.TXT_REGISTER_SUCCESS : texts_1.TXT_LOGIN_SUCCESS);
|
|
209
219
|
}
|
|
210
|
-
|
|
211
|
-
commandLogin.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
|
|
212
|
-
commandLogin.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
|
|
213
|
-
commandLogin.option('--region <region>', texts_1.OPTION_REST_API_REGION);
|
|
214
|
-
commandLogin.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
215
|
-
commandLogin.action(async (options) => {
|
|
216
|
-
output_1.default.handleSignals();
|
|
220
|
+
async function authorize(options, forceRegisterEmail, forceRegisterName) {
|
|
217
221
|
cfg_1.default.clearLogin();
|
|
222
|
+
const isRegister = !!forceRegisterEmail && !!forceRegisterName;
|
|
218
223
|
let api = options.api || process.env.BUDDY_API_ENDPOINT;
|
|
219
224
|
let region = options.region || process.env.BUDDY_REGION;
|
|
220
225
|
let token = options.token;
|
|
221
226
|
let workspace = options.workspace;
|
|
222
|
-
if (!(0, utils_1.isInSandbox)()) {
|
|
227
|
+
if (!(0, utils_1.isInSandbox)() && !isRegister) {
|
|
223
228
|
// inside a sandbox, BUDDY_TOKEN/BUDDY_WORKSPACE are preset for the sandbox itself, so ignore them — otherwise bdy login can never authenticate a different user
|
|
229
|
+
// for register we ignore env for token & workspace
|
|
224
230
|
if (!token && process.env.BUDDY_TOKEN)
|
|
225
231
|
token = process.env.BUDDY_TOKEN;
|
|
226
232
|
if (!workspace && process.env.BUDDY_WORKSPACE)
|
|
@@ -254,11 +260,21 @@ commandLogin.action(async (options) => {
|
|
|
254
260
|
if (!output_1.default.isStdInTTY()) {
|
|
255
261
|
output_1.default.exitError(texts_1.ERR_TOKEN_NOT_PROVIDED);
|
|
256
262
|
}
|
|
257
|
-
const { token, refreshToken, clientId, clientSecret, clientToken } = await authorizeOAuth(api);
|
|
258
|
-
await authorizeToken(api, token, refreshToken, clientId, clientSecret, clientToken, workspace);
|
|
263
|
+
const { token, refreshToken, clientId, clientSecret, clientToken } = await authorizeOAuth(api, forceRegisterEmail, forceRegisterName);
|
|
264
|
+
await authorizeToken(isRegister, api, token, refreshToken, clientId, clientSecret, clientToken, workspace);
|
|
259
265
|
}
|
|
260
266
|
else {
|
|
261
|
-
await authorizeToken(api, token, '', '', '', '', workspace);
|
|
267
|
+
await authorizeToken(false, api, token, '', '', '', '', workspace);
|
|
262
268
|
}
|
|
269
|
+
}
|
|
270
|
+
const commandLogin = (0, utils_1.newCommand)('login', texts_1.DESC_COMMAND_LOGIN);
|
|
271
|
+
commandLogin.alias('sign-in');
|
|
272
|
+
commandLogin.option('--token <token>', texts_1.OPTION_REST_API_TOKEN);
|
|
273
|
+
commandLogin.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
|
|
274
|
+
commandLogin.option('--region <region>', texts_1.OPTION_REST_API_REGION);
|
|
275
|
+
commandLogin.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
276
|
+
commandLogin.action(async (options) => {
|
|
277
|
+
output_1.default.handleSignals();
|
|
278
|
+
await authorize(options);
|
|
263
279
|
});
|
|
264
280
|
exports.default = commandLogin;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const texts_1 = require("../texts");
|
|
8
|
+
const output_1 = __importDefault(require("../output"));
|
|
9
|
+
const login_1 = require("./login");
|
|
10
|
+
const commandRegister = (0, utils_1.newCommand)('register', texts_1.DESC_COMMAND_REGISTER);
|
|
11
|
+
commandRegister.alias('sign-up');
|
|
12
|
+
commandRegister.option('--api <url>', texts_1.OPTION_REST_API_ENDPOINT);
|
|
13
|
+
commandRegister.option('--region <region>', texts_1.OPTION_REST_API_REGION);
|
|
14
|
+
commandRegister.option('-e, --email <email>', texts_1.OPT_COMMAND_REGISTER_EMAIL);
|
|
15
|
+
commandRegister.option('-n, --name <name>', texts_1.OPT_COMMAND_REGISTER_NAME);
|
|
16
|
+
commandRegister.action(async (options) => {
|
|
17
|
+
output_1.default.handleSignals();
|
|
18
|
+
let email = options.email;
|
|
19
|
+
let name = options.name;
|
|
20
|
+
if (!email) {
|
|
21
|
+
const gitEmail = await (0, utils_1.getGitEmail)();
|
|
22
|
+
email = await output_1.default.inputString(texts_1.TXT_COMMAND_REGISTER_PROVIDE_EMAIL, gitEmail ?? undefined, true);
|
|
23
|
+
}
|
|
24
|
+
email = email.trim();
|
|
25
|
+
if (!(0, utils_1.isValidEmail)(email)) {
|
|
26
|
+
output_1.default.exitError(texts_1.ERR_COMMAND_REGISTER_INVALID_EMAIL);
|
|
27
|
+
}
|
|
28
|
+
if (!name) {
|
|
29
|
+
const gitName = await (0, utils_1.getGitName)();
|
|
30
|
+
name = await output_1.default.inputString(texts_1.TXT_COMMAND_REGISTER_PROVIDE_NAME, gitName ?? undefined, true);
|
|
31
|
+
}
|
|
32
|
+
name = name.trim();
|
|
33
|
+
if (!(0, utils_1.isValidName)(name)) {
|
|
34
|
+
output_1.default.exitError(texts_1.ERR_COMMAND_REGISTER_INVALID_NAME);
|
|
35
|
+
}
|
|
36
|
+
await (0, login_1.authorize)(options, email, name);
|
|
37
|
+
});
|
|
38
|
+
exports.default = commandRegister;
|
package/distTs/src/texts.js
CHANGED
|
@@ -13,11 +13,11 @@ exports.OPTION_SANDBOX_OS = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX
|
|
|
13
13
|
exports.DESC_COMMAND_SANDBOX_APP_START = exports.DESC_COMMAND_SANDBOX_APP_STOP = exports.DESC_COMMAND_SANDBOX_APP_STATUS = exports.DESC_COMMAND_SANDBOX_APP_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.DESC_COMMAND_SANDBOX_APP_REMOVE = exports.DESC_COMMAND_SANDBOX_APP_ADD = exports.DESC_COMMAND_SANDBOX_APP_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = exports.TXT_SANDBOX_WAITING_APPS = exports.TXT_SANDBOX_WAITING_SETUP = exports.TXT_SANDBOX_WAITING_RUNNING = exports.TXT_SANDBOX_STOPPED = exports.TXT_SANDBOX_STARTED = exports.TXT_SANDBOX_DESTROYED = exports.TXT_SANDBOX_DESTROY_CONFIRM = exports.TXT_SANDBOX_UPDATED = exports.TXT_SANDBOX_CREATED = exports.TXT_SANDBOX_CREATING = exports.TXT_SANDBOX_APP_STARTED = exports.TXT_SANDBOX_APP_STOPPED = exports.OPTION_SANDBOX_WAIT = exports.OPTION_SANDBOX_WAIT_APPS = exports.OPTION_SANDBOX_WAIT_CONFIGURED = exports.OPTION_SANDBOX_WAIT_RUNNING = exports.ERR_SANDBOX_STOP_FAILED = exports.ERR_SANDBOX_NO_COMMANDS = exports.ERR_SANDBOX_RUNNING_FAILED = exports.ERR_SANDBOX_STOP_TIMEOUT = exports.ERR_SANDBOX_SNAPSHOT_TIMEOUT = exports.ERR_SANDBOX_RUNNING_TIMEOUT = exports.ERR_SANDBOX_APPS_TIMEOUT = exports.ERR_SANDBOX_SETUP_TIMEOUT = exports.ERR_SANDBOX_APP_FAILED = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_APP_NOT_FOUND = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_RUNTIME = exports.OPTION_SANDBOX_TIMEOUT = exports.OPTION_SANDBOX_FETCH = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_APP_COMMAND = exports.OPTION_SANDBOX_YAML = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_SCRIPT = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = void 0;
|
|
14
14
|
exports.TXT_SANDBOX_UNZIP_DONE = exports.TXT_SANDBOX_UNZIP = exports.TXT_SANDBOX_CP_DOWNLOAD_DONE = exports.TXT_SANDBOX_CP_DOWNLOAD = exports.OPTION_SANDBOX_CP_IGNORE = exports.OPTION_SANDBOX_CP_USER = exports.OPTION_SANDBOX_CP_DOWNLOAD_REPLACE = exports.OPTION_SANDBOX_CP_DOWNLOAD_MERGE = exports.OPTION_SANDBOX_CP_DEST = exports.OPTION_SANDBOX_CP_SOURCE = exports.DESC_COMMAND_SANDBOX_CP = exports.ERR_SANDBOX_ENDPOINTS_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_NOT_FOUND = exports.ERR_SANDBOX_ENDPOINT_EXISTS = exports.TXT_SANDBOX_ENDPOINT_DELETED = exports.TXT_SANDBOX_ENDPOINT_DELETE_CONFIRM = exports.TXT_SANDBOX_ENDPOINT_ADDED = exports.TXT_SANDBOX_APP_REMOVED = exports.TXT_SANDBOX_APP_ADDED = exports.OPTION_SANDBOX_ENDPOINT_TYPE = exports.OPTION_SANDBOX_ENDPOINT_PORT = exports.OPTION_SANDBOX_ENDPOINT_NAME_ARG = exports.OPTION_SANDBOX_ENDPOINT_NAME = exports.DESC_COMMAND_SANDBOX_ENDPOINT_DELETE = exports.DESC_COMMAND_SANDBOX_ENDPOINT_ADD = exports.DESC_COMMAND_SANDBOX_ENDPOINT_GET = exports.DESC_COMMAND_SANDBOX_ENDPOINT_LIST = exports.DESC_COMMAND_SANDBOX_ENDPOINT = exports.ERR_SANDBOX_SNAPSHOTS_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_NOT_FOUND = exports.ERR_SANDBOX_SNAPSHOT_FAILED = exports.TXT_SANDBOX_SNAPSHOT_WAITING = exports.TXT_SANDBOX_SNAPSHOT_DELETE_CONFIRM = exports.TXT_SANDBOX_SNAPSHOT_DELETED = exports.TXT_SANDBOX_SNAPSHOT_CREATED = exports.OPTION_SANDBOX_FROM_SNAPSHOT = exports.OPTION_SANDBOX_SNAPSHOT_NAME_ARG = exports.OPTION_SANDBOX_SNAPSHOT_NAME = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_DELETE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_GET = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_CREATE = exports.DESC_COMMAND_SANDBOX_SNAPSHOT_LIST = exports.DESC_COMMAND_SANDBOX_SNAPSHOT = exports.TXT_SANDBOX_COMMAND_KILLED = exports.OPTION_SANDBOX_COMMAND_KILL_CONFIRM = exports.OPTION_SANDBOX_LOGS_LIMIT = exports.OPTION_SANDBOX_APP_ID = exports.OPTION_SANDBOX_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = void 0;
|
|
15
15
|
exports.TXT_API_ENDPOINT_REQUIRED_SCOPES = exports.ERR_API_ENDPOINT_NOT_FOUND = exports.ERR_API_WRONG_METHOD = exports.ERR_SCHEMA_FETCH_FAILED = exports.OPT_COMMAND_API_INFO_URL = exports.OPT_COMMAND_API_INFO_SCHEMA = exports.OPT_COMMAND_API_INFO_METHOD = exports.OPT_COMMAND_API_LIST_SEARCH = exports.OPT_COMMAND_API_LIST_METHOD = exports.ERR_API_REQUEST_BODY_VALUE = exports.ERR_API_REQUEST_QUERY_VALUE = exports.ERR_API_REQUEST_INVALID_JSON = exports.ERR_API_REQUEST_FILE_ERROR = exports.ERR_API_REQUEST_OUTPUT_EXISTS = exports.DESC_COMMAND_API_INFO = exports.DESC_COMMAND_API_FORM = exports.DESC_COMMAND_API_JSON = exports.DESC_COMMAND_API_DATA = exports.DESC_COMMAND_API_OUTPUT = exports.DESC_COMMAND_API_REQUEST_QUERY = exports.DESC_COMMAND_API_PROJECT = exports.DESC_COMMAND_API_WORKSPACE = exports.DESC_COMMAND_API_REQUEST_URL = exports.DESC_COMMAND_API_GET = exports.DESC_COMMAND_API_PATCH = exports.DESC_COMMAND_API_DELETE = exports.DESC_COMMAND_API_PUT = exports.DESC_COMMAND_API_POST = exports.DESC_COMMAND_API_LIST = exports.DESC_COMMAND_API = exports.ERR_WHOAMI_LOGOUT = exports.TXT_WHOAMI_NO_WORKSPACE = exports.DESC_COMMAND_WHOAMI = exports.TXT_SANDBOX_EXEC_FAILED = exports.TXT_SANDBOX_EXEC_INPROGRESS = exports.TXT_SANDBOX_EXEC_SUCCESS = exports.TXT_SANDBOX_EXEC_BACKGROUND = exports.TXT_SANDBOX_EXEC_ID = exports.ERR_SANDBOX_CP_INVALID_SOURCE = exports.ERR_SANDBOX_CP_INVALID_DEST = exports.ERR_SANDBOX_CP_REPLACE = exports.ERR_SANDBOX_CP_MKDIR = exports.ERR_SANDBOX_CP_PATH_EXISTS = exports.ERR_SANDBOX_CP_NOT_EMPTY_DIR = exports.ERR_SANDBOX_CP_READDIR = exports.ERR_SANDBOX_CP_DEST_NOT_FOLDER = exports.ERR_SANDBOX_CP_SOURCE_NOT_FOUND = exports.TXT_SANDBOX_CP_DONE = exports.TXT_SANDBOX_CP_PROGRESS = exports.TXT_SANDBOX_UNZIPPING_COUNT = void 0;
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.EXAMPLE_CRAWL_LINK = void 0;
|
|
16
|
+
exports.OPT_COMMAND_DISTRO_IDENTIFIER = exports.OPT_COMMAND_DISTRO_SCOPE = exports.DESC_COMMAND_ROUTE = exports.DESC_COMMAND_ROUTE_UPDATE = exports.DESC_COMMAND_ROUTE_DELETE = exports.DESC_COMMAND_ROUTE_LIST = exports.DESC_COMMAND_DISTRO_LIST = exports.DESC_COMMAND_DISTRO_DELETE = exports.DESC_COMMAND_ROUTE_CREATE = exports.DESC_COMMAND_DISTRO_CREATE = exports.DESC_COMMAND_DISTRO = exports.ERR_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_REGISTER_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_CANCEL = exports.ERR_LOGIN_HTTP_FAILED = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_REGISTER_SUCCESS = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = exports.TXT_LOGIN_PROVIDE_CODE = exports.TXT_REGISTER_OPEN_URL = exports.TXT_LOGIN_OPEN_URL = exports.TXT_REGISTER_OPENING_STAR = exports.TXT_LOGIN_OPENING_STAR = exports.TXT_REGISTER_OPENING = exports.TXT_LOGIN_OPENING = exports.TXT_LOGIN_SELECT_REGION = exports.TXT_WORKSPACE_NONE = exports.TXT_WORKSPACE_SET_SUCCESS = exports.ARG_COMMAND_WORKSPACE = exports.DESC_COMMAND_WORKSPACE_GET = exports.DESC_COMMAND_WORKSPACE_SET = exports.DESC_COMMAND_WORKSPACE_LIST = exports.DESC_COMMAND_WORKSPACE = exports.TXT_COMMAND_REGISTER_PROVIDE_NAME = exports.TXT_COMMAND_REGISTER_PROVIDE_EMAIL = exports.ERR_COMMAND_REGISTER_INVALID_NAME = exports.ERR_COMMAND_REGISTER_INVALID_EMAIL = exports.OPT_COMMAND_REGISTER_NAME = exports.OPT_COMMAND_REGISTER_EMAIL = exports.DESC_COMMAND_REGISTER = exports.TXT_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = exports.ERR_API_PARAMETER_NOT_REPLACED = void 0;
|
|
17
|
+
exports.DESC_COMMAND_ARTIFACT_DELETE = exports.ERR_COMMAND_ARTIFACT_NO_PROJECTS = exports.DESC_COMMAND_ARTIFACT_VERSION_GET = exports.DESC_COMMAND_ARTIFACT_VERSION_LIST = exports.DESC_COMMAND_ARTIFACT_VERSION_DELETE = exports.DESC_COMMAND_ARTIFACT_DOCKER_LOGIN = exports.DESC_COMMAND_ARTIFACT_LIST = exports.DESC_COMMAND_ARTIFACT_VERSION = exports.ERR_COMMAND_DOMAIN_UNAVAILABLE = exports.OPTION_COMMAND_DOMAIN_IDENTIFIER = exports.ERR_COMMAND_DOMAIN_NO_DOMAINS = exports.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED = exports.TXT_COMMAND_DOMAIN_BUY_SELECT_DOMAIN = exports.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT = exports.ERR_COMMAND_DOMAIN_NOT_FOUND = exports.OPT_COMMAND_DOMAIN_ONLY_AVAILABLE = exports.OPT_COMMAND_DOMAIN_SORT = exports.OPT_COMMAND_DOMAIN_PHRASE = exports.OPT_COMMAND_DOMAIN_BUY_OWNER = exports.OPT_COMMAND_DOMAIN_BUY_TLD = exports.DESC_COMMAND_DOMAIN_GET = exports.DESC_COMMAND_DOMAIN_LIST = exports.DESC_COMMAND_DOMAIN_SEARCH = exports.DESC_COMMAND_DOMAIN_BUY = exports.DESC_COMMAND_DOMAIN = exports.ERR_ROUTE_NO_DEFAULT = exports.ERR_WRONG_ROUTE_TARGET = exports.ERR_COMMAND_ROUTE_NO_TARGET = exports.ERR_COMMAND_ROUTE_TYPE = exports.TXT_COMMAND_ROUTES_NOT_FOUND = exports.TXT_COMMAND_DISTROS_NOT_FOUND = exports.TXT_COMMAND_ROUTE_DELETED = exports.TXT_COMMAND_DISTRO_DELETED = exports.TXT_COMMAND_ROUTE_DELETE_CONFIRM = exports.TXT_COMMAND_DISTRO_DELETE_CONFIRM = exports.ERR_COMMAND_ROUTE_NO_UPDATE = exports.ERR_COMMAND_DISTRO_NOT_FOUND = exports.ERR_COMMAND_DISTRO_SCOPE = exports.TXT_COMMAND_ROUTE_UPDATED = exports.TXT_ROUTE_SERVE = exports.TXT_COMMAND_ROUTE_CREATED = exports.TXT_COMMAND_DISTRO_CREATED = exports.ERR_COMMAND_DISTRO_NO_PROJECT = exports.OPT_COMMAND_DISTRO_NAME = exports.OPT_COMMAND_ROUTE_TARGET = exports.OPT_COMMAND_ROUTE_PATH = exports.OPT_COMMAND_ROUTE_DOMAIN = exports.OPT_COMMAND_ROUTE_SUBDOMAIN = exports.OPT_COMMAND_ROUTE_TYPE = exports.OPT_COMMAND_ROUTE_ID = void 0;
|
|
18
|
+
exports.EXAMPLE_ROUTE_UPDATE = exports.EXAMPLE_ROUTE_DELETE = exports.EXAMPLE_DISTRO_DELETE = exports.EXAMPLE_DISTRO_LIST = exports.EXAMPLE_SANDBOX_CP = exports.ERR_PROJECT_NO_PROJECTS = exports.TXT_LOGIN_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_CREATED = exports.TXT_COMMAND_PROJECT_LINK_NOT_FOUND = exports.TXT_COMMAND_PROJECT_LINK_NAME = exports.TXT_COMMAND_PROJECT_LINK_SELECT_PROJECT = exports.TXT_COMMAND_PROJECT_LINK_TO = exports.TXT_COMMAND_PROJECT_LINK_EXISTING_DESC = exports.TXT_COMMAND_PROJECT_LINK_EXISTING = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW_DESC = exports.TXT_COMMAND_PROJECT_LINK_CREATE_NEW = exports.ERR_COMMAND_PROJECT_LINK_DIR_NOT_DIR = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO_INITIALIZED = exports.TXT_COMMAND_PROJECT_LINK_GIT_REPO = exports.TXT_COMMAND_PROJECT_LINK_DIR_CONFIRM = exports.TXT_COMMAND_PROJECT_LINK_DIR_LINKED = exports.ERR_COMMAND_PROJECT_LINK_DIR_CREATE = exports.OPT_COMMAND_PROJECT_LINK_TRY_NOW = exports.OPT_COMMAND_PROJECT_LINK_SET_GIT_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_HAS_REMOTE = exports.OPT_COMMAND_PROJECT_LINK_DIRECTORY = exports.OPT_COMMAND_PROJECT_LINK_GIT = exports.OPT_COMMAND_PROJECT_LINK_RELINK = exports.DESC_COMMAND_PROJECT_LINK = exports.DESC_COMMAND_PROJECT_LIST = exports.DESC_COMMAND_PROJECT_GIT = exports.DESC_COMMAND_PROJECT_GIT_CREDENTIAL = exports.DESC_COMMAND_PROJECT = exports.TXT_ARTIFACT_VERSION_DOWNLOAD = exports.TXT_ARTIFACT_PUBLISH = exports.TXT_ARTIFACT_CREATED = exports.TXT_ARTIFACT_VERSION_DELETED = exports.TXT_ARTIFACT_DELETED = exports.ERR_COMMAND_ARTIFACT_TYPE = exports.OPT_COMMAND_ARTIFACT_VERSION = exports.OPT_COMMAND_ARTIFACT_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_CREATE_IDENTIFIER = exports.OPT_COMMAND_ARTIFACT_NAME = exports.OPT_COMMAND_ARTIFACT_TYPE = exports.DESC_COMMAND_ARTIFACT_CREATE = exports.DESC_COMMAND_ARTIFACT_GET = exports.TXT_ARTIFACT_DOCKER_LOGIN_FAILED = exports.TXT_ARTIFACT_DOCKER_LOGIN_SUCCESS = exports.TXT_ARTIFACT_VERSION_DELETE_CONFIRM = exports.TXT_ARTIFACT_DELETE_CONFIRM = void 0;
|
|
19
|
+
exports.EXAMPLE_ARTIFACT_CREATE = exports.EXAMPLE_ARTIFACT_DELETE = exports.EXAMPLE_ARTIFACT_DOWNLOAD = exports.EXAMPLE_ARTIFACT_PUBLISH = exports.EXAMPLE_PIPELINE_RUN_RETRY = exports.EXAMPLE_PIPELINE_RUN_LIST = exports.EXAMPLE_PIPELINE_LIST = exports.EXAMPLE_PIPELINE_YML = exports.EXAMPLE_PIPELINE_GET = exports.EXAMPLE_PIPELINE_UPDATE = exports.EXAMPLE_PIPELINE_DELETE = exports.EXAMPLE_PIPELINE_CREATE = exports.EXAMPLE_PIPELINE_RUN_CANCEL = exports.EXAMPLE_PIPELINE_RUN_APPLY = exports.EXAMPLE_PIPELINE_RUN_LOGS = exports.EXAMPLE_PIPELINE_RUN_JSONL = exports.EXAMPLE_PIPELINE_RUN_STATUS = exports.EXAMPLE_PIPELINE_RUN_START = exports.EXAMPLE_SANDBOX_ENDPOINT_LIST = exports.EXAMPLE_SANDBOX_ENDPOINT_GET = exports.EXAMPLE_SANDBOX_ENDPOINT_DELETE = exports.EXAMPLE_SANDBOX_ENDPOINT_CREATE = exports.EXAMPLE_SANDBOX_SNAPSHOT_LIST = exports.EXAMPLE_SANDBOX_SNAPSHOT_GET = exports.EXAMPLE_SANDBOX_SNAPSHOT_DELETE = exports.EXAMPLE_SANDBOX_SNAPSHOT_CREATE = exports.EXAMPLE_SANDBOX_EXEC_STATUS = exports.EXAMPLE_SANDBOX_EXEC_LOGS = exports.EXAMPLE_SANDBOX_APP_STATUS = exports.EXAMPLE_SANDBOX_APP_STOP = exports.EXAMPLE_SANDBOX_APP_REMOVE = exports.EXAMPLE_SANDBOX_APP_ADD = exports.EXAMPLE_SANDBOX_APP_START = exports.EXAMPLE_SANDBOX_APP_LOGS = exports.EXAMPLE_SANDBOX_EXEC_LIST = exports.EXAMPLE_SANDBOX_APP_LIST = exports.EXAMPLE_SANDBOX_EXEC_KILL = exports.EXAMPLE_SANDBOX_EXEC_COMMAND = exports.EXAMPLE_TUNNEL_START = exports.EXAMPLE_TUNNEL_TCP = exports.EXAMPLE_TUNNEL_TLS = exports.EXAMPLE_AGENT_TUNNEL_START = exports.EXAMPLE_AGENT_TUNNEL_STATUS = exports.EXAMPLE_AGENT_TUNNEL_REMOVE = exports.EXAMPLE_AGENT_TUNNEL_LIST = exports.EXAMPLE_TUNNEL_HTTP = exports.EXAMPLE_SANDBOX_CREATE = exports.EXAMPLE_DISTRO_CREATE = exports.EXAMPLE_ROUTE_CREATE = exports.EXAMPLE_ROUTE_LIST = void 0;
|
|
20
|
+
exports.EXAMPLE_CRAWL_LINK = exports.EXAMPLE_CRAWL_RUN = exports.EXAMPLE_TESTS_CAPTURE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CLOSE = exports.EXAMPLE_TESTS_VISUAL_SESSION_CREATE = exports.EXAMPLE_TESTS_VISUAL_LINK = exports.EXAMPLE_TESTS_VISUAL_UPLOAD = exports.EXAMPLE_TESTS_VISUAL_SETUP = exports.EXAMPLE_TESTS_UNIT_LINK = exports.EXAMPLE_TESTS_UNIT_UPLOAD = exports.EXAMPLE_ARTIFACT_VERSION_DELETE = exports.EXAMPLE_ARTIFACT_VERSION_GET = exports.EXAMPLE_ARTIFACT_VERSION_LIST = void 0;
|
|
21
21
|
const utils_1 = require("./utils");
|
|
22
22
|
exports.ERR_CANCELLED = 'Cancelled';
|
|
23
23
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
@@ -826,6 +826,14 @@ exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED;
|
|
|
826
826
|
exports.DESC_COMMAND_LOGIN = 'Log in to Buddy';
|
|
827
827
|
exports.DESC_COMMAND_LOGOUT = 'Log out from Buddy';
|
|
828
828
|
exports.TXT_LOGOUT_SUCCESS = 'Logged out successfully.';
|
|
829
|
+
// Register command
|
|
830
|
+
exports.DESC_COMMAND_REGISTER = 'Register in Buddy';
|
|
831
|
+
exports.OPT_COMMAND_REGISTER_EMAIL = 'Register with email';
|
|
832
|
+
exports.OPT_COMMAND_REGISTER_NAME = 'Register with name';
|
|
833
|
+
exports.ERR_COMMAND_REGISTER_INVALID_EMAIL = 'Email is invalid';
|
|
834
|
+
exports.ERR_COMMAND_REGISTER_INVALID_NAME = 'Name is invalid';
|
|
835
|
+
exports.TXT_COMMAND_REGISTER_PROVIDE_EMAIL = 'Provide email:';
|
|
836
|
+
exports.TXT_COMMAND_REGISTER_PROVIDE_NAME = 'Provide name:';
|
|
829
837
|
// Workspace commands
|
|
830
838
|
exports.DESC_COMMAND_WORKSPACE = 'Manage workspaces';
|
|
831
839
|
exports.DESC_COMMAND_WORKSPACE_LIST = 'List available workspaces';
|
|
@@ -837,15 +845,20 @@ exports.TXT_WORKSPACE_SET_SUCCESS = TXT_WORKSPACE_SET_SUCCESS;
|
|
|
837
845
|
exports.TXT_WORKSPACE_NONE = 'No workspace configured. Run "bdy login" or "bdy workspace set" first.';
|
|
838
846
|
exports.TXT_LOGIN_SELECT_REGION = 'Select region:';
|
|
839
847
|
exports.TXT_LOGIN_OPENING = ' Opening browser to sign in...';
|
|
848
|
+
exports.TXT_REGISTER_OPENING = ' Opening browser to sign up...';
|
|
840
849
|
exports.TXT_LOGIN_OPENING_STAR = '❋ Opening browser to sign in...';
|
|
850
|
+
exports.TXT_REGISTER_OPENING_STAR = '❋ Opening browser to sign up...';
|
|
841
851
|
exports.TXT_LOGIN_OPEN_URL = "Browser didn't open? Use the url below to sign in:";
|
|
852
|
+
exports.TXT_REGISTER_OPEN_URL = "Browser didn't open? Use the url below to sign up:";
|
|
842
853
|
exports.TXT_LOGIN_PROVIDE_CODE = 'Paste code here if prompted >';
|
|
843
854
|
exports.TXT_LOGIN_ENTER_BASE_URL = 'Enter your Buddy instance URL (e.g., buddy.company.com):';
|
|
844
855
|
exports.TXT_LOGIN_SELECT_WORKSPACE = 'Select workspace:';
|
|
845
856
|
exports.TXT_LOGIN_SUCCESS = 'Logged in successfully!';
|
|
857
|
+
exports.TXT_REGISTER_SUCCESS = 'Signed up successfully!';
|
|
846
858
|
exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = 'Cant start local http server to authorize';
|
|
847
859
|
exports.ERR_LOGIN_HTTP_FAILED = 'Buddy CLI failed to authorize. Try again...';
|
|
848
860
|
exports.ERR_LOGIN_HTTP_CANCEL = 'Login canceled';
|
|
861
|
+
exports.ERR_REGISTER_HTTP_CANCEL = 'Register canceled';
|
|
849
862
|
exports.ERR_LOGIN_NO_WORKSPACES = 'No workspaces found for this token';
|
|
850
863
|
exports.ERR_LOGIN_NO_WORKSPACE_FOUND = 'Provided workspace has been not found';
|
|
851
864
|
exports.ERR_LOGIN_INVALID_BASE_URL = 'Invalid URL format';
|
package/distTs/src/utils.js
CHANGED
|
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = exports.getRootDir = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.ARTIFACT_AUTH_TYPE = exports.ARTIFACT_SCOPE = exports.ARTIFACT_TYPE = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_APP_STATUS = exports.SANDBOX_SETUP_STATUS = exports.SANDBOX_EXEC_STATUS = exports.SANDBOX_EXEC_RUNTIME = exports.SANDBOX_STATUS = exports.REST_API_ENDPOINT = exports.REST_API_REGION = exports.DEFAULT_SANDBOX_CP_USER = exports.ARTIFACT_DEFAULT_VERSION = exports.SUGGESTED_BROWSER_VERSION = exports.DEFAULT_TIMEOUT = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = void 0;
|
|
40
|
-
exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.getVersionWithoutEnv = exports.getVersion = void 0;
|
|
40
|
+
exports.getGitName = exports.getGitEmail = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.getVersionWithoutEnv = exports.getVersion = void 0;
|
|
41
41
|
exports.apiErrorCodeToClass = apiErrorCodeToClass;
|
|
42
42
|
exports.isFile = isFile;
|
|
43
43
|
exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
|
|
@@ -49,6 +49,8 @@ exports.getOpenApiEndpointByApiBaseUrl = getOpenApiEndpointByApiBaseUrl;
|
|
|
49
49
|
exports.isValidDomain = isValidDomain;
|
|
50
50
|
exports.isInSandbox = isInSandbox;
|
|
51
51
|
exports.isValidSubdomain = isValidSubdomain;
|
|
52
|
+
exports.isValidEmail = isValidEmail;
|
|
53
|
+
exports.isValidName = isValidName;
|
|
52
54
|
exports.getSubdomain = getSubdomain;
|
|
53
55
|
exports.getDomainTld = getDomainTld;
|
|
54
56
|
exports.getPopularTlds = getPopularTlds;
|
|
@@ -350,13 +352,17 @@ const getHomeDirectory = () => {
|
|
|
350
352
|
return p;
|
|
351
353
|
};
|
|
352
354
|
exports.getHomeDirectory = getHomeDirectory;
|
|
353
|
-
const execLocally = async (cmd, opts = {}) => {
|
|
355
|
+
const execLocally = async (cmd, opts = {}, stdoutOnly = false) => {
|
|
354
356
|
return new Promise((resolve, reject) => {
|
|
355
357
|
(0, node_child_process_1.exec)(cmd, opts, (err, stdout, stderr) => {
|
|
356
358
|
if (err)
|
|
357
359
|
reject(err);
|
|
358
|
-
else
|
|
359
|
-
|
|
360
|
+
else {
|
|
361
|
+
let out = stdout;
|
|
362
|
+
if (!stdoutOnly)
|
|
363
|
+
out += `\n${stderr}`;
|
|
364
|
+
resolve(out);
|
|
365
|
+
}
|
|
360
366
|
});
|
|
361
367
|
});
|
|
362
368
|
};
|
|
@@ -716,6 +722,34 @@ function isInSandbox() {
|
|
|
716
722
|
function isValidSubdomain(prompt) {
|
|
717
723
|
return /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(prompt);
|
|
718
724
|
}
|
|
725
|
+
function isValidEmail(email) {
|
|
726
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/i.test(email);
|
|
727
|
+
}
|
|
728
|
+
function isValidName(name) {
|
|
729
|
+
return name.length > 0 && name.length <= 100;
|
|
730
|
+
}
|
|
731
|
+
const getGitEmail = async () => {
|
|
732
|
+
try {
|
|
733
|
+
const out = await (0, exports.execLocally)('git config user.email', {}, true);
|
|
734
|
+
const v = (out || '').trim();
|
|
735
|
+
return v || null;
|
|
736
|
+
}
|
|
737
|
+
catch {
|
|
738
|
+
return null;
|
|
739
|
+
}
|
|
740
|
+
};
|
|
741
|
+
exports.getGitEmail = getGitEmail;
|
|
742
|
+
const getGitName = async () => {
|
|
743
|
+
try {
|
|
744
|
+
const out = await (0, exports.execLocally)('git config user.name', {}, true);
|
|
745
|
+
const v = (out || '').trim();
|
|
746
|
+
return v || null;
|
|
747
|
+
}
|
|
748
|
+
catch {
|
|
749
|
+
return null;
|
|
750
|
+
}
|
|
751
|
+
};
|
|
752
|
+
exports.getGitName = getGitName;
|
|
719
753
|
function getSubdomain(domain) {
|
|
720
754
|
const idx = domain.indexOf('.');
|
|
721
755
|
if (idx < 0)
|