@shopify/shop-minis-cli 0.0.158 → 0.0.160
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/create-mini/index.js +8 -178
- package/build/commands/create-mini/index.js.map +1 -1
- package/build/commands/create-mini/legacy/index.d.ts +2 -0
- package/build/commands/create-mini/legacy/index.js +178 -0
- package/build/commands/create-mini/legacy/index.js.map +1 -0
- package/build/commands/create-mini/{utils → legacy/utils}/template-app.js +12 -23
- package/build/commands/create-mini/legacy/utils/template-app.js.map +1 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/.eslintignore +1 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/.eslintrc.js +3 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/.graphqlrc.js +1 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/.prettierrc.json +8 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/assets.d.ts +14 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/babel.config.js +5 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/index.tsx +5 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/metro.config.js +3 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/package.json +33 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/App.tsx +23 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/index.tsx +9 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/manifest.json +7 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/screens/HomeScreen.tsx +133 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/screens/NativeFeaturesScreen.tsx +138 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/src/types/screens.ts +5 -0
- package/build/commands/create-mini/standalone/examples/with-getting-started/tsconfig.json +41 -0
- package/build/commands/create-mini/standalone/index.d.ts +2 -0
- package/build/commands/create-mini/standalone/index.js +115 -0
- package/build/commands/create-mini/standalone/index.js.map +1 -0
- package/build/commands/create-mini/utils/examples.d.ts +4 -1
- package/build/commands/create-mini/utils/examples.js +28 -2
- package/build/commands/create-mini/utils/examples.js.map +1 -1
- package/build/commands/create-mini/utils/index.d.ts +2 -0
- package/build/commands/create-mini/utils/index.js +14 -0
- package/build/commands/create-mini/utils/index.js.map +1 -0
- package/build/commands/proxies/apply.js +7 -1
- package/build/commands/proxies/apply.js.map +1 -1
- package/build/commands/submit/submit.js +7 -1
- package/build/commands/submit/submit.js.map +1 -1
- package/build/commands/submit/tasks.d.ts +1 -0
- package/build/commands/submit/tasks.js +32 -1
- package/build/commands/submit/tasks.js.map +1 -1
- package/build/data/proxies/proxies-set.js +4 -0
- package/build/data/proxies/proxies-set.js.map +1 -1
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.d.ts +2 -2
- package/build/data/types/autogenerated/shop-minis-admin-api/gql.js +1 -1
- 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 +22 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +17 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
- package/build/utils/package-manager.d.ts +5 -0
- package/build/utils/package-manager.js +13 -0
- package/build/utils/package-manager.js.map +1 -1
- package/package.json +6 -3
- package/scripts/{test-template.ts → test-create-mini-legacy.ts} +12 -15
- package/scripts/test-create-mini-standalone.ts +63 -0
- package/build/commands/create-mini/utils/template-app.js.map +0 -1
- /package/build/commands/create-mini/{utils → legacy/utils}/template-app.d.ts +0 -0
|
@@ -1,181 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { execSync } from 'child_process';
|
|
4
|
-
import { renderSelectPrompt, renderTasks, renderTextPrompt, } from '@shopify/cli-kit/node/ui';
|
|
5
|
-
import { outputWarn } from '@shopify/cli-kit/node/output';
|
|
6
|
-
import { packageManagerFromUserAgent } from '@shopify/cli-kit/node/node-package-manager';
|
|
7
|
-
import { Command, Option } from 'commander';
|
|
8
|
-
import chalk from 'chalk';
|
|
9
|
-
import _ from 'lodash';
|
|
10
|
-
import { copy } from 'fs-extra';
|
|
11
|
-
import { execAsync } from '../../utils/exec-async-child-process.js';
|
|
12
|
-
import { TEMPLATES, TEMPLATE_VALUES } from '../../templates-index.js';
|
|
13
|
-
import { formatExtensionFiles } from '../create-extension/utils/format-extension-files.js';
|
|
14
|
-
import { EXTENSION_TARGETS_WITH_TEMPLATES } from '../create-extension/constants.js';
|
|
15
|
-
import { ExtensionType } from '../../constants/extensions.js';
|
|
16
|
-
import { createExtensionFiles } from '../create-extension/utils/create-extension-files.js';
|
|
17
|
-
import { generateMiniFromExample, generateMiniFromTemplate, } from './utils/template-app.js';
|
|
18
|
-
function logSuccess(miniName, outputDir, miniDir, useYarn) {
|
|
19
|
-
console.log(`\n \nShop Mini`, chalk.green.bold(`${miniName}`), 'created. Next steps:\n');
|
|
20
|
-
const currentPath = `${process.cwd()}/`;
|
|
21
|
-
const cdAbsolutePath = path.resolve(outputDir, miniDir);
|
|
22
|
-
const cdPath = cdAbsolutePath.startsWith(currentPath)
|
|
23
|
-
? cdAbsolutePath.replace(currentPath, '')
|
|
24
|
-
: cdAbsolutePath;
|
|
25
|
-
console.log(chalk.cyan.bold(` cd ${cdPath}`));
|
|
26
|
-
console.log(chalk.dim(' Open your Shop Mini’s directory\n'));
|
|
27
|
-
console.log(chalk.cyan.bold(` ↪ ${useYarn ? 'yarn' : 'npm'} start`));
|
|
28
|
-
console.log(chalk.dim(' Run Shop Mini, and open it on an iOS or Android device.\n'));
|
|
29
|
-
console.log(chalk.cyan(' ↪ ') +
|
|
30
|
-
chalk.cyan.underline.bold('https://shop.app/minis/docs/'));
|
|
31
|
-
console.log(chalk.dim(' Shop Minis documentation.\n \n'));
|
|
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
|
-
}
|
|
1
|
+
import { loadCommand as loadCreateLegacyMiniCommand } from './legacy/index.js';
|
|
2
|
+
import { loadCommand as loadCreateStandaloneMiniCommand } from './standalone/index.js';
|
|
47
3
|
export function loadCommand(parentProgram) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.option('--useYarn', '(deprecated) Use yarn as package manager instead of npm')
|
|
55
|
-
.option('--alphaMinisRuntime', 'use the alpha tag of @shopify/shop-minis-runtime. uses the latest tag by default')
|
|
56
|
-
.option('--alphaMinisSDK', 'use the alpha tag of @shopify/shop-minis-platform-sdk. uses the latest tag by default')
|
|
57
|
-
.option('--skip-create-extension', 'skip the create extension step')
|
|
58
|
-
.addOption(new Option('--example <example name>', 'name of the example to use'))
|
|
59
|
-
.addOption(new Option('--template <template name>', 'name of the template to use').choices(TEMPLATE_VALUES))
|
|
60
|
-
.addOption(new Option('--extension-target <extension target name>', 'name of the extension target to use').choices(Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)))
|
|
61
|
-
.addOption(new Option('--extension-type <extension type name>', 'name of the extension type to create').choices(Object.values(ExtensionType)))
|
|
62
|
-
.option('--output-dir <path>', 'Specify an output directory for the mini')
|
|
63
|
-
.action(async (miniNameArg, options = {}) => {
|
|
64
|
-
const currentDirectoryName = path.basename(process.cwd());
|
|
65
|
-
// The default has to be out of the 'shop-minis-cli' directory because the cli is using
|
|
66
|
-
// modules but the mini is a commonjs app. Running a cjs project inside a modules project causes various issues.
|
|
67
|
-
const defaultOutputDir = currentDirectoryName === 'shop-minis-cli' ? '..' : '.';
|
|
68
|
-
const outputDir = options.outputDir ?? defaultOutputDir;
|
|
69
|
-
if (!existsSync(outputDir)) {
|
|
70
|
-
console.error(`Unable to create a mini at the specified output dir of ${outputDir}`);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
let miniName;
|
|
74
|
-
let exampleName = null;
|
|
75
|
-
let templateName = null;
|
|
76
|
-
let createChoice = 'advanced';
|
|
77
|
-
try {
|
|
78
|
-
if (options.example) {
|
|
79
|
-
miniName = options.example;
|
|
80
|
-
}
|
|
81
|
-
else if (miniNameArg) {
|
|
82
|
-
miniName = miniNameArg;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
miniName = await renderTextPrompt({
|
|
86
|
-
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.')}`,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (options.example) {
|
|
90
|
-
exampleName = options.example;
|
|
91
|
-
createChoice = 'express';
|
|
92
|
-
}
|
|
93
|
-
else if (options.template) {
|
|
94
|
-
if (TEMPLATE_VALUES.includes(options.template)) {
|
|
95
|
-
templateName = options.template;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
outputWarn(`Template ${options.template} not found. Please select a valid template.`);
|
|
99
|
-
templateName = await selectTemplate();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
createChoice = await renderSelectPrompt({
|
|
104
|
-
message: 'Choose how you want to create your Shop Mini',
|
|
105
|
-
choices: [
|
|
106
|
-
{
|
|
107
|
-
label: 'Express - Start building a Shop Mini immediately',
|
|
108
|
-
value: 'express',
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
label: 'Advanced - Select from templates to create your Shop Mini',
|
|
112
|
-
value: 'advanced',
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
});
|
|
116
|
-
if (createChoice === 'express') {
|
|
117
|
-
templateName = 'getting_started';
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
templateName = await selectTemplate();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const miniDir = _.kebabCase(miniName);
|
|
124
|
-
const miniDirPath = path.resolve(outputDir, miniDir);
|
|
125
|
-
let miniTmpDirPath;
|
|
126
|
-
if (exampleName) {
|
|
127
|
-
await renderTasks([
|
|
128
|
-
{
|
|
129
|
-
title: 'Fetching example',
|
|
130
|
-
task: async () => {
|
|
131
|
-
miniTmpDirPath = await generateMiniFromExample(miniDir, exampleName, options.alphaMinisRuntime, options.alphaMinisSDK);
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
]);
|
|
135
|
-
}
|
|
136
|
-
else if (templateName) {
|
|
137
|
-
await renderTasks([
|
|
138
|
-
{
|
|
139
|
-
title: 'Fetching template',
|
|
140
|
-
task: async () => {
|
|
141
|
-
miniTmpDirPath = await generateMiniFromTemplate(miniName, templateName, miniDir, options.alphaMinisRuntime, options.alphaMinisSDK);
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
]);
|
|
145
|
-
}
|
|
146
|
-
if (!miniTmpDirPath) {
|
|
147
|
-
process.exit(1);
|
|
148
|
-
}
|
|
149
|
-
if (createChoice === 'advanced') {
|
|
150
|
-
await createExtensionFiles({
|
|
151
|
-
miniName,
|
|
152
|
-
specifiedTarget: options.extensionTarget,
|
|
153
|
-
specifiedType: options.extensionType,
|
|
154
|
-
miniOutputDir: miniTmpDirPath,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
await copy(miniTmpDirPath, miniDirPath);
|
|
158
|
-
const useYarn = packageManagerFromUserAgent() === 'yarn';
|
|
159
|
-
// Yarn is ignoring the `resolutions` when you install
|
|
160
|
-
// via `yarn create @shopify/shop-mini` so use `--ignore-engines` to work around the
|
|
161
|
-
// problem with `@apollo/federation`
|
|
162
|
-
// npm fails to install for a similar reason on node 15 but runs fine so we will
|
|
163
|
-
// use `--force` to get everything installed
|
|
164
|
-
const installCmd = useYarn ? 'yarn --ignore-engines' : 'npm i --force';
|
|
165
|
-
await execAsync({
|
|
166
|
-
cmd: installCmd,
|
|
167
|
-
loadingMessage: 'Installing dependencies. This might take a minute...',
|
|
168
|
-
successMessage: 'Dependencies installed',
|
|
169
|
-
}, { cwd: miniDirPath });
|
|
170
|
-
execSync(`${useYarn ? 'yarn' : 'npx'} patch-package --patch-dir node_modules/@shopify/shop-minis-runtime/patches`, { cwd: miniDirPath });
|
|
171
|
-
await formatExtensionFiles(miniDirPath);
|
|
172
|
-
logSuccess(miniName, outputDir, miniDir, useYarn);
|
|
173
|
-
}
|
|
174
|
-
catch (err) {
|
|
175
|
-
console.error(err?.message || err);
|
|
176
|
-
process.exit(1);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
parentProgram.addCommand(command);
|
|
4
|
+
if (process.argv.includes('--legacy')) {
|
|
5
|
+
loadCreateLegacyMiniCommand(parentProgram);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
loadCreateStandaloneMiniCommand(parentProgram);
|
|
9
|
+
}
|
|
180
10
|
}
|
|
181
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,IAAI,2BAA2B,EAAC,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAC,WAAW,IAAI,+BAA+B,EAAC,MAAM,uBAAuB,CAAA;AAEpF,MAAM,UAAU,WAAW,CAAC,aAAsB;IAChD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACrC,2BAA2B,CAAC,aAAa,CAAC,CAAA;KAC3C;SAAM;QACL,+BAA+B,CAAC,aAAa,CAAC,CAAA;KAC/C;AACH,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
import { renderSelectPrompt, renderTasks, renderTextPrompt, } from '@shopify/cli-kit/node/ui';
|
|
5
|
+
import { outputWarn } from '@shopify/cli-kit/node/output';
|
|
6
|
+
import { packageManagerFromUserAgent } from '@shopify/cli-kit/node/node-package-manager';
|
|
7
|
+
import { Command, Option } from 'commander';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { copy } from 'fs-extra';
|
|
10
|
+
import { execAsync } from '../../../utils/exec-async-child-process.js';
|
|
11
|
+
import { TEMPLATES, TEMPLATE_VALUES } from '../../../templates-index.js';
|
|
12
|
+
import { formatExtensionFiles } from '../../create-extension/utils/format-extension-files.js';
|
|
13
|
+
import { EXTENSION_TARGETS_WITH_TEMPLATES } from '../../create-extension/constants.js';
|
|
14
|
+
import { ExtensionType } from '../../../constants/extensions.js';
|
|
15
|
+
import { createExtensionFiles } from '../../create-extension/utils/create-extension-files.js';
|
|
16
|
+
import { getHandleFromName, getOutputDirectory } from '../utils/index.js';
|
|
17
|
+
import { generateMiniFromExample, generateMiniFromTemplate, } from './utils/template-app.js';
|
|
18
|
+
function logSuccess(miniName, outputDir, miniDir, useYarn) {
|
|
19
|
+
console.log(`\n \nShop Mini`, chalk.green.bold(`${miniName}`), 'created. Next steps:\n');
|
|
20
|
+
const currentPath = `${process.cwd()}/`;
|
|
21
|
+
const cdAbsolutePath = path.resolve(outputDir, miniDir);
|
|
22
|
+
const cdPath = cdAbsolutePath.startsWith(currentPath)
|
|
23
|
+
? cdAbsolutePath.replace(currentPath, '')
|
|
24
|
+
: cdAbsolutePath;
|
|
25
|
+
console.log(chalk.cyan.bold(` cd ${cdPath}`));
|
|
26
|
+
console.log(chalk.dim(' Open your Shop Mini’s directory\n'));
|
|
27
|
+
console.log(chalk.cyan.bold(` ↪ ${useYarn ? 'yarn' : 'npm'} start`));
|
|
28
|
+
console.log(chalk.dim(' Run Shop Mini, and open it on an iOS or Android device.\n'));
|
|
29
|
+
console.log(chalk.cyan(' ↪ ') +
|
|
30
|
+
chalk.cyan.underline.bold('https://shop.app/minis/docs/'));
|
|
31
|
+
console.log(chalk.dim(' Shop Minis documentation.\n \n'));
|
|
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
|
+
}
|
|
47
|
+
export function loadCommand(parentProgram) {
|
|
48
|
+
const command = new Command()
|
|
49
|
+
.name('create')
|
|
50
|
+
.description('Create a new Shop Mini')
|
|
51
|
+
.argument('[mini name]', 'the name of your mini')
|
|
52
|
+
.option('--verbose', 'print debugging messages')
|
|
53
|
+
// TODO: Remove `--useYarn` https://github.com/Shopify/shop-minis-cli/issues/190
|
|
54
|
+
.option('--useYarn', '(deprecated) Use yarn as package manager instead of npm')
|
|
55
|
+
.option('--alphaMinisRuntime', 'use the alpha tag of @shopify/shop-minis-runtime. uses the latest tag by default')
|
|
56
|
+
.option('--alphaMinisSDK', 'use the alpha tag of @shopify/shop-minis-platform-sdk. uses the latest tag by default')
|
|
57
|
+
.option('--skip-create-extension', 'skip the create extension step')
|
|
58
|
+
.addOption(new Option('--example <example name>', 'name of the example to use'))
|
|
59
|
+
.addOption(new Option('--template <template name>', 'name of the template to use').choices(TEMPLATE_VALUES))
|
|
60
|
+
.addOption(new Option('--extension-target <extension target name>', 'name of the extension target to use').choices(Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)))
|
|
61
|
+
.addOption(new Option('--extension-type <extension type name>', 'name of the extension type to create').choices(Object.values(ExtensionType)))
|
|
62
|
+
.option('--output-dir <path>', 'Specify an output directory for the mini')
|
|
63
|
+
.option('--legacy', 'Use legacy create command') // TODO: Only used to keep commander happy
|
|
64
|
+
.action(async (miniNameArg, options = {}) => {
|
|
65
|
+
const outputDir = getOutputDirectory(options.outputDir);
|
|
66
|
+
if (!existsSync(outputDir)) {
|
|
67
|
+
console.error(`Unable to create a mini at the specified output dir of ${outputDir}`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
let miniName;
|
|
71
|
+
let exampleName = null;
|
|
72
|
+
let templateName = null;
|
|
73
|
+
let createChoice = 'advanced';
|
|
74
|
+
try {
|
|
75
|
+
if (options.example) {
|
|
76
|
+
miniName = options.example;
|
|
77
|
+
}
|
|
78
|
+
else if (miniNameArg) {
|
|
79
|
+
miniName = miniNameArg;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
miniName = await renderTextPrompt({
|
|
83
|
+
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.')}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (options.example) {
|
|
87
|
+
exampleName = options.example;
|
|
88
|
+
createChoice = 'express';
|
|
89
|
+
}
|
|
90
|
+
else if (options.template) {
|
|
91
|
+
if (TEMPLATE_VALUES.includes(options.template)) {
|
|
92
|
+
templateName = options.template;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
outputWarn(`Template ${options.template} not found. Please select a valid template.`);
|
|
96
|
+
templateName = await selectTemplate();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
createChoice = await renderSelectPrompt({
|
|
101
|
+
message: 'Choose how you want to create your Shop Mini',
|
|
102
|
+
choices: [
|
|
103
|
+
{
|
|
104
|
+
label: 'Express - Start building a Shop Mini immediately',
|
|
105
|
+
value: 'express',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
label: 'Advanced - Select from templates to create your Shop Mini',
|
|
109
|
+
value: 'advanced',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
});
|
|
113
|
+
if (createChoice === 'express') {
|
|
114
|
+
templateName = 'getting_started';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
templateName = await selectTemplate();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const miniDir = getHandleFromName(miniName);
|
|
121
|
+
const miniDirPath = path.resolve(outputDir, miniDir);
|
|
122
|
+
let miniTmpDirPath;
|
|
123
|
+
if (exampleName) {
|
|
124
|
+
await renderTasks([
|
|
125
|
+
{
|
|
126
|
+
title: 'Fetching example',
|
|
127
|
+
task: async () => {
|
|
128
|
+
miniTmpDirPath = await generateMiniFromExample(miniDir, exampleName, options.alphaMinisRuntime, options.alphaMinisSDK);
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
]);
|
|
132
|
+
}
|
|
133
|
+
else if (templateName) {
|
|
134
|
+
await renderTasks([
|
|
135
|
+
{
|
|
136
|
+
title: 'Fetching template',
|
|
137
|
+
task: async () => {
|
|
138
|
+
miniTmpDirPath = await generateMiniFromTemplate(miniName, templateName, miniDir, options.alphaMinisRuntime, options.alphaMinisSDK);
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
]);
|
|
142
|
+
}
|
|
143
|
+
if (!miniTmpDirPath) {
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
if (createChoice === 'advanced') {
|
|
147
|
+
await createExtensionFiles({
|
|
148
|
+
miniName,
|
|
149
|
+
specifiedTarget: options.extensionTarget,
|
|
150
|
+
specifiedType: options.extensionType,
|
|
151
|
+
miniOutputDir: miniTmpDirPath,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
await copy(miniTmpDirPath, miniDirPath);
|
|
155
|
+
const useYarn = packageManagerFromUserAgent() === 'yarn';
|
|
156
|
+
// Yarn is ignoring the `resolutions` when you install
|
|
157
|
+
// via `yarn create @shopify/shop-mini` so use `--ignore-engines` to work around the
|
|
158
|
+
// problem with `@apollo/federation`
|
|
159
|
+
// npm fails to install for a similar reason on node 15 but runs fine so we will
|
|
160
|
+
// use `--force` to get everything installed
|
|
161
|
+
const installCmd = useYarn ? 'yarn --ignore-engines' : 'npm i --force';
|
|
162
|
+
await execAsync({
|
|
163
|
+
cmd: installCmd,
|
|
164
|
+
loadingMessage: 'Installing dependencies. This might take a minute...',
|
|
165
|
+
successMessage: 'Dependencies installed',
|
|
166
|
+
}, { cwd: miniDirPath });
|
|
167
|
+
execSync(`${useYarn ? 'yarn' : 'npx'} patch-package --patch-dir node_modules/@shopify/shop-minis-runtime/patches`, { cwd: miniDirPath });
|
|
168
|
+
await formatExtensionFiles(miniDirPath);
|
|
169
|
+
logSuccess(miniName, outputDir, miniDir, useYarn);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
console.error(err?.message || err);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
parentProgram.addCommand(command);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/create-mini/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAA;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,gBAAgB,GACjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAC,2BAA2B,EAAC,MAAM,4CAA4C,CAAA;AACtF,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,WAAW,CAAA;AACzC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAC,SAAS,EAAC,MAAM,4CAA4C,CAAA;AACpE,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAA;AAC3F,OAAO,EAAC,gCAAgC,EAAC,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAA;AAC3F,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAEhC,SAAS,UAAU,CACjB,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,OAAiB;IAEjB,OAAO,CAAC,GAAG,CACT,gBAAgB,EAChB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,EAC/B,wBAAwB,CACzB,CAAA;IAED,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAA;IACvC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,cAAc,CAAA;IAElB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;IAE7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAA;IACrE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAC3E,CAAA;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAC5D,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,OAAO,kBAAkB,CAAC;QACxB,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;QACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,QAAQ,CAAC,KAAK;YACtB,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;KACJ,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,aAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,wBAAwB,CAAC;SACrC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;QAChD,gFAAgF;SAC/E,MAAM,CACL,WAAW,EACX,yDAAyD,CAC1D;SACA,MAAM,CACL,qBAAqB,EACrB,kFAAkF,CACnF;SACA,MAAM,CACL,iBAAiB,EACjB,uFAAuF,CACxF;SACA,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;SACnE,SAAS,CACR,IAAI,MAAM,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CACrE;SACA,SAAS,CACR,IAAI,MAAM,CACR,4BAA4B,EAC5B,6BAA6B,CAC9B,CAAC,OAAO,CAAC,eAAe,CAAC,CAC3B;SACA,SAAS,CACR,IAAI,MAAM,CACR,4CAA4C,EAC5C,qCAAqC,CACtC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CACzD;SACA,SAAS,CACR,IAAI,MAAM,CACR,wCAAwC,EACxC,sCAAsC,CACvC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CACxC;SACA,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,0CAA0C;SAC1F,MAAM,CACL,KAAK,EACH,WAAoB,EACpB,UASI,EAAE,EACN,EAAE;QACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEvD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC1B,OAAO,CAAC,KAAK,CACX,0DAA0D,SAAS,EAAE,CACtE,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAChB;QAED,IAAI,QAAgB,CAAA;QACpB,IAAI,WAAW,GAAkB,IAAI,CAAA;QACrC,IAAI,YAAY,GAAkB,IAAI,CAAA;QACtC,IAAI,YAAY,GAA2B,UAAU,CAAA;QAErD,IAAI;YACF,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAA;aAC3B;iBAAM,IAAI,WAAW,EAAE;gBACtB,QAAQ,GAAG,WAAW,CAAA;aACvB;iBAAM;gBACL,QAAQ,GAAG,MAAM,gBAAgB,CAAC;oBAChC,OAAO,EAAE,+BAA+B,KAAK,CAAC,GAAG,CAC/C,0BAA0B,CAC3B,EAAE;iBACJ,CAAC,CAAA;aACH;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA;gBAC7B,YAAY,GAAG,SAAS,CAAA;aACzB;iBAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;gBAC3B,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAC9C,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAA;iBAChC;qBAAM;oBACL,UAAU,CACR,YAAY,OAAO,CAAC,QAAQ,6CAA6C,CAC1E,CAAA;oBACD,YAAY,GAAG,MAAM,cAAc,EAAE,CAAA;iBACtC;aACF;iBAAM;gBACL,YAAY,GAAG,MAAM,kBAAkB,CAAC;oBACtC,OAAO,EAAE,8CAA8C;oBACvD,OAAO,EAAE;wBACP;4BACE,KAAK,EAAE,kDAAkD;4BACzD,KAAK,EAAE,SAAS;yBACjB;wBACD;4BACE,KAAK,EACH,2DAA2D;4BAC7D,KAAK,EAAE,UAAU;yBAClB;qBACF;iBACF,CAAC,CAAA;gBAEF,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC9B,YAAY,GAAG,iBAAiB,CAAA;iBACjC;qBAAM;oBACL,YAAY,GAAG,MAAM,cAAc,EAAE,CAAA;iBACtC;aACF;YAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAEpD,IAAI,cAAkC,CAAA;YAEtC,IAAI,WAAW,EAAE;gBACf,MAAM,WAAW,CAAC;oBAChB;wBACE,KAAK,EAAE,kBAAkB;wBACzB,IAAI,EAAE,KAAK,IAAI,EAAE;4BACf,cAAc,GAAG,MAAM,uBAAuB,CAC5C,OAAO,EACP,WAAY,EACZ,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,aAAa,CACtB,CAAA;wBACH,CAAC;qBACF;iBACF,CAAC,CAAA;aACH;iBAAM,IAAI,YAAY,EAAE;gBACvB,MAAM,WAAW,CAAC;oBAChB;wBACE,KAAK,EAAE,mBAAmB;wBAC1B,IAAI,EAAE,KAAK,IAAI,EAAE;4BACf,cAAc,GAAG,MAAM,wBAAwB,CAC7C,QAAQ,EACR,YAAa,EACb,OAAO,EACP,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,aAAa,CACtB,CAAA;wBACH,CAAC;qBACF;iBACF,CAAC,CAAA;aACH;YAED,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aAChB;YAED,IAAI,YAAY,KAAK,UAAU,EAAE;gBAC/B,MAAM,oBAAoB,CAAC;oBACzB,QAAQ;oBACR,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,aAAa,EAAE,cAAc;iBAC9B,CAAC,CAAA;aACH;YAED,MAAM,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAEvC,MAAM,OAAO,GAAG,2BAA2B,EAAE,KAAK,MAAM,CAAA;YAExD,sDAAsD;YACtD,oFAAoF;YACpF,oCAAoC;YACpC,gFAAgF;YAChF,4CAA4C;YAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAA;YAEtE,MAAM,SAAS,CACb;gBACE,GAAG,EAAE,UAAU;gBACf,cAAc,EACZ,sDAAsD;gBACxD,cAAc,EAAE,wBAAwB;aACzC,EACD,EAAC,GAAG,EAAE,WAAW,EAAC,CACnB,CAAA;YAED,QAAQ,CACN,GACE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KACrB,6EAA6E,EAC7E,EAAC,GAAG,EAAE,WAAW,EAAC,CACnB,CAAA;YAED,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAA;YAEvC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAA;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAChB;IACH,CAAC,CACF,CAAA;IAEH,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import url from 'node:url';
|
|
2
|
-
import { mkdtemp
|
|
2
|
+
import { mkdtemp } from 'node:fs/promises';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import { copy, move } from 'fs-extra';
|
|
6
6
|
import _ from 'lodash';
|
|
7
|
-
import { CLI_VERSION } from '
|
|
8
|
-
import { replaceStringsInTemplate } from '
|
|
9
|
-
import { execAsync } from '
|
|
10
|
-
import { getPackageAlphaVersionCommand, getPackageDependencyVersionCommand, getPackageLatestVersionCommand, } from '
|
|
11
|
-
import { COMMON_PACKAGE_DEPENDENCY_VERSIONS } from '
|
|
12
|
-
import { cloneShopMinisRepo, getExample } from '
|
|
7
|
+
import { CLI_VERSION } from '../../../config.js';
|
|
8
|
+
import { replaceStringsInTemplate } from '../../../../utils/replace-strings-in-template.js';
|
|
9
|
+
import { execAsync } from '../../../../utils/exec-async-child-process.js';
|
|
10
|
+
import { getPackageAlphaVersionCommand, getPackageDependencyVersionCommand, getPackageLatestVersionCommand, overridePackageDependencies, } from '../../../../utils/package-manager.js';
|
|
11
|
+
import { COMMON_PACKAGE_DEPENDENCY_VERSIONS } from '../../../../constants/templates.js';
|
|
12
|
+
import { cloneShopMinisRepo, getExample } from '../../utils/examples.js';
|
|
13
13
|
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
14
14
|
export async function generateMiniFromTemplate(name, templateName, miniDir, useAlphaRuntime, useAlphaSDK) {
|
|
15
15
|
const tmpDir = await mkdtemp(path.join(os.tmpdir(), `${miniDir}-`));
|
|
16
|
-
const miniTemplateDir = await path.join(__dirname, '
|
|
16
|
+
const miniTemplateDir = await path.join(__dirname, '../../../../../templates', // TODO: this reads from outside the `build` dir, which is weird
|
|
17
|
+
`__template_${templateName}`);
|
|
17
18
|
const stringsToReplace = {
|
|
18
19
|
__MINI_APP_NAME__: name,
|
|
19
20
|
__MINI_APP_NAME_PASCAL_CASE__: _.startCase(miniDir).replace(/ /g, ''),
|
|
@@ -29,7 +30,8 @@ export async function generateMiniFromTemplate(name, templateName, miniDir, useA
|
|
|
29
30
|
__PACKAGE_VERSION_JEST__: COMMON_PACKAGE_DEPENDENCY_VERSIONS.JEST,
|
|
30
31
|
__PACKAGE_VERSION_PRETTIER__: COMMON_PACKAGE_DEPENDENCY_VERSIONS.PRETTIER,
|
|
31
32
|
};
|
|
32
|
-
const commonTemplateFilesDir = await path.join(__dirname, '
|
|
33
|
+
const commonTemplateFilesDir = await path.join(__dirname, '../../../../../templates', // TODO: this reads from outside the `build` dir, which is weird
|
|
34
|
+
'__template_common');
|
|
33
35
|
await copy(commonTemplateFilesDir, tmpDir);
|
|
34
36
|
await copy(miniTemplateDir, tmpDir);
|
|
35
37
|
await move(path.join(tmpDir, 'gitignore'), path.join(tmpDir, '.gitignore'));
|
|
@@ -41,7 +43,7 @@ export async function generateMiniFromExample(miniDir, exampleName, useAlphaRunt
|
|
|
41
43
|
const shopMinisClonePath = await cloneShopMinisRepo();
|
|
42
44
|
const examplePath = await getExample(shopMinisClonePath, exampleName);
|
|
43
45
|
await copy(examplePath, tmpDir);
|
|
44
|
-
|
|
46
|
+
overridePackageDependencies(tmpDir, {
|
|
45
47
|
dependencies: {
|
|
46
48
|
'@shopify/shop-minis-runtime': await fetchPackageVersion('@shopify/shop-minis-runtime', '0.0.100', useAlphaRuntime),
|
|
47
49
|
'@shopify/shop-minis-platform-sdk': await fetchPackageVersion('@shopify/shop-minis-platform-sdk', '0.1.95', useAlphaSDK),
|
|
@@ -79,17 +81,4 @@ async function getPackageDependencyVersion(packageName, dependencyName, fallback
|
|
|
79
81
|
return fallbackVersion;
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
|
-
const overridePackageDependencies = async (directoryPath, versions) => {
|
|
83
|
-
const packageJsonPath = path.join(directoryPath, 'package.json');
|
|
84
|
-
const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'));
|
|
85
|
-
packageJson.dependencies = {
|
|
86
|
-
...packageJson.dependencies,
|
|
87
|
-
...versions.dependencies,
|
|
88
|
-
};
|
|
89
|
-
packageJson.devDependencies = {
|
|
90
|
-
...packageJson.devDependencies,
|
|
91
|
-
...versions.devDependencies,
|
|
92
|
-
};
|
|
93
|
-
await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
94
|
-
};
|
|
95
84
|
//# sourceMappingURL=template-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-app.js","sourceRoot":"","sources":["../../../../../src/commands/create-mini/legacy/utils/template-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.graphql.d.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('@shopify/shop-minis-sdk/graphqlrc')
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare module '*.svg' {
|
|
2
|
+
const content: import('react').FC<import('react-native-svg').SvgProps>
|
|
3
|
+
export default content
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
declare module '*.png' {
|
|
7
|
+
const content: import('react-native').ImageRequireSource
|
|
8
|
+
export default content
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare module '*.jpg' {
|
|
12
|
+
const content: import('react-native').ImageRequireSource
|
|
13
|
+
export default content
|
|
14
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// Changes to babel config are not supported by the mini platform.
|
|
3
|
+
// Custom configuration can introduce unexpected behaviour in your mini and could be a cause of rejection during the submission process.
|
|
4
|
+
presets: ['@shopify/shop-minis-sdk/babel-preset'],
|
|
5
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "getting-started",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"start": "shop-minis dev",
|
|
7
|
+
"test": "jest",
|
|
8
|
+
"lint": "eslint ."
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@shopify/shop-minis-sdk": "0.0.11"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@shopify/shop-minis-cli": "0.0.158",
|
|
15
|
+
"@types/jest": "^29.2.6",
|
|
16
|
+
"babel-jest": "^26.6.3",
|
|
17
|
+
"eslint": "^8.32.0",
|
|
18
|
+
"jest": "^29.3.1",
|
|
19
|
+
"prettier": "^2.8.2"
|
|
20
|
+
},
|
|
21
|
+
"jest": {
|
|
22
|
+
"preset": "react-native"
|
|
23
|
+
},
|
|
24
|
+
"overrides": {
|
|
25
|
+
"graphql": "15.8.0",
|
|
26
|
+
"react": "18.2.0",
|
|
27
|
+
"react-native": "0.73.2"
|
|
28
|
+
},
|
|
29
|
+
"resolutions": {
|
|
30
|
+
"@apollo/federation": "0.38.1",
|
|
31
|
+
"graphql": "15.8.0"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {createNativeStackNavigator} from '@react-navigation/native-stack'
|
|
2
|
+
|
|
3
|
+
import {HomeScreen} from './screens/HomeScreen'
|
|
4
|
+
import {NativeFeaturesScreen} from './screens/NativeFeaturesScreen'
|
|
5
|
+
|
|
6
|
+
const Stack = createNativeStackNavigator()
|
|
7
|
+
|
|
8
|
+
export function App() {
|
|
9
|
+
return (
|
|
10
|
+
<Stack.Navigator>
|
|
11
|
+
<Stack.Screen
|
|
12
|
+
name="GettingStarted.Home"
|
|
13
|
+
component={HomeScreen}
|
|
14
|
+
options={{headerShown: false}}
|
|
15
|
+
/>
|
|
16
|
+
<Stack.Screen
|
|
17
|
+
name="GettingStarted.NativeFeatures"
|
|
18
|
+
component={NativeFeaturesScreen}
|
|
19
|
+
options={{headerShown: false}}
|
|
20
|
+
/>
|
|
21
|
+
</Stack.Navigator>
|
|
22
|
+
)
|
|
23
|
+
}
|