@mailmodo/cli 0.0.51-beta.pr54.83 → 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 +77 -30
- 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
|
@@ -426,6 +426,45 @@
|
|
|
426
426
|
"index.js"
|
|
427
427
|
]
|
|
428
428
|
},
|
|
429
|
+
"login": {
|
|
430
|
+
"aliases": [],
|
|
431
|
+
"args": {},
|
|
432
|
+
"description": "Authenticate with Mailmodo using your API key",
|
|
433
|
+
"examples": [
|
|
434
|
+
"<%= config.bin %> login",
|
|
435
|
+
"MAILMODO_API_KEY=YOUR_API_KEY <%= config.bin %> login"
|
|
436
|
+
],
|
|
437
|
+
"flags": {
|
|
438
|
+
"json": {
|
|
439
|
+
"description": "Output as JSON",
|
|
440
|
+
"name": "json",
|
|
441
|
+
"allowNo": false,
|
|
442
|
+
"type": "boolean"
|
|
443
|
+
},
|
|
444
|
+
"yes": {
|
|
445
|
+
"char": "y",
|
|
446
|
+
"description": "Skip confirmation prompts",
|
|
447
|
+
"name": "yes",
|
|
448
|
+
"allowNo": false,
|
|
449
|
+
"type": "boolean"
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
"hasDynamicHelp": false,
|
|
453
|
+
"hiddenAliases": [],
|
|
454
|
+
"id": "login",
|
|
455
|
+
"pluginAlias": "@mailmodo/cli",
|
|
456
|
+
"pluginName": "@mailmodo/cli",
|
|
457
|
+
"pluginType": "core",
|
|
458
|
+
"strict": true,
|
|
459
|
+
"enableJsonFlag": false,
|
|
460
|
+
"isESM": true,
|
|
461
|
+
"relativePath": [
|
|
462
|
+
"dist",
|
|
463
|
+
"commands",
|
|
464
|
+
"login",
|
|
465
|
+
"index.js"
|
|
466
|
+
]
|
|
467
|
+
},
|
|
429
468
|
"logout": {
|
|
430
469
|
"aliases": [],
|
|
431
470
|
"args": {},
|
|
@@ -534,13 +573,19 @@
|
|
|
534
573
|
"index.js"
|
|
535
574
|
]
|
|
536
575
|
},
|
|
537
|
-
"
|
|
576
|
+
"preview": {
|
|
538
577
|
"aliases": [],
|
|
539
|
-
"args": {
|
|
540
|
-
|
|
578
|
+
"args": {
|
|
579
|
+
"id": {
|
|
580
|
+
"description": "Email template ID to preview",
|
|
581
|
+
"name": "id"
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"description": "Preview an email in browser, as text, or send a test",
|
|
541
585
|
"examples": [
|
|
542
|
-
"<%= config.bin %>
|
|
543
|
-
"
|
|
586
|
+
"<%= config.bin %> preview welcome",
|
|
587
|
+
"<%= config.bin %> preview welcome --text",
|
|
588
|
+
"<%= config.bin %> preview welcome --send me@example.com"
|
|
544
589
|
],
|
|
545
590
|
"flags": {
|
|
546
591
|
"json": {
|
|
@@ -555,11 +600,24 @@
|
|
|
555
600
|
"name": "yes",
|
|
556
601
|
"allowNo": false,
|
|
557
602
|
"type": "boolean"
|
|
603
|
+
},
|
|
604
|
+
"send": {
|
|
605
|
+
"description": "Send test email to this address",
|
|
606
|
+
"name": "send",
|
|
607
|
+
"hasDynamicHelp": false,
|
|
608
|
+
"multiple": false,
|
|
609
|
+
"type": "option"
|
|
610
|
+
},
|
|
611
|
+
"text": {
|
|
612
|
+
"description": "Output plain text version (for AI agents)",
|
|
613
|
+
"name": "text",
|
|
614
|
+
"allowNo": false,
|
|
615
|
+
"type": "boolean"
|
|
558
616
|
}
|
|
559
617
|
},
|
|
560
618
|
"hasDynamicHelp": false,
|
|
561
619
|
"hiddenAliases": [],
|
|
562
|
-
"id": "
|
|
620
|
+
"id": "preview",
|
|
563
621
|
"pluginAlias": "@mailmodo/cli",
|
|
564
622
|
"pluginName": "@mailmodo/cli",
|
|
565
623
|
"pluginType": "core",
|
|
@@ -569,23 +627,18 @@
|
|
|
569
627
|
"relativePath": [
|
|
570
628
|
"dist",
|
|
571
629
|
"commands",
|
|
572
|
-
"
|
|
630
|
+
"preview",
|
|
573
631
|
"index.js"
|
|
574
632
|
]
|
|
575
633
|
},
|
|
576
|
-
"
|
|
634
|
+
"sdk": {
|
|
577
635
|
"aliases": [],
|
|
578
|
-
"args": {
|
|
579
|
-
|
|
580
|
-
"description": "Email template ID to preview",
|
|
581
|
-
"name": "id"
|
|
582
|
-
}
|
|
583
|
-
},
|
|
584
|
-
"description": "Preview an email in browser, as text, or send a test",
|
|
636
|
+
"args": {},
|
|
637
|
+
"description": "Show the SDK track() / identify() reference for deployed sequences",
|
|
585
638
|
"examples": [
|
|
586
|
-
"<%= config.bin %>
|
|
587
|
-
"<%= config.bin %>
|
|
588
|
-
"<%= config.bin %>
|
|
639
|
+
"<%= config.bin %> sdk",
|
|
640
|
+
"<%= config.bin %> sdk --sequence-id a1b2c3d4",
|
|
641
|
+
"<%= config.bin %> sdk --json"
|
|
589
642
|
],
|
|
590
643
|
"flags": {
|
|
591
644
|
"json": {
|
|
@@ -601,23 +654,17 @@
|
|
|
601
654
|
"allowNo": false,
|
|
602
655
|
"type": "boolean"
|
|
603
656
|
},
|
|
604
|
-
"
|
|
605
|
-
"description": "
|
|
606
|
-
"name": "
|
|
657
|
+
"sequence-id": {
|
|
658
|
+
"description": "Limit output to a single active sequence by ID (default: all active sequences)",
|
|
659
|
+
"name": "sequence-id",
|
|
607
660
|
"hasDynamicHelp": false,
|
|
608
661
|
"multiple": false,
|
|
609
662
|
"type": "option"
|
|
610
|
-
},
|
|
611
|
-
"text": {
|
|
612
|
-
"description": "Output plain text version (for AI agents)",
|
|
613
|
-
"name": "text",
|
|
614
|
-
"allowNo": false,
|
|
615
|
-
"type": "boolean"
|
|
616
663
|
}
|
|
617
664
|
},
|
|
618
665
|
"hasDynamicHelp": false,
|
|
619
666
|
"hiddenAliases": [],
|
|
620
|
-
"id": "
|
|
667
|
+
"id": "sdk",
|
|
621
668
|
"pluginAlias": "@mailmodo/cli",
|
|
622
669
|
"pluginName": "@mailmodo/cli",
|
|
623
670
|
"pluginType": "core",
|
|
@@ -627,7 +674,7 @@
|
|
|
627
674
|
"relativePath": [
|
|
628
675
|
"dist",
|
|
629
676
|
"commands",
|
|
630
|
-
"
|
|
677
|
+
"sdk",
|
|
631
678
|
"index.js"
|
|
632
679
|
]
|
|
633
680
|
},
|
|
@@ -718,5 +765,5 @@
|
|
|
718
765
|
]
|
|
719
766
|
}
|
|
720
767
|
},
|
|
721
|
-
"version": "0.0.
|
|
768
|
+
"version": "0.0.52-beta.pr55.85"
|
|
722
769
|
}
|
package/package.json
CHANGED