@shopify/shop-minis-cli 0.0.103 → 0.0.105-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/build/commands/create-extension/constants.d.ts +24 -0
  2. package/build/commands/create-extension/constants.js +41 -0
  3. package/build/commands/create-extension/constants.js.map +1 -0
  4. package/build/commands/create-extension/index.d.ts +2 -0
  5. package/build/commands/create-extension/index.js +106 -0
  6. package/build/commands/create-extension/index.js.map +1 -0
  7. package/build/commands/create-extension/types.d.ts +9 -0
  8. package/build/commands/create-extension/types.js +6 -0
  9. package/build/commands/create-extension/types.js.map +1 -0
  10. package/build/commands/create-extension/utils/add-target-to-config.d.ts +2 -0
  11. package/build/commands/create-extension/utils/add-target-to-config.js +56 -0
  12. package/build/commands/create-extension/utils/add-target-to-config.js.map +1 -0
  13. package/build/commands/create-extension/utils/create-from-template.d.ts +2 -0
  14. package/build/commands/create-extension/utils/create-from-template.js +29 -0
  15. package/build/commands/create-extension/utils/create-from-template.js.map +1 -0
  16. package/build/commands/create-extension/utils/install-shop-minis-ui-extensions.d.ts +1 -0
  17. package/build/commands/create-extension/utils/install-shop-minis-ui-extensions.js +9 -0
  18. package/build/commands/create-extension/utils/install-shop-minis-ui-extensions.js.map +1 -0
  19. package/build/commands/generate-graphql-types/index.js +11 -9
  20. package/build/commands/generate-graphql-types/index.js.map +1 -1
  21. package/build/commands/submit/submit.js +5 -2
  22. package/build/commands/submit/submit.js.map +1 -1
  23. package/build/constants/extensions.d.ts +18 -0
  24. package/build/constants/extensions.js +23 -0
  25. package/build/constants/extensions.js.map +1 -0
  26. package/build/index.js +10 -8
  27. package/build/index.js.map +1 -1
  28. package/build/schemas/manifest.schema.json +0 -1
  29. package/build/utils/codemod.d.ts +65 -0
  30. package/build/utils/codemod.js +121 -0
  31. package/build/utils/codemod.js.map +1 -0
  32. package/build/utils/extensions.d.ts +3 -0
  33. package/build/utils/extensions.js +3 -0
  34. package/build/utils/extensions.js.map +1 -0
  35. package/package.json +2 -2
  36. package/templates/__template_common/.eslintrc.js +0 -3
  37. package/templates/__template_common/.graphqlrc.js +1 -0
  38. package/templates/extensions/__template_product-page.above-variants-picker+bundle-selector/input.graphql +6 -0
  39. package/templates/extensions/__template_product-page.above-variants-picker+bundle-selector/input.graphql.d.ts +26 -0
  40. package/templates/extensions/__template_product-page.above-variants-picker+bundle-selector/render.tsx +49 -0
  41. package/templates/extensions/__template_product-page.above-variants-picker+bundle-selector/seed.ts +66 -0
  42. package/build/utils/extension-targets.d.ts +0 -3
  43. package/build/utils/extension-targets.js +0 -4
  44. package/build/utils/extension-targets.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { ExtensionTarget, ExtensionType } from '../../constants/extensions.js';
