@shopify/shop-minis-cli 0.3.18 → 0.3.19
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/dev/index.js +6 -0
- package/build/commands/dev/index.js.map +1 -1
- package/build/utils/scan-sdk-usage.d.ts +3 -2
- package/build/utils/scan-sdk-usage.js +6 -4
- package/build/utils/scan-sdk-usage.js.map +1 -1
- package/build/utils/setup-required-sdk-imports.d.ts +12 -0
- package/build/utils/setup-required-sdk-imports.js +74 -0
- package/build/utils/setup-required-sdk-imports.js.map +1 -0
- package/package.json +1 -1
|
@@ -6,12 +6,14 @@ import serve from 'serve-static';
|
|
|
6
6
|
import _ from 'lodash';
|
|
7
7
|
import { AbortError, handler as handleError } from '@shopify/cli-kit/node/error';
|
|
8
8
|
import { outputDebug } from '@shopify/cli-kit/node/output';
|
|
9
|
+
import { renderWarning } from '@shopify/cli-kit/node/ui';
|
|
9
10
|
import { getMiniManifest } from '../../utils/minis-manifest.js';
|
|
10
11
|
import { warnDependencies } from '../../utils/dependencies.js';
|
|
11
12
|
import { checkVersionAndNudge } from '../../utils/version-nudge.js';
|
|
12
13
|
import { DEV_PANEL_URL, DEV_PANEL_URL_PATH, DEV_PANEL_PORT, } from '../../constants/dev-panel.js';
|
|
13
14
|
import { DEV_SERVER_PORT } from '../../constants/dev-server.js';
|
|
14
15
|
import { ngrokForward } from '../../utils/ngrok.js';
|
|
16
|
+
import { getSetupRequiredSdkImportsWarning } from '../../utils/setup-required-sdk-imports.js';
|
|
15
17
|
import { InteractiveTerminal } from './utils/interactive-terminal.js';
|
|
16
18
|
import { BuildType } from './types.js';
|
|
17
19
|
import { createWebServer } from './utils/web-server.js';
|
|
@@ -56,6 +58,10 @@ export async function loadCommand(parentProgram) {
|
|
|
56
58
|
throw new AbortError('Error starting development server', 'To use the --tunnel flag, you must have an ngrok authtoken set in the NGROK_AUTHTOKEN environment variable. Get your authtoken at https://dashboard.ngrok.com/get-started/setup');
|
|
57
59
|
}
|
|
58
60
|
const { handle: miniHandle, name: miniName } = getMiniManifest();
|
|
61
|
+
const setupRequiredWarning = await getSetupRequiredSdkImportsWarning();
|
|
62
|
+
if (setupRequiredWarning) {
|
|
63
|
+
renderWarning(setupRequiredWarning);
|
|
64
|
+
}
|
|
59
65
|
try {
|
|
60
66
|
await createWebServer();
|
|
61
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dev/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,WAAW,CAAA;AACzC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,MAAM,cAAc,CAAA;AAChC,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAC,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/dev/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* Used by scope validation to determine which hooks/components are actually used.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Recursively find all TypeScript
|
|
8
|
+
* Recursively find all JavaScript/TypeScript source files in a directory
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function findSourceFiles(dir: string): string[];
|
|
11
|
+
export declare const findTsFiles: typeof findSourceFiles;
|
|
11
12
|
/**
|
|
12
13
|
* Parse a file and extract import names from @shopify/shop-minis-react
|
|
13
14
|
* Returns just the import names as strings (no metadata needed for validation)
|
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
9
|
const SDK_PACKAGE = '@shopify/shop-minis-react';
|
|
10
|
+
const SOURCE_FILE_EXTENSIONS = ['.js', '.jsx', '.ts', '.tsx'];
|
|
10
11
|
/**
|
|
11
|
-
* Recursively find all TypeScript
|
|
12
|
+
* Recursively find all JavaScript/TypeScript source files in a directory
|
|
12
13
|
*/
|
|
13
|
-
export function
|
|
14
|
+
export function findSourceFiles(dir) {
|
|
14
15
|
const files = [];
|
|
15
16
|
function walkDir(currentDir) {
|
|
16
17
|
if (!fs.existsSync(currentDir)) {
|
|
@@ -30,7 +31,7 @@ export function findTsFiles(dir) {
|
|
|
30
31
|
walkDir(fullPath);
|
|
31
32
|
}
|
|
32
33
|
else if (entry.isFile() &&
|
|
33
|
-
|
|
34
|
+
SOURCE_FILE_EXTENSIONS.some(extension => entry.name.endsWith(extension))) {
|
|
34
35
|
files.push(fullPath);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -40,6 +41,7 @@ export function findTsFiles(dir) {
|
|
|
40
41
|
}
|
|
41
42
|
return files;
|
|
42
43
|
}
|
|
44
|
+
export const findTsFiles = findSourceFiles;
|
|
43
45
|
/**
|
|
44
46
|
* Remove single-line comments from a line of code
|
|
45
47
|
*/
|
|
@@ -172,7 +174,7 @@ export function extractImports(filePath) {
|
|
|
172
174
|
* This is the main entry point for scope validation.
|
|
173
175
|
*/
|
|
174
176
|
export function getUniqueSdkImports(miniPath) {
|
|
175
|
-
const files =
|
|
177
|
+
const files = findSourceFiles(miniPath);
|
|
176
178
|
const uniqueImports = new Set();
|
|
177
179
|
for (const file of files) {
|
|
178
180
|
const imports = extractImports(file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-sdk-usage.js","sourceRoot":"","sources":["../../src/utils/scan-sdk-usage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,WAAW,GAAG,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"scan-sdk-usage.js","sourceRoot":"","sources":["../../src/utils/scan-sdk-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { InlineToken, TokenItem } from '@shopify/cli-kit/node/ui';
|
|
2
|
+
export interface SetupRequiredSdkImport {
|
|
3
|
+
importName: string;
|
|
4
|
+
requiredScopes: string[];
|
|
5
|
+
optionalScopes: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function getSetupRequiredSdkImports(miniRoot?: string): SetupRequiredSdkImport[];
|
|
8
|
+
export declare function getSetupRequiredSdkImportsWarning(miniRoot?: string): Promise<{
|
|
9
|
+
headline: string;
|
|
10
|
+
body: TokenItem<InlineToken>;
|
|
11
|
+
nextSteps: TokenItem<InlineToken>[];
|
|
12
|
+
} | undefined>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { DEFAULT_MANIFEST_PATH, getMiniManifest } from './minis-manifest.js';
|
|
2
|
+
import { getRunBinCommand } from './package-manager.js';
|
|
3
|
+
import { getUniqueSdkImports } from './scan-sdk-usage.js';
|
|
4
|
+
import { loadHookOptionalScopesMap, loadHookScopesMap, } from './scopes-validation.js';
|
|
5
|
+
export function getSetupRequiredSdkImports(miniRoot = process.cwd()) {
|
|
6
|
+
try {
|
|
7
|
+
const { uuid } = getMiniManifest(DEFAULT_MANIFEST_PATH, miniRoot);
|
|
8
|
+
if (uuid)
|
|
9
|
+
return [];
|
|
10
|
+
const hookToScopes = loadHookScopesMap(miniRoot) ?? {};
|
|
11
|
+
const optionalScopeToHooks = loadHookOptionalScopesMap(miniRoot) ?? {};
|
|
12
|
+
const usedSdkImports = getUniqueSdkImports(miniRoot);
|
|
13
|
+
const setupRequiredImports = new Map();
|
|
14
|
+
const getOrCreateImportDetails = (importName) => {
|
|
15
|
+
const existingDetails = setupRequiredImports.get(importName);
|
|
16
|
+
if (existingDetails)
|
|
17
|
+
return existingDetails;
|
|
18
|
+
const importDetails = {
|
|
19
|
+
importName,
|
|
20
|
+
requiredScopes: [],
|
|
21
|
+
optionalScopes: [],
|
|
22
|
+
};
|
|
23
|
+
setupRequiredImports.set(importName, importDetails);
|
|
24
|
+
return importDetails;
|
|
25
|
+
};
|
|
26
|
+
for (const [importName, requiredScopes] of Object.entries(hookToScopes)) {
|
|
27
|
+
if (usedSdkImports.has(importName) && requiredScopes.length > 0) {
|
|
28
|
+
getOrCreateImportDetails(importName).requiredScopes.push(...requiredScopes);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
for (const [scope, importNames] of Object.entries(optionalScopeToHooks)) {
|
|
32
|
+
for (const importName of importNames) {
|
|
33
|
+
if (usedSdkImports.has(importName)) {
|
|
34
|
+
getOrCreateImportDetails(importName).optionalScopes.push(scope);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return Array.from(setupRequiredImports.values()).sort((first, second) => first.importName.localeCompare(second.importName));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function formatSdkImport(importDetails) {
|
|
45
|
+
const scopes = [
|
|
46
|
+
...importDetails.requiredScopes,
|
|
47
|
+
...importDetails.optionalScopes.map(scope => `optional ${scope}`),
|
|
48
|
+
];
|
|
49
|
+
if (scopes.length === 0)
|
|
50
|
+
return importDetails.importName;
|
|
51
|
+
return `${importDetails.importName} (${scopes.join(', ')})`;
|
|
52
|
+
}
|
|
53
|
+
export async function getSetupRequiredSdkImportsWarning(miniRoot = process.cwd()) {
|
|
54
|
+
const setupRequiredSdkImports = getSetupRequiredSdkImports(miniRoot);
|
|
55
|
+
if (setupRequiredSdkImports.length === 0)
|
|
56
|
+
return undefined;
|
|
57
|
+
return {
|
|
58
|
+
headline: 'Mini setup required for scoped SDK hooks',
|
|
59
|
+
body: [
|
|
60
|
+
'Detected scoped SDK hooks in your Mini:',
|
|
61
|
+
{ bold: setupRequiredSdkImports.map(formatSdkImport).join(', ') },
|
|
62
|
+
'These hooks need Mini setup before Shop can validate scope grants and backend authentication.',
|
|
63
|
+
],
|
|
64
|
+
nextSteps: [
|
|
65
|
+
[
|
|
66
|
+
'Run',
|
|
67
|
+
{ command: await getRunBinCommand('shop-minis', ['setup']) },
|
|
68
|
+
'then restart',
|
|
69
|
+
{ command: await getRunBinCommand('shop-minis', ['dev']) },
|
|
70
|
+
],
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=setup-required-sdk-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-required-sdk-imports.js","sourceRoot":"","sources":["../../src/utils/setup-required-sdk-imports.ts"],"names":[],"mappings":"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"}
|