bdy 1.18.0-dev → 1.18.1-dev
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/command/domain/buy.js +29 -120
- package/distTs/src/command/domain/search.js +91 -0
- package/distTs/src/command/domain.js +2 -0
- package/distTs/src/input.js +10 -1
- package/distTs/src/output.js +28 -6
- package/distTs/src/texts.js +7 -5
- package/distTs/src/utils.js +75 -0
- package/package.json +1 -1
package/distTs/package.json
CHANGED
|
@@ -7,56 +7,6 @@ const utils_1 = require("../../utils");
|
|
|
7
7
|
const texts_1 = require("../../texts");
|
|
8
8
|
const output_1 = __importDefault(require("../../output"));
|
|
9
9
|
const input_1 = __importDefault(require("../../input"));
|
|
10
|
-
const popularTlds = [
|
|
11
|
-
'com',
|
|
12
|
-
'ai',
|
|
13
|
-
'io',
|
|
14
|
-
'net',
|
|
15
|
-
'cloud',
|
|
16
|
-
'dev',
|
|
17
|
-
'app',
|
|
18
|
-
'info',
|
|
19
|
-
'blog',
|
|
20
|
-
'run',
|
|
21
|
-
'me',
|
|
22
|
-
'at',
|
|
23
|
-
'nl',
|
|
24
|
-
'xyz',
|
|
25
|
-
'org',
|
|
26
|
-
'co',
|
|
27
|
-
'tech',
|
|
28
|
-
'studio',
|
|
29
|
-
'sh',
|
|
30
|
-
'space',
|
|
31
|
-
'fyi',
|
|
32
|
-
'link',
|
|
33
|
-
'es',
|
|
34
|
-
'art',
|
|
35
|
-
'club',
|
|
36
|
-
'inc',
|
|
37
|
-
'pro',
|
|
38
|
-
'store',
|
|
39
|
-
'shop',
|
|
40
|
-
'one',
|
|
41
|
-
'biz',
|
|
42
|
-
'vip',
|
|
43
|
-
'tube',
|
|
44
|
-
'online',
|
|
45
|
-
'design',
|
|
46
|
-
'realty',
|
|
47
|
-
'audio',
|
|
48
|
-
'lol',
|
|
49
|
-
'pics',
|
|
50
|
-
'love',
|
|
51
|
-
'baby',
|
|
52
|
-
'lat',
|
|
53
|
-
'so',
|
|
54
|
-
'homes',
|
|
55
|
-
'beauty',
|
|
56
|
-
'buzz',
|
|
57
|
-
'mom',
|
|
58
|
-
'my',
|
|
59
|
-
];
|
|
60
10
|
const commandDomainBuy = (0, utils_1.newCommand)('buy', texts_1.DESC_COMMAND_DOMAIN_BUY);
|
|
61
11
|
commandDomainBuy.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
62
12
|
commandDomainBuy.option('-d, --tld <tld...>', texts_1.OPT_COMMAND_DOMAIN_BUY_TLD);
|
|
@@ -65,7 +15,7 @@ commandDomainBuy.argument('[domain|prompt]', texts_1.OPT_COMMAND_DOMAIN_PHRASE);
|
|
|
65
15
|
commandDomainBuy.action(async (text, options) => {
|
|
66
16
|
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
67
17
|
const client = input_1.default.restApiTokenClient();
|
|
68
|
-
const tlds =
|
|
18
|
+
const tlds = input_1.default.allowedTlds(options.tld);
|
|
69
19
|
const prompt = (text || '').trim().toLowerCase();
|
|
70
20
|
const onOwnerBehalf = !!options.ownerBehalf;
|
|
71
21
|
if (output_1.default.isTTY()) {
|
|
@@ -76,52 +26,16 @@ commandDomainBuy.action(async (text, options) => {
|
|
|
76
26
|
}
|
|
77
27
|
output_1.default.exitNormal();
|
|
78
28
|
});
|
|
79
|
-
const formatDomainPrice = (price) => {
|
|
80
|
-
const sign = price.currency === 'USD' ? '$' : '€';
|
|
81
|
-
const value = price.price * price.min_duration;
|
|
82
|
-
const duration = price.min_duration === 1 ? '1yr' : `${price.min_duration}yrs`;
|
|
83
|
-
return `${sign}${value.toFixed(2)} (${duration})`;
|
|
84
|
-
};
|
|
85
|
-
const formatClaim = (domain, available) => {
|
|
86
|
-
if (available) {
|
|
87
|
-
return `${output_1.default.getGreenColor(domain)} (Free)`;
|
|
88
|
-
}
|
|
89
|
-
return output_1.default.getDimColor(`${domain} (Unavailable)`);
|
|
90
|
-
};
|
|
91
|
-
const formatDomain = (domain) => {
|
|
92
|
-
if (!domain.available || domain.premium) {
|
|
93
|
-
return output_1.default.getDimColor(`${domain.name} (Unavailable)`);
|
|
94
|
-
}
|
|
95
|
-
return `${output_1.default.getGreenColor(domain.name)} ${formatDomainPrice(domain.prices.create)} / ${formatDomainPrice(domain.prices.renew)}`;
|
|
96
|
-
};
|
|
97
|
-
const isValidDomain = (prompt) => {
|
|
98
|
-
return /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i.test(prompt);
|
|
99
|
-
};
|
|
100
|
-
const isValidSubdomain = (prompt) => {
|
|
101
|
-
return /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(prompt);
|
|
102
|
-
};
|
|
103
|
-
const getSubdomain = (domain) => {
|
|
104
|
-
const idx = domain.indexOf('.');
|
|
105
|
-
if (idx < 0)
|
|
106
|
-
return '';
|
|
107
|
-
return domain.substring(0, idx);
|
|
108
|
-
};
|
|
109
|
-
const getTld = (domain) => {
|
|
110
|
-
const idx = domain.lastIndexOf('.');
|
|
111
|
-
if (idx < 0)
|
|
112
|
-
return '';
|
|
113
|
-
return domain.substring(idx + 1);
|
|
114
|
-
};
|
|
115
29
|
const claimNonInteractive = async (client, workspace, domain, onOwnerBehalf) => {
|
|
116
30
|
output_1.default.arrowSign();
|
|
117
|
-
output_1.default.normal(`Matched: ${
|
|
31
|
+
output_1.default.normal(`Matched: ${output_1.default.formatDomainClaim(domain, true)}`);
|
|
118
32
|
await client.domainClaim(workspace, domain, onOwnerBehalf);
|
|
119
33
|
output_1.default.okSign();
|
|
120
34
|
output_1.default.normal(`${domain} claimed`);
|
|
121
35
|
};
|
|
122
36
|
const buyNonInteractive = async (client, workspace, domain, onOwnerBehalf) => {
|
|
123
37
|
output_1.default.arrowSign();
|
|
124
|
-
output_1.default.normal(`Matched: ${formatDomain(domain)}`);
|
|
38
|
+
output_1.default.normal(`Matched: ${output_1.default.formatDomain(domain)}`);
|
|
125
39
|
if (domain.available && !domain.premium) {
|
|
126
40
|
await client.domainBuy(workspace, domain.name, onOwnerBehalf, true);
|
|
127
41
|
output_1.default.okSign();
|
|
@@ -130,37 +44,38 @@ const buyNonInteractive = async (client, workspace, domain, onOwnerBehalf) => {
|
|
|
130
44
|
};
|
|
131
45
|
const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
132
46
|
if (!prompt) {
|
|
133
|
-
prompt = await output_1.default.inputString(texts_1.
|
|
47
|
+
prompt = await output_1.default.inputString(texts_1.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT);
|
|
134
48
|
}
|
|
135
49
|
if (!prompt) {
|
|
136
|
-
output_1.default.exitError(texts_1.
|
|
50
|
+
output_1.default.exitError(texts_1.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED);
|
|
137
51
|
}
|
|
138
52
|
output_1.default.arrowSign();
|
|
139
53
|
output_1.default.normal(`Searching...`);
|
|
140
54
|
let items = [];
|
|
141
|
-
const createValue = (type, name) => {
|
|
142
|
-
return `${type}:${name}`;
|
|
55
|
+
const createValue = (type, name, available) => {
|
|
56
|
+
return `${type}:${name}:${available ? '1' : '0'}`;
|
|
143
57
|
};
|
|
144
|
-
if (isValidDomain(prompt)) {
|
|
145
|
-
const subdomain = getSubdomain(prompt);
|
|
58
|
+
if ((0, utils_1.isValidDomain)(prompt)) {
|
|
59
|
+
const subdomain = (0, utils_1.getSubdomain)(prompt);
|
|
146
60
|
const claims = await client.domainClaimable(workspace, subdomain);
|
|
147
61
|
const claimable = claims.domains.find((c) => `${subdomain}.${c.domain}` === prompt);
|
|
148
62
|
if (claimable) {
|
|
149
63
|
items.push(output_1.default.createMenuSeparator('Matched'));
|
|
150
|
-
items.push(output_1.default.createMenuItem(
|
|
64
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomainClaim(prompt, claimable.available), createValue('claim', prompt, claimable.available)));
|
|
151
65
|
}
|
|
152
66
|
else {
|
|
153
67
|
const search = await client.domainSearch(workspace, [prompt]);
|
|
154
68
|
const buyable = search.domains.find((d) => d.name === prompt);
|
|
155
69
|
if (buyable) {
|
|
156
70
|
items.push(output_1.default.createMenuSeparator('Matched'));
|
|
157
|
-
items.push(output_1.default.createMenuItem(formatDomain(buyable), createValue('domain', prompt)));
|
|
71
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomain(buyable), createValue('domain', prompt, buyable.available && !buyable.premium)));
|
|
158
72
|
}
|
|
159
73
|
}
|
|
160
74
|
}
|
|
161
|
-
else if (isValidSubdomain(prompt)) {
|
|
75
|
+
else if ((0, utils_1.isValidSubdomain)(prompt)) {
|
|
162
76
|
const claims = await client.domainClaimable(workspace, prompt);
|
|
163
77
|
const domains = [];
|
|
78
|
+
const popularTlds = (0, utils_1.getPopularTlds)();
|
|
164
79
|
const searchTlds = tlds.length > 0 ? tlds : popularTlds;
|
|
165
80
|
searchTlds.forEach((tld) => {
|
|
166
81
|
domains.push(`${prompt}.${tld}`);
|
|
@@ -170,8 +85,8 @@ const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
|
170
85
|
const claimsAvailable = claims.domains.filter((c) => (c.available && !tlds.length) || tlds.includes(c.domain));
|
|
171
86
|
const claimsUnavailable = claims.domains.filter((c) => (!c.available && !tlds.length) || tlds.includes(c.domain));
|
|
172
87
|
search.domains = search.domains.sort((a, b) => {
|
|
173
|
-
const aTld =
|
|
174
|
-
const bTld =
|
|
88
|
+
const aTld = (0, utils_1.getDomainTld)(a.name);
|
|
89
|
+
const bTld = (0, utils_1.getDomainTld)(b.name);
|
|
175
90
|
const aIdx = popularTlds.indexOf(aTld);
|
|
176
91
|
const bIdx = popularTlds.indexOf(bTld);
|
|
177
92
|
return aIdx < bIdx ? -1 : 1;
|
|
@@ -179,22 +94,22 @@ const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
|
179
94
|
const domainsAvailable = search.domains.filter((d) => d.available && !d.premium);
|
|
180
95
|
const domainsUnavailable = search.domains.filter((d) => !d.available || d.premium);
|
|
181
96
|
domainsAvailable.forEach((d) => {
|
|
182
|
-
items.push(output_1.default.createMenuItem(formatDomain(d), createValue('domain', d.name)));
|
|
97
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomain(d), createValue('domain', d.name, true)));
|
|
183
98
|
});
|
|
184
99
|
claimsAvailable.forEach((c, i) => {
|
|
185
100
|
const domain = `${prompt}.${c.domain}`;
|
|
186
|
-
const item = output_1.default.createMenuItem(
|
|
101
|
+
const item = output_1.default.createMenuItem(output_1.default.formatDomainClaim(domain, true), createValue('claim', domain, true));
|
|
187
102
|
if (i < 5)
|
|
188
103
|
items.unshift(item);
|
|
189
104
|
else
|
|
190
105
|
items.push(item);
|
|
191
106
|
});
|
|
192
107
|
domainsUnavailable.forEach((d) => {
|
|
193
|
-
items.push(output_1.default.createMenuItem(formatDomain(d), createValue('domain', d.name)));
|
|
108
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomain(d), createValue('domain', d.name, false)));
|
|
194
109
|
});
|
|
195
110
|
claimsUnavailable.forEach((c) => {
|
|
196
111
|
const domain = `${prompt}.${c.domain}`;
|
|
197
|
-
const item = output_1.default.createMenuItem(
|
|
112
|
+
const item = output_1.default.createMenuItem(output_1.default.formatDomainClaim(domain, false), createValue('claim', domain, false));
|
|
198
113
|
items.push(item);
|
|
199
114
|
});
|
|
200
115
|
if (items.length > 10)
|
|
@@ -209,13 +124,13 @@ const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
|
209
124
|
suggestions.claims.forEach((c) => {
|
|
210
125
|
if (i >= 10)
|
|
211
126
|
return;
|
|
212
|
-
items.push(output_1.default.createMenuItem(
|
|
127
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomainClaim(c, true), createValue('claim', c, true)));
|
|
213
128
|
i += 1;
|
|
214
129
|
});
|
|
215
130
|
suggestions.domains.forEach((d) => {
|
|
216
131
|
if (i >= 10)
|
|
217
132
|
return;
|
|
218
|
-
items.push(output_1.default.createMenuItem(formatDomain(d), createValue('domain', d.name)));
|
|
133
|
+
items.push(output_1.default.createMenuItem(output_1.default.formatDomain(d), createValue('domain', d.name, true)));
|
|
219
134
|
i += 1;
|
|
220
135
|
});
|
|
221
136
|
}
|
|
@@ -224,8 +139,11 @@ const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
|
224
139
|
output_1.default.exitError(texts_1.ERR_COMMAND_DOMAIN_NOT_FOUND);
|
|
225
140
|
}
|
|
226
141
|
const value = await output_1.default.inputMenuAdv(texts_1.TXT_COMMAND_DOMAIN_BUY_SELECT_DOMAIN, items);
|
|
227
|
-
const [type, name] = value.split(':');
|
|
228
|
-
if (
|
|
142
|
+
const [type, name, available] = value.split(':');
|
|
143
|
+
if (available !== '1') {
|
|
144
|
+
output_1.default.exitError(texts_1.ERR_COMMAND_DOMAIN_UNAVAILABLE);
|
|
145
|
+
}
|
|
146
|
+
else if (type === 'claim') {
|
|
229
147
|
await client.domainClaim(workspace, name, onOwnerBehalf);
|
|
230
148
|
output_1.default.okSign();
|
|
231
149
|
output_1.default.normal(`${name} claimed`);
|
|
@@ -238,10 +156,10 @@ const interactive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
|
238
156
|
};
|
|
239
157
|
const nonInteractive = async (client, workspace, prompt, tlds, onOwnerBehalf) => {
|
|
240
158
|
if (!prompt) {
|
|
241
|
-
output_1.default.exitError(texts_1.
|
|
159
|
+
output_1.default.exitError(texts_1.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED);
|
|
242
160
|
}
|
|
243
|
-
if (isValidDomain(prompt)) {
|
|
244
|
-
const subdomain = getSubdomain(prompt);
|
|
161
|
+
if ((0, utils_1.isValidDomain)(prompt)) {
|
|
162
|
+
const subdomain = (0, utils_1.getSubdomain)(prompt);
|
|
245
163
|
const claims = await client.domainClaimable(workspace, subdomain);
|
|
246
164
|
const claimable = claims.domains.find((c) => c.available && `${subdomain}.${c.domain}` === prompt);
|
|
247
165
|
if (claimable) {
|
|
@@ -266,13 +184,4 @@ const nonInteractive = async (client, workspace, prompt, tlds, onOwnerBehalf) =>
|
|
|
266
184
|
}
|
|
267
185
|
output_1.default.exitError(texts_1.ERR_COMMAND_DOMAIN_NOT_FOUND);
|
|
268
186
|
};
|
|
269
|
-
const getAllowedTlds = (tld) => {
|
|
270
|
-
const result = [];
|
|
271
|
-
if (tld) {
|
|
272
|
-
tld.forEach((t) => {
|
|
273
|
-
result.push(...t.split(',').map((t) => t.replace(/^\./, '')));
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
return result;
|
|
277
|
-
};
|
|
278
187
|
exports.default = commandDomainBuy;
|
|
@@ -0,0 +1,91 @@
|
|
|
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 input_1 = __importDefault(require("../../input"));
|
|
9
|
+
const output_1 = __importDefault(require("../../output"));
|
|
10
|
+
const commandDomainSearch = (0, utils_1.newCommand)('search', texts_1.DESC_COMMAND_DOMAIN_SEARCH);
|
|
11
|
+
commandDomainSearch.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
|
|
12
|
+
commandDomainSearch.option('-d, --tld <tld...>', texts_1.OPT_COMMAND_DOMAIN_BUY_TLD);
|
|
13
|
+
commandDomainSearch.argument('[domain|prompt]', texts_1.OPT_COMMAND_DOMAIN_PHRASE);
|
|
14
|
+
commandDomainSearch.action(async (text, options) => {
|
|
15
|
+
const workspace = input_1.default.restApiWorkspace(options.workspace);
|
|
16
|
+
const client = input_1.default.restApiTokenClient();
|
|
17
|
+
const tlds = input_1.default.allowedTlds(options.tld);
|
|
18
|
+
let prompt = (text || '').trim().toLowerCase();
|
|
19
|
+
if (output_1.default.isTTY() && !prompt) {
|
|
20
|
+
prompt = await output_1.default.inputString(texts_1.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT);
|
|
21
|
+
}
|
|
22
|
+
if (!prompt) {
|
|
23
|
+
output_1.default.exitError(texts_1.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED);
|
|
24
|
+
}
|
|
25
|
+
output_1.default.arrowSign();
|
|
26
|
+
output_1.default.normal(`Searching...`);
|
|
27
|
+
const matched = [];
|
|
28
|
+
if ((0, utils_1.isValidDomain)(prompt)) {
|
|
29
|
+
const subdomain = (0, utils_1.getSubdomain)(prompt);
|
|
30
|
+
const claims = await client.domainClaimable(workspace, subdomain);
|
|
31
|
+
const claimable = claims.domains.find((c) => `${subdomain}.${c.domain}` === prompt);
|
|
32
|
+
if (claimable) {
|
|
33
|
+
matched.push(output_1.default.formatDomainClaim(prompt, claimable.available));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const search = await client.domainSearch(workspace, [prompt]);
|
|
37
|
+
const buyable = search.domains.find((d) => d.name === prompt);
|
|
38
|
+
if (buyable) {
|
|
39
|
+
matched.push(output_1.default.formatDomain(buyable));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if ((0, utils_1.isValidSubdomain)(prompt)) {
|
|
44
|
+
const claims = await client.domainClaimable(workspace, prompt);
|
|
45
|
+
const domains = [];
|
|
46
|
+
const popularTlds = (0, utils_1.getPopularTlds)();
|
|
47
|
+
const searchTlds = tlds.length > 0 ? tlds : popularTlds;
|
|
48
|
+
searchTlds.forEach((tld) => {
|
|
49
|
+
domains.push(`${prompt}.${tld}`);
|
|
50
|
+
});
|
|
51
|
+
const search = await client.domainSearch(workspace, domains);
|
|
52
|
+
search.domains = search.domains.sort((a, b) => {
|
|
53
|
+
const aTld = (0, utils_1.getDomainTld)(a.name);
|
|
54
|
+
const bTld = (0, utils_1.getDomainTld)(b.name);
|
|
55
|
+
const aIdx = popularTlds.indexOf(aTld);
|
|
56
|
+
const bIdx = popularTlds.indexOf(bTld);
|
|
57
|
+
return aIdx < bIdx ? -1 : 1;
|
|
58
|
+
});
|
|
59
|
+
claims.domains.forEach((c) => {
|
|
60
|
+
matched.push(output_1.default.formatDomainClaim(`${prompt}.${c.domain}`, c.available));
|
|
61
|
+
});
|
|
62
|
+
search.domains.forEach((d) => {
|
|
63
|
+
matched.push(output_1.default.formatDomain(d));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const result = await client.domainSuggest(workspace, prompt, tlds, 5);
|
|
67
|
+
output_1.default.clearPreviousLine();
|
|
68
|
+
let hasAny = false;
|
|
69
|
+
if (matched.length > 0) {
|
|
70
|
+
hasAny = true;
|
|
71
|
+
output_1.default.normal('Matched');
|
|
72
|
+
matched.forEach((m) => {
|
|
73
|
+
output_1.default.normal(m);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (result.domains.length > 0 || result.claims.length > 0) {
|
|
77
|
+
hasAny = true;
|
|
78
|
+
output_1.default.normal('Suggestions');
|
|
79
|
+
result.claims.forEach((c) => {
|
|
80
|
+
output_1.default.normal(output_1.default.formatDomainClaim(c, true));
|
|
81
|
+
});
|
|
82
|
+
result.domains.forEach((d) => {
|
|
83
|
+
output_1.default.normal(output_1.default.formatDomain(d));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (!hasAny)
|
|
87
|
+
output_1.default.exitError(texts_1.ERR_COMMAND_DOMAIN_NOT_FOUND);
|
|
88
|
+
else
|
|
89
|
+
output_1.default.exitNormal();
|
|
90
|
+
});
|
|
91
|
+
exports.default = commandDomainSearch;
|
|
@@ -8,8 +8,10 @@ const texts_1 = require("../texts");
|
|
|
8
8
|
const buy_1 = __importDefault(require("./domain/buy"));
|
|
9
9
|
const list_1 = __importDefault(require("./domain/list"));
|
|
10
10
|
const get_1 = __importDefault(require("./domain/get"));
|
|
11
|
+
const search_1 = __importDefault(require("./domain/search"));
|
|
11
12
|
const commandDomain = (0, utils_1.newCommand)('domain', texts_1.DESC_COMMAND_DOMAIN);
|
|
12
13
|
commandDomain.addCommand(buy_1.default);
|
|
14
|
+
commandDomain.addCommand(search_1.default);
|
|
13
15
|
commandDomain.addCommand(list_1.default);
|
|
14
16
|
commandDomain.addCommand(get_1.default);
|
|
15
17
|
exports.default = commandDomain;
|
package/distTs/src/input.js
CHANGED
|
@@ -326,6 +326,15 @@ class Input {
|
|
|
326
326
|
clientToken: ct,
|
|
327
327
|
};
|
|
328
328
|
}
|
|
329
|
+
static allowedTlds(tld) {
|
|
330
|
+
const result = [];
|
|
331
|
+
if (tld) {
|
|
332
|
+
tld.forEach((t) => {
|
|
333
|
+
result.push(...t.split(',').map((t) => t.replace(/^\./, '')));
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
329
338
|
static restApiTokenClient(allowNoToken = false, api = '', region = '', token = '') {
|
|
330
339
|
const baseUrl = this.restApiBaseUrl(api, region);
|
|
331
340
|
const { token: t, refreshToken, clientId, clientToken, clientSecret, } = this.restApiToken(allowNoToken, token);
|
|
@@ -730,7 +739,7 @@ class Input {
|
|
|
730
739
|
cfg_1.default.setToken(token);
|
|
731
740
|
return {
|
|
732
741
|
token,
|
|
733
|
-
host: d.host
|
|
742
|
+
host: d.host,
|
|
734
743
|
};
|
|
735
744
|
}
|
|
736
745
|
static keyCert(keyPath, certPath) {
|
package/distTs/src/output.js
CHANGED
|
@@ -223,7 +223,7 @@ class Output {
|
|
|
223
223
|
terminal.table(data, {
|
|
224
224
|
fit: false,
|
|
225
225
|
hasBorder: false,
|
|
226
|
-
firstRowTextAttr: { color: 'blue' }
|
|
226
|
+
firstRowTextAttr: { color: 'blue' },
|
|
227
227
|
});
|
|
228
228
|
}
|
|
229
229
|
static configTunnels(tunnels) {
|
|
@@ -250,7 +250,7 @@ class Output {
|
|
|
250
250
|
return await prompts_1.default.confirm({
|
|
251
251
|
message,
|
|
252
252
|
theme: this.getInquirerTheme(),
|
|
253
|
-
default: false
|
|
253
|
+
default: false,
|
|
254
254
|
});
|
|
255
255
|
}
|
|
256
256
|
this.cyan('? ', false);
|
|
@@ -263,7 +263,7 @@ class Output {
|
|
|
263
263
|
return await prompts_1.default.input({
|
|
264
264
|
message,
|
|
265
265
|
default: def,
|
|
266
|
-
theme: this.getInquirerTheme()
|
|
266
|
+
theme: this.getInquirerTheme(),
|
|
267
267
|
});
|
|
268
268
|
}
|
|
269
269
|
this.cyan('? ', false);
|
|
@@ -280,7 +280,8 @@ class Output {
|
|
|
280
280
|
return await prompts_1.default.select({
|
|
281
281
|
message,
|
|
282
282
|
theme: this.getInquirerTheme(),
|
|
283
|
-
|
|
283
|
+
loop: false,
|
|
284
|
+
choices: items,
|
|
284
285
|
});
|
|
285
286
|
}
|
|
286
287
|
else {
|
|
@@ -295,16 +296,36 @@ class Output {
|
|
|
295
296
|
return '';
|
|
296
297
|
}
|
|
297
298
|
}
|
|
299
|
+
static formatDomainPrice(price) {
|
|
300
|
+
const sign = price.currency === 'USD' ? '$' : '€';
|
|
301
|
+
const value = price.price * price.min_duration;
|
|
302
|
+
const duration = price.min_duration === 1 ? '1yr' : `${price.min_duration}yrs`;
|
|
303
|
+
return `${sign}${value.toFixed(2)} (${duration})`;
|
|
304
|
+
}
|
|
305
|
+
static formatDomain(domain) {
|
|
306
|
+
if (!domain.available || domain.premium) {
|
|
307
|
+
return this.getDimColor(`${domain.name} (Unavailable)`);
|
|
308
|
+
}
|
|
309
|
+
return `${this.getGreenColor(domain.name)} ${this.formatDomainPrice(domain.prices.create)} / ${this.formatDomainPrice(domain.prices.renew)}`;
|
|
310
|
+
}
|
|
311
|
+
static formatDomainClaim(domain, available) {
|
|
312
|
+
if (available) {
|
|
313
|
+
return `${this.getGreenColor(domain)} (Free)`;
|
|
314
|
+
}
|
|
315
|
+
return this.getDimColor(`${domain} (Unavailable)`);
|
|
316
|
+
}
|
|
298
317
|
static createMenuSeparator(text) {
|
|
299
318
|
return new prompts_1.default.Separator(text);
|
|
300
319
|
}
|
|
301
|
-
static createMenuItem(name, value, description) {
|
|
320
|
+
static createMenuItem(name, value, description, disabled) {
|
|
302
321
|
const item = {
|
|
303
322
|
name,
|
|
304
323
|
value,
|
|
305
324
|
};
|
|
306
325
|
if (description)
|
|
307
326
|
item.description = description;
|
|
327
|
+
if (disabled)
|
|
328
|
+
item.disabled = disabled;
|
|
308
329
|
return item;
|
|
309
330
|
}
|
|
310
331
|
static async inputMenu(message, items) {
|
|
@@ -312,7 +333,8 @@ class Output {
|
|
|
312
333
|
return await prompts_1.default.select({
|
|
313
334
|
message,
|
|
314
335
|
theme: this.getInquirerTheme(),
|
|
315
|
-
|
|
336
|
+
loop: false,
|
|
337
|
+
choices: items.map((item, index) => ({ value: index, name: item })),
|
|
316
338
|
});
|
|
317
339
|
}
|
|
318
340
|
else {
|
package/distTs/src/texts.js
CHANGED
|
@@ -11,9 +11,9 @@ exports.LOG_TUNNEL_HTTP_WRONG_USER_AGENTS = exports.LOG_TUNNEL_HTTP_CIRCUIT_BREA
|
|
|
11
11
|
exports.OPTION_SANDBOX_APP_TYPE = exports.OPTION_SANDBOX_APP_DIR = exports.OPTION_SANDBOX_RUN_COMMAND = exports.OPTION_SANDBOX_YAML = exports.OPTION_SANDBOX_TAGS = exports.OPTION_SANDBOX_INSTALL_COMMANDS = exports.OPTION_SANDBOX_RESOURCES = exports.OPTION_SANDBOX_OS = exports.OPTION_SANDBOX_NAME = exports.OPTION_SANDBOX_IDENTIFIER = exports.TXT_AUTOCOMPLETE_UNINSTALLED = exports.TXT_AUTOCOMPLETE_INSTALLED = exports.DESC_COMMAND_AUTOCOMPLETE_UNINSTALL = exports.DESC_COMMAND_AUTOCOMPLETE_INSTALL = exports.DESC_COMMAND_AUTOCOMPLETE = exports.DESC_COMMAND_SANDBOX_EXEC = exports.DESC_COMMAND_SANDBOX_STATUS = exports.DESC_COMMAND_SANDBOX_RESTART = exports.DESC_COMMAND_SANDBOX_STOP = exports.DESC_COMMAND_SANDBOX_START = exports.DESC_COMMAND_SANDBOX_DESTROY = exports.DESC_COMMAND_SANDBOX_GET = exports.DESC_COMMAND_SANDBOX_LIST = exports.DESC_COMMAND_SANDBOX_UPDATE = exports.DESC_COMMAND_SANDBOX_GET_YAML = exports.DESC_COMMAND_SANDBOX_CREATE = exports.DESC_COMMAND_SANDBOX = exports.DEBUG_WAIT_FOR_IDLE_TIMEOUT = exports.DEBUG_WAIT_FOR_IDLE = exports.DEBUG_RESOURCE_DISCOVERY_TIMEOUT = exports.DEBUG_AUTO_WIDTH = exports.DEBUG_AUTO_SCROLL = exports.DEBUG_RESOURCE_SCRAPPING_URL = exports.DEBUG_SNAPSHOT_PROCESSING = exports.DEBUG_SNAPSHOTS_PROCESSING = exports.DEBUG_EXEC_COMMAND = exports.DEBUG_EXEC_TEST_COMMAND = exports.LOG_INSTALLED_BROWSER = exports.LOG_SESSION_LINK = exports.LOG_SENDING_DATA = exports.LOG_SENDING_REQUEST = exports.LOG_PROCESSING_SNAPSHOTS = exports.LOG_RUNNING_EXEC_COMMAND = exports.LOG_TUNNEL_SSH_STREAM = exports.LOG_TUNNEL_TLS_AGENT_STREAM = exports.LOG_TUNNEL_TLS_REGION_STREAM = exports.LOG_TUNNEL_TLS_TARGET_STREAM = exports.LOG_TUNNEL_HTTP2_STREAM = exports.LOG_TUNNEL_HTTP1_STREAM = exports.LOG_TUNNEL_TCP_STREAM = void 0;
|
|
12
12
|
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_COMMAND_ID = exports.DESC_COMMAND_SANDBOX_EXEC_KILL = exports.DESC_COMMAND_SANDBOX_EXEC_LOGS = exports.DESC_COMMAND_SANDBOX_EXEC_STATUS = exports.DESC_COMMAND_SANDBOX_EXEC_LIST = exports.TXT_SANDBOX_WAITING_START = exports.TXT_SANDBOX_WAITING_STOP = 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.OPTION_SANDBOX_WAIT = 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_SETUP_TIMEOUT = exports.ERR_SANDBOX_SETUP_FAILED = exports.ERR_SANDBOX_INVALID_RESOURCES = exports.ERR_SANDBOX_NOT_FOUND = exports.OPTION_SANDBOX_RUNTIME = void 0;
|
|
13
13
|
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 = exports.TXT_SANDBOX_UNZIP_DONE = exports.TXT_SANDBOX_UNZIP = exports.TXT_SANDBOX_CP_DOWNLOAD_DONE = exports.TXT_SANDBOX_CP_DOWNLOAD = 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.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 = void 0;
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.EXAMPLE_PACKAGE_VERSION_DELETE = exports.EXAMPLE_PACKAGE_VERSION_GET = exports.EXAMPLE_PACKAGE_VERSION_LIST = exports.EXAMPLE_PACKAGE_CREATE = exports.EXAMPLE_PACKAGE_DELETE = exports.EXAMPLE_PACKAGE_DOWNLOAD = exports.EXAMPLE_PACKAGE_PUBLISH = exports.EXAMPLE_PIPELINE_RUN = 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_EXEC_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_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 = void 0;
|
|
14
|
+
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_API_MESSAGE_REPLACER = exports.ERR_LOGIN_INVALID_BASE_URL = exports.ERR_LOGIN_NO_WORKSPACE_FOUND = exports.ERR_LOGIN_NO_WORKSPACES = exports.ERR_LOGIN_HTTP_SUCCESS = exports.ERR_LOGIN_HTTP_FAILED = exports.TXT_LOGIN_OAUTH = exports.ERR_LOGIN_HTTP_SERVER_PORT_TAKEN = exports.TXT_LOGIN_SUCCESS = exports.TXT_LOGIN_SELECT_WORKSPACE = exports.TXT_LOGIN_ENTER_BASE_URL = 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_LOGOUT_SUCCESS = exports.DESC_COMMAND_LOGOUT = exports.DESC_COMMAND_LOGIN = exports.ERR_API_MEDIA_TYPE_NOT_IMPLEMENTED = exports.ERR_API_PARAMETER_NOT_REPLACED = 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 = void 0;
|
|
15
|
+
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_PACKAGE_VERSION_DOWNLOAD = exports.TXT_PACKAGE_PUBLISH = exports.TXT_PACKAGE_CREATED = exports.TXT_PACKAGE_VERSION_DELETED = exports.TXT_PACKAGE_DELETED = exports.ERR_COMMAND_PACKAGE_TYPE = exports.OPT_COMMAND_PACKAGE_VERSION = exports.OPT_COMMAND_PACKAGE_IDENTIFIER = exports.OPT_COMMAND_PACKAGE_CREATE_IDENTIFIER = exports.OPT_COMMAND_PACKAGE_NAME = exports.OPT_COMMAND_PACKAGE_TYPE = exports.DESC_COMMAND_PACKAGE_CREATE = exports.DESC_COMMAND_PACKAGE_GET = exports.TXT_PACKAGE_DOCKER_LOGIN_FAILED = exports.TXT_PACKAGE_DOCKER_LOGIN_SUCCESS = exports.TXT_PACKAGE_VERSION_DELETE_CONFIRM = exports.TXT_PACKAGE_DELETE_CONFIRM = exports.DESC_COMMAND_PACKAGE_DELETE = exports.ERR_COMMAND_PACKAGE_NO_PROJECTS = exports.DESC_COMMAND_PACKAGE_VERSION_GET = exports.DESC_COMMAND_PACKAGE_VERSION_LIST = exports.DESC_COMMAND_PACKAGE_VERSION_DELETE = exports.DESC_COMMAND_PACKAGE_DOCKER_LOGIN = exports.DESC_COMMAND_PACKAGE_LIST = exports.DESC_COMMAND_PACKAGE_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_PHRASE = exports.OPT_COMMAND_DOMAIN_BUY_OWNER = exports.OPT_COMMAND_DOMAIN_BUY_TLD = void 0;
|
|
16
|
+
exports.EXAMPLE_PACKAGE_VERSION_DELETE = exports.EXAMPLE_PACKAGE_VERSION_GET = exports.EXAMPLE_PACKAGE_VERSION_LIST = exports.EXAMPLE_PACKAGE_CREATE = exports.EXAMPLE_PACKAGE_DELETE = exports.EXAMPLE_PACKAGE_DOWNLOAD = exports.EXAMPLE_PACKAGE_PUBLISH = exports.EXAMPLE_PIPELINE_RUN = 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_EXEC_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_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 = void 0;
|
|
17
17
|
const utils_1 = require("./utils");
|
|
18
18
|
exports.ERR_REST_API_GENERAL_ERROR = 'Something went wrong';
|
|
19
19
|
exports.ERR_REST_API_NOT_RESPONDING = 'Api endpoint not responding. Try again later...';
|
|
@@ -780,17 +780,19 @@ exports.ERR_API_MESSAGE_REPLACER = ERR_API_MESSAGE_REPLACER;
|
|
|
780
780
|
// domain commands
|
|
781
781
|
exports.DESC_COMMAND_DOMAIN = 'Manage domains';
|
|
782
782
|
exports.DESC_COMMAND_DOMAIN_BUY = 'Buy domain';
|
|
783
|
+
exports.DESC_COMMAND_DOMAIN_SEARCH = 'Search domain';
|
|
783
784
|
exports.DESC_COMMAND_DOMAIN_LIST = 'List domains';
|
|
784
785
|
exports.DESC_COMMAND_DOMAIN_GET = 'Get domain';
|
|
785
786
|
exports.OPT_COMMAND_DOMAIN_BUY_TLD = 'Filter tld. Can be passed multiple times or separated by comma. Example: --tld=de --tld=com,io';
|
|
786
787
|
exports.OPT_COMMAND_DOMAIN_BUY_OWNER = 'Buy domain on workspace owner behalf';
|
|
787
788
|
exports.OPT_COMMAND_DOMAIN_PHRASE = 'Phrase, full domain or part of it';
|
|
788
789
|
exports.ERR_COMMAND_DOMAIN_NOT_FOUND = 'Domain not found';
|
|
789
|
-
exports.
|
|
790
|
+
exports.TXT_COMMAND_DOMAIN_PROVIDE_PROMPT = 'Enter domain name or describe your needs:';
|
|
790
791
|
exports.TXT_COMMAND_DOMAIN_BUY_SELECT_DOMAIN = 'Select domain:';
|
|
791
|
-
exports.
|
|
792
|
+
exports.TXT_COMMAND_DOMAIN_PROMPT_REQUIRED = 'Domain or prompt is required';
|
|
792
793
|
exports.ERR_COMMAND_DOMAIN_NO_DOMAINS = 'No domains found';
|
|
793
794
|
exports.OPTION_COMMAND_DOMAIN_IDENTIFIER = 'Domain ID or name';
|
|
795
|
+
exports.ERR_COMMAND_DOMAIN_UNAVAILABLE = 'Domain unavailable';
|
|
794
796
|
// package commands
|
|
795
797
|
exports.DESC_COMMAND_PACKAGE_VERSION = 'Manage package versions';
|
|
796
798
|
exports.DESC_COMMAND_PACKAGE_LIST = 'List packages. Required scopes: PACKAGE_READ';
|
package/distTs/src/utils.js
CHANGED
|
@@ -47,6 +47,11 @@ exports.getDockerRegistryHostByApiBaseUrl = getDockerRegistryHostByApiBaseUrl;
|
|
|
47
47
|
exports.fetchOpenApiSchema = fetchOpenApiSchema;
|
|
48
48
|
exports.openApiPrepareUrl = openApiPrepareUrl;
|
|
49
49
|
exports.getOpenApiEndpointByApiBaseUrl = getOpenApiEndpointByApiBaseUrl;
|
|
50
|
+
exports.isValidDomain = isValidDomain;
|
|
51
|
+
exports.isValidSubdomain = isValidSubdomain;
|
|
52
|
+
exports.getSubdomain = getSubdomain;
|
|
53
|
+
exports.getDomainTld = getDomainTld;
|
|
54
|
+
exports.getPopularTlds = getPopularTlds;
|
|
50
55
|
exports.getAppHostByApiBaseUrl = getAppHostByApiBaseUrl;
|
|
51
56
|
const node_path_1 = __importDefault(require("node:path"));
|
|
52
57
|
const node_fs_1 = require("node:fs");
|
|
@@ -699,6 +704,76 @@ function getOpenApiEndpointByApiBaseUrl(baseUrl) {
|
|
|
699
704
|
return 'https://es.buddy.works/openapi/dev/restapi.json';
|
|
700
705
|
}
|
|
701
706
|
}
|
|
707
|
+
function isValidDomain(prompt) {
|
|
708
|
+
return /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i.test(prompt);
|
|
709
|
+
}
|
|
710
|
+
function isValidSubdomain(prompt) {
|
|
711
|
+
return /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(prompt);
|
|
712
|
+
}
|
|
713
|
+
function getSubdomain(domain) {
|
|
714
|
+
const idx = domain.indexOf('.');
|
|
715
|
+
if (idx < 0)
|
|
716
|
+
return '';
|
|
717
|
+
return domain.substring(0, idx);
|
|
718
|
+
}
|
|
719
|
+
function getDomainTld(domain) {
|
|
720
|
+
const idx = domain.lastIndexOf('.');
|
|
721
|
+
if (idx < 0)
|
|
722
|
+
return '';
|
|
723
|
+
return domain.substring(idx + 1);
|
|
724
|
+
}
|
|
725
|
+
function getPopularTlds() {
|
|
726
|
+
return [
|
|
727
|
+
'com',
|
|
728
|
+
'ai',
|
|
729
|
+
'io',
|
|
730
|
+
'net',
|
|
731
|
+
'cloud',
|
|
732
|
+
'dev',
|
|
733
|
+
'app',
|
|
734
|
+
'info',
|
|
735
|
+
'blog',
|
|
736
|
+
'run',
|
|
737
|
+
'me',
|
|
738
|
+
'at',
|
|
739
|
+
'nl',
|
|
740
|
+
'xyz',
|
|
741
|
+
'org',
|
|
742
|
+
'co',
|
|
743
|
+
'tech',
|
|
744
|
+
'studio',
|
|
745
|
+
'sh',
|
|
746
|
+
'space',
|
|
747
|
+
'fyi',
|
|
748
|
+
'link',
|
|
749
|
+
'es',
|
|
750
|
+
'art',
|
|
751
|
+
'club',
|
|
752
|
+
'inc',
|
|
753
|
+
'pro',
|
|
754
|
+
'store',
|
|
755
|
+
'shop',
|
|
756
|
+
'one',
|
|
757
|
+
'biz',
|
|
758
|
+
'vip',
|
|
759
|
+
'tube',
|
|
760
|
+
'online',
|
|
761
|
+
'design',
|
|
762
|
+
'realty',
|
|
763
|
+
'audio',
|
|
764
|
+
'lol',
|
|
765
|
+
'pics',
|
|
766
|
+
'love',
|
|
767
|
+
'baby',
|
|
768
|
+
'lat',
|
|
769
|
+
'so',
|
|
770
|
+
'homes',
|
|
771
|
+
'beauty',
|
|
772
|
+
'buzz',
|
|
773
|
+
'mom',
|
|
774
|
+
'my',
|
|
775
|
+
];
|
|
776
|
+
}
|
|
702
777
|
function getAppHostByApiBaseUrl(baseUrl) {
|
|
703
778
|
if (baseUrl.hostname.includes('api.buddy.works')) {
|
|
704
779
|
return 'app.buddy.works';
|