2
+ import { ExtensionPage } from './types.js';
3
+ export declare const DEFAULT_OUTPUT_DIR = "src/targets";
4
+ export declare const EXTENSION_TYPE_CONFIG: Record<ExtensionType, {
5
+ label: string;
6
+ }>;
7
+ export declare const EXTENSION_PAGE_CONFIG: Record<ExtensionPage, {
8
+ templates: ExtensionType[];
9
+ }>;
10
+ export declare const EXTENSION_TARGET_CONFIG: {
11
+ "shop.product.variants.render-before": {
12
+ label: string;
13
+ page: ExtensionPage;
14
+ };
15
+ "store-page": {
16
+ label: string;
17
+ page: ExtensionPage;
18
+ };
19
+ };
20
+ export declare const EXTENSION_TARGETS_WITH_TEMPLATES: Record<ExtensionTarget, {
21
+ label: string;
22
+ page: ExtensionPage;
23
+ }>;
24
+ export declare const EXTENSION_TARGETS_WITH_TEMPLATES_KEYS: ExtensionTarget[];
@@ -0,0 +1,41 @@
1
+ import { ExtensionTarget, ExtensionType } from '../../constants/extensions.js';
2
+ import { ExtensionPage } from './types.js';
3
+ export const DEFAULT_OUTPUT_DIR = 'src/targets';
4
+ export const EXTENSION_TYPE_CONFIG = {
5
+ [ExtensionType.VIDEO_COLLECTION]: {
6
+ label: 'Video Collection',
7
+ },
8
+ [ExtensionType.IMAGE_COLLECTION]: {
9
+ label: 'Image Collection',
10
+ },
11
+ [ExtensionType.BUNDLE_SELECTOR]: {
12
+ label: 'Bundle Selector',
13
+ },
14
+ };
15
+ // Add to this as new templates are created and they will appear in the CLI as options automatically
16
+ export const EXTENSION_PAGE_CONFIG = {
17
+ [ExtensionPage.PRODUCT_PAGE]: {
18
+ templates: [ExtensionType.BUNDLE_SELECTOR],
19
+ },
20
+ [ExtensionPage.STORE_PAGE]: {
21
+ templates: [],
22
+ },
23
+ };
24
+ export const EXTENSION_TARGET_CONFIG = {
25
+ [ExtensionTarget['shop.product.variants.render-before']]: {
26
+ label: 'Product Page - Above Variants Picker',
27
+ page: ExtensionPage.PRODUCT_PAGE,
28
+ },
29
+ [ExtensionTarget['store-page']]: {
30
+ label: 'Store Page',
31
+ page: ExtensionPage.STORE_PAGE,
32
+ },
33
+ };
34
+ export const EXTENSION_TARGETS_WITH_TEMPLATES = Object.entries(EXTENSION_TARGET_CONFIG).reduce((acc, [key, value]) => {
35
+ if (EXTENSION_PAGE_CONFIG[value.page].templates.length > 0) {
36
+ acc[key] = value;
37
+ }
38
+ return acc;
39
+ }, {});
40
+ export const EXTENSION_TARGETS_WITH_TEMPLATES_KEYS = Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES);
41
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/commands/create-extension/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAA;AAE5E,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAA;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAA2C;IAC3E,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE;QAChC,KAAK,EAAE,kBAAkB;KAC1B;IACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE;QAChC,KAAK,EAAE,kBAAkB;KAC1B;IACD,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;QAC/B,KAAK,EAAE,iBAAiB;KACzB;CACF,CAAA;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,qBAAqB,GAG9B;IACF,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;QAC5B,SAAS,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC;KAC3C;IACD,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;QAC1B,SAAS,EAAE,EAAE;KACd;CACF,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,CAAC,eAAe,CAAC,qCAAqC,CAAC,CAAC,EAAE;QACxD,KAAK,EAAE,sCAAsC;QAC7C,IAAI,EAAE,aAAa,CAAC,YAAY;KACjC;IACD,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EAAE;QAC/B,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,aAAa,CAAC,UAAU;KAC/B;CAC0E,CAAA;AAE7E,MAAM,CAAC,MAAM,gCAAgC,GAGzC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACvE,IAAI,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1D,GAAG,CAAC,GAAsB,CAAC,GAAG,KAAK,CAAA;KACpC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAmE,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC,IAAI,CAC9D,gCAAgC,CACZ,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function loadCommand(parentProgram: Command): void;
@@ -0,0 +1,106 @@
1
+ import path from 'node:path';
2
+ import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
3
+ import { outputDebug } from '@shopify/cli-kit/node/output';
4
+ import { renderSelectPrompt, renderSuccess } from '@shopify/cli-kit/node/ui';
5
+ import { Command, Option } from 'commander';
6
+ import { ExtensionTarget } from '../../constants/extensions.js';
7
+ import { getMiniManifest } from '../../utils/minis-manifest.js';
8
+ import { DEFAULT_OUTPUT_DIR, EXTENSION_PAGE_CONFIG, EXTENSION_TARGETS_WITH_TEMPLATES, EXTENSION_TARGETS_WITH_TEMPLATES_KEYS, EXTENSION_TYPE_CONFIG, } from './constants.js';
9
+ import { addTargetToConfig } from './utils/add-target-to-config.js';
10
+ import { createExtensionFromTemplate } from './utils/create-from-template.js';
11
+ import { installShopMinisUiExtensions } from './utils/install-shop-minis-ui-extensions.js';
12
+ function isExtensionTarget(value) {
13
+ return Object.values(ExtensionTarget).includes(value);
14
+ }
15
+ export function loadCommand(parentProgram) {
16
+ const command = new Command()
17
+ .name('create-extension')
18
+ .description('add an extension to your mini')
19
+ .addOption(new Option('--target <extension target>', 'the location of the extension').choices(EXTENSION_TARGETS_WITH_TEMPLATES_KEYS))
20
+ .option('--verbose', 'print debugging messages') // compatible with cli-kit
21
+ .action(async (args) => {
22
+ outputDebug(`create-extension args ${JSON.stringify(args)}`);
23
+ const manifest = getMiniManifest();
24
+ const resolvedOutputDir = path.resolve(process.cwd(), DEFAULT_OUTPUT_DIR);
25
+ let target = isExtensionTarget(args.target)
26
+ ? args.target
27
+ : null;
28
+ if (!target || !EXTENSION_TARGETS_WITH_TEMPLATES[target]) {
29
+ if (Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES).length > 1) {
30
+ target = (await renderSelectPrompt({
31
+ message: 'Select the extension target where your Mini will be shown',
32
+ choices: Object.entries(EXTENSION_TARGETS_WITH_TEMPLATES).map(([key, { label }]) => ({
33
+ label,
34
+ value: key,
35
+ })),
36
+ }));
37
+ }
38
+ else {
39
+ target = Object.keys(EXTENSION_TARGETS_WITH_TEMPLATES)[0];
40
+ }
41
+ }
42
+ const targetConfig = EXTENSION_TARGETS_WITH_TEMPLATES[target];
43
+ const possibleExtensionTypes = EXTENSION_PAGE_CONFIG[targetConfig.page].templates;
44
+ let extensionType = possibleExtensionTypes[0];
45
+ if (possibleExtensionTypes.length > 1) {
46
+ extensionType = (await renderSelectPrompt({
47
+ message: 'Select the type of extension you want to create',
48
+ choices: possibleExtensionTypes.map(type => ({
49
+ label: EXTENSION_TYPE_CONFIG[type].label,
50
+ value: type,
51
+ })),
52
+ }));
53
+ }
54
+ outputDebug(`create-extension target: "${target}", type: "${extensionType}", output: ${resolvedOutputDir}`);
55
+ try {
56
+ await createExtensionFromTemplate(manifest.name, target, extensionType, resolvedOutputDir);
57
+ renderSuccess({
58
+ headline: 'Extension created successfully',
59
+ body: [
60
+ 'Your extension was created at:',
61
+ {
62
+ bold: path.relative(process.cwd(), path.join(resolvedOutputDir, target)),
63
+ },
64
+ ],
65
+ });
66
+ }
67
+ catch (error) {
68
+ handleError(error);
69
+ return process.exit(1);
70
+ }
71
+ try {
72
+ await addTargetToConfig(target);
73
+ }
74
+ catch (error) {
75
+ const wrappedError = new AbortError('Could not automatically link your new extension', `Failed to update your mini config: ${error}`, [
76
+ [
77
+ 'Manually add your new',
78
+ {
79
+ command: target,
80
+ },
81
+ 'extension to your mini config file',
82
+ ],
83
+ ]);
84
+ handleError(wrappedError);
85
+ return process.exit(1);
86
+ }
87
+ try {
88
+ await installShopMinisUiExtensions();
89
+ }
90
+ catch (error) {
91
+ const wrappedError = new AbortError('Could not install `@shopify/shop-minis-ui-extensions`', `${error}`, [
92
+ [
93
+ 'Manually install',
94
+ {
95
+ command: '@shopify/shop-minis-ui-extensions',
96
+ },
97
+ 'before trying to run your extension',
98
+ ],
99
+ ]);
100
+ handleError(wrappedError);
101
+ return process.exit(1);
102
+ }
103
+ });
104
+ parentProgram.addCommand(command, { hidden: true });
105
+ }
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/create-extension/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare enum ExtensionPage {
2
+ PRODUCT_PAGE = "product-page",
3
+ STORE_PAGE = "store-page"
4
+ }
5
+ export interface CreateExtensionCommandArgs {
6
+ target: string;
7
+ outputDir: string;
8
+ verbose?: boolean;
9
+ }
@@ -0,0 +1,6 @@
1
+ export var ExtensionPage;
2
+ (function (ExtensionPage) {
3
+ ExtensionPage["PRODUCT_PAGE"] = "product-page";
4
+ ExtensionPage["STORE_PAGE"] = "store-page";
5
+ })(ExtensionPage || (ExtensionPage = {}));
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/create-extension/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8CAA6B,CAAA;IAC7B,0CAAyB,CAAA;AAC3B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB"}
@@ -0,0 +1,2 @@
1
+ import { ExtensionTarget } from '../../../constants/extensions.js';
2
+ export declare function addTargetToConfig(target: ExtensionTarget): Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { readFile, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { outputDebug } from '@shopify/cli-kit/node/output';
4
+ import _ from 'lodash';
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
+ const runCodemod = (fileContents, target) => {
9
+ const root = j(fileContents);
10
+ const targetPascalCase = _.startCase(target).replace(/ /g, '');
11
+ const importPath = `./targets/${target}/render`;
12
+ const originalImportName = 'Render';
13
+ const importName = `RenderIn${targetPascalCase}`;
14
+ const configObject = findObjectExpression(root, 'config');
15
+ if (!configObject) {
16
+ throw new Error('Could not find config object');
17
+ }
18
+ ensureImportOf(root, importPath, originalImportName, importName);
19
+ const targetsObject = ensureObjectProperty({
20
+ obj: configObject,
21
+ key: 'Targets',
22
+ defaultValue: j.objectExpression([]),
23
+ });
24
+ const targetsValue = targetsObject.value;
25
+ if (targetsValue.type !== 'ObjectExpression') {
26
+ throw new Error(`Unexpected type for Targets. Expected: ObjectExpression, Found: ${targetsValue.type}`);
27
+ }
28
+ ensureObjectProperty({
29
+ obj: targetsValue,
30
+ key: target,
31
+ defaultValue: j.identifier(importName),
32
+ overwrite: true,
33
+ });
34
+ return root.toSource();
35
+ };
36
+ export async function addTargetToConfig(target) {
37
+ const configFilePath = path.join(process.cwd(), 'src', 'index.tsx');
38
+ outputDebug(`Adding ${target} target to ${configFilePath}`);
39
+ const configFile = await readFile(configFilePath, 'utf8');
40
+ if (!configFile || !configFile.includes('MiniAppConfig')) {
41
+ throw new Error(`Couldn't find a config in ${configFilePath}`);
42
+ }
43
+ const result = runCodemod(configFile, target);
44
+ if (result === configFile) {
45
+ outputDebug(`No changes made to ${configFilePath}`);
46
+ return;
47
+ }
48
+ outputDebug(`Saving changes to ${configFilePath}`);
49
+ 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
+ }
56
+ //# sourceMappingURL=add-target-to-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-target-to-config.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/add-target-to-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ExtensionTarget, ExtensionType } from '../../../constants/extensions.js';
2
+ export declare function createExtensionFromTemplate(miniName: string, extensionTarget: ExtensionTarget, extensionType: ExtensionType, outputDir: string): Promise<void>;
@@ -0,0 +1,29 @@
1
+ import { mkdtemp, stat } from 'node:fs/promises';
2
+ import url from 'node:url';
3
+ import os from 'os';
4
+ import path from 'path';
5
+ import { copy } from 'fs-extra';
6
+ import _ from 'lodash';
7
+ import { replaceStringsInTemplate } from '../../../utils/replace-strings-in-template.js';
8
+ const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
9
+ export async function createExtensionFromTemplate(miniName, extensionTarget, extensionType, outputDir) {
10
+ const combinedTemplateName = `${extensionTarget}+${extensionType}`;
11
+ const tmpDir = await mkdtemp(path.join(os.tmpdir(), `${combinedTemplateName}-`));
12
+ const templateDir = path.join(__dirname, '../../../../templates/extensions');
13
+ const extensionTemplateDir = path.join(templateDir, `__template_${combinedTemplateName}`);
14
+ const extensionDestinationDir = path.join(outputDir, extensionTarget);
15
+ const stringsToReplace = {
16
+ __MINI_APP_NAME_PASCAL_CASE__: _.startCase(miniName).replace(/ /g, ''),
17
+ __EXTENSION_TARGET_PASCAL_CASE__: _.startCase(extensionTarget).replace(/ /g, ''),
18
+ };
19
+ try {
20
+ await stat(extensionTemplateDir);
21
+ }
22
+ catch (_err) {
23
+ throw new Error(`Template not found: ${extensionTemplateDir}`);
24
+ }
25
+ await copy(extensionTemplateDir, tmpDir);
26
+ await replaceStringsInTemplate(tmpDir, stringsToReplace);
27
+ await copy(tmpDir, extensionDestinationDir);
28
+ }
29
+ //# sourceMappingURL=create-from-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-from-template.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/create-from-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC9C,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAC,IAAI,EAAC,MAAM,UAAU,CAAA;AAC7B,OAAO,CAAC,MAAM,QAAQ,CAAA;AAGtB,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAA;AAEtF,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,eAAgC,EAChC,aAA4B,EAC5B,SAAiB;IAEjB,MAAM,oBAAoB,GAAG,GAAG,eAAe,IAAI,aAAa,EAAE,CAAA;IAClE,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,GAAG,CAAC,CACnD,CAAA;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAA;IAC5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CACpC,WAAW,EACX,cAAc,oBAAoB,EAAE,CACrC,CAAA;IACD,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG;QACvB,6BAA6B,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,gCAAgC,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,CACpE,IAAI,EACJ,EAAE,CACH;KACF,CAAA;IAED,IAAI;QACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAA;KACjC;IAAC,OAAO,IAAI,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,oBAAoB,EAAE,CAAC,CAAA;KAC/D;IAED,MAAM,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxD,MAAM,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function installShopMinisUiExtensions(): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { outputDebug } from '@shopify/cli-kit/node/output';
2
+ import { execAsync } from '../../../utils/exec-async-child-process.js';
3
+ import { getUpgradePackageCommand } from '../../../utils/package-manager.js';
4
+ export async function installShopMinisUiExtensions() {
5
+ const command = await getUpgradePackageCommand('@shopify/shop-minis-ui-extensions');
6
+ outputDebug(`Running install command: ${command}`);
7
+ await execAsync(command);
8
+ }
9
+ //# sourceMappingURL=install-shop-minis-ui-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-shop-minis-ui-extensions.js","sourceRoot":"","sources":["../../../../src/commands/create-extension/utils/install-shop-minis-ui-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAExD,OAAO,EAAC,SAAS,EAAC,MAAM,4CAA4C,CAAA;AACpE,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAA;AAE1E,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAC5C,mCAAmC,CACpC,CAAA;IAED,WAAW,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;IAElD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC"}
@@ -1,12 +1,13 @@
1
- import { createRequire } from 'node:module';
2
1
  import { execSync } from 'node:child_process';
3
- import { Command } from 'commander';
2
+ import { createRequire } from 'node:module';
4
3
  import chalk from 'chalk';
4
+ import { Command } from 'commander';
5
5
  import { GraphQLConfig } from 'graphql-config';
6
+ import { EXTENSION_TARGET_KEYS, ExtensionTarget, } from '../../constants/extensions.js';
7
+ import { isProductExtensionTarget } from '../../utils/extensions.js';
6
8
  import { getMiniManifest } from '../../utils/minis-manifest.js';
7
- import { maybeApplyPatches } from '../../utils/patch-package.js';
8
9
  import { getRunBinCommand } from '../../utils/package-manager.js';
9
- import { EXTENSION_TARGETS } from '../../utils/extension-targets.js';
10
+ import { maybeApplyPatches } from '../../utils/patch-package.js';
10
11
  // Import these bits as cjs because their esm exports are broken
11
12
  // TODO: this way of requiring libraries loses the types
12
13
  // https://github.com/Shopify/shop-minis-cli/issues/191
@@ -39,7 +40,7 @@ export function loadCommand(parentProgram) {
39
40
  config: {
40
41
  projects: {
41
42
  default: {
42
- schemaPath: 'node_modules/@shopify/shop-minis-platform-sdk/src/api/schema/minis.graphql',
43
+ schemaPath: 'node_modules/@shopify/shop-minis-runtime/src/api/schema/minis.graphql',
43
44
  includes: [`**/*.graphql`],
44
45
  excludes: ['node_modules/**', 'src/targets/**'],
45
46
  extensions: {
@@ -47,11 +48,12 @@ export function loadCommand(parentProgram) {
47
48
  },
48
49
  },
49
50
  product: {
50
- schemaPath: 'node_modules/@shopify/shop-minis-cli/build/product_public.graphql',
51
- includes: [
52
- `src/targets/${EXTENSION_TARGETS.PRODUCT_PAGE}/**/*.graphql`,
53
- ],
51
+ schemaPath: 'node_modules/@shopify/shop-minis-runtime/src/api/schema/product.graphql',
52
+ includes: EXTENSION_TARGET_KEYS.filter(key => isProductExtensionTarget(ExtensionTarget[key])).map(key => `src/targets/${ExtensionTarget[key]}/**/*.graphql`),
54
53
  excludes: ['node_modules/**'],
54
+ extensions: {
55
+ schemaTypesPath: schemaTypesPathConfig,
56
+ },
55
57
  },
56
58
  },
57
59
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate-graphql-types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate-graphql-types/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import editor from '@inquirer/editor';
5
5
  import { getRunBinCommand } from '../../utils/package-manager.js';
6
6
  import { assertNetworkAndAuth } from '../../utils/common-tasks.js';
7
7
  import { execAsync } from '../../utils/exec-async-child-process.js';
8
+ import { getMiniManifest } from '../../utils/minis-manifest.js';
8
9
  import { validateDescription } from './validation.js';
9
10
  import { assertManifestValid, assertNoPendingSubmissions, createStagedUpload, createSubmission, packageShopMini, uploadSubmission, } from './tasks.js';
10
11
  import { generateSubmissionArchiveFilename, getSubmissionArchivePath, } from './config.js';
@@ -100,8 +101,10 @@ export const completeConfig = async (args) => {
100
101
  default: description,
101
102
  });
102
103
  }
103
- const entryPointParams = await requestEntryPointParams();
104
- description += `\n\n## Entry point params \n\n${entryPointParams}`;
104
+ if (getMiniManifest().entry_points?.length >= 1) {
105
+ const entryPointParams = await requestEntryPointParams();
106
+ description += `\n\n## Entry point params \n\n${entryPointParams}`;
107
+ }
105
108
  return {
106
109
  description,
107
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/commands/submit/submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/commands/submit/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare enum ExtensionType {
2
+ VIDEO_COLLECTION = "video-collection",
3
+ IMAGE_COLLECTION = "image-collection",
4
+ BUNDLE_SELECTOR = "bundle-selector"
5
+ }
6
+ export declare enum ExtensionTarget {
7
+ /**
8
+ * @deprecated - internal use only and will be removed in future releases of the minis sdk.
9
+ */
10
+ 'product-page' = "product-page",
11
+ 'shop.product.variants.render-before' = "shop.product.variants.render-before",
12
+ 'shop.product.policies.render-after' = "shop.product.variants.render-before",
13
+ /**
14
+ * @deprecated - internal use only and will be removed in future releases of the minis sdk.
15
+ */
16
+ 'store-page' = "store-page"
17
+ }
18
+ export declare const EXTENSION_TARGET_KEYS: (keyof typeof ExtensionTarget)[];
@@ -0,0 +1,23 @@
1
+ export var ExtensionType;
2
+ (function (ExtensionType) {
3
+ ExtensionType["VIDEO_COLLECTION"] = "video-collection";
4
+ ExtensionType["IMAGE_COLLECTION"] = "image-collection";
5
+ ExtensionType["BUNDLE_SELECTOR"] = "bundle-selector";
6
+ })(ExtensionType || (ExtensionType = {}));
7
+ // copy and paste from minis sdk
8
+ // TODO: import from a single source of truth
9
+ export var ExtensionTarget;
10
+ (function (ExtensionTarget) {
11
+ /**
12
+ * @deprecated - internal use only and will be removed in future releases of the minis sdk.
13
+ */
14
+ ExtensionTarget["product-page"] = "product-page";
15
+ ExtensionTarget["shop.product.variants.render-before"] = "shop.product.variants.render-before";
16
+ ExtensionTarget["shop.product.policies.render-after"] = "shop.product.variants.render-before";
17
+ /**
18
+ * @deprecated - internal use only and will be removed in future releases of the minis sdk.
19
+ */
20
+ ExtensionTarget["store-page"] = "store-page";
21
+ })(ExtensionTarget || (ExtensionTarget = {}));
22
+ export const EXTENSION_TARGET_KEYS = Object.keys(ExtensionTarget);
23
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/constants/extensions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,sDAAqC,CAAA;IACrC,sDAAqC,CAAA;IACrC,oDAAmC,CAAA;AACrC,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,gCAAgC;AAChC,6CAA6C;AAC7C,MAAM,CAAN,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB;;OAEG;IACH,gDAA+B,CAAA;IAE/B,8FAA6E,CAAA;IAE7E,6FAA4E,CAAA;IAE5E;;OAEG;IACH,4CAA2B,CAAA;AAC7B,CAAC,EAdW,eAAe,KAAf,eAAe,QAc1B;AAED,MAAM,CAAC,MAAM,qBAAqB,GAChC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAqC,CAAA"}
package/build/index.js CHANGED
@@ -1,19 +1,20 @@
1
1
  #!/usr/bin/env -S node --experimental-json-modules --require=suppress-experimental-warnings
2
2
  import { Command } from 'commander';
3
+ import { loadCommand as loadCancelSubmissionCommand } from './commands/cancel-submission/index.js';
4
+ import { loadCommand as loadCheckSubmissionCommand } from './commands/check-submission/index.js';
5
+ import { loadCommand as loadCodemodCommand } from './commands/codemod/index.js';
6
+ import { CLI_VERSION } from './commands/config.js';
7
+ import { loadCommand as loadCreateExtensionCommand } from './commands/create-extension/index.js';
3
8
  import { loadCommand as loadCreateMiniCommand } from './commands/create-mini/index.js';
4
9
  import { loadCommand as loadDevCommand } from './commands/dev/index.js';
10
+ import { command as doctorCommand } from './commands/doctor/index.js';
11
+ import { command as featuresCommand } from './commands/features/index.js';
5
12
  import { loadCommand as loadGenerateGraphqlTypesCommand } from './commands/generate-graphql-types/index.js';
13
+ import { loadCommand as loadInfoCommand } from './commands/info/index.js';
14
+ import { loadCommand as loadSetupCommand } from './commands/setup/index.js';
6
15
  import { loadCommand as loadSubmitCommand } from './commands/submit/index.js';
7
- import { loadCommand as loadCancelSubmissionCommand } from './commands/cancel-submission/index.js';
8
- import { loadCommand as loadCheckSubmissionCommand } from './commands/check-submission/index.js';
9
16
  import { loadCommand as loadUpgradeCommand } from './commands/upgrade/index.js';
10
- import { loadCommand as loadCodemodCommand } from './commands/codemod/index.js';
11
17
  import { loadCommand as loadValidateManifestCommand } from './commands/validate-manifest/index.js';
12
- import { loadCommand as loadInfoCommand } from './commands/info/index.js';
13
- import { loadCommand as loadSetupCommand } from './commands/setup/index.js';
14
- import { command as doctorCommand } from './commands/doctor/index.js';
15
- import { command as featuresCommand } from './commands/features/index.js';
16
- import { CLI_VERSION } from './commands/config.js';
17
18
  const program = new Command();
18
19
  async function loadCommands() {
19
20
  loadCreateMiniCommand(program);
@@ -27,6 +28,7 @@ async function loadCommands() {
27
28
  loadCodemodCommand(program);
28
29
  loadInfoCommand(program);
29
30
  loadSetupCommand(program);
31
+ loadCreateExtensionCommand(program);
30
32
  program.addCommand(doctorCommand);
31
33
  program.addCommand(featuresCommand);
32
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAC,WAAW,IAAI,qBAAqB,EAAC,MAAM,iCAAiC,CAAA;AACpF,OAAO,EAAC,WAAW,IAAI,cAAc,EAAC,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAC,WAAW,IAAI,+BAA+B,EAAC,MAAM,4CAA4C,CAAA;AACzG,OAAO,EAAC,WAAW,IAAI,iBAAiB,EAAC,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAC,WAAW,IAAI,2BAA2B,EAAC,MAAM,uCAAuC,CAAA;AAChG,OAAO,EAAC,WAAW,IAAI,0BAA0B,EAAC,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAC,WAAW,IAAI,kBAAkB,EAAC,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAC,WAAW,IAAI,kBAAkB,EAAC,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAC,WAAW,IAAI,2BAA2B,EAAC,MAAM,uCAAuC,CAAA;AAChG,OAAO,EAAC,WAAW,IAAI,eAAe,EAAC,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAC,WAAW,IAAI,gBAAgB,EAAC,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAA;AAEhD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,KAAK,UAAU,YAAY;IACzB,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;IAC7B,+BAA+B,CAAC,OAAO,CAAC,CAAA;IACxC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1B,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACpC,0BAA0B,CAAC,OAAO,CAAC,CAAA;IACnC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACpC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEzB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACrC,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvB,YAAY,EAAE;KACX,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC;KACD,KAAK,CAAC,GAAG,CAAC,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAC,WAAW,IAAI,2BAA2B,EAAC,MAAM,uCAAuC,CAAA;AAChG,OAAO,EAAC,WAAW,IAAI,0BAA0B,EAAC,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAC,WAAW,IAAI,kBAAkB,EAAC,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAC,WAAW,IAAI,0BAA0B,EAAC,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAC,WAAW,IAAI,qBAAqB,EAAC,MAAM,iCAAiC,CAAA;AACpF,OAAO,EAAC,WAAW,IAAI,cAAc,EAAC,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAC,WAAW,IAAI,+BAA+B,EAAC,MAAM,4CAA4C,CAAA;AACzG,OAAO,EAAC,WAAW,IAAI,eAAe,EAAC,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAC,WAAW,IAAI,gBAAgB,EAAC,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAC,WAAW,IAAI,iBAAiB,EAAC,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAC,WAAW,IAAI,kBAAkB,EAAC,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAC,WAAW,IAAI,2BAA2B,EAAC,MAAM,uCAAuC,CAAA;AAEhG,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,KAAK,UAAU,YAAY;IACzB,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;IAC7B,+BAA+B,CAAC,OAAO,CAAC,CAAA;IACxC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1B,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACpC,0BAA0B,CAAC,OAAO,CAAC,CAAA;IACnC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACpC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzB,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAEnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACrC,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvB,YAAY,EAAE;KACX,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC;KACD,KAAK,CAAC,GAAG,CAAC,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -209,7 +209,6 @@
209
209
  "icon_url",
210
210
  "partner_name",
211
211
  "shopify_apps",
212
- "entry_points",
213
212
  "contact_email"
214
213
  ]
215
214
  }
@@ -0,0 +1,65 @@
1
+ import jscodeshift from 'jscodeshift';
2
+ export declare const j: jscodeshift.JSCodeshift;
3
+ /**
4
+ * Find the first import declaration of a module
5
+ *
6
+ * Returns an object containing:
7
+ * - `importDeclaration`: This is the whole import node. This is null if no import is found
8
+ * - `specifier`: This is the specific import specifier node that matches the name/alias. Also null if not found
9
+ *
10
+ * If `importedAsName` is not provided, it will look for an import like:
11
+ * ```
12
+ * import {importedName} from 'importPath'
13
+ * ```
14
+ *
15
+ * If `importedAsName` is provided, it will look for an import like:
16
+ * ```
17
+ * import {importedName as importedAsName} from 'importPath'
18
+ * ```
19
+ */
20
+ export declare const findImportOf: (root: ReturnType<typeof jscodeshift>, importPath: string, importedName: string, importedAsName?: string) => {
21
+ specifier: import("ast-types").namedTypes.ImportSpecifier | import("ast-types").namedTypes.ImportDefaultSpecifier | import("ast-types").namedTypes.ImportNamespaceSpecifier | null;
22
+ importDeclaration: import("ast-types").namedTypes.ImportDeclaration;
23
+ };
24
+ /**
25
+ * Ensure that an import of a module is present in the file
26
+ *
27
+ * If the import is not present, it will be added to the top of the file
28
+ *
29
+ * Returns the specifier and import declaration nodes that were found, edited or created
30
+ */
31
+ export declare const ensureImportOf: (root: ReturnType<typeof jscodeshift>, importPath: string, importedName: string, importedAsName?: string) => {
32
+ specifier: import("ast-types").namedTypes.ImportSpecifier | import("ast-types").namedTypes.ImportDefaultSpecifier | import("ast-types").namedTypes.ImportNamespaceSpecifier;
33
+ importDeclaration: import("ast-types").namedTypes.ImportDeclaration;
34
+ };
35
+ /**
36
+ * Find an object expression by its name like
37
+ *
38
+ * ```
39
+ * const objName = {
40
+ * key: 'value',
41
+ * }
42
+ * ```
43
+ *
44
+ * Returns the object expression node if found, otherwise null
45
+ *
46
+ * If multiple are found, the first one is returned
47
+ */
48
+ export declare const findObjectExpression: (root: ReturnType<typeof jscodeshift>, objName: string) => import("ast-types").namedTypes.ObjectExpression | null;
49
+ /**
50
+ * Ensure that an object has a property with a specific key
51
+ *
52
+ * If the property is not present, it will be added to the object
53
+ *
54
+ * If `defaultValue` is provided, the property will be set to that value if it does not exist
55
+ *
56
+ * If `overwrite` is also true, the property will be replaced with the `defaultValue`
57
+ *
58
+ * Returns the property node that was found or created
59
+ */
60
+ export declare const ensureObjectProperty: ({ obj, key, defaultValue, overwrite, }: {
61
+ obj: jscodeshift.ObjectExpression;
62
+ key: string;
63
+ defaultValue: jscodeshift.Property['value'];
64
+ overwrite?: boolean | undefined;
65
+ }) => import("ast-types").namedTypes.Property;
@@ -0,0 +1,121 @@
1
+ import jscodeshift from 'jscodeshift';
2
+ export const j = jscodeshift.withParser('tsx');
3
+ /**
4
+ * Find the first import declaration of a module
5
+ *
6
+ * Returns an object containing:
7
+ * - `importDeclaration`: This is the whole import node. This is null if no import is found
8
+ * - `specifier`: This is the specific import specifier node that matches the name/alias. Also null if not found
9
+ *
10
+ * If `importedAsName` is not provided, it will look for an import like:
11
+ * ```
12
+ * import {importedName} from 'importPath'
13
+ * ```
14
+ *
15
+ * If `importedAsName` is provided, it will look for an import like:
16
+ * ```
17
+ * import {importedName as importedAsName} from 'importPath'
18
+ * ```
19
+ */
20
+ export const findImportOf = (root, importPath, importedName, importedAsName) => {
21
+ const matchedImportDeclaration = root
22
+ .find(j.ImportDeclaration, {
23
+ source: { value: importPath },
24
+ })
25
+ .nodes()[0] ?? null;
26
+ const matchedSpecifier = matchedImportDeclaration?.specifiers?.filter(specifier => {
27
+ if (specifier.type !== 'ImportSpecifier')
28
+ return false;
29
+ return importedAsName
30
+ ? specifier.imported.name === importedName &&
31
+ specifier?.local?.name === importedAsName
32
+ : specifier.imported.name === importedName;
33
+ })[0] ?? null;
34
+ return {
35
+ specifier: matchedSpecifier,
36
+ importDeclaration: matchedImportDeclaration,
37
+ };
38
+ };
39
+ /**
40
+ * Ensure that an import of a module is present in the file
41
+ *
42
+ * If the import is not present, it will be added to the top of the file
43
+ *
44
+ * Returns the specifier and import declaration nodes that were found, edited or created
45
+ */
46
+ export const ensureImportOf = (root, importPath, importedName, importedAsName) => {
47
+ let { importDeclaration, specifier } = findImportOf(root, importPath, importedName, importedAsName);
48
+ if (!specifier) {
49
+ specifier = importedAsName
50
+ ? j.importSpecifier(j.identifier(importedName), j.identifier(importedAsName))
51
+ : j.importSpecifier(j.identifier(importedName));
52
+ if (!importDeclaration) {
53
+ importDeclaration = j.importDeclaration([], j.literal(importPath));
54
+ root.get().node.program.body.unshift(importDeclaration);
55
+ }
56
+ importDeclaration?.specifiers?.push(specifier);
57
+ }
58
+ return { specifier, importDeclaration };
59
+ };
60
+ /**
61
+ * Find an object expression by its name like
62
+ *
63
+ * ```
64
+ * const objName = {
65
+ * key: 'value',
66
+ * }
67
+ * ```
68
+ *
69
+ * Returns the object expression node if found, otherwise null
70
+ *
71
+ * If multiple are found, the first one is returned
72
+ */
73
+ export const findObjectExpression = (root, objName) => {
74
+ const result = root
75
+ .find(j.VariableDeclarator, {
76
+ id: { type: 'Identifier', name: objName },
77
+ init: { type: 'ObjectExpression' },
78
+ })
79
+ .nodes()[0];
80
+ return result && result?.init?.type === 'ObjectExpression'
81
+ ? result.init
82
+ : null;
83
+ };
84
+ /**
85
+ * Ensure that an object has a property with a specific key
86
+ *
87
+ * If the property is not present, it will be added to the object
88
+ *
89
+ * If `defaultValue` is provided, the property will be set to that value if it does not exist
90
+ *
91
+ * If `overwrite` is also true, the property will be replaced with the `defaultValue`
92
+ *
93
+ * Returns the property node that was found or created
94
+ */
95
+ export const ensureObjectProperty = ({ obj, key, defaultValue, overwrite = false, }) => {
96
+ const properties = obj.properties;
97
+ let targetProperty = properties.find(prop => {
98
+ if (prop.type !== 'ObjectProperty')
99
+ return false;
100
+ if (prop.key.type === 'Identifier' && prop.key.name === key)
101
+ return true;
102
+ if (prop.key.type === 'StringLiteral' && prop.key.value === key)
103
+ return true;
104
+ return false;
105
+ }) ?? null;
106
+ if (targetProperty) {
107
+ if (overwrite) {
108
+ targetProperty.value = defaultValue;
109
+ }
110
+ }
111
+ else {
112
+ const safeKeyName = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
113
+ const identifier = safeKeyName.test(key)
114
+ ? j.identifier(key)
115
+ : j.stringLiteral(key);
116
+ targetProperty = j.property('init', identifier, defaultValue);
117
+ properties.push(targetProperty);
118
+ }
119
+ return targetProperty;
120
+ };
121
+ //# sourceMappingURL=codemod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemod.js","sourceRoot":"","sources":["../../src/utils/codemod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ExtensionTarget } from '../constants/extensions.js';
2
+ export declare const isProductExtensionTarget: (target: ExtensionTarget) => boolean;
3
+ export declare const isStoreExtensionTarget: (target: ExtensionTarget) => boolean;
@@ -0,0 +1,3 @@
1
+ export const isProductExtensionTarget = (target) => target.startsWith('product-page');
2
+ export const isStoreExtensionTarget = (target) => target.startsWith('store-page');
3
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/utils/extensions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAuB,EAAE,EAAE,CAClE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAEnC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAuB,EAAE,EAAE,CAChE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public",
5
5
  "@shopify:registry": "https://registry.npmjs.org/"
6
6
  },
7
- "version": "0.0.103",
7
+ "version": "0.0.105-alpha.0",
8
8
  "description": "Shop Minis CLI",
9
9
  "main": "build/index.js",
10
10
  "bin": {
@@ -71,7 +71,7 @@
71
71
  "fs-extra": "^11.1.0",
72
72
  "glob": "^9.3.2",
73
73
  "google-auth-library": "9.8.0",
74
- "graphql": "^15.0.0",
74
+ "graphql": "^16.0.0",
75
75
  "graphql-config": "^4.3.5",
76
76
  "graphql-request": "^5.2.0",
77
77
  "graphql-typescript-definitions": "3.3.6",
@@ -9,8 +9,5 @@ module.exports = {
9
9
  parserOptions: {
10
10
  ecmaVersion: 6,
11
11
  project: './tsconfig.json',
12
- schema:
13
- 'node_modules/@shopify/shop-minis-platform-sdk/src/api/schema/minis.graphql',
14
- operations: '**/*.graphql',
15
12
  },
16
13
  }
@@ -0,0 +1 @@
1
+ module.exports = require('@shopify/shop-minis-runtime/graphqlrc')
@@ -0,0 +1,6 @@
1
+ query __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__Extension {
2
+ product {
3
+ id
4
+ title
5
+ }
6
+ }
@@ -0,0 +1,26 @@
1
+ import { DocumentNode } from "graphql-typed";
2
+ import { TypedDocumentNode } from "@graphql-typed-document-node/core";
3
+ export namespace __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryPartialData {
4
+ export interface Product {
5
+ __typename?: "Product" | null;
6
+ id?: string | null;
7
+ title?: string | null;
8
+ }
9
+ }
10
+ export interface __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryPartialData {
11
+ product?: __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryPartialData.Product | null;
12
+ }
13
+ export namespace __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData {
14
+ export interface Product {
15
+ __typename: "Product";
16
+ id: string;
17
+ title: string;
18
+ }
19
+ }
20
+ export interface __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData {
21
+ product?: __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData.Product | null;
22
+ }
23
+ declare const document: DocumentNode<__MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData, never, __MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryPartialData> & TypedDocumentNode<__MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData, {
24
+ [key: string]: never;
25
+ }>;
26
+ export default document;
@@ -0,0 +1,49 @@
1
+ import {ComponentProps, useEffect, useState} from 'react'
2
+ import {BundleSelector} from '@shopify/shop-minis-ui-extensions'
3
+ import {useExtensionShopActions} from '@shopify/shop-minis-platform-sdk/actions'
4
+
5
+ import type {__MINI_APP_NAME_PASCAL_CASE____EXTENSION_TARGET_PASCAL_CASE__ExtensionQueryData as InputData} from './input.graphql'
6
+ import seedData from './seed'
7
+
8
+ type BundleSelectorItems = ComponentProps<typeof BundleSelector>['items']
9
+
10
+ export function Render({
11
+ extensionData,
12
+ }: {
13
+ extensionData: InputData
14
+ }) {
15
+ // Here we are using seed data to populate the initial state of the bundle selector.
16
+ // You can replace this with the actual data from `extensionData`
17
+ const initialBundleSelectorItems: BundleSelectorItems = seedData
18
+ const [bundleSelectorItems, setBundleSelectorItems] = useState(
19
+ initialBundleSelectorItems
20
+ )
21
+
22
+ const {updateLineItemAttributes} = useExtensionShopActions()
23
+
24
+ useEffect(() => {
25
+ if (!bundleSelectorItems) return
26
+
27
+ const lineItemAttributes = bundleSelectorItems.map(
28
+ item => item.options.find(option => option.selected)?.variantId
29
+ )
30
+
31
+ updateLineItemAttributes({
32
+ lineItemAttributes: [
33
+ {
34
+ key: '_component_reference',
35
+ value: JSON.stringify(lineItemAttributes),
36
+ },
37
+ ],
38
+ })
39
+ }, [updateLineItemAttributes, bundleSelectorItems])
40
+
41
+ if (!bundleSelectorItems) return null
42
+
43
+ return (
44
+ <BundleSelector
45
+ items={bundleSelectorItems}
46
+ onChange={setBundleSelectorItems}
47
+ />
48
+ )
49
+ }
@@ -0,0 +1,66 @@
1
+ import {BundleSelector} from '@shopify/shop-minis-ui-extensions'
2
+ import {ComponentProps} from 'react'
3
+
4
+ const seedData: ComponentProps<typeof BundleSelector>['items'] = [
5
+ {
6
+ title: 'Main Snowboard',
7
+ options: [
8
+ {
9
+ name: 'Main Snowboard',
10
+ value: 'Mr. Huebert Hydroxy Snowboard',
11
+ variantId: 'gid://shopify/ProductVariant/44887116906751',
12
+ availability: 1,
13
+ selected: false,
14
+ },
15
+ {
16
+ name: 'Main Snowboard',
17
+ value: 'The H2 Snowboard',
18
+ variantId: 'gid://shopify/ProductVariant/43698709922047',
19
+ availability: 2,
20
+ selected: true,
21
+ },
22
+ {
23
+ name: 'Main Snowboard',
24
+ value: 'The Hosted Snowboard',
25
+ variantId: 'gid://shopify/ProductVariant/43698640978175',
26
+ availability: 2,
27
+ selected: false,
28
+ },
29
+ {
30
+ name: 'Main Snowboard',
31
+ value: 'The Hydrogen Snowboard',
32
+ variantId: 'gid://shopify/ProductVariant/43698681938175',
33
+ availability: 2,
34
+ selected: false,
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ title: 'Second snowboard',
40
+ options: [
41
+ {
42
+ name: 'Second snowboard',
43
+ value: 'The Oxygen Snowboard',
44
+ variantId: 'gid://shopify/ProductVariant/43698704318719',
45
+ availability: 2,
46
+ selected: true,
47
+ },
48
+ {
49
+ name: 'Second snowboard',
50
+ value: 'The S-Series Snowboard',
51
+ variantId: 'gid://shopify/ProductVariant/43698713526527',
52
+ availability: 2,
53
+ selected: false,
54
+ },
55
+ {
56
+ name: 'Second snowboard',
57
+ value: 'The Toggle Snowboard',
58
+ variantId: 'gid://shopify/ProductVariant/43698707857663',
59
+ availability: 2,
60
+ selected: false,
61
+ },
62
+ ],
63
+ },
64
+ ]
65
+
66
+ export default seedData
@@ -1,3 +0,0 @@
1
- export declare const EXTENSION_TARGETS: {
2
- PRODUCT_PAGE: string;
3
- };
@@ -1,4 +0,0 @@
1
- export const EXTENSION_TARGETS = {
2
- PRODUCT_PAGE: 'product-page',
3
- };
4
- //# sourceMappingURL=extension-targets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-targets.js","sourceRoot":"","sources":["../../src/utils/extension-targets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,cAAc;CAC7B,CAAA"}