@shopify/shop-minis-cli 0.0.35
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/README.md +8 -0
- package/build/commands/create-mini/index.d.ts +2 -0
- package/build/commands/create-mini/index.js +116 -0
- package/build/commands/create-mini/index.js.map +1 -0
- package/build/commands/create-mini/utils/template-app.d.ts +1 -0
- package/build/commands/create-mini/utils/template-app.js +44 -0
- package/build/commands/create-mini/utils/template-app.js.map +1 -0
- package/build/commands/dev/index.d.ts +6 -0
- package/build/commands/dev/index.js +31 -0
- package/build/commands/dev/index.js.map +1 -0
- package/build/commands/dev/utils/android.d.ts +16 -0
- package/build/commands/dev/utils/android.js +165 -0
- package/build/commands/dev/utils/android.js.map +1 -0
- package/build/commands/dev/utils/binaries.d.ts +83 -0
- package/build/commands/dev/utils/binaries.js +173 -0
- package/build/commands/dev/utils/binaries.js.map +1 -0
- package/build/commands/dev/utils/binaries.test.d.ts +1 -0
- package/build/commands/dev/utils/binaries.test.js +275 -0
- package/build/commands/dev/utils/binaries.test.js.map +1 -0
- package/build/commands/dev/utils/deeplink.d.ts +3 -0
- package/build/commands/dev/utils/deeplink.js +30 -0
- package/build/commands/dev/utils/deeplink.js.map +1 -0
- package/build/commands/dev/utils/interactive-terminal.d.ts +23 -0
- package/build/commands/dev/utils/interactive-terminal.js +252 -0
- package/build/commands/dev/utils/interactive-terminal.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-config.d.ts +2 -0
- package/build/commands/dev/utils/metro/metro-config.js +31 -0
- package/build/commands/dev/utils/metro/metro-config.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-reporter.d.ts +14 -0
- package/build/commands/dev/utils/metro/metro-reporter.js +34 -0
- package/build/commands/dev/utils/metro/metro-reporter.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.d.ts +6 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.js +45 -0
- package/build/commands/dev/utils/metro/metro-server-middleware.js.map +1 -0
- package/build/commands/dev/utils/metro/metro-server.d.ts +2 -0
- package/build/commands/dev/utils/metro/metro-server.js +24 -0
- package/build/commands/dev/utils/metro/metro-server.js.map +1 -0
- package/build/commands/dev/utils/minis-manifest.d.ts +1 -0
- package/build/commands/dev/utils/minis-manifest.js +24 -0
- package/build/commands/dev/utils/minis-manifest.js.map +1 -0
- package/build/commands/dev/utils/qr-code.d.ts +1 -0
- package/build/commands/dev/utils/qr-code.js +12 -0
- package/build/commands/dev/utils/qr-code.js.map +1 -0
- package/build/commands/dev/utils/simulator.d.ts +19 -0
- package/build/commands/dev/utils/simulator.js +89 -0
- package/build/commands/dev/utils/simulator.js.map +1 -0
- package/build/commands/dev/utils/with-retries.d.ts +4 -0
- package/build/commands/dev/utils/with-retries.js +28 -0
- package/build/commands/dev/utils/with-retries.js.map +1 -0
- package/build/commands/generate-graphql-types/index.d.ts +5 -0
- package/build/commands/generate-graphql-types/index.js +90 -0
- package/build/commands/generate-graphql-types/index.js.map +1 -0
- package/build/commands/utils/exec-async-child-process.d.ts +18 -0
- package/build/commands/utils/exec-async-child-process.js +48 -0
- package/build/commands/utils/exec-async-child-process.js.map +1 -0
- package/build/commands/utils/wrap-with-loading-indicator.d.ts +9 -0
- package/build/commands/utils/wrap-with-loading-indicator.js +23 -0
- package/build/commands/utils/wrap-with-loading-indicator.js.map +1 -0
- package/build/dev-panel/images/bottomsheet.png +0 -0
- package/build/dev-panel/images/checkmark.svg +3 -0
- package/build/dev-panel/images/chevron.svg +3 -0
- package/build/dev-panel/images/copy.svg +4 -0
- package/build/dev-panel/images/get-started.svg +3 -0
- package/build/dev-panel/images/how-to.svg +3 -0
- package/build/dev-panel/images/navigation.png +0 -0
- package/build/dev-panel/images/references.svg +3 -0
- package/build/dev-panel/images/shop-minis-logo-inverse.svg +5 -0
- package/build/dev-panel/images/shop-minis-logo.svg +5 -0
- package/build/dev-panel/images/stories.png +0 -0
- package/build/dev-panel/images/topics.svg +3 -0
- package/build/dev-panel/index.html +302 -0
- package/build/dev-panel/middleware.d.ts +4 -0
- package/build/dev-panel/middleware.js +11 -0
- package/build/dev-panel/middleware.js.map +1 -0
- package/build/dev-panel/middleware.ts +6 -0
- package/build/dev-panel/styles.css +507 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +26 -0
- package/build/index.js.map +1 -0
- package/package.json +83 -0
- package/templates/__template_blank/src/custom.d.ts +4 -0
- package/templates/__template_blank/src/index.tsx +9 -0
- package/templates/__template_blank/src/screens/HomeScreen.tsx +12 -0
- package/templates/__template_blank/src/types.ts +5 -0
- package/templates/__template_common/.eslintignore +1 -0
- package/templates/__template_common/.eslintrc.json +132 -0
- package/templates/__template_common/.prettierrc.json +8 -0
- package/templates/__template_common/babel.config.js +19 -0
- package/templates/__template_common/gitignore +3 -0
- package/templates/__template_common/index.tsx +43 -0
- package/templates/__template_common/metro.config.js +31 -0
- package/templates/__template_common/package.json +68 -0
- package/templates/__template_common/patches/react-native+0.68.5.patch +173 -0
- package/templates/__template_common/src/manifest.json +29 -0
- package/templates/__template_common/tsconfig.json +36 -0
- package/templates/__template_hello_world/src/assets/Modal-component-thumbnail.png +0 -0
- package/templates/__template_hello_world/src/assets/ProductCard-component-thumbnail.png +0 -0
- package/templates/__template_hello_world/src/assets/ProductLink-component-thumbnail.png +0 -0
- package/templates/__template_hello_world/src/assets/assets.d.ts +4 -0
- package/templates/__template_hello_world/src/assets/figma-logo.svg +14 -0
- package/templates/__template_hello_world/src/assets/shop-minis-logo.svg +7 -0
- package/templates/__template_hello_world/src/components/ButtonCTA.tsx +31 -0
- package/templates/__template_hello_world/src/components/ComponentLink.ts +70 -0
- package/templates/__template_hello_world/src/components/ComponentListItem.tsx +38 -0
- package/templates/__template_hello_world/src/components/FeaturedComponents.tsx +108 -0
- package/templates/__template_hello_world/src/components/Header.tsx +40 -0
- package/templates/__template_hello_world/src/data/Test.graphql +33 -0
- package/templates/__template_hello_world/src/data/Test.graphql.d.ts +114 -0
- package/templates/__template_hello_world/src/data/TestProducts.graphql +34 -0
- package/templates/__template_hello_world/src/data/TestProducts.graphql.d.ts +119 -0
- package/templates/__template_hello_world/src/index.tsx +9 -0
- package/templates/__template_hello_world/src/routes.tsx +107 -0
- package/templates/__template_hello_world/src/screens/AvatarScreen.tsx +95 -0
- package/templates/__template_hello_world/src/screens/BottomSheetScreen.tsx +711 -0
- package/templates/__template_hello_world/src/screens/ButtonsScreen.tsx +90 -0
- package/templates/__template_hello_world/src/screens/GridScreen.tsx +74 -0
- package/templates/__template_hello_world/src/screens/HomeScreen.tsx +70 -0
- package/templates/__template_hello_world/src/screens/IconsScreen.tsx +181 -0
- package/templates/__template_hello_world/src/screens/MediaScreen.tsx +130 -0
- package/templates/__template_hello_world/src/screens/ModalScreen.tsx +379 -0
- package/templates/__template_hello_world/src/screens/ProductCardGridScreen.tsx +68 -0
- package/templates/__template_hello_world/src/screens/ProductCardScreen.tsx +62 -0
- package/templates/__template_hello_world/src/screens/ProductLinkScreen.tsx +215 -0
- package/templates/__template_hello_world/src/screens/ProgressIndicatorScreen.tsx +77 -0
- package/templates/__template_hello_world/src/screens/QuantityPickerScreen.tsx +76 -0
- package/templates/__template_hello_world/src/screens/SpinnerScreen.tsx +63 -0
- package/templates/__template_hello_world/src/screens/TypographyScreen.tsx +274 -0
- package/templates/__template_hello_world/src/screens/WebViewScreen.tsx +42 -0
- package/templates/__template_hello_world/src/types.ts +25 -0
- package/templates/__template_snowboardz/src/assets/assets.d.ts +4 -0
- package/templates/__template_snowboardz/src/assets/circle-blue.svg +9 -0
- package/templates/__template_snowboardz/src/assets/circle-green.svg +9 -0
- package/templates/__template_snowboardz/src/assets/circle-purple.svg +9 -0
- package/templates/__template_snowboardz/src/assets/circle-rainbow.svg +34 -0
- package/templates/__template_snowboardz/src/assets/circle-red.svg +9 -0
- package/templates/__template_snowboardz/src/assets/circle-yellow.svg +9 -0
- package/templates/__template_snowboardz/src/assets/skill-level-icon-advanced.svg +3 -0
- package/templates/__template_snowboardz/src/assets/skill-level-icon-beginner.svg +3 -0
- package/templates/__template_snowboardz/src/assets/skill-level-icon-intermediate.svg +3 -0
- package/templates/__template_snowboardz/src/components/ColorButton.tsx +79 -0
- package/templates/__template_snowboardz/src/components/ColorPicker.tsx +40 -0
- package/templates/__template_snowboardz/src/components/EmptyResult.tsx +52 -0
- package/templates/__template_snowboardz/src/components/SkillLevelIcon.tsx +44 -0
- package/templates/__template_snowboardz/src/components/SkillLevelPicker.tsx +86 -0
- package/templates/__template_snowboardz/src/data/TestProducts.graphql +34 -0
- package/templates/__template_snowboardz/src/data/TestProducts.graphql.d.ts +108 -0
- package/templates/__template_snowboardz/src/hooks/useSnowboardData.tsx +37 -0
- package/templates/__template_snowboardz/src/index.tsx +9 -0
- package/templates/__template_snowboardz/src/routes.tsx +17 -0
- package/templates/__template_snowboardz/src/screens/HomeScreen.tsx +126 -0
- package/templates/__template_snowboardz/src/types.ts +12 -0
- package/templates/__template_snowboardz/src/utils.ts +17 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withRetries = void 0;
|
|
4
|
+
// TODO: worth adding some specs
|
|
5
|
+
async function withRetries(getResult, isResultReady = Boolean, { maxRetries, timeBetweenRetries } = { timeBetweenRetries: 1000, maxRetries: 120 }) {
|
|
6
|
+
if (maxRetries === 0) {
|
|
7
|
+
throw new Error();
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const result = await getResult();
|
|
11
|
+
if (isResultReady(result)) {
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// do nothing
|
|
17
|
+
}
|
|
18
|
+
return new Promise(resolve => {
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
resolve(withRetries(getResult, isResultReady, {
|
|
21
|
+
timeBetweenRetries,
|
|
22
|
+
maxRetries: maxRetries - 1,
|
|
23
|
+
}));
|
|
24
|
+
}, timeBetweenRetries);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
exports.withRetries = withRetries;
|
|
28
|
+
//# sourceMappingURL=with-retries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-retries.js","sourceRoot":"","sources":["../../../../src/commands/dev/utils/with-retries.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AACzB,KAAK,UAAU,WAAW,CAC/B,SAA2B,EAC3B,gBAAwC,OAAO,EAC/C,EAAC,UAAU,EAAE,kBAAkB,EAAC,GAAG,EAAC,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAC;IAE9E,IAAI,UAAU,KAAK,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,EAAE,CAAA;KAClB;IACD,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,MAAM,CAAA;SACd;KACF;IAAC,MAAM;QACN,aAAa;KACd;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CACL,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;gBACpC,kBAAkB;gBAClB,UAAU,EAAE,UAAU,GAAG,CAAC;aAC3B,CAAC,CACH,CAAA;QACH,CAAC,EAAE,kBAAkB,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC;AA1BD,kCA0BC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const graphql_typescript_definitions_1 = require("graphql-typescript-definitions");
|
|
10
|
+
const graphql_config_1 = require("graphql-config");
|
|
11
|
+
const minis_manifest_1 = require("../dev/utils/minis-manifest");
|
|
12
|
+
function loadCommand(parentProgram) {
|
|
13
|
+
const command = new commander_1.Command()
|
|
14
|
+
.name('generate-graphql-types')
|
|
15
|
+
.description('Generate types for all of your .graphql files')
|
|
16
|
+
.option('--watch', 'enable watch mode')
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
const miniDir = process.cwd();
|
|
19
|
+
const miniHandle = (0, minis_manifest_1.getMiniManifest)().handle;
|
|
20
|
+
console.log('Generating graphql types for', chalk_1.default.green(miniHandle), '\n');
|
|
21
|
+
// All of the paths below are relative to `miniDir` and refer to dependencies of the mini app itself
|
|
22
|
+
const schemaTypesPathConfig = 'node_modules/@shopify/shop-minis-platform-sdk/src/api/types/';
|
|
23
|
+
const config = new graphql_config_1.GraphQLConfig({
|
|
24
|
+
config: {
|
|
25
|
+
schemaPath: 'node_modules/@shopify/shop-minis-platform-sdk/src/api/minis.graphql',
|
|
26
|
+
includes: [`**/*.graphql`],
|
|
27
|
+
excludes: ['node_modules/**'],
|
|
28
|
+
extensions: {
|
|
29
|
+
schemaTypesPath: schemaTypesPathConfig,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
filepath: '',
|
|
33
|
+
}, []);
|
|
34
|
+
const builder = new graphql_typescript_definitions_1.Builder({
|
|
35
|
+
cwd: miniDir,
|
|
36
|
+
addTypename: true,
|
|
37
|
+
schemaTypesPath: schemaTypesPathConfig,
|
|
38
|
+
config,
|
|
39
|
+
});
|
|
40
|
+
const schemas = [];
|
|
41
|
+
const docs = [];
|
|
42
|
+
const builtColor = chalk_1.default.inverse.bold.green(' BUILT ');
|
|
43
|
+
const errorColor = chalk_1.default.inverse.bold.red(' ERROR ');
|
|
44
|
+
builder.on('start:docs', () => {
|
|
45
|
+
docs.length = 0;
|
|
46
|
+
});
|
|
47
|
+
builder.on('start:schema', () => {
|
|
48
|
+
schemas.length = 0;
|
|
49
|
+
});
|
|
50
|
+
builder.on('build:docs', doc => {
|
|
51
|
+
docs.push(doc);
|
|
52
|
+
});
|
|
53
|
+
builder.on('build:schema', schema => {
|
|
54
|
+
schemas.push(schema);
|
|
55
|
+
});
|
|
56
|
+
builder.on('end:docs', () => {
|
|
57
|
+
docs
|
|
58
|
+
.sort(({ documentPath: documentPathA }, { documentPath: documentPathB }) => documentPathA.localeCompare(documentPathB))
|
|
59
|
+
.forEach(({ documentPath, definitionPath }) => {
|
|
60
|
+
// Make the paths a bit nicer to look at by removing all the path up to the mini's dir
|
|
61
|
+
const trimmedDocumentPath = documentPath.replace(miniDir, '');
|
|
62
|
+
const trimmedDefinitionPath = definitionPath.replace(miniDir, '');
|
|
63
|
+
console.log(`${builtColor} ${chalk_1.default.dim(trimmedDocumentPath)} → ${trimmedDefinitionPath}`);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
builder.on('end:schema', () => {
|
|
67
|
+
// It would be good if there was a way to get `graphql-typescript-definitions` to not build the schema types
|
|
68
|
+
// but instead we will just ignore it and not tell the user what happened
|
|
69
|
+
});
|
|
70
|
+
builder.on('error', error => {
|
|
71
|
+
console.log(`${errorColor} ${error.message}`);
|
|
72
|
+
if (error.stack) {
|
|
73
|
+
console.log(chalk_1.default.dim(error.stack));
|
|
74
|
+
}
|
|
75
|
+
console.log();
|
|
76
|
+
if (!options.watch) {
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
process.on('unhandledRejection', () => {
|
|
81
|
+
// In watch mode you cannot catch more than one error `graphql-typescript-definitions` will
|
|
82
|
+
// cause an `unhandledRejection` error. We should just exit
|
|
83
|
+
process.exit(1);
|
|
84
|
+
});
|
|
85
|
+
builder.run({ watch: Boolean(options.watch) });
|
|
86
|
+
});
|
|
87
|
+
parentProgram.addCommand(command);
|
|
88
|
+
}
|
|
89
|
+
exports.loadCommand = loadCommand;
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/generate-graphql-types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { exec } from 'child_process';
|
|
3
|
+
import { Options as OraOptions } from 'ora';
|
|
4
|
+
declare const _execAsync: typeof exec.__promisify__;
|
|
5
|
+
type Tail<T extends any[]> = T extends [infer _I, ...infer L] ? L : never;
|
|
6
|
+
type ExecOptions = Tail<Parameters<typeof _execAsync>>;
|
|
7
|
+
interface CmdOptions {
|
|
8
|
+
cmd: string;
|
|
9
|
+
loadingMessage?: string;
|
|
10
|
+
successMessage?: string;
|
|
11
|
+
errorMessage?: string;
|
|
12
|
+
spinnerOptions?: Omit<OraOptions, 'text' | 'prefixText'>;
|
|
13
|
+
}
|
|
14
|
+
export declare function execAsync(cmdConfig: CmdOptions | string, ...args: ExecOptions): Promise<{
|
|
15
|
+
stdout: string[];
|
|
16
|
+
stderr: string[];
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.execAsync = void 0;
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const _execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
11
|
+
async function execAsync(cmdConfig, ...args) {
|
|
12
|
+
if (typeof cmdConfig === 'string') {
|
|
13
|
+
cmdConfig = { cmd: cmdConfig }; // eslint-disable-line no-param-reassign
|
|
14
|
+
}
|
|
15
|
+
const loadingIndicator = (0, ora_1.default)(cmdConfig.spinnerOptions);
|
|
16
|
+
if (cmdConfig.loadingMessage) {
|
|
17
|
+
loadingIndicator.start(cmdConfig.loadingMessage);
|
|
18
|
+
}
|
|
19
|
+
let stderr = '';
|
|
20
|
+
let stdout = '';
|
|
21
|
+
try {
|
|
22
|
+
const result = await _execAsync(cmdConfig.cmd, ...args);
|
|
23
|
+
stderr = result.stderr;
|
|
24
|
+
stdout = result.stdout;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
if (loadingIndicator.isSpinning) {
|
|
28
|
+
loadingIndicator.fail(cmdConfig.errorMessage);
|
|
29
|
+
console.log('\n');
|
|
30
|
+
}
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
if (loadingIndicator.isSpinning) {
|
|
34
|
+
loadingIndicator.succeed(cmdConfig.successMessage);
|
|
35
|
+
}
|
|
36
|
+
if (typeof stdout !== 'string') {
|
|
37
|
+
stdout = stdout.toString('utf8');
|
|
38
|
+
}
|
|
39
|
+
if (typeof stderr !== 'string') {
|
|
40
|
+
stderr = stderr.toString('utf8');
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
stdout: stdout.split(/[\n\r\t]+/).filter(Boolean),
|
|
44
|
+
stderr: stderr.split(/[\n\r\t]+/).filter(Boolean),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
exports.execAsync = execAsync;
|
|
48
|
+
//# sourceMappingURL=exec-async-child-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec-async-child-process.js","sourceRoot":"","sources":["../../../src/commands/utils/exec-async-child-process.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA8B;AAC9B,iDAAkC;AAElC,8CAA8C;AAE9C,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAA;AAa3B,KAAK,UAAU,SAAS,CAC7B,SAA8B,EAC9B,GAAG,IAAiB;IAEpB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,SAAS,GAAG,EAAC,GAAG,EAAE,SAAS,EAAC,CAAA,CAAC,wCAAwC;KACtE;IAED,MAAM,gBAAgB,GAAG,IAAA,aAAG,EAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,SAAS,CAAC,cAAc,EAAE;QAC5B,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;KACjD;IAED,IAAI,MAAM,GAAoB,EAAE,CAAA;IAChC,IAAI,MAAM,GAAoB,EAAE,CAAA;IAChC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QACvD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,gBAAgB,CAAC,UAAU,EAAE;YAC/B,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAClB;QACD,MAAM,GAAG,CAAA;KACV;IAED,IAAI,gBAAgB,CAAC,UAAU,EAAE;QAC/B,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;KACnD;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KACjC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KACjC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACjD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KAClD,CAAA;AACH,CAAC;AAzCD,8BAyCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Options as OraOptions } from 'ora';
|
|
2
|
+
interface LoadingOptions {
|
|
3
|
+
loadingMessage: string;
|
|
4
|
+
successMessage?: string;
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
spinnerOptions?: Omit<OraOptions, 'text' | 'prefixText'>;
|
|
7
|
+
}
|
|
8
|
+
export declare function wrapWithLoadingIndicator<T>(promise: Promise<T> | (() => Promise<T>), { loadingMessage, errorMessage, successMessage, spinnerOptions }: LoadingOptions): Promise<T | (() => Promise<T>)>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.wrapWithLoadingIndicator = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
async function wrapWithLoadingIndicator(promise, { loadingMessage, errorMessage, successMessage, spinnerOptions }) {
|
|
9
|
+
const loadingIndicator = (0, ora_1.default)(spinnerOptions);
|
|
10
|
+
loadingIndicator.start(loadingMessage);
|
|
11
|
+
try {
|
|
12
|
+
const result = await promise;
|
|
13
|
+
loadingIndicator.succeed(successMessage);
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
loadingIndicator.fail(errorMessage);
|
|
18
|
+
console.log('\n');
|
|
19
|
+
throw err;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.wrapWithLoadingIndicator = wrapWithLoadingIndicator;
|
|
23
|
+
//# sourceMappingURL=wrap-with-loading-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-with-loading-indicator.js","sourceRoot":"","sources":["../../../src/commands/utils/wrap-with-loading-indicator.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA8C;AASvC,KAAK,UAAU,wBAAwB,CAC5C,OAAwC,EACxC,EAAC,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAiB;IAE9E,MAAM,gBAAgB,GAAG,IAAA,aAAG,EAAC,cAAc,CAAC,CAAA;IAC5C,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAEtC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAA;QAC5B,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACxC,OAAO,MAAM,CAAA;KACd;IAAC,OAAO,GAAG,EAAE;QACZ,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,GAAG,CAAA;KACV;AACH,CAAC;AAhBD,4DAgBC"}
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M2 22V23H1V22H2ZM16 21H17V23H16V21ZM1 8V7H3V8H1ZM2 21H16V23H2V21ZM3 8V22H1V8H3Z" fill="white"/>
|
|
3
|
+
<path d="M8.00012 16V17H7.00012V16H8.00012ZM22.0001 16H23.0001V17H22.0001V16ZM22.0001 2V1H23.0001V2H22.0001ZM8.00012 2H7.00012V1H8.00012V2ZM8.00012 15H22.0001V17H8.00012V15ZM21.0001 16V2H23.0001V16H21.0001ZM22.0001 3H8.00012V1H22.0001V3ZM9.00012 2V16H7.00012V2H9.00012Z" fill="white"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 2H1V20H2.1255C2.5695 21.7253 4.13563 23.0001 5.99951 23.0001C7.8634 23.0001 9.42953 21.7253 9.87353 20H13.9998H14.1257C14.5697 21.7253 16.1359 23.0001 17.9998 23.0001C19.8636 23.0001 21.4298 21.7253 21.8738 20H22.9998V12C22.9998 9.23858 20.7612 7 17.9998 7H16V2ZM7.73202 20C7.90214 19.7059 7.99951 19.3644 7.99951 19.0001C7.99951 18.6358 7.90209 18.2942 7.73188 18C7.38605 17.4023 6.73974 17.0001 5.99951 17.0001C5.25928 17.0001 4.61297 17.4023 4.26715 18C4.09693 18.2942 3.99951 18.6358 3.99951 19.0001C3.99951 19.3644 4.09688 19.7059 4.26701 20C4.6128 20.5979 5.25918 21.0001 5.99951 21.0001C6.73984 21.0001 7.38622 20.5979 7.73202 20ZM3 16.3537C3.73293 15.5236 4.80508 15.0001 5.99951 15.0001C7.86331 15.0001 9.42938 16.2748 9.87346 18H13.9998V7H14V4H3V16.3537ZM15.9998 19.0001C15.9998 18.6358 16.0972 18.2942 16.2674 18C16.6132 17.4023 17.2595 17.0001 17.9998 17.0001C18.74 17.0001 19.3863 17.4023 19.7321 18C19.9023 18.2942 19.9998 18.6358 19.9998 19.0001C19.9998 19.3644 19.9024 19.7059 19.7323 20C19.3865 20.5979 18.7401 21.0001 17.9998 21.0001C17.2594 21.0001 16.613 20.5979 16.2673 20C16.0971 19.7059 15.9998 19.3644 15.9998 19.0001ZM17.9998 15.0001C19.1944 15.0001 20.2668 15.5239 20.9998 16.3543V12C20.9998 10.3431 19.6566 9 17.9998 9H16V15.5351C16.5883 15.1949 17.2713 15.0001 17.9998 15.0001Z" fill="#0F1721"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 2H4V3V21V22H5H19H20V21V7.5V7.08579L19.7071 6.79289L15.2071 2.29289L14.9142 2H14.5H5ZM6 20V4H14.0858L18 7.91421V20H6ZM11.0225 14.8917L16.2071 9.70711L14.7929 8.29289L10.3154 12.7704L8.70711 11.162L7.29289 12.5762L9.60832 14.8917L10.3154 15.5988L11.0225 14.8917Z" fill="#0F1721"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 1H16V4H21V23H3V4H8V1ZM8 7V6H5V21H19V6H16V7H8ZM10 3H14V5H10V3ZM9 9V11H7V9H9ZM17 9V11H11V9H17ZM7 13V15H9V13H7ZM17 13V15H11V13H17ZM7 17V19H9V17H7ZM17 17V19H11V17H17Z" fill="#0F1721"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="165" height="40" viewBox="0 0 165 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0 4C0 1.79086 1.79086 0 4 0H87.52C89.7291 0 91.52 1.79086 91.52 4V36C91.52 38.2091 89.7291 40 87.52 40H4C1.79086 40 0 38.2091 0 36V4Z" fill="#5433EB"/>
|
|
3
|
+
<path d="M21.676 12.8023C18.1899 12.8023 16.0254 14.5274 16.0254 17.2698C16.0254 20.1822 18.6664 20.9164 21.001 21.4256C23.3356 21.9348 24.3751 22.1323 24.3751 23.0376C24.3751 23.943 23.6155 24.3666 22.0975 24.3666C20.6355 24.3666 19.5675 23.6588 18.9495 22.3024L15.9979 23.7718C17.0099 25.9775 19.1745 27.222 22.0975 27.222C25.7241 27.222 27.9171 25.5254 27.9171 22.6985C27.9171 19.7861 25.2762 19.0508 22.9405 18.5417C20.6048 18.0325 19.5675 17.8349 19.5675 16.9307C19.5675 16.0856 20.2717 15.663 21.6802 15.663C22.9732 15.663 23.8986 16.2567 24.5758 17.4166L27.5273 15.9176C26.4593 13.9105 24.4067 12.8076 21.6802 12.8076L21.676 12.8023ZM30.0014 27.0857H33.6565V18.6832C33.6565 17.0986 34.865 15.8838 36.495 15.8838C38.125 15.8838 39.306 17.0722 39.306 18.6832V27.0804H42.9611V18.6832C42.9611 15.2341 40.7121 12.8023 37.563 12.8023C35.989 12.8023 34.6114 13.396 33.6544 14.4429V8H29.9992L30.0014 27.0857ZM47.3261 17.367C46.0669 18.1878 44.983 19.9086 44.983 21.4636C44.983 25.0828 47.7381 27.6551 51.6171 27.6551C55.6652 27.6551 58.7012 24.4859 58.7012 20.3322C58.7012 15.7243 55.2437 12.3882 50.4086 12.3882C48.6128 12.3882 46.8835 12.8467 45.338 13.9897L47.68 16.6095C48.4973 16.0438 49.4695 15.7445 50.4635 15.7528C53.2186 15.7528 55.2426 17.7314 55.2426 20.3893C55.2426 23.0471 52.6355 25.2191 50.0484 24.0042C49.3448 23.6736 48.7638 23.0535 48.5694 22.2918C48.3138 21.2893 48.8737 20.3734 49.5551 19.6889L47.3261 17.367ZM68.6788 27.2262C72.5304 27.2262 75.5379 24.0877 75.5379 20.0164C75.5379 15.9451 72.5304 12.8065 68.6788 12.8065C66.9357 12.8065 65.3892 13.4847 64.2937 14.6732V12.9439H60.7231V32H64.3782V25.4684C64.9413 26.0336 65.612 26.48 66.3507 26.7812C67.0894 27.0824 67.8811 27.2323 68.6788 27.222V27.2262ZM68.0597 24.0528C65.8677 24.0528 64.2092 22.3003 64.2092 19.9815C64.2092 17.6627 65.8677 15.9102 68.0597 15.9102C70.2781 15.9102 71.9113 17.6353 71.9113 19.9815C71.9113 22.3277 70.2813 24.057 68.0597 24.057" fill="#F4F4ED"/>
|
|
4
|
+
<path d="M108.506 27V13.404L114.314 27H116.954L122.784 13.404V27H125.468V9.84H121.288L115.634 23.502L110.002 9.84H105.822V27H108.506ZM129.924 13.932C130.892 13.932 131.684 13.184 131.684 12.194C131.684 11.204 130.936 10.456 129.924 10.456C128.934 10.456 128.164 11.204 128.164 12.194C128.164 13.184 128.934 13.932 129.924 13.932ZM131.222 27V15.56H128.648V27H131.222ZM136.696 27V21.28C136.696 19.014 137.906 17.43 139.798 17.43C141.382 17.43 142.262 18.574 142.262 20.4V27H144.88V20.29C144.88 16.946 143.472 15.208 140.656 15.208C138.786 15.208 137.488 16.088 136.696 17.408V15.56H134.1V27H136.696ZM148.884 13.932C149.852 13.932 150.644 13.184 150.644 12.194C150.644 11.204 149.896 10.456 148.884 10.456C147.894 10.456 147.124 11.204 147.124 12.194C147.124 13.184 147.894 13.932 148.884 13.932ZM150.182 27V15.56H147.608V27H150.182ZM157.9 27.352C161.024 27.352 162.938 25.966 162.938 23.788C162.938 18.882 155.524 21.346 155.524 18.75C155.524 17.782 156.36 17.1 157.812 17.1C159.396 17.1 160.364 17.892 160.43 19.212H162.916C162.74 16.748 160.87 15.208 158.01 15.208C154.864 15.208 152.95 16.682 152.95 18.86C152.95 23.634 160.364 21.126 160.364 23.854C160.364 24.756 159.484 25.46 157.988 25.46C156.316 25.46 155.194 24.712 155.128 23.414H152.62C152.686 25.856 154.688 27.352 157.9 27.352Z" fill="white"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="165" height="40" viewBox="0 0 165 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0 4C0 1.79086 1.79086 0 4 0H87.52C89.7291 0 91.52 1.79086 91.52 4V36C91.52 38.2091 89.7291 40 87.52 40H4C1.79086 40 0 38.2091 0 36V4Z" fill="#5433EB"/>
|
|
3
|
+
<path d="M21.676 12.8023C18.1899 12.8023 16.0254 14.5274 16.0254 17.2697C16.0254 20.1822 18.6664 20.9164 21.001 21.4256C23.3356 21.9347 24.3751 22.1323 24.3751 23.0376C24.3751 23.9429 23.6155 24.3665 22.0975 24.3665C20.6355 24.3665 19.5675 23.6588 18.9495 22.3024L15.9979 23.7718C17.0099 25.9775 19.1745 27.2219 22.0975 27.2219C25.7241 27.2219 27.9171 25.5254 27.9171 22.6985C27.9171 19.7861 25.2762 19.0508 22.9405 18.5416C20.6048 18.0325 19.5675 17.8349 19.5675 16.9306C19.5675 16.0855 20.2717 15.663 21.6802 15.663C22.9732 15.663 23.8986 16.2567 24.5758 17.4166L27.5273 15.9176C26.4593 13.9104 24.4067 12.8076 21.6802 12.8076L21.676 12.8023ZM30.0014 27.0857H33.6565V18.6832C33.6565 17.0986 34.865 15.8838 36.495 15.8838C38.125 15.8838 39.306 17.0722 39.306 18.6832V27.0804H42.9611V18.6832C42.9611 15.2341 40.7121 12.8023 37.563 12.8023C35.989 12.8023 34.6114 13.396 33.6544 14.4429V7.99997H29.9992L30.0014 27.0857ZM47.3261 17.3669C46.0669 18.1877 44.983 19.9086 44.983 21.4636C44.983 25.0828 47.7381 27.6551 51.6171 27.6551C55.6652 27.6551 58.7012 24.4859 58.7012 20.3322C58.7012 15.7243 55.2437 12.3882 50.4086 12.3882C48.6128 12.3882 46.8835 12.8467 45.338 13.9897L47.68 16.6095C48.4973 16.0437 49.4695 15.7445 50.4635 15.7528C53.2186 15.7528 55.2426 17.7314 55.2426 20.3892C55.2426 23.0471 52.6355 25.219 50.0484 24.0042C49.3448 23.6735 48.7638 23.0534 48.5694 22.2918C48.3138 21.2893 48.8737 20.3734 49.5551 19.6889L47.3261 17.3669ZM68.6788 27.2262C72.5304 27.2262 75.5379 24.0876 75.5379 20.0163C75.5379 15.945 72.5304 12.8065 68.6788 12.8065C66.9357 12.8065 65.3892 13.4847 64.2937 14.6731V12.9438H60.7231V32H64.3782V25.4683C64.9413 26.0335 65.612 26.48 66.3507 26.7812C67.0894 27.0824 67.8811 27.2323 68.6788 27.2219V27.2262ZM68.0597 24.0528C65.8677 24.0528 64.2092 22.3002 64.2092 19.9815C64.2092 17.6627 65.8677 15.9102 68.0597 15.9102C70.2781 15.9102 71.9113 17.6353 71.9113 19.9815C71.9113 22.3277 70.2813 24.057 68.0597 24.057" fill="#F4F4ED"/>
|
|
4
|
+
<path d="M108.506 27V13.404L114.314 27H116.954L122.784 13.404V27H125.468V9.84H121.288L115.634 23.502L110.002 9.84H105.822V27H108.506ZM129.924 13.932C130.892 13.932 131.684 13.184 131.684 12.194C131.684 11.204 130.936 10.456 129.924 10.456C128.934 10.456 128.164 11.204 128.164 12.194C128.164 13.184 128.934 13.932 129.924 13.932ZM131.222 27V15.56H128.648V27H131.222ZM136.696 27V21.28C136.696 19.014 137.906 17.43 139.798 17.43C141.382 17.43 142.262 18.574 142.262 20.4V27H144.88V20.29C144.88 16.946 143.472 15.208 140.656 15.208C138.786 15.208 137.488 16.088 136.696 17.408V15.56H134.1V27H136.696ZM148.884 13.932C149.852 13.932 150.644 13.184 150.644 12.194C150.644 11.204 149.896 10.456 148.884 10.456C147.894 10.456 147.124 11.204 147.124 12.194C147.124 13.184 147.894 13.932 148.884 13.932ZM150.182 27V15.56H147.608V27H150.182ZM157.9 27.352C161.024 27.352 162.938 25.966 162.938 23.788C162.938 18.882 155.524 21.346 155.524 18.75C155.524 17.782 156.36 17.1 157.812 17.1C159.396 17.1 160.364 17.892 160.43 19.212H162.916C162.74 16.748 160.87 15.208 158.01 15.208C154.864 15.208 152.95 16.682 152.95 18.86C152.95 23.634 160.364 21.126 160.364 23.854C160.364 24.756 159.484 25.46 157.988 25.46C156.316 25.46 155.194 24.712 155.128 23.414H152.62C152.686 25.856 154.688 27.352 157.9 27.352Z" fill="#0F1721"/>
|
|
5
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.8498 3.56614C3.05315 2.65106 3.86477 2 4.80217 2H18.7399C19.6383 2 20.4265 2.59907 20.667 3.46471L23 11.8637V20C23 21.1046 22.1046 22 21 22H3C1.89543 22 1 21.1046 1 20V11.8902L2.8498 3.56614ZM18.7399 4L4.80217 4L3.02439 12H20.9621L18.7399 4ZM3 20V14H21V20H3ZM14 16H10V18H14V16ZM6 8.70001L18 8.70001V10.5L6 10.5V8.70001ZM17 5.20001L7 5.20001V7.00001L17 7.00001V5.20001Z" fill="black"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>Shop Minis - open-mini</title>
|
|
6
|
+
<meta name="description" content="Shop Minis - open-mini" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
|
+
<link
|
|
9
|
+
rel="icon"
|
|
10
|
+
type="image/png"
|
|
11
|
+
href="https://cdn.shopify.com/shopifycloud/arrive_website/assets/favicon-7859a5f629d44e86a6673fe8db1b39aac82398fd6df9de33c3b3382805a6c761.png"
|
|
12
|
+
/>
|
|
13
|
+
|
|
14
|
+
<link rel="preconnect" href="https://cdn.shopify.com" />
|
|
15
|
+
<link rel="stylesheet" href="styles.css" />
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div class="page">
|
|
19
|
+
<picture class="logo">
|
|
20
|
+
<source srcset="./images/shop-minis-logo-inverse.svg" media="(prefers-color-scheme: dark)" />
|
|
21
|
+
<source srcset="./images/shop-minis-logo.svg" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" />
|
|
22
|
+
<img decoding="async" src="./images/shop-minis-logo.svg" />
|
|
23
|
+
</picture>
|
|
24
|
+
<div class="container">
|
|
25
|
+
<div class="qrcode">
|
|
26
|
+
<a id="open-mini-button" class="button open-mini">
|
|
27
|
+
Open Mini in Shop
|
|
28
|
+
</a>
|
|
29
|
+
<canvas class="qr-canvas" id="canvas"></canvas>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="content">
|
|
32
|
+
<h1>Add deeplink parameters</h1>
|
|
33
|
+
<form>
|
|
34
|
+
<div>
|
|
35
|
+
<label for="shop_id">shop_id</label><br />
|
|
36
|
+
<input type="text" id="shop_id" name="shop_id" />
|
|
37
|
+
</div>
|
|
38
|
+
<div>
|
|
39
|
+
<label for="product_id">product_id</label><br />
|
|
40
|
+
<input type="text" id="product_id" name="product_id" />
|
|
41
|
+
</div>
|
|
42
|
+
<div>
|
|
43
|
+
<label for="product_variant_id">product_variant_id</label><br />
|
|
44
|
+
<input
|
|
45
|
+
type="text"
|
|
46
|
+
id="product_variant_id"
|
|
47
|
+
name="product_variant_id"
|
|
48
|
+
/>
|
|
49
|
+
</div>
|
|
50
|
+
</form>
|
|
51
|
+
<div class="param-appendix">Params added to deeplink:</div>
|
|
52
|
+
<b id="param-appendix" class="param-appendix">?</b>
|
|
53
|
+
<div class="deeplink-content" style="width: 60%">
|
|
54
|
+
<a id="deeplink" class="link"></a>
|
|
55
|
+
<div class="copy-deeplink" id="copy-deeplink">
|
|
56
|
+
<div class="icon-copy">
|
|
57
|
+
<img src="images/copy.svg" width="20" height="20" />
|
|
58
|
+
<span>Copy</span>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="icon-checkmark">
|
|
61
|
+
<img src="images/checkmark.svg" width="20" height="20" />
|
|
62
|
+
<span>Copied</span>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="Main">
|
|
69
|
+
<div class="Documentation">
|
|
70
|
+
<div
|
|
71
|
+
style="
|
|
72
|
+
flex-direction: row;
|
|
73
|
+
display: flex;
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
align-items: center;
|
|
76
|
+
"
|
|
77
|
+
>
|
|
78
|
+
<h2>Documentation</h2>
|
|
79
|
+
<a
|
|
80
|
+
href="https://shop.app/minis/docs/"
|
|
81
|
+
target="_blank"
|
|
82
|
+
class="button-link"
|
|
83
|
+
>Explore the docs</a
|
|
84
|
+
>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="rail">
|
|
87
|
+
<a
|
|
88
|
+
href="https://shop.app/minis/docs/getting-started/"
|
|
89
|
+
target="_blank"
|
|
90
|
+
class="card p-2 cursor-pointer w-50"
|
|
91
|
+
>
|
|
92
|
+
<div class="icon-container">
|
|
93
|
+
<img src="./images/get-started.svg" width="24" height="24" />
|
|
94
|
+
</div>
|
|
95
|
+
<h3>Get started</h3>
|
|
96
|
+
<p style="margin-bottom: 0">
|
|
97
|
+
Learn what Shop Minis are and how they're structures
|
|
98
|
+
</p>
|
|
99
|
+
</a>
|
|
100
|
+
<a
|
|
101
|
+
href="https://shop.app/minis/docs/category/how-to-guides/"
|
|
102
|
+
target="_blank"
|
|
103
|
+
class="card p-2 cursor-pointer w-50"
|
|
104
|
+
>
|
|
105
|
+
<div class="icon-container">
|
|
106
|
+
<img src="./images/how-to.svg" width="24" height="24" />
|
|
107
|
+
</div>
|
|
108
|
+
<h3>How To Guides</h3>
|
|
109
|
+
<p style="margin-bottom: 0">Learn how to build things quickly</p>
|
|
110
|
+
</a>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="rail" style="margin-top: 1rem">
|
|
113
|
+
<a
|
|
114
|
+
href="https://shop.app/minis/docs/category/topics/"
|
|
115
|
+
target="_blank"
|
|
116
|
+
class="card p-2 cursor-pointer w-50"
|
|
117
|
+
>
|
|
118
|
+
<div class="icon-container">
|
|
119
|
+
<img src="./images/topics.svg" width="24" height="24" />
|
|
120
|
+
</div>
|
|
121
|
+
<h3>Topics</h3>
|
|
122
|
+
<p style="margin-bottom: 0">
|
|
123
|
+
Get an overview of various parts of the platform
|
|
124
|
+
</p>
|
|
125
|
+
</a>
|
|
126
|
+
<a
|
|
127
|
+
href="https://shop.app/minis/docs/category/references/"
|
|
128
|
+
target="_blank"
|
|
129
|
+
class="card p-2 cursor-pointer w-50"
|
|
130
|
+
>
|
|
131
|
+
<div class="icon-container">
|
|
132
|
+
<img src="./images/references.svg" width="24" height="24" />
|
|
133
|
+
</div>
|
|
134
|
+
<h3>References</h3>
|
|
135
|
+
<p style="margin-bottom: 0">
|
|
136
|
+
Detailed documentation for the API and SDK
|
|
137
|
+
</p>
|
|
138
|
+
</a>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
<div id="content"></div>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<script type="module">
|
|
146
|
+
import qrcode from 'https://cdn.skypack.dev/qrcode'
|
|
147
|
+
|
|
148
|
+
const urlSearchParams = new URLSearchParams(window.location.search)
|
|
149
|
+
const params = Object.fromEntries(urlSearchParams.entries())
|
|
150
|
+
|
|
151
|
+
const openMiniButton = document.getElementById('open-mini-button')
|
|
152
|
+
const deepLinkLinkHTML = params.deepLink
|
|
153
|
+
? `<a href="${params.deepLink}" id="deeplink">${params.deepLink}</a>`
|
|
154
|
+
: 'Not found'
|
|
155
|
+
|
|
156
|
+
openMiniButton.href = params.deepLink
|
|
157
|
+
|
|
158
|
+
if (params.deepLink) {
|
|
159
|
+
const canvas = document.querySelector('#canvas')
|
|
160
|
+
|
|
161
|
+
var canvasQrCodeOptions = null
|
|
162
|
+
|
|
163
|
+
const updateQRCode = () => {
|
|
164
|
+
if (
|
|
165
|
+
window.matchMedia &&
|
|
166
|
+
window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
167
|
+
) {
|
|
168
|
+
console.log('dark mode!')
|
|
169
|
+
canvasQrCodeOptions = {
|
|
170
|
+
errorCorrectionLevel: 'L',
|
|
171
|
+
scale: 12,
|
|
172
|
+
margin: 5,
|
|
173
|
+
color: {
|
|
174
|
+
dark: '#fff',
|
|
175
|
+
light: '#3F454D',
|
|
176
|
+
},
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
console.log('light mode!')
|
|
180
|
+
canvasQrCodeOptions = {
|
|
181
|
+
errorCorrectionLevel: 'L',
|
|
182
|
+
scale: 12,
|
|
183
|
+
margin: 5,
|
|
184
|
+
color: {
|
|
185
|
+
dark: '#000',
|
|
186
|
+
light: '#FFFFFF',
|
|
187
|
+
},
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
updateQRCode()
|
|
193
|
+
|
|
194
|
+
window
|
|
195
|
+
.matchMedia('(prefers-color-scheme: dark)')
|
|
196
|
+
.addListener(function (e) {
|
|
197
|
+
updateQRCode()
|
|
198
|
+
qrcode.toCanvas(
|
|
199
|
+
canvas,
|
|
200
|
+
params.deepLink,
|
|
201
|
+
canvasQrCodeOptions,
|
|
202
|
+
error => {
|
|
203
|
+
if (error) console.error('Error generating the qr code', error)
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
})
|
|
207
|
+
|
|
208
|
+
qrcode.toCanvas(canvas, params.deepLink, canvasQrCodeOptions, error => {
|
|
209
|
+
if (error) console.error('Error generating the qr code', error)
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
const shopIdInput = document.getElementById('shop_id')
|
|
213
|
+
const productIdInput = document.getElementById('product_id')
|
|
214
|
+
const productVariantIdInput =
|
|
215
|
+
document.getElementById('product_variant_id')
|
|
216
|
+
const paramAppendix = document.getElementById('param-appendix')
|
|
217
|
+
|
|
218
|
+
initaliseInputsFromLocalStorage()
|
|
219
|
+
|
|
220
|
+
shopIdInput.addEventListener('input', function () {
|
|
221
|
+
generateParams()
|
|
222
|
+
})
|
|
223
|
+
productIdInput.addEventListener('input', function () {
|
|
224
|
+
generateParams()
|
|
225
|
+
})
|
|
226
|
+
productVariantIdInput.addEventListener('input', function () {
|
|
227
|
+
generateParams()
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
function generateParams() {
|
|
231
|
+
const paramsObj = {
|
|
232
|
+
...(shopIdInput.value && {shop_id: shopIdInput.value}),
|
|
233
|
+
...(productIdInput.value && {product_id: productIdInput.value}),
|
|
234
|
+
...(productVariantIdInput.value && {
|
|
235
|
+
product_variant_id: productVariantIdInput.value,
|
|
236
|
+
}),
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// showing params in UI
|
|
240
|
+
const searchParams = '?' + new URLSearchParams(paramsObj).toString()
|
|
241
|
+
paramAppendix.innerHTML = searchParams
|
|
242
|
+
|
|
243
|
+
const newDeepLink = params.deepLink + searchParams
|
|
244
|
+
|
|
245
|
+
const deeplinkElement = document.getElementById('deeplink')
|
|
246
|
+
deeplinkElement.innerHTML = newDeepLink
|
|
247
|
+
deeplinkElement.href = newDeepLink
|
|
248
|
+
openMiniButton.href = newDeepLink
|
|
249
|
+
|
|
250
|
+
qrcode.toCanvas(canvas, newDeepLink, canvasQrCodeOptions, error => {
|
|
251
|
+
if (error) console.error('Error generating the qr code', error)
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
persistParamsToLocalStorage()
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function persistParamsToLocalStorage() {
|
|
258
|
+
window.localStorage.setItem('shopId', shopIdInput.value)
|
|
259
|
+
window.localStorage.setItem('productId', productIdInput.value)
|
|
260
|
+
window.localStorage.setItem(
|
|
261
|
+
'productVariantId',
|
|
262
|
+
productVariantIdInput.value
|
|
263
|
+
)
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function initaliseInputsFromLocalStorage() {
|
|
267
|
+
shopIdInput.value = window.localStorage.getItem('shopId')
|
|
268
|
+
productIdInput.value = window.localStorage.getItem('productId')
|
|
269
|
+
productVariantIdInput.value =
|
|
270
|
+
window.localStorage.getItem('productVariantId')
|
|
271
|
+
|
|
272
|
+
generateParams()
|
|
273
|
+
}
|
|
274
|
+
const copyDeeplinkElement = document.getElementById('copy-deeplink')
|
|
275
|
+
const deeplinkElement = document.getElementById('deeplink').innerHTML
|
|
276
|
+
|
|
277
|
+
const copyContent = async () => {
|
|
278
|
+
try {
|
|
279
|
+
await navigator.clipboard.writeText(deeplinkElement)
|
|
280
|
+
console.log('Content copied to clipboard')
|
|
281
|
+
} catch (err) {
|
|
282
|
+
console.error('Failed to copy: ', err)
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
copyDeeplinkElement.onclick = () => {
|
|
286
|
+
copyContent()
|
|
287
|
+
//
|
|
288
|
+
function newState() {
|
|
289
|
+
document.querySelector('.icon-copy').style.display = 'none'
|
|
290
|
+
document.querySelector('.icon-checkmark').style.display = 'flex'
|
|
291
|
+
}
|
|
292
|
+
function normalState() {
|
|
293
|
+
document.querySelector('.icon-copy').style.display = 'flex'
|
|
294
|
+
document.querySelector('.icon-checkmark').style.display = 'none'
|
|
295
|
+
}
|
|
296
|
+
setTimeout(normalState, 1500)
|
|
297
|
+
newState()
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
</script>
|
|
301
|
+
</body>
|
|
302
|
+
</html>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEV_PANEL_BASE_URL = exports.devPanelMiddleware = void 0;
|
|
7
|
+
const serve_static_1 = __importDefault(require("serve-static"));
|
|
8
|
+
const INDEX_FILE_PATH = __dirname;
|
|
9
|
+
exports.devPanelMiddleware = (0, serve_static_1.default)(INDEX_FILE_PATH);
|
|
10
|
+
exports.DEV_PANEL_BASE_URL = `http://localhost:8082/dev_panel`;
|
|
11
|
+
//# sourceMappingURL=middleware.js.map
|