@shopify/shop-minis-cli 0.0.136 → 0.0.138
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/codemod/releases/index.js +2 -0
- package/build/commands/codemod/releases/index.js.map +1 -1
- package/build/commands/create-extension/index.js +14 -68
- package/build/commands/create-extension/index.js.map +1 -1
- package/build/commands/create-extension/types.d.ts +2 -1
- package/build/commands/create-extension/utils/add-target-to-config.d.ts +1 -1
- package/build/commands/create-extension/utils/add-target-to-config.js +2 -15
- package/build/commands/create-extension/utils/add-target-to-config.js.map +1 -1
- package/build/commands/create-extension/utils/create-extension-files.d.ts +11 -0
- package/build/commands/create-extension/utils/create-extension-files.js +96 -0
- package/build/commands/create-extension/utils/create-extension-files.js.map +1 -0
- package/build/commands/create-extension/utils/format-extension-files.d.ts +1 -0
- package/build/commands/create-extension/utils/format-extension-files.js +22 -0
- package/build/commands/create-extension/utils/format-extension-files.js.map +1 -0
- package/build/commands/create-mini/index.js +60 -65
- package/build/commands/create-mini/index.js.map +1 -1
- package/build/commands/create-mini/utils/template-app.d.ts +1 -1
- package/build/commands/create-mini/utils/template-app.js +2 -3
- package/build/commands/create-mini/utils/template-app.js.map +1 -1
- package/build/commands/dev/utils/default-screen.d.ts +2 -0
- package/build/commands/dev/utils/default-screen.js +171 -0
- package/build/commands/dev/utils/default-screen.js.map +1 -0
- package/build/commands/dev/utils/interactive-terminal.d.ts +1 -2
- package/build/commands/dev/utils/interactive-terminal.js +38 -12
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -1
- package/build/commands/open-default-screen/index.d.ts +14 -0
- package/build/commands/open-default-screen/index.js +101 -0
- package/build/commands/open-default-screen/index.js.map +1 -0
- package/build/commands/open-default-screen/utils/prompt-deeplink-host.d.ts +6 -0
- package/build/commands/open-default-screen/utils/prompt-deeplink-host.js +33 -0
- package/build/commands/open-default-screen/utils/prompt-deeplink-host.js.map +1 -0
- package/build/commands/submit/submit.js +69 -34
- package/build/commands/submit/submit.js.map +1 -1
- package/build/commands/submit/utils/request-entry-point-params.js +6 -4
- package/build/commands/submit/utils/request-entry-point-params.js.map +1 -1
- package/build/commands/submit/validation.d.ts +1 -1
- package/build/commands/submit/validation.js +4 -1
- package/build/commands/submit/validation.js.map +1 -1
- package/build/commands/validate-manifest/index.js +11 -2
- package/build/commands/validate-manifest/index.js.map +1 -1
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.d.ts +2 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js +2 -0
- package/build/data/types/autogenerated/shop-minis-admin-api/graphql.js.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/utils/minis-manifest.js +25 -2
- package/build/utils/minis-manifest.js.map +1 -1
- package/build/utils/package-manager.d.ts +1 -1
- package/package.json +3 -3
- package/scripts/test-template.ts +1 -1
- package/templates/extensions/components/__template_blank/render.tsx +9 -2
|
@@ -33,6 +33,7 @@ import v0x0x115Upgrade from './v0-0-115.js';
|
|
|
33
33
|
import v0x0x121Upgrade from './v0-0-121.js';
|
|
34
34
|
import v0x0x123Upgrade from './v0-0-123.js';
|
|
35
35
|
import v0x0x125Upgrade from './v0-0-125.js';
|
|
36
|
+
import v0x0x130Upgrade from './v0-0-130.js';
|
|
36
37
|
const upgrades = [
|
|
37
38
|
v0x0x42Upgrade,
|
|
38
39
|
v0x0x43Upgrade,
|
|
@@ -66,6 +67,7 @@ const upgrades = [
|
|
|
66
67
|
v0x0x121Upgrade,
|
|
67
68
|
v0x0x123Upgrade,
|
|
68
69
|
v0x0x125Upgrade,
|
|
70
|
+
v0x0x130Upgrade,
|
|
69
71
|
];
|
|
70
72
|
// the list of upgrades must be sorted by version. just making sure of it
|
|
71
73
|
upgrades.sort(({ version: upgradeVersion1 }, { version: upgradeVersion2 }) => semverGreaterThan(upgradeVersion1, upgradeVersion2) ? 1 : -1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/codemod/releases/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/codemod/releases/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +1,33 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
3
2
|
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
4
|
-
import {
|
|
3
|
+
import { renderSuccess } from '@shopify/cli-kit/node/ui';
|
|
5
4
|
import { Command, Option } from 'commander';
|
|
6
|
-
import {
|
|
5
|
+
import { ExtensionType } from '../../constants/extensions.js';
|
|
7
6
|
import { getMiniManifest } from '../../utils/minis-manifest.js';
|
|
8
7
|
import { getRunBinCommand } from '../../utils/package-manager.js';
|
|
9
8
|
import { getMiniBasePath } from '../../utils/path.js';
|
|
10
|
-
import { DEFAULT_OUTPUT_DIR,
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
function isExtensionTarget(value) {
|
|
14
|
-
return Object.values(ExtensionTarget).includes(value);
|
|
15
|
-
}
|
|
9
|
+
import { DEFAULT_OUTPUT_DIR, EXTENSION_TARGETS_WITH_TEMPLATES_KEYS, } from './constants.js';
|
|
10
|
+
import { formatExtensionFiles } from './utils/format-extension-files.js';
|
|
11
|
+
import { createExtensionFiles } from './utils/create-extension-files.js';
|
|
16
12
|
export function loadCommand(parentProgram) {
|
|
17
13
|
const command = new Command()
|
|
18
14
|
.name('create-extension')
|
|
19
15
|
.description('Add an extension to your mini')
|
|
20
16
|
.addOption(new Option('--target <extension target>', 'the location of the extension').choices(EXTENSION_TARGETS_WITH_TEMPLATES_KEYS))
|
|
17
|
+
.addOption(new Option('--type <extension type>', 'the type of the extension').choices(Object.values(ExtensionType)))
|
|
21
18
|
.option('--silent')
|
|
22
19
|
.option('--verbose', 'print debugging messages') // compatible with cli-kit
|
|
23
20
|
.action(async (args) => {
|
|
24
21
|
outputDebug(`create-extension args ${JSON.stringify(args)}`);
|
|
25
22
|
const manifest = getMiniManifest();
|
|
26
23
|
const resolvedOutputDir = path.resolve(getMiniBasePath(), DEFAULT_OUTPUT_DIR);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
choices: Object.entries(EXTENSION_TARGETS_WITH_TEMPLATES).map(([key, { label }]) => ({
|
|
35
|
-
label,
|
|
36
|
-
value: key,
|
|
37
|
-
})),
|
|
38
|
-
}));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
target = Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)[0];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const targetConfig = EXTENSION_TARGETS_WITH_TEMPLATES[target];
|
|
45
|
-
const possibleExtensionTypes = EXTENSION_PAGE_CONFIG[targetConfig.page].templates;
|
|
46
|
-
let extensionType = possibleExtensionTypes[0];
|
|
47
|
-
if (possibleExtensionTypes.length > 1) {
|
|
48
|
-
extensionType = (await renderSelectPrompt({
|
|
49
|
-
message: 'Select the type of extension you want to create',
|
|
50
|
-
choices: possibleExtensionTypes.map(type => ({
|
|
51
|
-
label: EXTENSION_TYPE_CONFIG[type].label,
|
|
52
|
-
value: type,
|
|
53
|
-
})),
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
outputDebug(`create-extension target: "${target}", type: "${extensionType}", output: ${resolvedOutputDir}`);
|
|
57
|
-
let configUpdated = false;
|
|
58
|
-
const errors = [];
|
|
59
|
-
try {
|
|
60
|
-
await createExtensionFromTemplate(manifest.name, targetConfig.page, target, extensionType, resolvedOutputDir);
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
// If we fail here there's no point continuing
|
|
64
|
-
handleError(error);
|
|
65
|
-
return process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
await addTargetToConfig(target);
|
|
69
|
-
configUpdated = true;
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
// We can continue at this point with extra instructions for fixing this manually
|
|
73
|
-
errors.push(new AbortError('Could not automatically link your new extension', `Failed to update your mini config: ${error}`, [
|
|
74
|
-
[
|
|
75
|
-
'Manually add your new',
|
|
76
|
-
{
|
|
77
|
-
command: target,
|
|
78
|
-
},
|
|
79
|
-
'extension to your mini config file',
|
|
80
|
-
],
|
|
81
|
-
]));
|
|
82
|
-
}
|
|
83
|
-
const completedFully = errors.length === 0;
|
|
84
|
-
errors.forEach(handleError);
|
|
24
|
+
const { configUpdated, completedFully, target } = await createExtensionFiles({
|
|
25
|
+
miniName: manifest.name,
|
|
26
|
+
specifiedTarget: args.target,
|
|
27
|
+
specifiedType: args.type,
|
|
28
|
+
miniOutputDir: getMiniBasePath(),
|
|
29
|
+
});
|
|
30
|
+
await formatExtensionFiles(getMiniBasePath());
|
|
85
31
|
const nextSteps = [
|
|
86
32
|
[
|
|
87
33
|
'To start your mini with your new extension, run:\n',
|
|
@@ -114,7 +60,7 @@ export function loadCommand(parentProgram) {
|
|
|
114
60
|
},
|
|
115
61
|
},
|
|
116
62
|
],
|
|
117
|
-
nextSteps
|
|
63
|
+
nextSteps,
|
|
118
64
|
});
|
|
119
65
|
});
|
|
120
66
|
parentProgram.addCommand(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-extension/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-extension/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ExtensionTarget } from '../../../constants/extensions.js';
|
|
2
|
-
export declare function addTargetToConfig(target: ExtensionTarget): Promise<void>;
|
|
2
|
+
export declare function addTargetToConfig(target: ExtensionTarget, miniBasePath: string): Promise<void>;
|
|
@@ -3,9 +3,6 @@ import path from 'node:path';
|
|
|
3
3
|
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
4
4
|
import _ from 'lodash';
|
|
5
5
|
import { ensureImportOf, ensureObjectProperty, findObjectExpression, j, } from '../../../utils/codemod.js';
|
|
6
|
-
import { execAsync } from '../../../utils/exec-async-child-process.js';
|
|
7
|
-
import { getRunBinCommand } from '../../../utils/package-manager.js';
|
|
8
|
-
import { getMiniBasePath } from '../../../utils/path.js';
|
|
9
6
|
const runCodemod = (fileContents, target) => {
|
|
10
7
|
const root = j(fileContents);
|
|
11
8
|
const importName = _.startCase(target).replace(/ /g, '').replace(/^Shop/g, '');
|
|
@@ -33,8 +30,8 @@ const runCodemod = (fileContents, target) => {
|
|
|
33
30
|
});
|
|
34
31
|
return root.toSource();
|
|
35
32
|
};
|
|
36
|
-
export async function addTargetToConfig(target) {
|
|
37
|
-
const configFilePath = path.join(
|
|
33
|
+
export async function addTargetToConfig(target, miniBasePath) {
|
|
34
|
+
const configFilePath = path.join(miniBasePath, 'src', 'index.tsx');
|
|
38
35
|
outputDebug(`Adding ${target} target to ${configFilePath}`);
|
|
39
36
|
const configFile = await readFile(configFilePath, 'utf8');
|
|
40
37
|
if (!configFile || !configFile.includes('MiniAppConfig')) {
|
|
@@ -47,15 +44,5 @@ export async function addTargetToConfig(target) {
|
|
|
47
44
|
}
|
|
48
45
|
outputDebug(`Saving changes to ${configFilePath}`);
|
|
49
46
|
await writeFile(configFilePath, result, 'utf8');
|
|
50
|
-
const prettierCmd = await getRunBinCommand(`prettier -w ${configFilePath}`);
|
|
51
|
-
outputDebug(`Running ${prettierCmd}`);
|
|
52
|
-
await execAsync({
|
|
53
|
-
cmd: prettierCmd,
|
|
54
|
-
});
|
|
55
|
-
const eslintCmd = await getRunBinCommand(`eslint ${configFilePath} --fix`);
|
|
56
|
-
outputDebug(`Running ${eslintCmd}`);
|
|
57
|
-
await execAsync({
|
|
58
|
-
cmd: eslintCmd,
|
|
59
|
-
});
|
|
60
47
|
}
|
|
61
48
|
//# sourceMappingURL=add-target-to-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-target-to-config.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/add-target-to-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAA;AACpD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,CAAC,MAAM,QAAQ,CAAA;AAGtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,CAAC,GACF,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"add-target-to-config.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/add-target-to-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAA;AACpD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,CAAC,MAAM,QAAQ,CAAA;AAGtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,CAAC,GACF,MAAM,2BAA2B,CAAA;AAElC,MAAM,UAAU,GAAG,CAAC,YAAoB,EAAE,MAAuB,EAAE,EAAE;IACnE,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAA;IAE5B,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC9E,MAAM,UAAU,GAAG,aAAa,MAAM,SAAS,CAAA;IAC/C,MAAM,kBAAkB,GAAG,QAAQ,CAAA;IAEnC,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEzD,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;KAChD;IAED,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAEhE,MAAM,aAAa,GAAG,oBAAoB,CAAC;QACzC,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,SAAS;QACd,YAAY,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;KACrC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAA;IACxC,IAAI,YAAY,CAAC,IAAI,KAAK,kBAAkB,EAAE;QAC5C,MAAM,IAAI,KAAK,CACb,mEAAmE,YAAY,CAAC,IAAI,EAAE,CACvF,CAAA;KACF;IAED,oBAAoB,CAAC;QACnB,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,MAAM;QACX,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACtC,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IAEF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAuB,EACvB,YAAoB;IAEpB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAElE,WAAW,CAAC,UAAU,MAAM,cAAc,cAAc,EAAE,CAAC,CAAA;IAE3D,MAAM,UAAU,GAAW,MAAM,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;IAEjE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;QACxD,MAAM,IAAI,KAAK,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAA;KAC/D;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE7C,IAAI,MAAM,KAAK,UAAU,EAAE;QACzB,WAAW,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAA;QACnD,OAAM;KACP;IAED,WAAW,CAAC,qBAAqB,cAAc,EAAE,CAAC,CAAA;IAElD,MAAM,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ExtensionTarget } from '../../../constants/extensions.js';
|
|
2
|
+
export declare function createExtensionFiles({ miniName, specifiedTarget, specifiedType, miniOutputDir, }: {
|
|
3
|
+
miniName: string;
|
|
4
|
+
specifiedTarget?: string;
|
|
5
|
+
specifiedType?: string;
|
|
6
|
+
miniOutputDir: string;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
configUpdated: boolean;
|
|
9
|
+
completedFully: boolean;
|
|
10
|
+
target: ExtensionTarget;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
3
|
+
import { outputDebug, outputWarn } from '@shopify/cli-kit/node/output';
|
|
4
|
+
import { renderSelectPrompt } from '@shopify/cli-kit/node/ui';
|
|
5
|
+
import { ExtensionTarget } from '../../../constants/extensions.js';
|
|
6
|
+
import { DEFAULT_OUTPUT_DIR, EXTENSION_PAGE_CONFIG, EXTENSION_TARGETS_WITH_TEMPLATES, EXTENSION_TYPE_CONFIG, } from '../constants.js';
|
|
7
|
+
import { addTargetToConfig } from '../utils/add-target-to-config.js';
|
|
8
|
+
import { createExtensionFromTemplate } from '../utils/create-from-template.js';
|
|
9
|
+
function isExtensionTarget(value) {
|
|
10
|
+
return Object.values(ExtensionTarget).includes(value);
|
|
11
|
+
}
|
|
12
|
+
function getExtensionType(value, possibleExtensionTypes) {
|
|
13
|
+
const extensionType = possibleExtensionTypes.find(type => type === value);
|
|
14
|
+
if (!extensionType) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return extensionType;
|
|
18
|
+
}
|
|
19
|
+
export async function createExtensionFiles({ miniName, specifiedTarget, specifiedType, miniOutputDir, }) {
|
|
20
|
+
let target = isExtensionTarget(specifiedTarget)
|
|
21
|
+
? specifiedTarget
|
|
22
|
+
: null;
|
|
23
|
+
if (!target || !EXTENSION_TARGETS_WITH_TEMPLATES[target]) {
|
|
24
|
+
if (Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES).length > 1) {
|
|
25
|
+
target = (await renderSelectPrompt({
|
|
26
|
+
message: 'Select the extension target where your Mini will be shown. You can check more details here: https://shop.app/minis/docs/extensions/introduction/#steps',
|
|
27
|
+
choices: Object.entries(EXTENSION_TARGETS_WITH_TEMPLATES).map(([key, { label }]) => ({
|
|
28
|
+
label,
|
|
29
|
+
value: key,
|
|
30
|
+
})),
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
target = Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)[0];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const targetConfig = EXTENSION_TARGETS_WITH_TEMPLATES[target];
|
|
38
|
+
const possibleExtensionTypes = EXTENSION_PAGE_CONFIG[targetConfig.page].templates;
|
|
39
|
+
let extensionType = getExtensionType(specifiedType, possibleExtensionTypes);
|
|
40
|
+
const specifiedTypeIsValid = Boolean(extensionType);
|
|
41
|
+
if (specifiedType && !specifiedTypeIsValid) {
|
|
42
|
+
outputWarn('The specified extension type is not available for this target, please choose a new one.');
|
|
43
|
+
}
|
|
44
|
+
if (!specifiedTypeIsValid) {
|
|
45
|
+
extensionType = possibleExtensionTypes[0];
|
|
46
|
+
}
|
|
47
|
+
if (!specifiedTypeIsValid && possibleExtensionTypes.length > 1) {
|
|
48
|
+
extensionType = (await renderSelectPrompt({
|
|
49
|
+
message: 'Select the type of extension you want to create',
|
|
50
|
+
choices: possibleExtensionTypes.map(type => ({
|
|
51
|
+
label: EXTENSION_TYPE_CONFIG[type].label,
|
|
52
|
+
value: type,
|
|
53
|
+
})),
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
if (!extensionType) {
|
|
57
|
+
// This should never happen but it helps with typechecking
|
|
58
|
+
return process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const resolvedOutputDir = path.resolve(miniOutputDir, DEFAULT_OUTPUT_DIR);
|
|
61
|
+
outputDebug(`create-extension target: "${target}", type: "${extensionType}", output: ${resolvedOutputDir}`);
|
|
62
|
+
let configUpdated = false;
|
|
63
|
+
const errors = [];
|
|
64
|
+
try {
|
|
65
|
+
await createExtensionFromTemplate(miniName, targetConfig.page, target, extensionType, resolvedOutputDir);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
// If we fail here there's no point continuing
|
|
69
|
+
handleError(error);
|
|
70
|
+
return process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
await addTargetToConfig(target, miniOutputDir);
|
|
74
|
+
configUpdated = true;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
// We can continue at this point with extra instructions for fixing this manually
|
|
78
|
+
errors.push(new AbortError('Could not automatically link your new extension', `Failed to update your mini config: ${error}`, [
|
|
79
|
+
[
|
|
80
|
+
'Manually add your new',
|
|
81
|
+
{
|
|
82
|
+
command: target,
|
|
83
|
+
},
|
|
84
|
+
'extension to your mini config file',
|
|
85
|
+
],
|
|
86
|
+
]));
|
|
87
|
+
}
|
|
88
|
+
const completedFully = errors.length === 0;
|
|
89
|
+
errors.forEach(handleError);
|
|
90
|
+
return {
|
|
91
|
+
configUpdated,
|
|
92
|
+
completedFully,
|
|
93
|
+
target,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=create-extension-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-extension-files.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/create-extension-files.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,eAAe,EAAgB,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAA;AAE5E,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAA;AAC1E,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAyB,EACzB,sBAAuC;IAEvC,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;IACzE,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,QAAQ,EACR,eAAe,EACf,aAAa,EACb,aAAa,GAMd;IACC,IAAI,MAAM,GAA2B,iBAAiB,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,EAAE;QACxD,IAAI,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,GAAG,CAAC,MAAM,kBAAkB,CAAS;gBACzC,OAAO,EACL,wJAAwJ;gBAC1J,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAC3D,CAAC,CAAC,GAAG,EAAE,EAAC,KAAK,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnB,KAAK;oBACL,KAAK,EAAE,GAAG;iBACX,CAAC,CACH;aACF,CAAC,CAAoB,CAAA;SACvB;aAAM;YACL,MAAM,GAAG,MAAM,CAAC,IAAI,CAClB,gCAAgC,CACjC,CAAC,CAAC,CAAoB,CAAA;SACxB;KACF;IAED,MAAM,YAAY,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,sBAAsB,GAC1B,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAA;IAEpD,IAAI,aAAa,GAAG,gBAAgB,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;IAE3E,MAAM,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAEnD,IAAI,aAAa,IAAI,CAAC,oBAAoB,EAAE;QAC1C,UAAU,CACR,yFAAyF,CAC1F,CAAA;KACF;IAED,IAAI,CAAC,oBAAoB,EAAE;QACzB,aAAa,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;KAC1C;IAED,IAAI,CAAC,oBAAoB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9D,aAAa,GAAG,CAAC,MAAM,kBAAkB,CAAS;YAChD,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3C,KAAK,EAAE,qBAAqB,CAAC,IAAqB,CAAC,CAAC,KAAK;gBACzD,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;SACJ,CAAC,CAAkB,CAAA;KACrB;IAED,IAAI,CAAC,aAAa,EAAE;QAClB,0DAA0D;QAC1D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;IAEzE,WAAW,CACT,6BAA6B,MAAM,aAAa,aAAa,cAAc,iBAAiB,EAAE,CAC/F,CAAA;IAED,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,MAAM,MAAM,GAAiB,EAAE,CAAA;IAE/B,IAAI;QACF,MAAM,2BAA2B,CAC/B,QAAQ,EACR,YAAY,CAAC,IAAI,EACjB,MAAM,EACN,aAAa,EACb,iBAAiB,CAClB,CAAA;KACF;IAAC,OAAO,KAAK,EAAE;QACd,8CAA8C;QAC9C,WAAW,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,IAAI;QACF,MAAM,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC9C,aAAa,GAAG,IAAI,CAAA;KACrB;IAAC,OAAO,KAAK,EAAE;QACd,iFAAiF;QACjF,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,iDAAiD,EACjD,sCAAsC,KAAK,EAAE,EAC7C;YACE;gBACE,uBAAuB;gBACvB;oBACE,OAAO,EAAE,MAAM;iBAChB;gBACD,oCAAoC;aACrC;SACF,CACF,CACF,CAAA;KACF;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;IAE1C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAE3B,OAAO;QACL,aAAa;QACb,cAAc;QACd,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatExtensionFiles(miniBasePath: string): Promise<void>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
3
|
+
import { execAsync } from '../../../utils/exec-async-child-process.js';
|
|
4
|
+
import { getRunBinCommand } from '../../../utils/package-manager.js';
|
|
5
|
+
export async function formatExtensionFiles(miniBasePath) {
|
|
6
|
+
const configFilePath = path.join(miniBasePath, 'src', 'index.tsx');
|
|
7
|
+
const prettierCmd = await getRunBinCommand(`prettier -w ${configFilePath}`);
|
|
8
|
+
outputDebug(`Running ${prettierCmd}`);
|
|
9
|
+
await execAsync({
|
|
10
|
+
cmd: prettierCmd,
|
|
11
|
+
}, {
|
|
12
|
+
cwd: miniBasePath,
|
|
13
|
+
});
|
|
14
|
+
const eslintCmd = await getRunBinCommand(`eslint ${configFilePath} --fix`);
|
|
15
|
+
outputDebug(`Running ${eslintCmd}`);
|
|
16
|
+
await execAsync({
|
|
17
|
+
cmd: eslintCmd,
|
|
18
|
+
}, {
|
|
19
|
+
cwd: miniBasePath,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=format-extension-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-extension-files.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/format-extension-files.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,SAAS,EAAC,MAAM,4CAA4C,CAAA;AACpE,OAAO,EAAC,gBAAgB,EAAC,MAAM,mCAAmC,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAoB;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAClE,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,eAAe,cAAc,EAAE,CAAC,CAAA;IAC3E,WAAW,CAAC,WAAW,WAAW,EAAE,CAAC,CAAA;IAErC,MAAM,SAAS,CACb;QACE,GAAG,EAAE,WAAW;KACjB,EACD;QACE,GAAG,EAAE,YAAY;KAClB,CACF,CAAA;IAED,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,UAAU,cAAc,QAAQ,CAAC,CAAA;IAC1E,WAAW,CAAC,WAAW,SAAS,EAAE,CAAC,CAAA;IAEnC,MAAM,SAAS,CACb;QACE,GAAG,EAAE,SAAS;KACf,EACD;QACE,GAAG,EAAE,YAAY;KAClB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { existsSync } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
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';
|
|
4
6
|
import { packageManagerFromUserAgent } from '@shopify/cli-kit/node/node-package-manager';
|
|
5
7
|
import { Command, Option } from 'commander';
|
|
6
|
-
import prompts from 'prompts';
|
|
7
8
|
import chalk from 'chalk';
|
|
8
9
|
import _ from 'lodash';
|
|
10
|
+
import { copy } from 'fs-extra';
|
|
9
11
|
import { execAsync } from '../../utils/exec-async-child-process.js';
|
|
10
|
-
import { wrapWithLoadingIndicator } from '../../utils/wrap-with-loading-indicator.js';
|
|
11
12
|
import { TEMPLATES, TEMPLATE_VALUES } from '../../templates-index.js';
|
|
12
|
-
import {
|
|
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';
|
|
13
17
|
import { generateMiniFromTemplate } from './utils/template-app.js';
|
|
14
18
|
function logSuccess(miniName, outputDir, miniDir, useYarn) {
|
|
15
19
|
console.log(`\n \nShop Mini`, chalk.green.bold(`${miniName}`), 'created. Next steps:\n');
|
|
@@ -26,44 +30,6 @@ function logSuccess(miniName, outputDir, miniDir, useYarn) {
|
|
|
26
30
|
chalk.cyan.underline.bold('https://shop.app/minis/docs/'));
|
|
27
31
|
console.log(chalk.dim(' Shop Minis documentation.\n \n'));
|
|
28
32
|
}
|
|
29
|
-
async function promptUser(miniNameArg, templateNameArg) {
|
|
30
|
-
const questions = [];
|
|
31
|
-
if (!miniNameArg) {
|
|
32
|
-
questions.push({
|
|
33
|
-
type: 'text',
|
|
34
|
-
name: 'miniName',
|
|
35
|
-
validate: value => {
|
|
36
|
-
if (!value) {
|
|
37
|
-
return 'The Mini name is required';
|
|
38
|
-
}
|
|
39
|
-
return true;
|
|
40
|
-
},
|
|
41
|
-
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.\n')}`,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
if (!templateNameArg || !TEMPLATE_VALUES.includes(templateNameArg)) {
|
|
45
|
-
// TODO: add some logs if the template name was wrong and explain why we are still prompting for selection
|
|
46
|
-
questions.push({
|
|
47
|
-
type: 'select',
|
|
48
|
-
name: 'templateName',
|
|
49
|
-
message: 'Select a template',
|
|
50
|
-
choices: TEMPLATES,
|
|
51
|
-
initial: 0,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
if (!questions.length) {
|
|
55
|
-
return { miniName: miniNameArg, templateName: templateNameArg };
|
|
56
|
-
}
|
|
57
|
-
const onCancel = () => {
|
|
58
|
-
console.log('\nShop Mini creation stopped at your request. Name not saved.\n');
|
|
59
|
-
process.exit(0);
|
|
60
|
-
};
|
|
61
|
-
const response = await prompts.prompt(questions, { onCancel });
|
|
62
|
-
return {
|
|
63
|
-
miniName: miniNameArg || response.miniName,
|
|
64
|
-
templateName: response.templateName,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
33
|
export function loadCommand(parentProgram) {
|
|
68
34
|
const command = new Command()
|
|
69
35
|
.name('create')
|
|
@@ -73,7 +39,10 @@ export function loadCommand(parentProgram) {
|
|
|
73
39
|
.option('--useYarn', '(deprecated) Use yarn as package manager instead of npm')
|
|
74
40
|
.option('--alphaMinisRuntime', 'use the alpha tag of @shopify/shop-minis-runtime. uses the latest tag by default')
|
|
75
41
|
.option('--alphaMinisSDK', 'use the alpha tag of @shopify/shop-minis-platform-sdk. uses the latest tag by default')
|
|
42
|
+
.option('--skip-create-extension', 'skip the create extension step')
|
|
76
43
|
.addOption(new Option('--template <template name>', 'name of the template to use').choices(TEMPLATE_VALUES))
|
|
44
|
+
.addOption(new Option('--extension-target <extension target name>', 'name of the extension target to use').choices(Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)))
|
|
45
|
+
.addOption(new Option('--extension-type <extension type name>', 'name of the extension type to create').choices(Object.values(ExtensionType)))
|
|
77
46
|
.option('--output-dir <path>', 'Specify an output directory for the mini')
|
|
78
47
|
.action(async (miniNameArg, options = {}) => {
|
|
79
48
|
const currentDirectoryName = path.basename(process.cwd());
|
|
@@ -85,13 +54,58 @@ export function loadCommand(parentProgram) {
|
|
|
85
54
|
console.error(`Unable to create a mini at the specified output dir of ${outputDir}`);
|
|
86
55
|
process.exit(1);
|
|
87
56
|
}
|
|
57
|
+
let miniName;
|
|
58
|
+
let templateName;
|
|
88
59
|
try {
|
|
89
|
-
|
|
60
|
+
if (miniNameArg) {
|
|
61
|
+
miniName = miniNameArg;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
miniName = await renderTextPrompt({
|
|
65
|
+
message: `Give your Shop Mini a name. ${chalk.dim('You can change it later.')}`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (options.template && TEMPLATE_VALUES.includes(options.template)) {
|
|
69
|
+
templateName = options.template;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (options.template) {
|
|
73
|
+
outputWarn(`Template ${options.template} not found. Please select a valid template.`);
|
|
74
|
+
}
|
|
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
|
+
})),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
90
88
|
const miniDir = _.kebabCase(miniName);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
const miniDirPath = path.resolve(outputDir, miniDir);
|
|
90
|
+
let miniTmpDirPath;
|
|
91
|
+
await renderTasks([
|
|
92
|
+
{
|
|
93
|
+
title: 'Fetching template',
|
|
94
|
+
task: async () => {
|
|
95
|
+
miniTmpDirPath = await generateMiniFromTemplate(miniName, templateName, miniDir, options.alphaMinisRuntime, options.alphaMinisSDK);
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
]);
|
|
99
|
+
if (!miniTmpDirPath) {
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
await createExtensionFiles({
|
|
103
|
+
miniName,
|
|
104
|
+
specifiedTarget: options.extensionTarget,
|
|
105
|
+
specifiedType: options.extensionType,
|
|
106
|
+
miniOutputDir: miniTmpDirPath,
|
|
94
107
|
});
|
|
108
|
+
await copy(miniTmpDirPath, miniDirPath);
|
|
95
109
|
const useYarn = packageManagerFromUserAgent() === 'yarn';
|
|
96
110
|
// Yarn is ignoring the `resolutions` when you install
|
|
97
111
|
// via `yarn create @shopify/shop-mini` so use `--ignore-engines` to work around the
|
|
@@ -99,32 +113,13 @@ export function loadCommand(parentProgram) {
|
|
|
99
113
|
// npm fails to install for a similar reason on node 15 but runs fine so we will
|
|
100
114
|
// use `--force` to get everything installed
|
|
101
115
|
const installCmd = useYarn ? 'yarn --ignore-engines' : 'npm i --force';
|
|
102
|
-
const miniDirPath = path.resolve(outputDir, miniDir);
|
|
103
116
|
await execAsync({
|
|
104
117
|
cmd: installCmd,
|
|
105
118
|
loadingMessage: 'Installing dependencies. This might take a minute...',
|
|
106
119
|
successMessage: 'Dependencies installed',
|
|
107
120
|
}, { cwd: miniDirPath });
|
|
108
121
|
execSync(`${useYarn ? 'yarn' : 'npx'} patch-package --patch-dir node_modules/@shopify/shop-minis-runtime/patches`, { cwd: miniDirPath });
|
|
109
|
-
|
|
110
|
-
const silentCreateExtensionCommand = await getRunBinCommand('shop-minis create-extension --silent');
|
|
111
|
-
const onCancel = async () => {
|
|
112
|
-
console.log(`\nTo create an extension in the future, run ${createExtensionCommand}\n`);
|
|
113
|
-
logSuccess(miniName, outputDir, miniDir, useYarn);
|
|
114
|
-
process.exit(0);
|
|
115
|
-
};
|
|
116
|
-
const { createExtension } = await prompts.prompt({
|
|
117
|
-
type: 'confirm',
|
|
118
|
-
name: 'createExtension',
|
|
119
|
-
message: 'Would you like to create an extension for this Shop Mini?',
|
|
120
|
-
}, { onCancel });
|
|
121
|
-
if (!createExtension) {
|
|
122
|
-
onCancel();
|
|
123
|
-
}
|
|
124
|
-
execSync(silentCreateExtensionCommand, {
|
|
125
|
-
cwd: miniDirPath,
|
|
126
|
-
stdio: 'inherit',
|
|
127
|
-
});
|
|
122
|
+
await formatExtensionFiles(miniDirPath);
|
|
128
123
|
logSuccess(miniName, outputDir, miniDir, useYarn);
|
|
129
124
|
}
|
|
130
125
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/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,EAAC,2BAA2B,EAAC,MAAM,4CAA4C,CAAA;AACtF,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,WAAW,CAAA;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-mini/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,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAC,IAAI,EAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AACjE,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,qDAAqD,CAAA;AACxF,OAAO,EAAC,gCAAgC,EAAC,MAAM,kCAAkC,CAAA;AACjF,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAC,oBAAoB,EAAC,MAAM,qDAAqD,CAAA;AAExF,OAAO,EAAC,wBAAwB,EAAC,MAAM,yBAAyB,CAAA;AAEhE,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,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;QACjD,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,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,CACL,KAAK,EACH,WAAoB,EACpB,UAQI,EAAE,EACN,EAAE;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEzD,uFAAuF;QACvF,gHAAgH;QAChH,MAAM,gBAAgB,GACpB,oBAAoB,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;QAExD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAA;QACvD,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,YAAoB,CAAA;QAExB,IAAI;YACF,IAAI,WAAW,EAAE;gBACf,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,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAClE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAA;aAChC;iBAAM;gBACL,IAAI,OAAO,CAAC,QAAQ,EAAE;oBACpB,UAAU,CACR,YAAY,OAAO,CAAC,QAAQ,6CAA6C,CAC1E,CAAA;iBACF;gBAED,YAAY,GAAG,MAAM,kBAAkB,CAAC;oBACtC,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;qBACtB,CAAC,CAAC;oBACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBACpC,MAAM,EAAE,QAAQ,CAAC,KAAK;wBACtB,UAAU,EAAE,QAAQ,CAAC,WAAW;wBAChC,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC;iBACJ,CAAC,CAAA;aACH;YAED,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAEpD,IAAI,cAAkC,CAAA;YAEtC,MAAM,WAAW,CAAC;gBAChB;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,KAAK,IAAI,EAAE;wBACf,cAAc,GAAG,MAAM,wBAAwB,CAC7C,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,aAAa,CACtB,CAAA;oBACH,CAAC;iBACF;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aAChB;YAED,MAAM,oBAAoB,CAAC;gBACzB,QAAQ;gBACR,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,aAAa,EAAE,cAAc;aAC9B,CAAC,CAAA;YAEF,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 +1 @@
|
|
|
1
|
-
export declare function generateMiniFromTemplate(name: string, templateName: string,
|
|
1
|
+
export declare function generateMiniFromTemplate(name: string, templateName: string, miniDir: string, useAlphaRuntime?: boolean, useAlphaSDK?: boolean): Promise<string>;
|
|
@@ -9,10 +9,9 @@ import { replaceStringsInTemplate } from '../../../utils/replace-strings-in-temp
|
|
|
9
9
|
import { execAsync } from '../../../utils/exec-async-child-process.js';
|
|
10
10
|
import { getPackageAlphaVersionCommand, getPackageLatestVersionCommand, } from '../../../utils/package-manager.js';
|
|
11
11
|
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
12
|
-
export async function generateMiniFromTemplate(name, templateName,
|
|
12
|
+
export async function generateMiniFromTemplate(name, templateName, miniDir, useAlphaRuntime, useAlphaSDK) {
|
|
13
13
|
const tmpDir = await mkdtemp(path.join(os.tmpdir(), `${miniDir}-`));
|
|
14
14
|
const miniTemplateDir = await path.join(__dirname, '../../../../templates', `__template_${templateName}`);
|
|
15
|
-
const miniDestinationDir = path.resolve(process.cwd(), outputDir, miniDir);
|
|
16
15
|
const stringsToReplace = {
|
|
17
16
|
__MINI_APP_NAME__: name,
|
|
18
17
|
__MINI_APP_NAME_PASCAL_CASE__: _.startCase(miniDir).replace(/ /g, ''),
|
|
@@ -27,7 +26,7 @@ export async function generateMiniFromTemplate(name, templateName, outputDir = '
|
|
|
27
26
|
await copy(miniTemplateDir, tmpDir);
|
|
28
27
|
await move(path.join(tmpDir, 'gitignore'), path.join(tmpDir, '.gitignore'));
|
|
29
28
|
await replaceStringsInTemplate(tmpDir, stringsToReplace);
|
|
30
|
-
|
|
29
|
+
return tmpDir;
|
|
31
30
|
}
|
|
32
31
|
async function fetchPackageVersion(packageName, fallbackVersion, alpha = false) {
|
|
33
32
|
try {
|