@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.
Files changed (58) hide show
  1. package/build/commands/app/link.js +3 -1
  2. package/build/commands/app/link.js.map +1 -1
  3. package/build/commands/create-mini/index.js +49 -22
  4. package/build/commands/create-mini/index.js.map +1 -1
  5. package/build/commands/dev/utils/app-screens.d.ts +8 -0
  6. package/build/commands/dev/utils/app-screens.js +156 -0
  7. package/build/commands/dev/utils/app-screens.js.map +1 -0
  8. package/build/commands/dev/utils/deeplink.d.ts +2 -1
  9. package/build/commands/dev/utils/deeplink.js +9 -2
  10. package/build/commands/dev/utils/deeplink.js.map +1 -1
  11. package/build/commands/dev/utils/env-config.d.ts +2 -0
  12. package/build/commands/dev/utils/env-config.js +47 -0
  13. package/build/commands/dev/utils/env-config.js.map +1 -0
  14. package/build/commands/dev/utils/interactive-terminal.d.ts +5 -1
  15. package/build/commands/dev/utils/interactive-terminal.js +70 -17
  16. package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
  17. package/build/commands/dev/utils/metro/metro-reporter.js +0 -1
  18. package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
  19. package/build/commands/setup/create.d.ts +1 -0
  20. package/build/commands/setup/create.js +51 -28
  21. package/build/commands/setup/create.js.map +1 -1
  22. package/build/commands/setup/index.js +9 -4
  23. package/build/commands/setup/index.js.map +1 -1
  24. package/build/data/get-linked-apps.d.ts +2 -2
  25. package/build/data/mini-create.d.ts +2 -5
  26. package/build/data/mini-create.js +4 -9
  27. package/build/data/mini-create.js.map +1 -1
  28. package/build/data/mini-link-app.d.ts +3 -2
  29. package/build/data/mini-link-app.js +8 -2
  30. package/build/data/mini-link-app.js.map +1 -1
  31. package/build/data/mini-unlink-app.d.ts +1 -1
  32. package/build/data/mini.d.ts +1 -1
  33. package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +6 -6
  34. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +2 -2
  35. package/build/data/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -1
  36. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +25 -18
  37. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +25 -30
  38. package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
  39. package/build/index.d.ts +1 -1
  40. package/build/index.js +3 -1
  41. package/build/index.js.map +1 -1
  42. package/build/schemas/manifest.schema.json +3 -8
  43. package/build/templates-index.js +5 -0
  44. package/build/templates-index.js.map +1 -1
  45. package/build/utils/sync-manifest.d.ts +2 -2
  46. package/build/utils/sync-manifest.js +9 -6
  47. package/build/utils/sync-manifest.js.map +1 -1
  48. package/package.json +3 -5
  49. package/templates/__template_getting_started/src/App.tsx +29 -0
  50. package/templates/__template_getting_started/src/index.tsx +9 -0
  51. package/templates/__template_getting_started/src/manifest.json +7 -0
  52. package/templates/__template_getting_started/src/screens/ExtensionsScreen.tsx +60 -0
  53. package/templates/__template_getting_started/src/screens/HomeScreen.tsx +127 -0
  54. package/templates/__template_getting_started/src/screens/NativeFeaturesScreen.tsx +103 -0
  55. package/templates/__template_getting_started/src/types/screens.ts +5 -0
  56. package/build/commands/dev/utils/qr-code.d.ts +0 -1
  57. package/build/commands/dev/utils/qr-code.js +0 -5
  58. 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
- .action(async () => {
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,IAAI,EAAE;IACjB,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;KACnC,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"}
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 && TEMPLATE_VALUES.includes(options.template)) {
69
- templateName = options.template;
70
- }
71
- else {
72
- if (options.template) {
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
- templateName = await renderSelectPrompt({
76
- message: 'Select a template',
77
- choices: TEMPLATES.map(template => ({
78
- label: template.title,
79
- value: template.value,
80
- })),
81
- infoTable: TEMPLATES.map(template => ({
82
- header: template.title,
83
- helperText: template.description,
84
- items: [],
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
- await createExtensionFiles({
103
- miniName,
104
- specifiedTarget: options.extensionTarget,
105
- specifiedType: options.extensionType,
106
- miniOutputDir: miniTmpDirPath,
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;IAErB,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,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM;QACnD,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,eAAe,CAAA;IAEnB,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"}
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,2 @@
1
+ export declare function getEnvConfigValue(envConfigKey: string): string | undefined;
2
+ export declare function setEnvConfigValue(envConfigKey: string, envConfigValue: string): void;
@@ -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
- Press ${chalk.cyan.bold(`q`)} │ Print QR code in terminal. Scan to open your Shop Mini on an iOS device with Shop installed
65
- › Press ${chalk.cyan.bold(`d`)} │ Open Developer Dashboard in web browser
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.printDeeplinkQRCode();
137
- break;
138
- }
139
- case 'd': {
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: getDeeplink(this.miniHandle, this.options, true),
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