mxroute-cli 0.1.3 → 0.2.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.
Files changed (103) hide show
  1. package/README.md +524 -241
  2. package/dist/commands/accounts.js +19 -59
  3. package/dist/commands/accounts.js.map +1 -1
  4. package/dist/commands/aliases.js +8 -57
  5. package/dist/commands/aliases.js.map +1 -1
  6. package/dist/commands/audit.d.ts +1 -0
  7. package/dist/commands/audit.js +278 -0
  8. package/dist/commands/audit.js.map +1 -0
  9. package/dist/commands/auth.d.ts +0 -1
  10. package/dist/commands/auth.js +0 -69
  11. package/dist/commands/auth.js.map +1 -1
  12. package/dist/commands/autoresponder.js +10 -59
  13. package/dist/commands/autoresponder.js.map +1 -1
  14. package/dist/commands/benchmark.d.ts +1 -0
  15. package/dist/commands/benchmark.js +134 -0
  16. package/dist/commands/benchmark.js.map +1 -0
  17. package/dist/commands/bulk.d.ts +2 -0
  18. package/dist/commands/bulk.js +201 -0
  19. package/dist/commands/bulk.js.map +1 -0
  20. package/dist/commands/catchall.js +5 -38
  21. package/dist/commands/catchall.js.map +1 -1
  22. package/dist/commands/completions.d.ts +1 -0
  23. package/dist/commands/completions.js +138 -0
  24. package/dist/commands/completions.js.map +1 -0
  25. package/dist/commands/config.d.ts +1 -0
  26. package/dist/commands/config.js +42 -0
  27. package/dist/commands/config.js.map +1 -1
  28. package/dist/commands/cron.d.ts +2 -0
  29. package/dist/commands/cron.js +114 -0
  30. package/dist/commands/cron.js.map +1 -0
  31. package/dist/commands/diff.d.ts +1 -0
  32. package/dist/commands/diff.js +125 -0
  33. package/dist/commands/diff.js.map +1 -0
  34. package/dist/commands/dns-setup.d.ts +1 -0
  35. package/dist/commands/dns-setup.js +256 -0
  36. package/dist/commands/dns-setup.js.map +1 -0
  37. package/dist/commands/dns-watch.d.ts +1 -0
  38. package/dist/commands/dns-watch.js +67 -0
  39. package/dist/commands/dns-watch.js.map +1 -0
  40. package/dist/commands/dns.js +28 -6
  41. package/dist/commands/dns.js.map +1 -1
  42. package/dist/commands/dnsapi.js +10 -59
  43. package/dist/commands/dnsapi.js.map +1 -1
  44. package/dist/commands/doctor.d.ts +1 -0
  45. package/dist/commands/doctor.js +143 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/domains.js +4 -27
  48. package/dist/commands/domains.js.map +1 -1
  49. package/dist/commands/export-import.d.ts +2 -0
  50. package/dist/commands/export-import.js +189 -0
  51. package/dist/commands/export-import.js.map +1 -0
  52. package/dist/commands/filters.js +8 -57
  53. package/dist/commands/filters.js.map +1 -1
  54. package/dist/commands/forwarders.js +8 -57
  55. package/dist/commands/forwarders.js.map +1 -1
  56. package/dist/commands/ip.d.ts +1 -0
  57. package/dist/commands/ip.js +70 -0
  58. package/dist/commands/ip.js.map +1 -0
  59. package/dist/commands/lists.js +15 -80
  60. package/dist/commands/lists.js.map +1 -1
  61. package/dist/commands/monitor.d.ts +4 -0
  62. package/dist/commands/monitor.js +189 -0
  63. package/dist/commands/monitor.js.map +1 -0
  64. package/dist/commands/open.d.ts +1 -0
  65. package/dist/commands/open.js +53 -0
  66. package/dist/commands/open.js.map +1 -0
  67. package/dist/commands/quota.js +11 -48
  68. package/dist/commands/quota.js.map +1 -1
  69. package/dist/commands/send.d.ts +1 -0
  70. package/dist/commands/send.js +43 -1
  71. package/dist/commands/send.js.map +1 -1
  72. package/dist/commands/share.d.ts +1 -0
  73. package/dist/commands/share.js +217 -0
  74. package/dist/commands/share.js.map +1 -0
  75. package/dist/commands/spam.js +9 -42
  76. package/dist/commands/spam.js.map +1 -1
  77. package/dist/commands/troubleshoot.js.map +1 -1
  78. package/dist/commands/webhook.d.ts +3 -0
  79. package/dist/commands/webhook.js +124 -0
  80. package/dist/commands/webhook.js.map +1 -0
  81. package/dist/commands/whoami.d.ts +1 -0
  82. package/dist/commands/whoami.js +40 -0
  83. package/dist/commands/whoami.js.map +1 -0
  84. package/dist/index.js +171 -6
  85. package/dist/index.js.map +1 -1
  86. package/dist/mcp.js.map +1 -1
  87. package/dist/utils/blacklist.d.ts +17 -0
  88. package/dist/utils/blacklist.js +65 -0
  89. package/dist/utils/blacklist.js.map +1 -0
  90. package/dist/utils/directadmin.js +1 -1
  91. package/dist/utils/directadmin.js.map +1 -1
  92. package/dist/utils/dns.d.ts +1 -1
  93. package/dist/utils/dns.js +3 -3
  94. package/dist/utils/dns.js.map +1 -1
  95. package/dist/utils/registrars.d.ts +35 -0
  96. package/dist/utils/registrars.js +324 -0
  97. package/dist/utils/registrars.js.map +1 -0
  98. package/dist/utils/shared.d.ts +20 -0
  99. package/dist/utils/shared.js +64 -0
  100. package/dist/utils/shared.js.map +1 -0
  101. package/dist/utils/theme.js +0 -1
  102. package/dist/utils/theme.js.map +1 -1
  103. package/package.json +1 -1
