@shopify/shop-minis-cli 0.0.140 → 0.0.142
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/build/commands/app/link.js +3 -1
- package/build/commands/app/link.js.map +1 -1
- package/build/commands/create-mini/index.js +49 -22
- package/build/commands/create-mini/index.js.map +1 -1
- package/build/commands/dev/utils/app-screens.d.ts +8 -0
- package/build/commands/dev/utils/app-screens.js +156 -0
- package/build/commands/dev/utils/app-screens.js.map +1 -0
- package/build/commands/dev/utils/deeplink.d.ts +2 -1
- package/build/commands/dev/utils/deeplink.js +9 -2
- package/build/commands/dev/utils/deeplink.js.map +1 -1
- package/build/commands/dev/utils/env-config.d.ts +2 -0
- package/build/commands/dev/utils/env-config.js +47 -0
- package/build/commands/dev/utils/env-config.js.map +1 -0
- package/build/commands/dev/utils/interactive-terminal.d.ts +5 -1
- package/build/commands/dev/utils/interactive-terminal.js +70 -17
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-reporter.js +0 -1
- package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
- package/build/commands/setup/create.d.ts +1 -0
- package/build/commands/setup/create.js +51 -28
- package/build/commands/setup/create.js.map +1 -1
- package/build/commands/setup/index.js +9 -4
- package/build/commands/setup/index.js.map +1 -1
- package/build/data/get-linked-apps.d.ts +2 -2
- package/build/data/mini-create.d.ts +2 -5
- package/build/data/mini-create.js +4 -9
- package/build/data/mini-create.js.map +1 -1
- package/build/data/mini-link-app.d.ts +3 -2
- package/build/data/mini-link-app.js +8 -2
- package/build/data/mini-link-app.js.map +1 -1
- package/build/data/mini-unlink-app.d.ts +1 -1
- package/build/data/mini.d.ts +1 -1
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +6 -6
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +2 -2
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -1
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +25 -18
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +25 -30
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/build/schemas/manifest.schema.json +3 -8
- package/build/templates-index.js +5 -0
- package/build/templates-index.js.map +1 -1
- package/build/utils/sync-manifest.d.ts +2 -2
- package/build/utils/sync-manifest.js +9 -6
- package/build/utils/sync-manifest.js.map +1 -1
- package/package.json +3 -5
- package/templates/__template_getting_started/src/App.tsx +29 -0
- package/templates/__template_getting_started/src/index.tsx +9 -0
- package/templates/__template_getting_started/src/manifest.json +7 -0
- package/templates/__template_getting_started/src/screens/ExtensionsScreen.tsx +60 -0
- package/templates/__template_getting_started/src/screens/HomeScreen.tsx +127 -0
- package/templates/__template_getting_started/src/screens/NativeFeaturesScreen.tsx +103 -0
- package/templates/__template_getting_started/src/types/screens.ts +5 -0
- package/build/commands/dev/utils/qr-code.d.ts +0 -1
- package/build/commands/dev/utils/qr-code.js +0 -5
- package/build/commands/dev/utils/qr-code.js.map +0 -1
|
@@ -6,7 +6,8 @@ import { syncManifest } from '../../utils/sync-manifest.js';
|
|
|
6
6
|
export const command = new Command()
|
|
7
7
|
.name('link')
|
|
8
8
|
.description('Link an app to your Shop Mini')
|
|
9
|
-
.
|
|
9
|
+
.option('--primary', 'Link the production app')
|
|
10
|
+
.action(async ({ primary }) => {
|
|
10
11
|
const allOrgs = await fetchAllOrgs();
|
|
11
12
|
const orgId = (await renderSelectPrompt({
|
|
12
13
|
message: 'Select your organization',
|
|
@@ -31,6 +32,7 @@ export const command = new Command()
|
|
|
31
32
|
const { userErrors, mini } = await miniLinkApp({
|
|
32
33
|
appApiKey: selectedApp.apiKey,
|
|
33
34
|
partnersAccessToken: await token(),
|
|
35
|
+
primary,
|
|
34
36
|
});
|
|
35
37
|
if (userErrors.length > 0) {
|
|
36
38
|
renderError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/app/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,GACd,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,GACN,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAA;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/app/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,GACd,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,GACN,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAA;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE;IAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAA;IAEpC,MAAM,KAAK,GAAG,CAAC,MAAM,kBAAkB,CAAS;QAC9C,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,KAAK,EAAE,GAAG,CAAC,YAAY;YACvB,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAC;KACJ,CAAC,CAAW,CAAA;IAEb,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAA;IAEzC,MAAM,KAAK,GAAG,CAAC,MAAM,kBAAkB,CAAS;QAC9C,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAC;KACJ,CAAC,CAAW,CAAA;IAEb,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;IAE3D,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;KAC3C;IAED,kCAAkC;IAClC,MAAM,EAAC,UAAU,EAAE,IAAI,EAAC,GAAG,MAAM,WAAW,CAAC;QAC3C,SAAS,EAAE,WAAW,CAAC,MAAM;QAC7B,mBAAmB,EAAE,MAAM,KAAK,EAAE;QAClC,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,WAAW,CAAC;YACV,QAAQ,EAAE,mBAAmB;YAC7B,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAA;KACH;IAED,IAAI,IAAI,EAAE;QACR,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,aAAa,CAAC;YACZ,QAAQ,EAAE,YAAY;YACtB,IAAI,EAAE;gBACJ,aAAa;gBACb;oBACE,IAAI,EAAE,WAAW,CAAC,KAAK;iBACxB;gBACD,oCAAoC;aACrC;SACF,CAAC,CAAA;KACH;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -30,6 +30,20 @@ function logSuccess(miniName, outputDir, miniDir, useYarn) {
|
|
|
30
30
|
chalk.cyan.underline.bold('https://shop.app/minis/docs/'));
|
|
31
31
|
console.log(chalk.dim(' Shop Minis documentation.\n \n'));
|
|
32
32
|
}
|
|
33
|
+
async function selectTemplate() {
|
|
34
|
+
return renderSelectPrompt({
|
|
35
|
+
message: 'Select a template',
|
|
36
|
+
choices: TEMPLATES.map(template => ({
|
|
37
|
+
label: template.title,
|
|
38
|
+
value: template.value,
|
|
39
|
+
})),
|
|
40
|
+
infoTable: TEMPLATES.map(template => ({
|
|
41
|
+
header: template.title,
|
|
42
|
+
helperText: template.description,
|
|
43
|
+
items: [],
|
|
44
|
+
})),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
33
47
|
export function loadCommand(parentProgram) {
|
|
34
48
|
const command = new Command()
|
|
35
49
|
.name('create')
|
|
@@ -56,6 +70,7 @@ export function loadCommand(parentProgram) {
|
|
|
56
70
|
}
|
|
57
71
|
let miniName;
|
|
58
72
|
let templateName;
|
|
73
|
+
let createChoice = 'advanced';
|
|
59
74
|
try {
|
|
60
75
|
if (miniNameArg) {
|
|
61
76
|
miniName = miniNameArg;
|
|
@@ -65,25 +80,35 @@ export function loadCommand(parentProgram) {
|
|
|
65
80
|
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.')}`,
|
|
66
81
|
});
|
|
67
82
|
}
|
|
68
|
-
if (options.template
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
if (options.template) {
|
|
84
|
+
if (TEMPLATE_VALUES.includes(options.template)) {
|
|
85
|
+
templateName = options.template;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
73
88
|
outputWarn(`Template ${options.template} not found. Please select a valid template.`);
|
|
89
|
+
templateName = await selectTemplate();
|
|
74
90
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
createChoice = await renderSelectPrompt({
|
|
94
|
+
message: 'Choose how you want to create your Shop Mini',
|
|
95
|
+
choices: [
|
|
96
|
+
{
|
|
97
|
+
label: 'Express - Create a starter Shop Mini',
|
|
98
|
+
value: 'express',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
label: 'Advanced - Customize how you want to create your Shop Mini',
|
|
102
|
+
value: 'advanced',
|
|
103
|
+
},
|
|
104
|
+
],
|
|
86
105
|
});
|
|
106
|
+
if (createChoice === 'express') {
|
|
107
|
+
templateName = 'getting_started';
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
templateName = await selectTemplate();
|
|
111
|
+
}
|
|
87
112
|
}
|
|
88
113
|
const miniDir = _.kebabCase(miniName);
|
|
89
114
|
const miniDirPath = path.resolve(outputDir, miniDir);
|
|
@@ -99,12 +124,14 @@ export function loadCommand(parentProgram) {
|
|
|
99
124
|
if (!miniTmpDirPath) {
|
|
100
125
|
process.exit(1);
|
|
101
126
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
if (createChoice === 'advanced') {
|
|
128
|
+
await createExtensionFiles({
|
|
129
|
+
miniName,
|
|
130
|
+
specifiedTarget: options.extensionTarget,
|
|
131
|
+
specifiedType: options.extensionType,
|
|
132
|
+
miniOutputDir: miniTmpDirPath,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
108
135
|
await copy(miniTmpDirPath, miniDirPath);
|
|
109
136
|
const useYarn = packageManagerFromUserAgent() === 'yarn';
|
|
110
137
|
// Yarn is ignoring the `resolutions` when you install
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DevCommandOptions } from '../index.js';
|
|
2
|
+
export declare const screens: string[];
|
|
3
|
+
export type Screen = (typeof screens)[number];
|
|
4
|
+
export declare function promptForScreen(): Promise<any>;
|
|
5
|
+
export declare function getDeeplinkForScreen(screenType: Screen, resourceId: number | null): string;
|
|
6
|
+
export declare function promptForResourceId(screenType: Screen): Promise<number | null>;
|
|
7
|
+
export declare function checkForExtensions(screenType: Screen, options: DevCommandOptions): void;
|
|
8
|
+
export declare function promptForDevPanelDeeplink(miniHandle: string, options: DevCommandOptions): Promise<string | undefined>;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
2
|
+
import prompts from 'prompts';
|
|
3
|
+
import { getEnvConfigValue, setEnvConfigValue } from './env-config.js';
|
|
4
|
+
import { getDeeplink } from './deeplink.js';
|
|
5
|
+
export const screens = ['Home feed', 'Store', 'Product', 'Order Management'];
|
|
6
|
+
export async function promptForScreen() {
|
|
7
|
+
const value = (await prompts({
|
|
8
|
+
type: 'autocomplete',
|
|
9
|
+
name: 'value',
|
|
10
|
+
limit: 11,
|
|
11
|
+
initial: getEnvConfigValue('DEFAULT_SCREEN'),
|
|
12
|
+
message: 'Select the page to open',
|
|
13
|
+
choices: screens.map(screen => ({
|
|
14
|
+
title: screen,
|
|
15
|
+
value: screen,
|
|
16
|
+
})),
|
|
17
|
+
suggest: async (input, choices) => {
|
|
18
|
+
const regex = new RegExp(input, 'i');
|
|
19
|
+
return choices.filter(choice => regex.test(choice.title));
|
|
20
|
+
},
|
|
21
|
+
})).value;
|
|
22
|
+
if (value) {
|
|
23
|
+
setEnvConfigValue('DEFAULT_SCREEN', value);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
export function getDeeplinkForScreen(screenType, resourceId) {
|
|
28
|
+
let path;
|
|
29
|
+
switch (screenType) {
|
|
30
|
+
case 'Store':
|
|
31
|
+
path = `shopifystore/${resourceId}`;
|
|
32
|
+
break;
|
|
33
|
+
case 'Product':
|
|
34
|
+
path = `p/${resourceId}`;
|
|
35
|
+
break;
|
|
36
|
+
case 'Order Management':
|
|
37
|
+
path = `u/orders/${resourceId}`;
|
|
38
|
+
break;
|
|
39
|
+
case 'Home feed':
|
|
40
|
+
default:
|
|
41
|
+
path = 'home-feed';
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
const deeplink = `arrive://${path}`;
|
|
45
|
+
outputDebug(`Deeplink: ${deeplink}`);
|
|
46
|
+
return deeplink;
|
|
47
|
+
}
|
|
48
|
+
export async function promptForResourceId(screenType) {
|
|
49
|
+
let message;
|
|
50
|
+
switch (screenType) {
|
|
51
|
+
case 'Home feed':
|
|
52
|
+
return null;
|
|
53
|
+
case 'Product':
|
|
54
|
+
message = 'Enter the GID of the product';
|
|
55
|
+
break;
|
|
56
|
+
case 'Store':
|
|
57
|
+
message = 'Enter the GID of the Shop';
|
|
58
|
+
break;
|
|
59
|
+
case 'Order Management':
|
|
60
|
+
message = 'Enter the GID of the order';
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
message = 'Enter the GID of the resource';
|
|
64
|
+
}
|
|
65
|
+
const configKey = `DEFAULT_${screenType.replace(' ', '_').toUpperCase()}_ID`;
|
|
66
|
+
const { idInput } = await prompts({
|
|
67
|
+
type: 'text',
|
|
68
|
+
name: 'idInput',
|
|
69
|
+
initial: getEnvConfigValue(configKey),
|
|
70
|
+
message,
|
|
71
|
+
validate: value => {
|
|
72
|
+
const isValidGID = /^gid:\/\/shopify\/(Shop|Order|Product)\/\d+$/.test(value);
|
|
73
|
+
return isValidGID
|
|
74
|
+
? true
|
|
75
|
+
: 'ID must be in the format gid://shopify/{Type}/{Number}, where {Type} is Shop, Order, or Product and {Number} is a valid number';
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
if (idInput) {
|
|
79
|
+
setEnvConfigValue(configKey, idInput);
|
|
80
|
+
}
|
|
81
|
+
return idInput ? parseInt(idInput.split('/').pop(), 10) : null; // Convert input to a number
|
|
82
|
+
}
|
|
83
|
+
export function checkForExtensions(screenType, options) {
|
|
84
|
+
const hasExtensions = (prefix) => options?.extensionTargets?.some(target => target.startsWith(prefix));
|
|
85
|
+
outputDebug(`store extension found: ${hasExtensions('shop.store')}`);
|
|
86
|
+
outputDebug(`product extension found: ${hasExtensions('shop.product')}`);
|
|
87
|
+
outputDebug(`order extension found: ${hasExtensions('shop.order-')}`);
|
|
88
|
+
let message;
|
|
89
|
+
switch (screenType) {
|
|
90
|
+
case 'Store':
|
|
91
|
+
if (!hasExtensions('shop.store')) {
|
|
92
|
+
message = 'No store extensions found.';
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
case 'Product':
|
|
96
|
+
if (!hasExtensions('shop.product')) {
|
|
97
|
+
message = 'No product extensions found.';
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
case 'Order Management':
|
|
101
|
+
if (!hasExtensions('shop.order-')) {
|
|
102
|
+
message = 'No order management extensions found.';
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case 'Home feed':
|
|
106
|
+
default:
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (message) {
|
|
110
|
+
console.error(`
|
|
111
|
+
${message} Add extensions with \`npx shop-minis create-extension\`
|
|
112
|
+
`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export async function promptForDevPanelDeeplink(miniHandle, options) {
|
|
116
|
+
const { value } = await prompts({
|
|
117
|
+
type: 'select',
|
|
118
|
+
name: 'value',
|
|
119
|
+
message: 'Select option',
|
|
120
|
+
choices: [
|
|
121
|
+
{
|
|
122
|
+
title: 'Enable developer mode',
|
|
123
|
+
description: 'Minis developer mode needs to be enabled on device for testing',
|
|
124
|
+
value: 'enable',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Open Mini Viewer',
|
|
128
|
+
description: 'Open the Mini in a fullscreen viewer',
|
|
129
|
+
value: 'mini',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
title: 'View your Mini extension in app',
|
|
133
|
+
description: 'Navigate to shop/product/order pages to view your Mini extensions',
|
|
134
|
+
value: 'inApp',
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
});
|
|
138
|
+
if (value === 'enable') {
|
|
139
|
+
return getDeeplink(miniHandle, options, true);
|
|
140
|
+
}
|
|
141
|
+
else if (value === 'mini') {
|
|
142
|
+
return getDeeplink(miniHandle, options, true, true);
|
|
143
|
+
}
|
|
144
|
+
else if (value === 'inApp') {
|
|
145
|
+
const screen = await promptForScreen();
|
|
146
|
+
if (!screen) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const resourceId = await promptForResourceId(screen);
|
|
150
|
+
if (!resourceId) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
return getDeeplinkForScreen(screen, resourceId);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=app-screens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-screens.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/app-screens.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,4 +11,5 @@ export declare function getBundleUrl(host: string): string;
|
|
|
11
11
|
*
|
|
12
12
|
* In both cases, the base64 encoded payload contains the bundle url and extra information about the remote environment
|
|
13
13
|
*/
|
|
14
|
-
export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean): string;
|
|
14
|
+
export declare function getDeeplink(miniHandle: string, options: DevCommandOptions, universalLink?: boolean, forceLaunchMini?: boolean): string;
|
|
15
|
+
export declare function getDeeplinkForMiniViewer(miniHandle: string, options: DevCommandOptions): string;
|
|
@@ -43,10 +43,10 @@ function getDeeplinkPayload(miniHandle, host, extensionTargets) {
|
|
|
43
43
|
*
|
|
44
44
|
* In both cases, the base64 encoded payload contains the bundle url and extra information about the remote environment
|
|
45
45
|
*/
|
|
46
|
-
export function getDeeplink(miniHandle, options, universalLink = false) {
|
|
46
|
+
export function getDeeplink(miniHandle, options, universalLink = false, forceLaunchMini = false) {
|
|
47
47
|
const deeplinkParams = getDeeplinkPayload(miniHandle, options.host, options.extensionTargets);
|
|
48
48
|
const developmentParams = getDevelopmentEntryPointParamsQueryString();
|
|
49
|
-
const deeplinkPath = options.extensionTargets?.length
|
|
49
|
+
const deeplinkPath = !forceLaunchMini && options.extensionTargets?.length
|
|
50
50
|
? '/mini/remote-extension/'
|
|
51
51
|
: '/mini/remote/';
|
|
52
52
|
const deeplink = universalLink
|
|
@@ -55,4 +55,11 @@ export function getDeeplink(miniHandle, options, universalLink = false) {
|
|
|
55
55
|
outputDebug(`Deeplink: ${deeplink}`);
|
|
56
56
|
return deeplink;
|
|
57
57
|
}
|
|
58
|
+
export function getDeeplinkForMiniViewer(miniHandle, options) {
|
|
59
|
+
const deeplinkParams = getDeeplinkPayload(miniHandle, options.host, options.extensionTargets);
|
|
60
|
+
const developmentParams = getDevelopmentEntryPointParamsQueryString();
|
|
61
|
+
const deeplink = `arrive://mini/remote/${deeplinkParams}${developmentParams}`;
|
|
62
|
+
outputDebug(`Deeplink: ${deeplink}`);
|
|
63
|
+
return deeplink;
|
|
64
|
+
}
|
|
58
65
|
//# sourceMappingURL=deeplink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,yCAAyC,EAAC,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAA;AAGhE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAA;AAE/D,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,UAAU,IAAI,oBAAoB,CAAA;AAC3C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,MAAe;IAC9D,OAAO,UAAU,IAAI,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACvE,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkB,EAClB,IAAY,EACZ,gBAA2B;IAE3B,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAC9D,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAEpE,MAAM,MAAM,GAAkD;QAC5D,MAAM,EAAE,UAAU;QAClB,SAAS;QACT;;;;WAIG;QACH,sBAAsB;QACtB,4BAA4B;QAC5B,SAAS,EAAE,qBAAqB,EAAE;QAClC,QAAQ,EAAE,eAAe,EAAE,EAAE,QAAQ,IAAI,SAAS;KACnD,CAAA;IAED,IAAI,gBAAgB,EAAE;QACpB,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAC1C,MAAM,CAAC,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAC7C;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,OAA0B,EAC1B,aAAa,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"deeplink.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/deeplink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,yCAAyC,EAAC,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAA;AAGhE,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAA;AAE/D,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,UAAU,IAAI,oBAAoB,CAAA;AAC3C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,MAAe;IAC9D,OAAO,UAAU,IAAI,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACvE,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAkB,EAClB,IAAY,EACZ,gBAA2B;IAE3B,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAC9D,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAEpE,MAAM,MAAM,GAAkD;QAC5D,MAAM,EAAE,UAAU;QAClB,SAAS;QACT;;;;WAIG;QACH,sBAAsB;QACtB,4BAA4B;QAC5B,SAAS,EAAE,qBAAqB,EAAE;QAClC,QAAQ,EAAE,eAAe,EAAE,EAAE,QAAQ,IAAI,SAAS;KACnD,CAAA;IAED,IAAI,gBAAgB,EAAE;QACpB,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAC1C,MAAM,CAAC,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAC7C;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,OAA0B,EAC1B,aAAa,GAAG,KAAK,EACrB,eAAe,GAAG,KAAK;IAEvB,MAAM,cAAc,GAAG,kBAAkB,CACvC,UAAU,EACV,OAAO,CAAC,IAAK,EACb,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACD,MAAM,iBAAiB,GAAG,yCAAyC,EAAE,CAAA;IACrE,MAAM,YAAY,GAChB,CAAC,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM;QAClD,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,eAAe,CAAA;IAErB,MAAM,QAAQ,GAAG,aAAa;QAC5B,CAAC,CAAC,mBAAmB,YAAY,GAAG,cAAc,GAAG,iBAAiB,EAAE;QACxE,CAAC,CAAC,WAAW,YAAY,GAAG,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAElE,WAAW,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;IAEpC,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,OAA0B;IAE1B,MAAM,cAAc,GAAG,kBAAkB,CACvC,UAAU,EACV,OAAO,CAAC,IAAK,EACb,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACD,MAAM,iBAAiB,GAAG,yCAAyC,EAAE,CAAA;IACrE,MAAM,QAAQ,GAAG,wBAAwB,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAE7E,WAAW,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;IAEpC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function getEnvConfigValue(envConfigKey) {
|
|
4
|
+
const envFilePath = path.join(process.cwd(), '.env');
|
|
5
|
+
const envContent = readEnvContent(envFilePath);
|
|
6
|
+
const lines = envContent.split('\n');
|
|
7
|
+
for (const line of lines) {
|
|
8
|
+
const [key, value] = line.split('=');
|
|
9
|
+
if (key === envConfigKey) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
export function setEnvConfigValue(envConfigKey, envConfigValue) {
|
|
16
|
+
const envFilePath = path.join(process.cwd(), '.env');
|
|
17
|
+
const envContent = readEnvContent(envFilePath);
|
|
18
|
+
let keyExists = false;
|
|
19
|
+
let newContent = envContent
|
|
20
|
+
.split('\n')
|
|
21
|
+
.map(line => {
|
|
22
|
+
if (line.startsWith(`${envConfigKey}=`)) {
|
|
23
|
+
keyExists = true;
|
|
24
|
+
return `${envConfigKey}=${envConfigValue}`;
|
|
25
|
+
}
|
|
26
|
+
return line;
|
|
27
|
+
})
|
|
28
|
+
.join('\n');
|
|
29
|
+
if (!keyExists) {
|
|
30
|
+
// Only add a newline if the file is not empty
|
|
31
|
+
if (envContent.length > 0)
|
|
32
|
+
newContent += '\n';
|
|
33
|
+
newContent += `${envConfigKey}=${envConfigValue}`;
|
|
34
|
+
}
|
|
35
|
+
fs.writeFileSync(envFilePath, newContent);
|
|
36
|
+
}
|
|
37
|
+
function readEnvContent(envFilePath) {
|
|
38
|
+
let envContent;
|
|
39
|
+
try {
|
|
40
|
+
envContent = fs.readFileSync(envFilePath, 'utf-8');
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
envContent = '';
|
|
44
|
+
}
|
|
45
|
+
return envContent;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=env-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/env-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAE9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,GAAG,KAAK,YAAY,EAAE;YACxB,OAAO,KAAK,CAAA;SACb;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,cAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAE9C,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,UAAU,GAAG,UAAU;SACxB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE;YACvC,SAAS,GAAG,IAAI,CAAA;YAChB,OAAO,GAAG,YAAY,IAAI,cAAc,EAAE,CAAA;SAC3C;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,IAAI,CAAC,SAAS,EAAE;QACd,8CAA8C;QAC9C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,IAAI,IAAI,CAAA;QAC7C,UAAU,IAAI,GAAG,YAAY,IAAI,cAAc,EAAE,CAAA;KAClD;IAED,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB;IACzC,IAAI,UAAU,CAAA;IAEd,IAAI;QACF,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;KACnD;IAAC,OAAO,KAAK,EAAE;QACd,UAAU,GAAG,EAAE,CAAA;KAChB;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { DevCommandOptions } from '../index.js';
|
|
2
2
|
import { LoadingStateHandlers } from '../../../utils/loading-state-handlers.js';
|
|
3
|
+
import { Platform } from './platform.js';
|
|
3
4
|
export declare class InteractiveTerminal {
|
|
4
5
|
miniHandle: string;
|
|
5
6
|
options: DevCommandOptions;
|
|
6
7
|
loadingHandlers: LoadingStateHandlers;
|
|
8
|
+
currentPlatform: Platform | null;
|
|
9
|
+
currentDeviceId: string | null;
|
|
7
10
|
constructor(options: DevCommandOptions, miniHandle: string);
|
|
8
11
|
startWaitingForCommand: () => void;
|
|
9
12
|
stopWaitingForCommand: () => void;
|
|
@@ -13,7 +16,8 @@ export declare class InteractiveTerminal {
|
|
|
13
16
|
handleKeyPressWrapped: (key: string) => Promise<void>;
|
|
14
17
|
handleKeyPress: (key: string) => Promise<void>;
|
|
15
18
|
showSetupAndroidHomeInstructions(): Promise<void>;
|
|
16
|
-
printDeeplinkQRCode(): Promise<void>;
|
|
17
19
|
private startApp;
|
|
20
|
+
private openDeeplink;
|
|
18
21
|
private get deeplink();
|
|
22
|
+
private getCurrentPlatformAndDeviceId;
|
|
19
23
|
}
|
|
@@ -3,13 +3,14 @@ import open from 'open';
|
|
|
3
3
|
import { androidHomeExists } from '../../config.js';
|
|
4
4
|
import { LoadingStateHandlers } from '../../../utils/loading-state-handlers.js';
|
|
5
5
|
import { maybeLaunchEmulator, promptForAndroidDevices } from './android.js';
|
|
6
|
-
import { getBundleUrl, getDeeplink } from './deeplink.js';
|
|
6
|
+
import { getBundleUrl, getDeeplink, getDeeplinkForMiniViewer, } from './deeplink.js';
|
|
7
7
|
import { DEV_PANEL_BASE_URL } from './metro/metro-server-middleware.js';
|
|
8
8
|
import { Platform } from './platform.js';
|
|
9
|
-
import { printQRCode } from './qr-code.js';
|
|
10
9
|
import { bootSimulator, promptForSimulator } from './simulator.js';
|
|
11
10
|
import { startApp } from './start-app/start-app.js';
|
|
12
11
|
import { DEFAULT_MINIS_PROMPT } from './metro/metro-reporter.js';
|
|
12
|
+
import { promptForScreen, getDeeplinkForScreen, promptForResourceId, checkForExtensions, promptForDevPanelDeeplink, } from './app-screens.js';
|
|
13
|
+
import { handlersForPlatform } from './start-app/config.js';
|
|
13
14
|
const { stdin } = process;
|
|
14
15
|
function clearTerminal() {
|
|
15
16
|
process.stdout.write('\x1B[2J\x1B[3J\x1B[H');
|
|
@@ -19,6 +20,8 @@ export class InteractiveTerminal {
|
|
|
19
20
|
miniHandle;
|
|
20
21
|
options;
|
|
21
22
|
loadingHandlers = new LoadingStateHandlers();
|
|
23
|
+
currentPlatform = null;
|
|
24
|
+
currentDeviceId = null;
|
|
22
25
|
constructor(options, miniHandle) {
|
|
23
26
|
this.miniHandle = miniHandle;
|
|
24
27
|
this.options = options;
|
|
@@ -60,9 +63,14 @@ export class InteractiveTerminal {
|
|
|
60
63
|
console.log(`
|
|
61
64
|
› Press ${chalk.cyan.bold(`a`)} │ Open on Android device or emulator
|
|
62
65
|
› Press ${chalk.cyan.bold(`i`)} │ Open in iOS simulator
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
› Press ${chalk.cyan.bold(`
|
|
66
|
+
`, this.currentDeviceId && this.currentPlatform
|
|
67
|
+
? `
|
|
68
|
+
› Press ${chalk.cyan.bold(`o`)} │ Open the Mini viewer
|
|
69
|
+
› Press ${chalk.cyan.bold(`v`)} │ View your Mini extension in Shop
|
|
70
|
+
`
|
|
71
|
+
: '', `
|
|
72
|
+
› Press ${chalk.cyan.bold(`q`)} │ Scan a QR code to open the Mini in the Shop app on your device
|
|
73
|
+
› Press ${chalk.cyan.bold(`h`)} │ Open Minis Docs in browser
|
|
66
74
|
|
|
67
75
|
${chalk.dim('Press Ctrl+C to exit.')}`);
|
|
68
76
|
}
|
|
@@ -133,20 +141,49 @@ ${chalk.dim('Press Ctrl+C to exit.')}`);
|
|
|
133
141
|
break;
|
|
134
142
|
}
|
|
135
143
|
case 'q': {
|
|
136
|
-
await this.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
// TODO: Should we send these as params? or should the dev panel website already know how to fetch them without the need of query params?
|
|
141
|
-
// Advantage would be that people could just type the base url in the browser whenever they want to open the dev panel. That's impossible with the query params being required
|
|
144
|
+
const deepLink = await promptForDevPanelDeeplink(this.miniHandle, this.options);
|
|
145
|
+
if (!deepLink) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
142
148
|
const paramsObj = {
|
|
143
149
|
bundleUrl: getBundleUrl(this.options.host),
|
|
144
|
-
deepLink
|
|
150
|
+
deepLink,
|
|
145
151
|
};
|
|
146
152
|
const searchParams = `?${new URLSearchParams(paramsObj).toString()}`;
|
|
147
153
|
open(`${DEV_PANEL_BASE_URL}${searchParams}`);
|
|
148
154
|
break;
|
|
149
155
|
}
|
|
156
|
+
case 'h': {
|
|
157
|
+
const url = 'https://shop.app/minis/docs/';
|
|
158
|
+
console.log(`Opening '${url}'`);
|
|
159
|
+
open(url);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case 'o': {
|
|
163
|
+
const { platform, deviceId } = this.getCurrentPlatformAndDeviceId();
|
|
164
|
+
if (platform && deviceId) {
|
|
165
|
+
this.loadingHandlers.loadingStart('Opening mini viewer');
|
|
166
|
+
await this.openDeeplink(platform, deviceId, getDeeplinkForMiniViewer(this.miniHandle, this.options));
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 'v': {
|
|
171
|
+
const { platform, deviceId } = this.getCurrentPlatformAndDeviceId();
|
|
172
|
+
if (platform && deviceId) {
|
|
173
|
+
const screen = await promptForScreen();
|
|
174
|
+
if (!screen) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const resourceId = await promptForResourceId(screen);
|
|
178
|
+
if (!resourceId) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
checkForExtensions(screen, this.options);
|
|
182
|
+
this.loadingHandlers.loadingStart(`Opening ${screen} screen`);
|
|
183
|
+
await this.openDeeplink(platform, deviceId, getDeeplinkForScreen(screen, resourceId));
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
150
187
|
case CTRL_C: {
|
|
151
188
|
this.stopWaitingForCommand();
|
|
152
189
|
process.exit(0);
|
|
@@ -163,13 +200,10 @@ ${chalk.dim('Press Ctrl+C to exit.')}`);
|
|
|
163
200
|
console.log(`See ${chalk.blue.underline.bold('https://developer.android.com/studio/command-line/variables')}`);
|
|
164
201
|
await this.waitForAnyKeyAndPrintInstructions();
|
|
165
202
|
}
|
|
166
|
-
async printDeeplinkQRCode() {
|
|
167
|
-
console.log('\n');
|
|
168
|
-
await printQRCode(getDeeplink(this.miniHandle, this.options, true));
|
|
169
|
-
console.log('Scan the QR code to open Shop Mini on your device (requires the Shop app to be installed)\n');
|
|
170
|
-
}
|
|
171
203
|
async startApp(platform, deviceId) {
|
|
172
204
|
try {
|
|
205
|
+
this.currentPlatform = platform;
|
|
206
|
+
this.currentDeviceId = deviceId;
|
|
173
207
|
await startApp({
|
|
174
208
|
platform,
|
|
175
209
|
deviceId,
|
|
@@ -177,6 +211,18 @@ ${chalk.dim('Press Ctrl+C to exit.')}`);
|
|
|
177
211
|
buildType: this.options.buildType,
|
|
178
212
|
snapshotVersion: this.options.snapshotVersion,
|
|
179
213
|
}, this.loadingHandlers);
|
|
214
|
+
// Show all instructions after the app has started
|
|
215
|
+
this.logInstructions();
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
this.loadingHandlers.loadingEnd('fail', err?.message || err);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async openDeeplink(platform, deviceId, deeplink) {
|
|
222
|
+
try {
|
|
223
|
+
const { openDeeplink } = handlersForPlatform(platform);
|
|
224
|
+
await openDeeplink(deviceId, deeplink);
|
|
225
|
+
this.loadingHandlers.loadingEnd?.();
|
|
180
226
|
}
|
|
181
227
|
catch (err) {
|
|
182
228
|
this.loadingHandlers.loadingEnd('fail', err?.message || err);
|
|
@@ -185,5 +231,12 @@ ${chalk.dim('Press Ctrl+C to exit.')}`);
|
|
|
185
231
|
get deeplink() {
|
|
186
232
|
return getDeeplink(this.miniHandle, this.options);
|
|
187
233
|
}
|
|
234
|
+
getCurrentPlatformAndDeviceId() {
|
|
235
|
+
if (!this.currentPlatform || !this.currentDeviceId) {
|
|
236
|
+
console.log(`\n ${chalk.red.bold(`X`)} No platform or device id set. Run ${chalk.cyan.bold(`i`)} for iOS or ${chalk.cyan.bold(`a`)} for Android before opening a deeplink.`);
|
|
237
|
+
return { platform: null, deviceId: null };
|
|
238
|
+
}
|
|
239
|
+
return { platform: this.currentPlatform, deviceId: this.currentDeviceId };
|
|
240
|
+
}
|
|
188
241
|
}
|
|
189
242
|
//# sourceMappingURL=interactive-terminal.js.map
|