@shopify/shop-minis-cli 0.0.38 → 0.0.40
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/.eslintrc.cjs +84 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +8 -0
- package/.vscode/shop-minis-cli.code-workspace +8 -0
- package/build/commands/cancel-submission/index.d.ts +2 -0
- package/build/commands/cancel-submission/index.js +22 -0
- package/build/commands/cancel-submission/index.js.map +1 -0
- package/build/commands/cancel-submission/types.d.ts +3 -0
- package/build/commands/cancel-submission/types.js +2 -0
- package/build/commands/cancel-submission/types.js.map +1 -0
- package/build/commands/check-submission/index.d.ts +2 -0
- package/build/commands/check-submission/index.js +22 -0
- package/build/commands/check-submission/index.js.map +1 -0
- package/build/commands/check-submission/types.d.ts +3 -0
- package/build/commands/check-submission/types.js +2 -0
- package/build/commands/check-submission/types.js.map +1 -0
- package/build/commands/config.d.ts +10 -0
- package/build/commands/config.js +34 -0
- package/build/commands/config.js.map +1 -0
- package/build/commands/create-mini/index.js +74 -67
- package/build/commands/create-mini/index.js.map +1 -1
- package/build/commands/create-mini/utils/template-app.js +20 -25
- package/build/commands/create-mini/utils/template-app.js.map +1 -1
- package/build/commands/dev/index.js +13 -20
- package/build/commands/dev/index.js.map +1 -1
- package/build/commands/dev/utils/android.js +34 -48
- package/build/commands/dev/utils/android.js.map +1 -1
- package/build/commands/dev/utils/binaries.d.ts +1 -22
- package/build/commands/dev/utils/binaries.js +19 -98
- package/build/commands/dev/utils/binaries.js.map +1 -1
- package/build/commands/dev/utils/deeplink.d.ts +1 -1
- package/build/commands/dev/utils/deeplink.js +37 -9
- package/build/commands/dev/utils/deeplink.js.map +1 -1
- package/build/commands/dev/utils/interactive-terminal.d.ts +1 -1
- package/build/commands/dev/utils/interactive-terminal.js +46 -52
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-config.js +19 -20
- package/build/commands/dev/utils/metro/metro-config.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-reporter.d.ts +2 -3
- package/build/commands/dev/utils/metro/metro-reporter.js +7 -12
- package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-server-middleware.js +5 -12
- package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -1
- package/build/commands/dev/utils/metro/metro-server.d.ts +1 -1
- package/build/commands/dev/utils/metro/metro-server.js +6 -13
- package/build/commands/dev/utils/metro/metro-server.js.map +1 -1
- package/build/commands/dev/utils/network.d.ts +20 -0
- package/build/commands/dev/utils/network.js +62 -0
- package/build/commands/dev/utils/network.js.map +1 -0
- package/build/commands/dev/utils/qr-code.js +3 -10
- package/build/commands/dev/utils/qr-code.js.map +1 -1
- package/build/commands/dev/utils/simulator.js +25 -35
- package/build/commands/dev/utils/simulator.js.map +1 -1
- package/build/commands/dev/utils/types.d.ts +1 -0
- package/build/commands/dev/utils/types.js +2 -0
- package/build/commands/dev/utils/types.js.map +1 -0
- package/build/commands/dev/utils/with-retries.js +1 -5
- package/build/commands/dev/utils/with-retries.js.map +1 -1
- package/build/commands/generate-graphql-types/index.js +25 -26
- package/build/commands/generate-graphql-types/index.js.map +1 -1
- package/build/commands/schemas/contextual-image.schema.d.ts +22 -0
- package/build/commands/schemas/contextual-image.schema.js +23 -0
- package/build/commands/schemas/contextual-image.schema.js.map +1 -0
- package/build/commands/schemas/contextual-object.schema.d.ts +18 -0
- package/build/commands/schemas/contextual-object.schema.js +19 -0
- package/build/commands/schemas/contextual-object.schema.js.map +1 -0
- package/build/commands/schemas/manifest.schema.d.ts +181 -0
- package/build/commands/schemas/manifest.schema.js +230 -0
- package/build/commands/schemas/manifest.schema.js.map +1 -0
- package/build/commands/schemas/visibility.schema.d.ts +18 -0
- package/build/commands/schemas/visibility.schema.js +19 -0
- package/build/commands/schemas/visibility.schema.js.map +1 -0
- package/build/commands/submit/config.d.ts +9 -0
- package/build/commands/submit/config.js +18 -0
- package/build/commands/submit/config.js.map +1 -0
- package/build/commands/submit/errors.d.ts +19 -0
- package/build/commands/submit/errors.js +87 -0
- package/build/commands/submit/errors.js.map +1 -0
- package/build/commands/submit/gcs.d.ts +6 -0
- package/build/commands/submit/gcs.js +10 -0
- package/build/commands/submit/gcs.js.map +1 -0
- package/build/commands/submit/graphql.d.ts +73 -0
- package/build/commands/submit/graphql.js +100 -0
- package/build/commands/submit/graphql.js.map +1 -0
- package/build/commands/submit/index.d.ts +2 -0
- package/build/commands/submit/index.js +21 -0
- package/build/commands/submit/index.js.map +1 -0
- package/build/commands/submit/submit.d.ts +4 -0
- package/build/commands/submit/submit.js +171 -0
- package/build/commands/submit/submit.js.map +1 -0
- package/build/commands/submit/tasks.d.ts +39 -0
- package/build/commands/submit/tasks.js +167 -0
- package/build/commands/submit/tasks.js.map +1 -0
- package/build/commands/submit/types.d.ts +14 -0
- package/build/commands/submit/types.js +2 -0
- package/build/commands/submit/types.js.map +1 -0
- package/build/commands/submit/validation.d.ts +2 -0
- package/build/commands/submit/validation.js +14 -0
- package/build/commands/submit/validation.js.map +1 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.d.ts +13 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.js +7 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/fragment-masking.js.map +1 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/gql.d.ts +54 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js +21 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/gql.js.map +1 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.d.ts +704 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js +449 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/index.d.ts +2 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/index.js +3 -0
- package/build/commands/types/autogenerated/shop-minis-admin-api/index.js.map +1 -0
- package/build/commands/types/helpers.d.ts +1 -0
- package/build/commands/types/helpers.js +2 -0
- package/build/commands/types/helpers.js.map +1 -0
- package/build/commands/utils/archive.d.ts +30 -0
- package/build/commands/utils/archive.js +38 -0
- package/build/commands/utils/archive.js.map +1 -0
- package/build/commands/utils/exec-async-child-process.d.ts +1 -1
- package/build/commands/utils/exec-async-child-process.js +6 -13
- package/build/commands/utils/exec-async-child-process.js.map +1 -1
- package/build/commands/utils/file.d.ts +1 -0
- package/build/commands/utils/file.js +7 -0
- package/build/commands/utils/file.js.map +1 -0
- package/build/commands/{check/utils/manifest.d.ts → utils/minis-manifest.d.ts} +1 -0
- package/build/commands/utils/minis-manifest.js +42 -0
- package/build/commands/utils/minis-manifest.js.map +1 -0
- package/build/commands/utils/wrap-with-loading-indicator.js +3 -10
- package/build/commands/utils/wrap-with-loading-indicator.js.map +1 -1
- package/build/dev-panel/middleware.js +5 -10
- package/build/dev-panel/middleware.js.map +1 -1
- package/build/index.js +15 -13
- package/build/index.js.map +1 -1
- package/jest.config.ts +11 -0
- package/package.json +5 -8
- package/scripts/graphql-codegen.ts +23 -0
- package/scripts/test-template.ts +63 -0
- package/templates/__template_blank/src/index.tsx +5 -4
- package/templates/__template_common/.eslintrc.json +2 -119
- package/templates/__template_common/gitignore +2 -0
- package/templates/__template_common/index.tsx +2 -3
- package/templates/__template_common/metro.config.js +0 -4
- package/templates/__template_common/package.json +12 -8
- package/templates/__template_common/src/manifest.json +1 -0
- package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +2 -2
- package/templates/__template_hello_world/src/components/quiz/types.ts +2 -2
- package/templates/__template_hello_world/src/index.tsx +5 -4
- package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +6 -5
- package/templates/__template_hello_world/src/screens/QuizScreen.tsx +2 -2
- package/templates/__template_hello_world/src/screens/QuizSlideScreen.tsx +2 -2
- package/templates/__template_snowboardz/src/index.tsx +5 -4
- package/build/commands/check/index.d.ts +0 -6
- package/build/commands/check/index.js +0 -87
- package/build/commands/check/index.js.map +0 -1
- package/build/commands/check/utils/manifest.js +0 -26
- package/build/commands/check/utils/manifest.js.map +0 -1
- package/build/commands/check/utils/schemas/contextual-image.schema.json +0 -21
- package/build/commands/check/utils/schemas/contextual-object.schema.json +0 -17
- package/build/commands/check/utils/schemas/manifest.schema.json +0 -226
- package/build/commands/check/utils/schemas/visibility.schema.json +0 -17
- package/build/commands/check/utils/versions.d.ts +0 -1
- package/build/commands/check/utils/versions.js +0 -14
- package/build/commands/check/utils/versions.js.map +0 -1
- package/build/commands/dev/utils/binaries.test.d.ts +0 -1
- package/build/commands/dev/utils/binaries.test.js +0 -275
- package/build/commands/dev/utils/binaries.test.js.map +0 -1
- package/build/commands/dev/utils/minis-manifest.d.ts +0 -1
- package/build/commands/dev/utils/minis-manifest.js +0 -24
- package/build/commands/dev/utils/minis-manifest.js.map +0 -1
- package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +0 -19
- /package/templates/{__template_blank/src/custom.d.ts → __template_common/assets.d.ts} +0 -0
package/.eslintrc.cjs
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: [
|
|
4
|
+
'@react-native-community',
|
|
5
|
+
'plugin:@shopify/typescript',
|
|
6
|
+
'plugin:@shopify/jest',
|
|
7
|
+
'plugin:@shopify/prettier',
|
|
8
|
+
],
|
|
9
|
+
plugins: ['jest'],
|
|
10
|
+
parserOptions: {
|
|
11
|
+
ecmaVersion: 6,
|
|
12
|
+
project: './tsconfig.eslint.json',
|
|
13
|
+
},
|
|
14
|
+
rules: {
|
|
15
|
+
'@babel/no-unused-expressions': 0,
|
|
16
|
+
'@typescript-eslint/no-unused-expressions': [
|
|
17
|
+
'error',
|
|
18
|
+
{
|
|
19
|
+
allowShortCircuit: true,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
'line-comment-position': 0,
|
|
23
|
+
'no-implicit-coercion': 2,
|
|
24
|
+
'consistent-return': 0,
|
|
25
|
+
'no-console': 0,
|
|
26
|
+
'spaced-comment': 0,
|
|
27
|
+
'no-warning-comments': 'off',
|
|
28
|
+
'no-process-env': 'off',
|
|
29
|
+
'lines-around-comment': 'off',
|
|
30
|
+
'@shopify/typescript/prefer-pascal-case-enums': 'off',
|
|
31
|
+
'@typescript-eslint/naming-convention': 'off',
|
|
32
|
+
'@typescript-eslint/ban-ts-comment': 'off',
|
|
33
|
+
'@typescript-eslint/consistent-indexed-object-style': 'off',
|
|
34
|
+
'@typescript-eslint/member-ordering': 'off',
|
|
35
|
+
'@shopify/jest/no-vague-titles': 'off',
|
|
36
|
+
'import/no-named-as-default': 'off',
|
|
37
|
+
'import/named': 'off',
|
|
38
|
+
'id-blacklist': [2, 'blacklist', 'whitelist'],
|
|
39
|
+
'@typescript-eslint/camelcase': 'off',
|
|
40
|
+
'@typescript-eslint/ban-ts-ignore': 'off',
|
|
41
|
+
'@typescript-eslint/ban-types': 'off',
|
|
42
|
+
'@typescript-eslint/class-name-casing': 'off',
|
|
43
|
+
'@typescript-eslint/array-type': 'off',
|
|
44
|
+
'jest/no-standalone-expect': 'off',
|
|
45
|
+
'jest/no-test-callback': 'off',
|
|
46
|
+
'@typescript-eslint/no-namespace': 'off',
|
|
47
|
+
'jest/valid-title': 'off',
|
|
48
|
+
'@typescript-eslint/no-unused-vars': [
|
|
49
|
+
'error',
|
|
50
|
+
{
|
|
51
|
+
argsIgnorePattern: '^_',
|
|
52
|
+
varsIgnorePattern: '^_.{1,}',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
'@typescript-eslint/no-shadow': 'error',
|
|
56
|
+
'no-shadow': 'off',
|
|
57
|
+
'max-len': [
|
|
58
|
+
'error',
|
|
59
|
+
{
|
|
60
|
+
code: 200,
|
|
61
|
+
ignoreUrls: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
|
|
65
|
+
// Type files generated by codegen have eslint disabled with a comment
|
|
66
|
+
'eslint-comments/no-unlimited-disable': 'off',
|
|
67
|
+
},
|
|
68
|
+
overrides: [
|
|
69
|
+
{
|
|
70
|
+
files: ['*.ts'],
|
|
71
|
+
rules: {
|
|
72
|
+
'@typescript-eslint/no-non-null-assertion': 0,
|
|
73
|
+
'shopify/typescript/prefer-pascal-case-enums': 0,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
files: ['*.spec.*', '*.test.*'],
|
|
78
|
+
rules: {
|
|
79
|
+
'require-await': 2,
|
|
80
|
+
'@typescript-eslint/no-floating-promises': 2,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
3
|
+
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
4
|
+
import { getMiniManifest } from '../utils/minis-manifest.js';
|
|
5
|
+
import { EMAILS } from '../config.js';
|
|
6
|
+
export function loadCommand(parentProgram) {
|
|
7
|
+
const command = new Command()
|
|
8
|
+
.name('cancel-submission')
|
|
9
|
+
.description('cancel a pending submission')
|
|
10
|
+
.option('--verbose', 'print debugging messages') // compatible with cli-kit
|
|
11
|
+
.action(async (args) => {
|
|
12
|
+
const miniHandle = getMiniManifest().handle;
|
|
13
|
+
outputDebug(`Cancel submission args ${JSON.stringify(args)}`);
|
|
14
|
+
outputDebug(`Cancelling submission for mini "${miniHandle}" at ${process.cwd()}`);
|
|
15
|
+
handleError(new AbortError(`Cancelling a submission is not available yet`, 'The feature is a work-in-progress, and should be available soon.', [
|
|
16
|
+
`Contact us in Slack, or email ${EMAILS.CONTACT_US} to cancel the submission.`,
|
|
17
|
+
]));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
20
|
+
parentProgram.addCommand(command);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/cancel-submission/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAE9E,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAInC,MAAM,UAAU,WAAW,CAAC,aAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,mBAAmB,CAAC;SACzB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,0BAA0B;SAC1E,MAAM,CAAC,KAAK,EAAE,IAAiC,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC,MAAM,CAAA;QAE3C,WAAW,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7D,WAAW,CACT,mCAAmC,UAAU,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,CACrE,CAAA;QAED,WAAW,CACT,IAAI,UAAU,CACZ,8CAA8C,EAC9C,kEAAkE,EAClE;YACE,iCAAiC,MAAM,CAAC,UAAU,4BAA4B;SAC/E,CACF,CACF,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEJ,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/cancel-submission/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
3
|
+
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
4
|
+
import { getMiniManifest } from '../utils/minis-manifest.js';
|
|
5
|
+
import { EMAILS } from '../config.js';
|
|
6
|
+
export function loadCommand(parentProgram) {
|
|
7
|
+
const command = new Command()
|
|
8
|
+
.name('check-submission')
|
|
9
|
+
.description('check submissions')
|
|
10
|
+
.option('--verbose', 'print debugging messages') // compatible with cli-kit
|
|
11
|
+
.action(async (args) => {
|
|
12
|
+
const miniHandle = getMiniManifest().handle;
|
|
13
|
+
outputDebug(`Check submission args ${JSON.stringify(args)}`);
|
|
14
|
+
outputDebug(`Checking submissions for mini "${miniHandle}" at ${process.cwd()}`);
|
|
15
|
+
handleError(new AbortError(`Checking on a submission is not available yet`, 'The feature is a work-in-progress, and should be available soon.', [
|
|
16
|
+
`Contact us in Slack, or email ${EMAILS.CONTACT_US} to check the status on the latest submission.`,
|
|
17
|
+
]));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
20
|
+
parentProgram.addCommand(command);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/check-submission/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAE9E,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAInC,MAAM,UAAU,WAAW,CAAC,aAAsB;IAChD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,kBAAkB,CAAC;SACxB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,0BAA0B;SAC1E,MAAM,CAAC,KAAK,EAAE,IAAiC,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC,MAAM,CAAA;QAE3C,WAAW,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5D,WAAW,CACT,kCAAkC,UAAU,QAAQ,OAAO,CAAC,GAAG,EAAE,EAAE,CACpE,CAAA;QAED,WAAW,CACT,IAAI,UAAU,CACZ,+CAA+C,EAC/C,kEAAkE,EAClE;YACE,iCAAiC,MAAM,CAAC,UAAU,gDAAgD;SACnG,CACF,CACF,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEJ,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/check-submission/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const getPackageManager: () => Promise<"yarn" | "npm" | "pnpm">;
|
|
2
|
+
export declare const CLI_VERSION: any;
|
|
3
|
+
export declare const PATHS: {
|
|
4
|
+
CACHE_DIR: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const EMAILS: {
|
|
7
|
+
CONTACT_US: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const SHOP_MINIS_ADMIN_API = "https://server.shop.app/minis/admin-api/alpha/graphql.json";
|
|
10
|
+
export declare const SHOP_MINIS_ADMIN_API_KEY: string | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { getPackageManager as _getPackageManager, } from '@shopify/cli-kit/node/node-package-manager';
|
|
5
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
6
|
+
import * as dotenv from 'dotenv';
|
|
7
|
+
dotenv.config();
|
|
8
|
+
// Guess which package manager the minis developer use based on some heuristics from cli-kit
|
|
9
|
+
let packageManager = null;
|
|
10
|
+
export const getPackageManager = async () => {
|
|
11
|
+
if (!packageManager) {
|
|
12
|
+
// eslint-disable-next-line require-atomic-updates
|
|
13
|
+
packageManager = await _getPackageManager(process.cwd());
|
|
14
|
+
outputDebug(`Preferred package manager has been detected as: ${packageManager}`);
|
|
15
|
+
}
|
|
16
|
+
return packageManager;
|
|
17
|
+
};
|
|
18
|
+
export const CLI_VERSION = createRequire(import.meta.url)('../../package.json').version;
|
|
19
|
+
export const PATHS = {
|
|
20
|
+
CACHE_DIR: path.resolve(process.cwd(), '.minis-cache'),
|
|
21
|
+
};
|
|
22
|
+
export const EMAILS = {
|
|
23
|
+
CONTACT_US: 'shopminisdevelopers@shopify.com',
|
|
24
|
+
};
|
|
25
|
+
export const SHOP_MINIS_ADMIN_API = 'https://server.shop.app/minis/admin-api/alpha/graphql.json';
|
|
26
|
+
export const SHOP_MINIS_ADMIN_API_KEY = process.env.SHOP_MINIS_API_KEY;
|
|
27
|
+
// Create the cache directory if it doesn't exist.
|
|
28
|
+
try {
|
|
29
|
+
fs.mkdirSync(PATHS.CACHE_DIR);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// directory already exists. do nothing
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AACzC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EACL,iBAAiB,IAAI,kBAAkB,GAExC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAEhC,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,4FAA4F;AAC5F,IAAI,cAAc,GAA0B,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;IAC1C,IAAI,CAAC,cAAc,EAAE;QACnB,kDAAkD;QAClD,cAAc,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAExD,WAAW,CACT,mDAAmD,cAAc,EAAE,CACpE,CAAA;KACF;IAED,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACvD,oBAAoB,CACrB,CAAC,OAAO,CAAA;AAET,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,UAAU,EAAE,iCAAiC;CAC9C,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4DAA4D,CAAA;AAE9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;AAEtE,kDAAkD;AAClD,IAAI;IACF,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;CAC9B;AAAC,MAAM;IACN,uCAAuC;CACxC"}
|
|
@@ -1,109 +1,117 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { packageManagerUsedForCreating } from '@shopify/cli-kit/node/node-package-manager';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import { execAsync } from '../utils/exec-async-child-process.js';
|
|
9
|
+
import { wrapWithLoadingIndicator } from '../utils/wrap-with-loading-indicator.js';
|
|
10
|
+
import { generateMiniFromTemplate } from './utils/template-app.js';
|
|
11
|
+
const TEMPLATES = [
|
|
12
|
+
{
|
|
13
|
+
title: 'Snowdevil',
|
|
14
|
+
description: 'Example of a Shop Mini using prebuilt components',
|
|
15
|
+
value: 'snowboardz',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: 'Hello World',
|
|
19
|
+
description: 'Prebuilt components you can play around with',
|
|
20
|
+
value: 'hello_world',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: 'Blank',
|
|
24
|
+
value: 'blank',
|
|
25
|
+
description: 'A blank canvas so you can create from scratch',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
const TEMPLATE_VALUES = TEMPLATES.map(template => template.value);
|
|
29
|
+
function logSuccess(handle, outputDir, useYarn) {
|
|
30
|
+
console.log(`\n \nShop Mini`, chalk.green.bold(`${handle}`), 'created. Next steps:\n');
|
|
18
31
|
const currentPath = `${process.cwd()}/`;
|
|
19
|
-
const cdAbsolutePath =
|
|
32
|
+
const cdAbsolutePath = path.resolve(outputDir, handle);
|
|
20
33
|
const cdPath = cdAbsolutePath.startsWith(currentPath)
|
|
21
34
|
? cdAbsolutePath.replace(currentPath, '')
|
|
22
35
|
: cdAbsolutePath;
|
|
23
|
-
console.log(
|
|
24
|
-
console.log(
|
|
25
|
-
console.log(
|
|
26
|
-
console.log(
|
|
27
|
-
console.log(
|
|
28
|
-
|
|
29
|
-
console.log(
|
|
36
|
+
console.log(chalk.cyan.bold(` cd ${cdPath}`));
|
|
37
|
+
console.log(chalk.dim(' Open your Shop Mini’s directory\n'));
|
|
38
|
+
console.log(chalk.cyan.bold(` ↪ ${useYarn ? 'yarn' : 'npm'} start`));
|
|
39
|
+
console.log(chalk.dim(' Run Shop Mini, and open it on an iOS or Android device.\n'));
|
|
40
|
+
console.log(chalk.cyan(' ↪ ') +
|
|
41
|
+
chalk.cyan.underline.bold('https://shop.app/minis/docs/'));
|
|
42
|
+
console.log(chalk.dim(' Shop Minis documentation.\n \n'));
|
|
30
43
|
}
|
|
31
|
-
async function promptUser(miniNameArg) {
|
|
44
|
+
async function promptUser(miniNameArg, templateNameArg) {
|
|
32
45
|
const questions = [];
|
|
33
|
-
if (miniNameArg
|
|
46
|
+
if (!miniNameArg) {
|
|
34
47
|
questions.push({
|
|
35
48
|
type: 'text',
|
|
36
49
|
name: 'miniName',
|
|
37
|
-
message: `Give your Shop Mini a name. ${
|
|
50
|
+
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.\n')}`,
|
|
38
51
|
});
|
|
39
52
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
value: 'hello_world',
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
title: 'Blank',
|
|
57
|
-
value: 'blank',
|
|
58
|
-
description: 'A blank canvas so you can create from scratch',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
initial: 0,
|
|
62
|
-
});
|
|
53
|
+
if (!templateNameArg || !TEMPLATE_VALUES.includes(templateNameArg)) {
|
|
54
|
+
// TODO: add some logs if the template name was wrong and explain why we are still prompting for selection
|
|
55
|
+
questions.push({
|
|
56
|
+
type: 'select',
|
|
57
|
+
name: 'templateName',
|
|
58
|
+
message: 'Select a template',
|
|
59
|
+
choices: TEMPLATES,
|
|
60
|
+
initial: 0,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (!questions.length) {
|
|
64
|
+
return { miniName: miniNameArg, templateName: templateNameArg };
|
|
65
|
+
}
|
|
63
66
|
const onCancel = () => {
|
|
64
67
|
console.log('\nShop Mini creation stopped at your request. Name not saved.\n');
|
|
65
68
|
process.exit(0);
|
|
66
69
|
};
|
|
67
|
-
const response = await
|
|
70
|
+
const response = await prompts.prompt(questions, { onCancel });
|
|
68
71
|
return {
|
|
69
72
|
miniName: miniNameArg || response.miniName,
|
|
70
73
|
templateName: response.templateName,
|
|
71
74
|
};
|
|
72
75
|
}
|
|
73
|
-
function loadCommand(parentProgram) {
|
|
74
|
-
const command = new
|
|
76
|
+
export function loadCommand(parentProgram) {
|
|
77
|
+
const command = new Command()
|
|
75
78
|
.name('create')
|
|
76
79
|
.description('Create a new Shop Mini')
|
|
77
80
|
.argument('[mini name]', 'the name of your mini')
|
|
78
|
-
|
|
81
|
+
// TODO: Remove `--useYarn` https://github.com/Shopify/shop-minis-cli/issues/190
|
|
82
|
+
.option('--useYarn', '(deprecated) Use yarn as package manager instead of npm')
|
|
83
|
+
.option('--template [template name]', 'Name of the template to use (blank, hello_world, snowboardz)')
|
|
79
84
|
.option('--output-dir [path]', 'Specify an output directory for the mini')
|
|
80
85
|
.action(async (miniNameArg, options = {}) => {
|
|
81
|
-
const
|
|
82
|
-
|
|
86
|
+
const currentDirectoryName = path.basename(process.cwd());
|
|
87
|
+
// The default has to be out of the 'shop-minis-cli' directory because the cli is using
|
|
88
|
+
// modules but the mini is a commonjs app. Running a cjs project inside a modules project causes various issues.
|
|
89
|
+
const defaultOutputDir = currentDirectoryName === 'shop-minis-cli' ? '..' : '.';
|
|
90
|
+
const outputDir = options.outputDir ?? defaultOutputDir;
|
|
91
|
+
if (!fs.existsSync(outputDir)) {
|
|
83
92
|
console.error(`Unable to create a mini at the specified output dir of ${outputDir}`);
|
|
84
93
|
process.exit(1);
|
|
85
94
|
}
|
|
86
95
|
try {
|
|
87
|
-
const { miniName, templateName } = await promptUser(miniNameArg);
|
|
88
|
-
const handle =
|
|
89
|
-
await
|
|
96
|
+
const { miniName, templateName } = await promptUser(miniNameArg, options.template);
|
|
97
|
+
const handle = _.kebabCase(miniName);
|
|
98
|
+
await wrapWithLoadingIndicator(generateMiniFromTemplate(miniName, handle, templateName, outputDir), {
|
|
90
99
|
loadingMessage: 'Fetching template...',
|
|
91
100
|
successMessage: 'Template fetched',
|
|
92
101
|
});
|
|
102
|
+
const useYarn = packageManagerUsedForCreating() === 'yarn';
|
|
93
103
|
// Yarn is ignoring the `resolutions` when you install
|
|
94
104
|
// via `yarn create @shopify/shop-mini` so use `--ignore-engines` to work around the
|
|
95
105
|
// problem with `@apollo/federation`
|
|
96
106
|
// npm fails to install for a similar reason on node 15 but runs fine so we will
|
|
97
107
|
// use `--force` to get everything installed
|
|
98
|
-
const installCmd =
|
|
99
|
-
|
|
100
|
-
:
|
|
101
|
-
await (0, exec_async_child_process_1.execAsync)({
|
|
102
|
-
cmd: `cd ${path_1.default.resolve(outputDir, handle)} && ${installCmd}`,
|
|
108
|
+
const installCmd = useYarn ? 'yarn --ignore-engines' : 'npm i --force';
|
|
109
|
+
await execAsync({
|
|
110
|
+
cmd: `cd ${path.resolve(outputDir, handle)} && ${installCmd}`,
|
|
103
111
|
loadingMessage: 'Installing dependencies. This might take a minute...',
|
|
104
112
|
successMessage: 'Dependencies installed',
|
|
105
113
|
});
|
|
106
|
-
logSuccess(handle,
|
|
114
|
+
logSuccess(handle, outputDir, useYarn);
|
|
107
115
|
}
|
|
108
116
|
catch (err) {
|
|
109
117
|
console.error(err?.message || err);
|
|
@@ -112,5 +120,4 @@ function loadCommand(parentProgram) {
|
|
|
112
120
|
});
|
|
113
121
|
parentProgram.addCommand(command);
|
|
114
122
|
}
|
|
115
|
-
exports.loadCommand = loadCommand;
|
|
116
123
|
//# 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":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
-
const replace_in_file_1 = require("replace-in-file");
|
|
11
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
1
|
+
import url from 'node:url';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import replaceInFile from 'replace-in-file';
|
|
6
|
+
import _ from 'lodash';
|
|
7
|
+
import { CLI_VERSION } from '../../config.js';
|
|
8
|
+
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
12
9
|
async function replaceStringsInTemplate(dir, stringsToReplace) {
|
|
13
10
|
for (const [replaceKey, replaceValue] of Object.entries(stringsToReplace)) {
|
|
14
11
|
const replaceOptions = {
|
|
@@ -19,26 +16,24 @@ async function replaceStringsInTemplate(dir, stringsToReplace) {
|
|
|
19
16
|
ignore: ['**/node_modules/**'],
|
|
20
17
|
},
|
|
21
18
|
};
|
|
22
|
-
await
|
|
19
|
+
await replaceInFile.replaceInFile(replaceOptions);
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
|
-
async function generateMiniFromTemplate(name, handle, templateName, outputDir = '.') {
|
|
26
|
-
const tmpDir = await
|
|
27
|
-
const miniTemplateDir = await
|
|
28
|
-
const miniDestinationDir =
|
|
29
|
-
const CLIVersion = require('../../../../package.json').version; // eslint-disable-line @typescript-eslint/no-var-requires
|
|
22
|
+
export async function generateMiniFromTemplate(name, handle, templateName, outputDir = '.') {
|
|
23
|
+
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), `${handle}-`));
|
|
24
|
+
const miniTemplateDir = await path.join(__dirname, '../../../../templates', `__template_${templateName}`);
|
|
25
|
+
const miniDestinationDir = path.resolve(process.cwd(), outputDir, handle);
|
|
30
26
|
const stringsToReplace = {
|
|
31
27
|
__MINI_APP_NAME__: name,
|
|
32
|
-
__MINI_APP_HANDLE_PASCAL_CASE__:
|
|
28
|
+
__MINI_APP_HANDLE_PASCAL_CASE__: _.startCase(handle).replace(/ /g, ''),
|
|
33
29
|
__MINI_APP_HANDLE_KEBAB_CASE__: handle,
|
|
34
|
-
__SHOP_MINIS_CLI_VERSION__:
|
|
30
|
+
__SHOP_MINIS_CLI_VERSION__: CLI_VERSION,
|
|
35
31
|
};
|
|
36
|
-
const commonTemplateFilesDir = await
|
|
37
|
-
await
|
|
38
|
-
await
|
|
39
|
-
await
|
|
32
|
+
const commonTemplateFilesDir = await path.join(__dirname, '../../../../templates', '__template_common');
|
|
33
|
+
await fs.copy(commonTemplateFilesDir, tmpDir);
|
|
34
|
+
await fs.copy(miniTemplateDir, tmpDir);
|
|
35
|
+
await fs.move(path.join(tmpDir, 'gitignore'), path.join(tmpDir, '.gitignore'));
|
|
40
36
|
await replaceStringsInTemplate(tmpDir, stringsToReplace);
|
|
41
|
-
await
|
|
37
|
+
await fs.copy(tmpDir, miniDestinationDir);
|
|
42
38
|
}
|
|
43
|
-
exports.generateMiniFromTemplate = generateMiniFromTemplate;
|
|
44
39
|
//# sourceMappingURL=template-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-app.js","sourceRoot":"","sources":["../../../../src/commands/create-mini/utils/template-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-app.js","sourceRoot":"","sources":["../../../../src/commands/create-mini/utils/template-app.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAElE,KAAK,UAAU,wBAAwB,CACrC,GAAW,EACX,gBAAwC;IAExC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACzE,MAAM,cAAc,GAAG;YACrB,KAAK,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;YACxB,IAAI,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;YACjC,EAAE,EAAE,YAAY;YAChB,eAAe,EAAE;gBACf,MAAM,EAAE,CAAC,oBAAoB,CAAC;aAC/B;SACF,CAAA;QAED,MAAM,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;KAClD;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAY,EACZ,MAAc,EACd,YAAoB,EACpB,SAAS,GAAG,GAAG;IAEf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IACrE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CACrC,SAAS,EACT,uBAAuB,EACvB,cAAc,YAAY,EAAE,CAC7B,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAEzE,MAAM,gBAAgB,GAAG;QACvB,iBAAiB,EAAE,IAAI;QACvB,+BAA+B,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,8BAA8B,EAAE,MAAM;QACtC,0BAA0B,EAAE,WAAW;KACxC,CAAA;IAED,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5C,SAAS,EACT,uBAAuB,EACvB,mBAAmB,CACpB,CAAA;IAED,MAAM,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IACtC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC9E,MAAM,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAC3C,CAAC"}
|
|
@@ -1,31 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const interactive_terminal_1 = require("./utils/interactive-terminal");
|
|
11
|
-
const metro_server_1 = require("./utils/metro/metro-server");
|
|
12
|
-
const minis_manifest_1 = require("./utils/minis-manifest");
|
|
13
|
-
async function loadCommand(parentProgram) {
|
|
14
|
-
const ip = await (0, internal_ip_1.v4)();
|
|
15
|
-
const command = new commander_1.Command()
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import internalIp from 'internal-ip';
|
|
4
|
+
import { getMiniManifest } from '../utils/minis-manifest.js';
|
|
5
|
+
import { InteractiveTerminal } from './utils/interactive-terminal.js';
|
|
6
|
+
import { runMetro } from './utils/metro/metro-server.js';
|
|
7
|
+
export async function loadCommand(parentProgram) {
|
|
8
|
+
const ip = await internalIp.v4();
|
|
9
|
+
const command = new Command()
|
|
16
10
|
.name('dev')
|
|
17
11
|
.version('2.0.0')
|
|
18
12
|
.description('Start a local dev server for the mini app')
|
|
19
13
|
.option('--reset-cache', 'reset the dev server cache')
|
|
20
14
|
.option('--host <host>', "packager's host", ip)
|
|
21
15
|
.action(async (options) => {
|
|
22
|
-
await
|
|
23
|
-
const miniHandle =
|
|
24
|
-
console.log('Local development environment for',
|
|
25
|
-
const interactiveTerminal = new
|
|
16
|
+
await runMetro(options);
|
|
17
|
+
const miniHandle = getMiniManifest().handle;
|
|
18
|
+
console.log('Local development environment for', chalk.green(miniHandle), 'is running...');
|
|
19
|
+
const interactiveTerminal = new InteractiveTerminal(options);
|
|
26
20
|
interactiveTerminal.start();
|
|
27
21
|
});
|
|
28
22
|
parentProgram.addCommand(command);
|
|
29
23
|
}
|
|
30
|
-
exports.loadCommand = loadCommand;
|
|
31
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dev/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dev/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,UAAU,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAA;AAOtD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAsB;IACtD,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,CAAA;IAEhC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,KAAK,CAAC;SACX,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,4BAA4B,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,EAAE,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;QAEvB,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC,MAAM,CAAA;QAC3C,OAAO,CAAC,GAAG,CACT,mCAAmC,EACnC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EACvB,eAAe,CAChB,CAAA;QAED,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC5D,mBAAmB,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEJ,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|