@@ -0,0 +1,324 @@
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
+ exports.registrarProviders = void 0;
7
+ exports.getProvider = getProvider;
8
+ exports.getProviderList = getProviderList;
9
+ exports.generateMxrouteRecords = generateMxrouteRecords;
10
+ const node_fetch_1 = __importDefault(require("node-fetch"));
11
+ // ─── Cloudflare ──────────────────────────────────────────
12
+ const cloudflare = {
13
+ name: 'Cloudflare',
14
+ id: 'cloudflare',
15
+ async authenticate(config) {
16
+ try {
17
+ const res = await (0, node_fetch_1.default)('https://api.cloudflare.com/client/v4/user/tokens/verify', {
18
+ headers: { Authorization: `Bearer ${config.apiKey}` },
19
+ });
20
+ const data = (await res.json());
21
+ return data.success === true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ },
27
+ async listZones(config) {
28
+ const res = await (0, node_fetch_1.default)('https://api.cloudflare.com/client/v4/zones?per_page=50', {
29
+ headers: { Authorization: `Bearer ${config.apiKey}` },
30
+ });
31
+ const data = (await res.json());
32
+ if (!data.success)
33
+ throw new Error(data.errors?.[0]?.message || 'Failed to list zones');
34
+ return data.result.map((z) => z.name);
35
+ },
36
+ async listRecords(config, domain) {
37
+ const zoneId = await getCloudflareZoneId(config.apiKey, domain);
38
+ const res = await (0, node_fetch_1.default)(`https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records?per_page=100`, {
39
+ headers: { Authorization: `Bearer ${config.apiKey}` },
40
+ });
41
+ const data = (await res.json());
42
+ if (!data.success)
43
+ throw new Error(data.errors?.[0]?.message || 'Failed to list records');
44
+ return data.result.map((r) => ({
45
+ type: r.type,
46
+ name: r.name.replace(`.${domain}`, '').replace(domain, '@'),
47
+ value: r.content,
48
+ priority: r.priority,
49
+ ttl: r.ttl,
50
+ }));
51
+ },
52
+ async createRecord(config, domain, record) {
53
+ const zoneId = await getCloudflareZoneId(config.apiKey, domain);
54
+ const name = record.name === '@' ? domain : `${record.name}.${domain}`;
55
+ const body = {
56
+ type: record.type,
57
+ name,
58
+ content: record.value,
59
+ ttl: record.ttl || 3600,
60
+ proxied: false,
61
+ };
62
+ if (record.priority !== undefined)
63
+ body.priority = record.priority;
64
+ const res = await (0, node_fetch_1.default)(`https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records`, {
65
+ method: 'POST',
66
+ headers: {
67
+ Authorization: `Bearer ${config.apiKey}`,
68
+ 'Content-Type': 'application/json',
69
+ },
70
+ body: JSON.stringify(body),
71
+ });
72
+ const data = (await res.json());
73
+ if (data.success) {
74
+ return { success: true, message: `Created ${record.type} record: ${record.name}` };
75
+ }
76
+ return { success: false, message: data.errors?.[0]?.message || 'Failed to create record' };
77
+ },
78
+ async deleteRecord(config, domain, record) {
79
+ const zoneId = await getCloudflareZoneId(config.apiKey, domain);
80
+ // Find the record ID first
81
+ const name = record.name === '@' ? domain : `${record.name}.${domain}`;
82
+ const searchRes = await (0, node_fetch_1.default)(`https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records?type=${record.type}&name=${name}`, { headers: { Authorization: `Bearer ${config.apiKey}` } });
83
+ const searchData = (await searchRes.json());
84
+ if (!searchData.success || !searchData.result.length) {
85
+ return { success: false, message: 'Record not found' };
86
+ }
87
+ const recordId = searchData.result[0].id;
88
+ const res = await (0, node_fetch_1.default)(`https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records/${recordId}`, {
89
+ method: 'DELETE',
90
+ headers: { Authorization: `Bearer ${config.apiKey}` },
91
+ });
92
+ const data = (await res.json());
93
+ return { success: data.success, message: data.success ? 'Deleted' : data.errors?.[0]?.message || 'Failed' };
94
+ },
95
+ };
96
+ async function getCloudflareZoneId(apiKey, domain) {
97
+ const res = await (0, node_fetch_1.default)(`https://api.cloudflare.com/client/v4/zones?name=${domain}`, {
98
+ headers: { Authorization: `Bearer ${apiKey}` },
99
+ });
100
+ const data = (await res.json());
101
+ if (!data.success || !data.result.length)
102
+ throw new Error(`Zone not found for ${domain}`);
103
+ return data.result[0].id;
104
+ }
105
+ // ─── Porkbun ─────────────────────────────────────────────
106
+ const porkbun = {
107
+ name: 'Porkbun',
108
+ id: 'porkbun',
109
+ async authenticate(config) {
110
+ try {
111
+ const res = await (0, node_fetch_1.default)('https://api.porkbun.com/api/json/v3/ping', {
112
+ method: 'POST',
113
+ headers: { 'Content-Type': 'application/json' },
114
+ body: JSON.stringify({ apikey: config.apiKey, secretapikey: config.apiSecret }),
115
+ });
116
+ const data = (await res.json());
117
+ return data.status === 'SUCCESS';
118
+ }
119
+ catch {
120
+ return false;
121
+ }
122
+ },
123
+ async listZones(config) {
124
+ const res = await (0, node_fetch_1.default)('https://api.porkbun.com/api/json/v3/domain/listAll', {
125
+ method: 'POST',
126
+ headers: { 'Content-Type': 'application/json' },
127
+ body: JSON.stringify({ apikey: config.apiKey, secretapikey: config.apiSecret }),
128
+ });
129
+ const data = (await res.json());
130
+ if (data.status !== 'SUCCESS')
131
+ throw new Error(data.message || 'Failed');
132
+ return (data.domains || []).map((d) => d.domain);
133
+ },
134
+ async listRecords(config, domain) {
135
+ const res = await (0, node_fetch_1.default)(`https://api.porkbun.com/api/json/v3/dns/retrieve/${domain}`, {
136
+ method: 'POST',
137
+ headers: { 'Content-Type': 'application/json' },
138
+ body: JSON.stringify({ apikey: config.apiKey, secretapikey: config.apiSecret }),
139
+ });
140
+ const data = (await res.json());
141
+ if (data.status !== 'SUCCESS')
142
+ throw new Error(data.message || 'Failed');
143
+ return (data.records || []).map((r) => ({
144
+ type: r.type,
145
+ name: r.name.replace(`.${domain}`, '').replace(domain, '@') || '@',
146
+ value: r.content,
147
+ priority: r.prio ? Number(r.prio) : undefined,
148
+ ttl: r.ttl ? Number(r.ttl) : undefined,
149
+ }));
150
+ },
151
+ async createRecord(config, domain, record) {
152
+ const body = {
153
+ apikey: config.apiKey,
154
+ secretapikey: config.apiSecret,
155
+ type: record.type,
156
+ name: record.name === '@' ? '' : record.name,
157
+ content: record.value,
158
+ ttl: String(record.ttl || 3600),
159
+ };
160
+ if (record.priority !== undefined)
161
+ body.prio = String(record.priority);
162
+ const res = await (0, node_fetch_1.default)(`https://api.porkbun.com/api/json/v3/dns/create/${domain}`, {
163
+ method: 'POST',
164
+ headers: { 'Content-Type': 'application/json' },
165
+ body: JSON.stringify(body),
166
+ });
167
+ const data = (await res.json());
168
+ return {
169
+ success: data.status === 'SUCCESS',
170
+ message: data.status === 'SUCCESS' ? `Created ${record.type} record` : data.message || 'Failed',
171
+ };
172
+ },
173
+ async deleteRecord(config, domain, record) {
174
+ const name = record.name === '@' ? '' : record.name;
175
+ const res = await (0, node_fetch_1.default)(`https://api.porkbun.com/api/json/v3/dns/deleteByNameType/${domain}/${record.type}/${name}`, {
176
+ method: 'POST',
177
+ headers: { 'Content-Type': 'application/json' },
178
+ body: JSON.stringify({ apikey: config.apiKey, secretapikey: config.apiSecret }),
179
+ });
180
+ const data = (await res.json());
181
+ return {
182
+ success: data.status === 'SUCCESS',
183
+ message: data.status === 'SUCCESS' ? 'Deleted' : data.message || 'Failed',
184
+ };
185
+ },
186
+ };
187
+ // ─── DigitalOcean ────────────────────────────────────────
188
+ const digitalocean = {
189
+ name: 'DigitalOcean',
190
+ id: 'digitalocean',
191
+ async authenticate(config) {
192
+ try {
193
+ const res = await (0, node_fetch_1.default)('https://api.digitalocean.com/v2/account', {
194
+ headers: { Authorization: `Bearer ${config.apiKey}` },
195
+ });
196
+ return res.ok;
197
+ }
198
+ catch {
199
+ return false;
200
+ }
201
+ },
202
+ async listZones(config) {
203
+ const res = await (0, node_fetch_1.default)('https://api.digitalocean.com/v2/domains?per_page=200', {
204
+ headers: { Authorization: `Bearer ${config.apiKey}` },
205
+ });
206
+ const data = (await res.json());
207
+ return (data.domains || []).map((d) => d.name);
208
+ },
209
+ async listRecords(config, domain) {
210
+ const res = await (0, node_fetch_1.default)(`https://api.digitalocean.com/v2/domains/${domain}/records?per_page=200`, {
211
+ headers: { Authorization: `Bearer ${config.apiKey}` },
212
+ });
213
+ const data = (await res.json());
214
+ return (data.domain_records || []).map((r) => ({
215
+ type: r.type,
216
+ name: r.name === '@' ? '@' : r.name,
217
+ value: r.data,
218
+ priority: r.priority,
219
+ ttl: r.ttl,
220
+ }));
221
+ },
222
+ async createRecord(config, domain, record) {
223
+ const body = {
224
+ type: record.type,
225
+ name: record.name,
226
+ data: record.value,
227
+ ttl: record.ttl || 3600,
228
+ };
229
+ if (record.priority !== undefined)
230
+ body.priority = record.priority;
231
+ const res = await (0, node_fetch_1.default)(`https://api.digitalocean.com/v2/domains/${domain}/records`, {
232
+ method: 'POST',
233
+ headers: {
234
+ Authorization: `Bearer ${config.apiKey}`,
235
+ 'Content-Type': 'application/json',
236
+ },
237
+ body: JSON.stringify(body),
238
+ });
239
+ if (res.ok)
240
+ return { success: true, message: `Created ${record.type} record` };
241
+ const data = (await res.json());
242
+ return { success: false, message: data.message || 'Failed' };
243
+ },
244
+ async deleteRecord(config, domain, record) {
245
+ // List and find record ID
246
+ const listRes = await (0, node_fetch_1.default)(`https://api.digitalocean.com/v2/domains/${domain}/records?per_page=200`, {
247
+ headers: { Authorization: `Bearer ${config.apiKey}` },
248
+ });
249
+ const listData = (await listRes.json());
250
+ const match = (listData.domain_records || []).find((r) => r.type === record.type && r.name === record.name);
251
+ if (!match)
252
+ return { success: false, message: 'Record not found' };
253
+ const res = await (0, node_fetch_1.default)(`https://api.digitalocean.com/v2/domains/${domain}/records/${match.id}`, {
254
+ method: 'DELETE',
255
+ headers: { Authorization: `Bearer ${config.apiKey}` },
256
+ });
257
+ return { success: res.ok, message: res.ok ? 'Deleted' : 'Failed' };
258
+ },
259
+ };
260
+ // ─── Namecheap ───────────────────────────────────────────
261
+ const namecheap = {
262
+ name: 'Namecheap',
263
+ id: 'namecheap',
264
+ async authenticate(config) {
265
+ try {
266
+ // Namecheap API requires IP whitelisting, so we just verify the key format
267
+ return !!(config.apiKey && config.apiSecret);
268
+ }
269
+ catch {
270
+ return false;
271
+ }
272
+ },
273
+ async listZones(config) {
274
+ const url = `https://api.namecheap.com/xml.response?ApiUser=${config.apiSecret}&ApiKey=${config.apiKey}&UserName=${config.apiSecret}&ClientIp=0.0.0.0&Command=namecheap.domains.getList`;
275
+ const res = await (0, node_fetch_1.default)(url);
276
+ const text = await res.text();
277
+ const domains = [];
278
+ const regex = /Name="([^"]+)"/g;
279
+ let match;
280
+ while ((match = regex.exec(text)) !== null) {
281
+ domains.push(match[1]);
282
+ }
283
+ return domains;
284
+ },
285
+ async listRecords() {
286
+ return []; // Namecheap doesn't have a simple record list API
287
+ },
288
+ async createRecord() {
289
+ return {
290
+ success: false,
291
+ message: 'Namecheap requires setting ALL records at once via their API. Use their web panel or switch DNS to Cloudflare for API management.',
292
+ };
293
+ },
294
+ async deleteRecord() {
295
+ return { success: false, message: 'Namecheap requires setting ALL records at once. Use their web panel.' };
296
+ },
297
+ };
298
+ // ─── Provider Registry ───────────────────────────────────
299
+ exports.registrarProviders = {
300
+ cloudflare,
301
+ porkbun,
302
+ digitalocean,
303
+ namecheap,
304
+ };
305
+ function getProvider(id) {
306
+ return exports.registrarProviders[id];
307
+ }
308
+ function getProviderList() {
309
+ return Object.values(exports.registrarProviders).map((p) => ({ name: p.name, id: p.id }));
310
+ }
311
+ // ─── MXroute Records Generator ──────────────────────────
312
+ function generateMxrouteRecords(server, domain, dkimKey) {
313
+ const records = [
314
+ { type: 'MX', name: '@', value: `${server}.mxrouting.net`, priority: 10, ttl: 3600 },
315
+ { type: 'MX', name: '@', value: `${server}-relay.mxrouting.net`, priority: 20, ttl: 3600 },
316
+ { type: 'TXT', name: '@', value: 'v=spf1 include:mxroute.com -all', ttl: 3600 },
317
+ { type: 'TXT', name: '_dmarc', value: `v=DMARC1; p=quarantine; rua=mailto:postmaster@${domain}`, ttl: 3600 },
318
+ ];
319
+ if (dkimKey) {
320
+ records.push({ type: 'TXT', name: 'x._domainkey', value: dkimKey, ttl: 3600 });
321
+ }
322
+ return records;
323
+ }
324
+ //# sourceMappingURL=registrars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registrars.js","sourceRoot":"","sources":["../../src/utils/registrars.ts"],"names":[],"mappings":";;;;;;AAqWA,kCAEC;AAED,0CAEC;AAID,wDAaC;AA5XD,4DAA+B;AAmC/B,4DAA4D;AAE5D,MAAM,UAAU,GAAsB;IACpC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,YAAY;IAEhB,KAAK,CAAC,YAAY,CAAC,MAAM;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,yDAAyD,EAAE;gBACjF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;YACvC,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAM;QACpB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,wDAAwD,EAAE;YAChF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM;QAC9B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,8CAA8C,MAAM,2BAA2B,EAAE;YACvG,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,wBAAwB,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC3D,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;SACX,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACvE,MAAM,IAAI,GAAQ;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;YACvB,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnE,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,8CAA8C,MAAM,cAAc,EAAE;YAC1F,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;gBACxC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACrF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,yBAAyB,EAAE,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,2BAA2B;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACvE,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAK,EAC3B,8CAA8C,MAAM,qBAAqB,MAAM,CAAC,IAAI,SAAS,IAAI,EAAE,EACnG,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAC1D,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAQ,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,8CAA8C,MAAM,gBAAgB,QAAQ,EAAE,EAAE;YACtG,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC9G,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,MAAc;IAC/D,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,mDAAmD,MAAM,EAAE,EAAE;QACnF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;KAC/C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3B,CAAC;AAED,4DAA4D;AAE5D,MAAM,OAAO,GAAsB;IACjC,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,SAAS;IAEb,KAAK,CAAC,YAAY,CAAC,MAAM;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,0CAA0C,EAAE;gBAClE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAChF,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAM;QACpB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,oDAAoD,EAAE;YAC5E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;SAChF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,oDAAoD,MAAM,EAAE,EAAE;YACpF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;SAChF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG;YAClE,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7C,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,MAAM,IAAI,GAAQ;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,SAAS;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;YAC5C,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;SAChC,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,kDAAkD,MAAM,EAAE,EAAE;YAClF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ;SAChG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EACrB,4DAA4D,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAC3F;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;SAChF,CACF,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ;SAC1E,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,4DAA4D;AAE5D,MAAM,YAAY,GAAsB;IACtC,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,cAAc;IAElB,KAAK,CAAC,YAAY,CAAC,MAAM;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,yCAAyC,EAAE;gBACjE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAM;QACpB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,sDAAsD,EAAE;YAC9E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,2CAA2C,MAAM,uBAAuB,EAAE;YAChG,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACnC,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;SACX,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,MAAM,IAAI,GAAQ;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;SACxB,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnE,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,2CAA2C,MAAM,UAAU,EAAE;YACnF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;gBACxC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;QACvC,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAK,EAAC,2CAA2C,MAAM,uBAAuB,EAAE;YACpG,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAQ,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACjH,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAEnE,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,2CAA2C,MAAM,YAAY,KAAK,CAAC,EAAE,EAAE,EAAE;YAC/F,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE;SACtD,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrE,CAAC;CACF,CAAC;AAEF,4DAA4D;AAE5D,MAAM,SAAS,GAAsB;IACnC,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,WAAW;IAEf,KAAK,CAAC,YAAY,CAAC,MAAM;QACvB,IAAI,CAAC;YACH,2EAA2E;YAC3E,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAM;QACpB,MAAM,GAAG,GAAG,kDAAkD,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,SAAS,qDAAqD,CAAC;QACzL,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAChC,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,CAAC,CAAC,kDAAkD;IAC/D,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EACL,mIAAmI;SACtI,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,sEAAsE,EAAE,CAAC;IAC7G,CAAC;CACF,CAAC;AAEF,4DAA4D;AAE/C,QAAA,kBAAkB,GAAsC;IACnE,UAAU;IACV,OAAO;IACP,YAAY;IACZ,SAAS;CACV,CAAC;AAEF,SAAgB,WAAW,CAAC,EAAU;IACpC,OAAO,0BAAkB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,0BAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,2DAA2D;AAE3D,SAAgB,sBAAsB,CAAC,MAAc,EAAE,MAAc,EAAE,OAAgB;IACrF,MAAM,OAAO,GAAgB;QAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QACpF,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1F,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,iCAAiC,EAAE,GAAG,EAAE,IAAI,EAAE;QAC/E,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;KAC7G,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { DACredentials } from './directadmin';
2
+ export declare function getCreds(): DACredentials;
3
+ export declare function pickDomain(creds: DACredentials, domain?: string): Promise<string>;
4
+ export declare const tableChars: {
5
+ top: string;
6
+ 'top-mid': string;
7
+ 'top-left': string;
8
+ 'top-right': string;
9
+ bottom: string;
10
+ 'bottom-mid': string;
11
+ 'bottom-left': string;
12
+ 'bottom-right': string;
13
+ left: string;
14
+ 'left-mid': string;
15
+ mid: string;
16
+ 'mid-mid': string;
17
+ right: string;
18
+ 'right-mid': string;
19
+ middle: string;
20
+ };
@@ -0,0 +1,64 @@
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
+ exports.tableChars = void 0;
7
+ exports.getCreds = getCreds;
8
+ exports.pickDomain = pickDomain;
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const inquirer_1 = __importDefault(require("inquirer"));
11
+ const theme_1 = require("./theme");
12
+ const config_1 = require("./config");
13
+ const directadmin_1 = require("./directadmin");
14
+ function getCreds() {
15
+ const config = (0, config_1.getConfig)();
16
+ if (!config.daUsername || !config.daLoginKey) {
17
+ console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} Not authenticated. Run ${theme_1.theme.bold('mxroute config setup')} first.\n`));
18
+ process.exit(1);
19
+ }
20
+ return { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
21
+ }
22
+ async function pickDomain(creds, domain) {
23
+ if (domain)
24
+ return domain;
25
+ const config = (0, config_1.getConfig)();
26
+ if (config.domain)
27
+ return config.domain;
28
+ const spinner = (0, ora_1.default)({ text: 'Fetching domains...', spinner: 'dots12', color: 'cyan' }).start();
29
+ const domains = await (0, directadmin_1.listDomains)(creds);
30
+ spinner.stop();
31
+ if (domains.length === 0) {
32
+ console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found.\n`));
33
+ process.exit(1);
34
+ }
35
+ if (domains.length === 1)
36
+ return domains[0];
37
+ const { selected } = await inquirer_1.default.prompt([
38
+ {
39
+ type: 'list',
40
+ name: 'selected',
41
+ message: 'Select domain:',
42
+ choices: domains,
43
+ },
44
+ ]);
45
+ return selected;
46
+ }
47
+ exports.tableChars = {
48
+ top: '─',
49
+ 'top-mid': '┬',
50
+ 'top-left': ' ┌',
51
+ 'top-right': '┐',
52
+ bottom: '─',
53
+ 'bottom-mid': '┴',
54
+ 'bottom-left': ' └',
55
+ 'bottom-right': '┘',
56
+ left: ' │',
57
+ 'left-mid': ' ├',
58
+ mid: '─',
59
+ 'mid-mid': '┼',
60
+ right: '│',
61
+ 'right-mid': '┤',
62
+ middle: '│',
63
+ };
64
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/utils/shared.ts"],"names":[],"mappings":";;;;;;AAMA,4BAWC;AAED,gCA2BC;AA9CD,8CAAsB;AACtB,wDAAgC;AAChC,mCAAgC;AAChC,qCAAqC;AACrC,+CAA2D;AAE3D,SAAgB,QAAQ;IACtB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT,aAAK,CAAC,KAAK,CACT,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,2BAA2B,aAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CACxG,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7F,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAoB,EAAE,MAAe;IACpE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAExC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/F,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,QAAA,UAAU,GAAG;IACxB,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,GAAG;IACnB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,KAAK;IACjB,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;IACV,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;CACZ,CAAC"}
@@ -38,7 +38,6 @@ exports.theme = {
38
38
  },
39
39
  banner() {
40
40
  const c = chalk_1.default.hex('#00D9FF');
41
- const m = chalk_1.default.hex('#7C8DB0');
42
41
  const p = chalk_1.default.hex('#6C63FF');
43
42
  const logo = [
44
43
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mxroute-cli",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "A powerful CLI for managing MXroute email hosting — send emails, verify DNS, generate records, troubleshoot, and more.",
5
5
  "main": "dist/index.js",
6
6
  "repository": {