@mailmodo/cli 0.0.51 → 0.0.52-beta.pr55.85
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/dist/commands/deploy/index.js +3 -3
- package/dist/commands/init/index.js +2 -9
- package/dist/commands/sdk/index.d.ts +14 -0
- package/dist/commands/sdk/index.js +74 -0
- package/dist/commands/settings/index.js +1 -10
- package/dist/lib/constants.d.ts +4 -0
- package/dist/lib/constants.js +4 -0
- package/dist/lib/utils.d.ts +11 -0
- package/dist/lib/utils.js +40 -0
- package/oclif.manifest.json +81 -34
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { Flags } from '@oclif/core';
|
|
|
2
2
|
import { confirm, input } from '@inquirer/prompts';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { BaseCommand } from '../../lib/base-command.js';
|
|
5
|
-
import { API_ENDPOINTS, DEFAULT_BRAND_COLOR } from '../../lib/constants.js';
|
|
5
|
+
import { API_ENDPOINTS, DEFAULT_BRAND_COLOR, SDK_IMPORT_SNIPPET, SDK_INSTALL_COMMAND, } from '../../lib/constants.js';
|
|
6
6
|
import { ERRORS, INFO, pauseAlready, pauseSuccess, PROMPTS, resumeAlready, resumeSuccess, SEPARATOR, } from '../../lib/messages.js';
|
|
7
7
|
import { loadTemplate, } from '../../lib/yaml-config.js';
|
|
8
8
|
export default class Deploy extends BaseCommand {
|
|
@@ -286,8 +286,8 @@ export default class Deploy extends BaseCommand {
|
|
|
286
286
|
this.log(` ${SEPARATOR}`);
|
|
287
287
|
this.log(` ${chalk.bold('ADD THIS TO YOUR APP (one-time only):')}`);
|
|
288
288
|
this.log(` ${SEPARATOR}\n`);
|
|
289
|
-
this.log(` ${chalk.cyan(sdkSnippet.install ??
|
|
290
|
-
this.log(` ${chalk.dim(
|
|
289
|
+
this.log(` ${chalk.cyan(sdkSnippet.install ?? SDK_INSTALL_COMMAND)}\n`);
|
|
290
|
+
this.log(` ${chalk.dim(SDK_IMPORT_SNIPPET)}\n`);
|
|
291
291
|
if (sdkSnippet.examples) {
|
|
292
292
|
this.log(` ${chalk.dim('// Example usage:')}`);
|
|
293
293
|
this.log(` ${chalk.dim(sdkSnippet.examples.track)}`);
|
|
@@ -4,14 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import { BaseCommand } from '../../lib/base-command.js';
|
|
5
5
|
import { API_ENDPOINTS, DEFAULT_BRAND_COLOR } from '../../lib/constants.js';
|
|
6
6
|
import { loadYaml, saveTemplate, saveYaml, } from '../../lib/yaml-config.js';
|
|
7
|
-
|
|
8
|
-
try {
|
|
9
|
-
return Boolean(new URL(value));
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
import { isValidUrl, normalizeTrigger } from '../../lib/utils.js';
|
|
15
8
|
/**
|
|
16
9
|
* Prints the human-readable analysis summary using the provided line writer.
|
|
17
10
|
* Use stderr when `--json` is set so stdout stays free for machine-readable JSON.
|
|
@@ -124,7 +117,7 @@ export default class Init extends BaseCommand {
|
|
|
124
117
|
return {
|
|
125
118
|
delay: rec.delay || '0',
|
|
126
119
|
id: rec.id,
|
|
127
|
-
trigger: rec.trigger,
|
|
120
|
+
trigger: normalizeTrigger(rec.trigger, analysisPayload.productName),
|
|
128
121
|
...(rec.condition ? { condition: rec.condition } : {}),
|
|
129
122
|
subject: generated?.subject || `Email for ${rec.id}`,
|
|
130
123
|
template: `mailmodo/${rec.id}.html`,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseCommand } from '../../lib/base-command.js';
|
|
2
|
+
export default class Sdk extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
'sequence-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
private renderSnippets;
|
|
12
|
+
private renderSequenceBlock;
|
|
13
|
+
private renderCallBlock;
|
|
14
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../../lib/base-command.js';
|
|
4
|
+
import { API_ENDPOINTS, SDK_IMPORT_SNIPPET, SDK_INSTALL_COMMAND, } from '../../lib/constants.js';
|
|
5
|
+
import { SEPARATOR } from '../../lib/messages.js';
|
|
6
|
+
export default class Sdk extends BaseCommand {
|
|
7
|
+
static description = 'Show the SDK track() / identify() reference for deployed sequences';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> sdk',
|
|
10
|
+
'<%= config.bin %> sdk --sequence-id a1b2c3d4',
|
|
11
|
+
'<%= config.bin %> sdk --json',
|
|
12
|
+
];
|
|
13
|
+
static flags = {
|
|
14
|
+
...BaseCommand.baseFlags,
|
|
15
|
+
'sequence-id': Flags.string({
|
|
16
|
+
description: 'Limit output to a single active sequence by ID (default: all active sequences)',
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
async run() {
|
|
20
|
+
const { flags } = await this.parse(Sdk);
|
|
21
|
+
await this.ensureAuth();
|
|
22
|
+
const params = flags['sequence-id']
|
|
23
|
+
? { sequenceId: flags['sequence-id'] }
|
|
24
|
+
: undefined;
|
|
25
|
+
const response = await this.withApiSpinner({ json: flags.json, text: ' Loading SDK reference...' }, () => this.apiClient.get(API_ENDPOINTS.SEQUENCES_SDK, params));
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
this.handleApiError(response);
|
|
28
|
+
}
|
|
29
|
+
if (flags.json) {
|
|
30
|
+
this.log(JSON.stringify(response.data, null, 2));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.renderSnippets(response.data);
|
|
34
|
+
}
|
|
35
|
+
renderSnippets(data) {
|
|
36
|
+
const snippets = data.sdkSnippets ?? [];
|
|
37
|
+
if (snippets.length === 0) {
|
|
38
|
+
this.log(`\n ${chalk.dim('No active deployed sequences.')}`);
|
|
39
|
+
this.log(` Run ${chalk.cyan('mailmodo deploy')} to deploy one.\n`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.log(`\n ${chalk.bold(String(snippets.length))} active ${snippets.length === 1 ? 'sequence' : 'sequences'}:\n`);
|
|
43
|
+
this.log(` ${SEPARATOR}`);
|
|
44
|
+
this.log(` ${chalk.bold('SDK EVENT REFERENCE')}`);
|
|
45
|
+
this.log(` ${SEPARATOR}\n`);
|
|
46
|
+
this.log(` ${chalk.cyan(SDK_INSTALL_COMMAND)}\n`);
|
|
47
|
+
this.log(` ${chalk.dim(SDK_IMPORT_SNIPPET)}\n`);
|
|
48
|
+
for (const [index, snippet] of snippets.entries()) {
|
|
49
|
+
this.renderSequenceBlock(snippet);
|
|
50
|
+
if (index < snippets.length - 1)
|
|
51
|
+
this.log('');
|
|
52
|
+
}
|
|
53
|
+
this.log(` ${SEPARATOR}\n`);
|
|
54
|
+
}
|
|
55
|
+
renderSequenceBlock(snippet) {
|
|
56
|
+
const productName = snippet.productName || 'Unnamed sequence';
|
|
57
|
+
this.log(` ${chalk.bold(productName)} ${chalk.dim(`(${snippet.sequenceId})`)}`);
|
|
58
|
+
const trackCalls = [...new Set(snippet.sdkSnippet?.trackCalls ?? [])];
|
|
59
|
+
const identifyCalls = [...new Set(snippet.sdkSnippet?.identifyCalls ?? [])];
|
|
60
|
+
this.renderCallBlock('// track() calls', trackCalls);
|
|
61
|
+
this.renderCallBlock('// identify() calls', identifyCalls);
|
|
62
|
+
if (trackCalls.length === 0 && identifyCalls.length === 0) {
|
|
63
|
+
this.log(` ${chalk.dim('No track() or identify() calls available.')}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
renderCallBlock(label, calls) {
|
|
67
|
+
if (calls.length === 0)
|
|
68
|
+
return;
|
|
69
|
+
this.log(` ${chalk.dim(label)}`);
|
|
70
|
+
for (const call of calls) {
|
|
71
|
+
this.log(` ${chalk.dim(call)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -7,6 +7,7 @@ import { resolve } from 'node:path';
|
|
|
7
7
|
import { BaseCommand, FREE_TIER } from '../../lib/base-command.js';
|
|
8
8
|
import { API_ENDPOINTS } from '../../lib/constants.js';
|
|
9
9
|
import { INFO } from '../../lib/messages.js';
|
|
10
|
+
import { settingKeyToProp } from '../../lib/utils.js';
|
|
10
11
|
import { saveYaml } from '../../lib/yaml-config.js';
|
|
11
12
|
const SETTINGS_GROUPS = Object.freeze({
|
|
12
13
|
billing: ['monthly_cap'],
|
|
@@ -20,16 +21,6 @@ const SETUP_HINTS = {
|
|
|
20
21
|
domain: "'mailmodo domain'",
|
|
21
22
|
monthlyCap: "'mailmodo billing --cap <n>'",
|
|
22
23
|
};
|
|
23
|
-
/**
|
|
24
|
-
* Converts a user-facing snake_case YAML setting key to its
|
|
25
|
-
* corresponding camelCase TypeScript property name.
|
|
26
|
-
*
|
|
27
|
-
* @param {string} key - A snake_case setting key (e.g., "brand_color").
|
|
28
|
-
* @returns {string} The camelCase property name (e.g., "brandColor").
|
|
29
|
-
*/
|
|
30
|
-
function settingKeyToProp(key) {
|
|
31
|
-
return key.replaceAll(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
32
|
-
}
|
|
33
24
|
export default class Settings extends BaseCommand {
|
|
34
25
|
static description = 'View and update project settings';
|
|
35
26
|
static examples = [
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare const API_ENDPOINTS: Readonly<{
|
|
|
26
26
|
PREVIEW: "/preview";
|
|
27
27
|
SEQUENCES: "/sequences";
|
|
28
28
|
SEQUENCES_DEPLOY: "/sequences/deploy";
|
|
29
|
+
SEQUENCES_SDK: "/sequences/sdk";
|
|
29
30
|
SEQUENCES_VALIDATE: "/sequences/validate";
|
|
30
31
|
}>;
|
|
31
32
|
export declare const LOGIN_URL = "https://app-vertex-debug.azurewebsites.net/signup.html";
|
|
@@ -33,3 +34,6 @@ export declare const PREVIEW_PORT = 3421;
|
|
|
33
34
|
export declare const DEFAULT_BRAND_COLOR = "#1A56DB";
|
|
34
35
|
export declare const TEMPLATES_DIR = "mailmodo";
|
|
35
36
|
export declare const YAML_FILE = "mailmodo.yaml";
|
|
37
|
+
export declare const SDK_PACKAGE_NAME = "@mailmodo/sdk";
|
|
38
|
+
export declare const SDK_INSTALL_COMMAND = "npm install @mailmodo/sdk";
|
|
39
|
+
export declare const SDK_IMPORT_SNIPPET = "import { track, identify } from '@mailmodo/sdk'";
|
package/dist/lib/constants.js
CHANGED
|
@@ -32,6 +32,7 @@ export const API_ENDPOINTS = Object.freeze({
|
|
|
32
32
|
PREVIEW: '/preview',
|
|
33
33
|
SEQUENCES: '/sequences',
|
|
34
34
|
SEQUENCES_DEPLOY: '/sequences/deploy',
|
|
35
|
+
SEQUENCES_SDK: '/sequences/sdk',
|
|
35
36
|
SEQUENCES_VALIDATE: '/sequences/validate',
|
|
36
37
|
});
|
|
37
38
|
const DEV_LOGIN_URL = 'https://app-vertex-debug.azurewebsites.net/signup.html';
|
|
@@ -44,3 +45,6 @@ export const PREVIEW_PORT = 3421;
|
|
|
44
45
|
export const DEFAULT_BRAND_COLOR = '#1A56DB';
|
|
45
46
|
export const TEMPLATES_DIR = 'mailmodo';
|
|
46
47
|
export const YAML_FILE = 'mailmodo.yaml';
|
|
48
|
+
export const SDK_PACKAGE_NAME = '@mailmodo/sdk';
|
|
49
|
+
export const SDK_INSTALL_COMMAND = `npm install ${SDK_PACKAGE_NAME}`;
|
|
50
|
+
export const SDK_IMPORT_SNIPPET = `import { track, identify } from '${SDK_PACKAGE_NAME}'`;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a user-facing snake_case YAML setting key to its
|
|
3
|
+
* corresponding camelCase TypeScript property name.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} key - A snake_case setting key (e.g., "brand_color").
|
|
6
|
+
* @returns {string} The camelCase property name (e.g., "brandColor").
|
|
7
|
+
*/
|
|
8
|
+
export declare function settingKeyToProp(key: string): string;
|
|
9
|
+
export declare function generateTriggerPrefix(productName: string): string;
|
|
10
|
+
export declare function normalizeTrigger(trigger: string, productName: string): string;
|
|
11
|
+
export declare function isValidUrl(value: string): boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a user-facing snake_case YAML setting key to its
|
|
3
|
+
* corresponding camelCase TypeScript property name.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} key - A snake_case setting key (e.g., "brand_color").
|
|
6
|
+
* @returns {string} The camelCase property name (e.g., "brandColor").
|
|
7
|
+
*/
|
|
8
|
+
export function settingKeyToProp(key) {
|
|
9
|
+
return key.replaceAll(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
10
|
+
}
|
|
11
|
+
function toCamelCaseAlnum(input) {
|
|
12
|
+
const parts = input
|
|
13
|
+
.trim()
|
|
14
|
+
.split(/[^a-zA-Z0-9]+/)
|
|
15
|
+
.filter(Boolean);
|
|
16
|
+
if (parts.length === 0)
|
|
17
|
+
return '';
|
|
18
|
+
return (parts[0].toLowerCase() +
|
|
19
|
+
parts
|
|
20
|
+
.slice(1)
|
|
21
|
+
.map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase())
|
|
22
|
+
.join(''));
|
|
23
|
+
}
|
|
24
|
+
export function generateTriggerPrefix(productName) {
|
|
25
|
+
return `${toCamelCaseAlnum(productName)}$`;
|
|
26
|
+
}
|
|
27
|
+
export function normalizeTrigger(trigger, productName) {
|
|
28
|
+
const prefix = generateTriggerPrefix(productName);
|
|
29
|
+
const dollarIdx = trigger.indexOf('$');
|
|
30
|
+
const eventName = dollarIdx === -1 ? trigger : trigger.slice(dollarIdx + 1);
|
|
31
|
+
return prefix + eventName;
|
|
32
|
+
}
|
|
33
|
+
export function isValidUrl(value) {
|
|
34
|
+
try {
|
|
35
|
+
return Boolean(new URL(value));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
package/oclif.manifest.json
CHANGED
|
@@ -289,13 +289,19 @@
|
|
|
289
289
|
"index.js"
|
|
290
290
|
]
|
|
291
291
|
},
|
|
292
|
-
"
|
|
292
|
+
"edit": {
|
|
293
293
|
"aliases": [],
|
|
294
|
-
"args": {
|
|
295
|
-
|
|
294
|
+
"args": {
|
|
295
|
+
"id": {
|
|
296
|
+
"description": "Email template ID to edit",
|
|
297
|
+
"name": "id",
|
|
298
|
+
"required": true
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"description": "Edit an email using AI-assisted natural language changes",
|
|
296
302
|
"examples": [
|
|
297
|
-
"<%= config.bin %>
|
|
298
|
-
"<%= config.bin %>
|
|
303
|
+
"<%= config.bin %> edit welcome",
|
|
304
|
+
"<%= config.bin %> edit welcome --change \"make subject more urgent\" --yes"
|
|
299
305
|
],
|
|
300
306
|
"flags": {
|
|
301
307
|
"json": {
|
|
@@ -310,11 +316,18 @@
|
|
|
310
316
|
"name": "yes",
|
|
311
317
|
"allowNo": false,
|
|
312
318
|
"type": "boolean"
|
|
319
|
+
},
|
|
320
|
+
"change": {
|
|
321
|
+
"description": "Natural language description of the change",
|
|
322
|
+
"name": "change",
|
|
323
|
+
"hasDynamicHelp": false,
|
|
324
|
+
"multiple": false,
|
|
325
|
+
"type": "option"
|
|
313
326
|
}
|
|
314
327
|
},
|
|
315
328
|
"hasDynamicHelp": false,
|
|
316
329
|
"hiddenAliases": [],
|
|
317
|
-
"id": "
|
|
330
|
+
"id": "edit",
|
|
318
331
|
"pluginAlias": "@mailmodo/cli",
|
|
319
332
|
"pluginName": "@mailmodo/cli",
|
|
320
333
|
"pluginType": "core",
|
|
@@ -324,23 +337,17 @@
|
|
|
324
337
|
"relativePath": [
|
|
325
338
|
"dist",
|
|
326
339
|
"commands",
|
|
327
|
-
"
|
|
340
|
+
"edit",
|
|
328
341
|
"index.js"
|
|
329
342
|
]
|
|
330
343
|
},
|
|
331
|
-
"
|
|
344
|
+
"emails": {
|
|
332
345
|
"aliases": [],
|
|
333
|
-
"args": {
|
|
334
|
-
|
|
335
|
-
"description": "Email template ID to edit",
|
|
336
|
-
"name": "id",
|
|
337
|
-
"required": true
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
"description": "Edit an email using AI-assisted natural language changes",
|
|
346
|
+
"args": {},
|
|
347
|
+
"description": "List and view configured email sequences",
|
|
341
348
|
"examples": [
|
|
342
|
-
"<%= config.bin %>
|
|
343
|
-
"<%= config.bin %>
|
|
349
|
+
"<%= config.bin %> emails",
|
|
350
|
+
"<%= config.bin %> emails --json"
|
|
344
351
|
],
|
|
345
352
|
"flags": {
|
|
346
353
|
"json": {
|
|
@@ -355,18 +362,11 @@
|
|
|
355
362
|
"name": "yes",
|
|
356
363
|
"allowNo": false,
|
|
357
364
|
"type": "boolean"
|
|
358
|
-
},
|
|
359
|
-
"change": {
|
|
360
|
-
"description": "Natural language description of the change",
|
|
361
|
-
"name": "change",
|
|
362
|
-
"hasDynamicHelp": false,
|
|
363
|
-
"multiple": false,
|
|
364
|
-
"type": "option"
|
|
365
365
|
}
|
|
366
366
|
},
|
|
367
367
|
"hasDynamicHelp": false,
|
|
368
368
|
"hiddenAliases": [],
|
|
369
|
-
"id": "
|
|
369
|
+
"id": "emails",
|
|
370
370
|
"pluginAlias": "@mailmodo/cli",
|
|
371
371
|
"pluginName": "@mailmodo/cli",
|
|
372
372
|
"pluginType": "core",
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
"relativePath": [
|
|
377
377
|
"dist",
|
|
378
378
|
"commands",
|
|
379
|
-
"
|
|
379
|
+
"emails",
|
|
380
380
|
"index.js"
|
|
381
381
|
]
|
|
382
382
|
},
|
|
@@ -631,13 +631,14 @@
|
|
|
631
631
|
"index.js"
|
|
632
632
|
]
|
|
633
633
|
},
|
|
634
|
-
"
|
|
634
|
+
"sdk": {
|
|
635
635
|
"aliases": [],
|
|
636
636
|
"args": {},
|
|
637
|
-
"description": "
|
|
637
|
+
"description": "Show the SDK track() / identify() reference for deployed sequences",
|
|
638
638
|
"examples": [
|
|
639
|
-
"<%= config.bin %>
|
|
640
|
-
"<%= config.bin %>
|
|
639
|
+
"<%= config.bin %> sdk",
|
|
640
|
+
"<%= config.bin %> sdk --sequence-id a1b2c3d4",
|
|
641
|
+
"<%= config.bin %> sdk --json"
|
|
641
642
|
],
|
|
642
643
|
"flags": {
|
|
643
644
|
"json": {
|
|
@@ -652,11 +653,18 @@
|
|
|
652
653
|
"name": "yes",
|
|
653
654
|
"allowNo": false,
|
|
654
655
|
"type": "boolean"
|
|
656
|
+
},
|
|
657
|
+
"sequence-id": {
|
|
658
|
+
"description": "Limit output to a single active sequence by ID (default: all active sequences)",
|
|
659
|
+
"name": "sequence-id",
|
|
660
|
+
"hasDynamicHelp": false,
|
|
661
|
+
"multiple": false,
|
|
662
|
+
"type": "option"
|
|
655
663
|
}
|
|
656
664
|
},
|
|
657
665
|
"hasDynamicHelp": false,
|
|
658
666
|
"hiddenAliases": [],
|
|
659
|
-
"id": "
|
|
667
|
+
"id": "sdk",
|
|
660
668
|
"pluginAlias": "@mailmodo/cli",
|
|
661
669
|
"pluginName": "@mailmodo/cli",
|
|
662
670
|
"pluginType": "core",
|
|
@@ -666,7 +674,7 @@
|
|
|
666
674
|
"relativePath": [
|
|
667
675
|
"dist",
|
|
668
676
|
"commands",
|
|
669
|
-
"
|
|
677
|
+
"sdk",
|
|
670
678
|
"index.js"
|
|
671
679
|
]
|
|
672
680
|
},
|
|
@@ -716,7 +724,46 @@
|
|
|
716
724
|
"settings",
|
|
717
725
|
"index.js"
|
|
718
726
|
]
|
|
727
|
+
},
|
|
728
|
+
"status": {
|
|
729
|
+
"aliases": [],
|
|
730
|
+
"args": {},
|
|
731
|
+
"description": "View email performance metrics and quota usage",
|
|
732
|
+
"examples": [
|
|
733
|
+
"<%= config.bin %> status",
|
|
734
|
+
"<%= config.bin %> status --json"
|
|
735
|
+
],
|
|
736
|
+
"flags": {
|
|
737
|
+
"json": {
|
|
738
|
+
"description": "Output as JSON",
|
|
739
|
+
"name": "json",
|
|
740
|
+
"allowNo": false,
|
|
741
|
+
"type": "boolean"
|
|
742
|
+
},
|
|
743
|
+
"yes": {
|
|
744
|
+
"char": "y",
|
|
745
|
+
"description": "Skip confirmation prompts",
|
|
746
|
+
"name": "yes",
|
|
747
|
+
"allowNo": false,
|
|
748
|
+
"type": "boolean"
|
|
749
|
+
}
|
|
750
|
+
},
|
|
751
|
+
"hasDynamicHelp": false,
|
|
752
|
+
"hiddenAliases": [],
|
|
753
|
+
"id": "status",
|
|
754
|
+
"pluginAlias": "@mailmodo/cli",
|
|
755
|
+
"pluginName": "@mailmodo/cli",
|
|
756
|
+
"pluginType": "core",
|
|
757
|
+
"strict": true,
|
|
758
|
+
"enableJsonFlag": false,
|
|
759
|
+
"isESM": true,
|
|
760
|
+
"relativePath": [
|
|
761
|
+
"dist",
|
|
762
|
+
"commands",
|
|
763
|
+
"status",
|
|
764
|
+
"index.js"
|
|
765
|
+
]
|
|
719
766
|
}
|
|
720
767
|
},
|
|
721
|
-
"version": "0.0.
|
|
768
|
+
"version": "0.0.52-beta.pr55.85"
|
|
722
769
|
}
|