@shopify/shop-minis-cli 0.0.36 → 0.0.37

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 (43) hide show
  1. package/build/commands/check/index.d.ts +5 -0
  2. package/build/commands/check/index.js +77 -0
  3. package/build/commands/check/index.js.map +1 -0
  4. package/build/commands/check/utils/versions.d.ts +1 -0
  5. package/build/commands/check/utils/versions.js +14 -0
  6. package/build/commands/check/utils/versions.js.map +1 -0
  7. package/build/commands/dev/utils/metro/metro-server-middleware.js +1 -1
  8. package/build/dev-panel/asset-manifest.json +16 -0
  9. package/build/dev-panel/index.html +1 -302
  10. package/build/dev-panel/middleware.d.ts +1 -1
  11. package/build/dev-panel/middleware.js +1 -1
  12. package/build/dev-panel/robots.txt +3 -0
  13. package/build/dev-panel/static/css/main.31436fe3.css +2 -0
  14. package/build/dev-panel/static/css/main.31436fe3.css.map +1 -0
  15. package/build/dev-panel/static/js/main.27f47095.js +3 -0
  16. package/build/dev-panel/static/js/main.27f47095.js.LICENSE.txt +41 -0
  17. package/build/dev-panel/static/js/main.27f47095.js.map +1 -0
  18. package/build/index.js +2 -0
  19. package/build/index.js.map +1 -1
  20. package/package.json +13 -6
  21. package/templates/__template_common/package.json +3 -0
  22. package/templates/__template_hello_world/src/components/ComponentLink.ts +12 -0
  23. package/templates/__template_hello_world/src/routes.tsx +18 -0
  24. package/templates/__template_hello_world/src/screens/ImageCarouselScreen.tsx +147 -0
  25. package/templates/__template_hello_world/src/screens/InputScreen.tsx +206 -0
  26. package/templates/__template_hello_world/src/screens/MultipleChoiceScreen.tsx +75 -0
  27. package/templates/__template_hello_world/src/types.ts +3 -0
  28. package/templates/__template_hello_world/src/utils/getFlagEmoji.spec.tsx +19 -0
  29. package/templates/__template_hello_world/src/utils/getFlagEmoji.ts +7 -0
  30. package/build/dev-panel/images/shop-minis-logo-inverse.svg +0 -5
  31. package/build/dev-panel/images/shop-minis-logo.svg +0 -5
  32. package/build/dev-panel/middleware.ts +0 -6
  33. package/build/dev-panel/styles.css +0 -507
  34. /package/build/dev-panel/{images/checkmark.svg → checkmark.svg} +0 -0
  35. /package/build/dev-panel/{images/chevron.svg → chevron.svg} +0 -0
  36. /package/build/dev-panel/{images/copy.svg → copy.svg} +0 -0
  37. /package/build/dev-panel/{images/get-started.svg → get-started.svg} +0 -0
  38. /package/build/dev-panel/{images/how-to.svg → how-to.svg} +0 -0
  39. /package/build/dev-panel/{images/references.svg → references.svg} +0 -0
  40. /package/build/dev-panel/{images/bottomsheet.png → static/media/bottomsheet.fe525b8722f6d504a185.png} +0 -0
  41. /package/build/dev-panel/{images/navigation.png → static/media/navigation.597434370a97c328a970.png} +0 -0
  42. /package/build/dev-panel/{images/stories.png → static/media/stories.a425b6972a5338fabdad.png} +0 -0
  43. /package/build/dev-panel/{images/topics.svg → topics.svg} +0 -0
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ export declare function assertDependenciesUpToDate(): Promise<void>;
3
+ export declare function assertApiKeyIsSet(): void;
4
+ export declare function assertNoActiveSubmissions(): Promise<void>;
5
+ export declare function loadCommand(parentProgram: Command): Promise<void>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.loadCommand = exports.assertNoActiveSubmissions = exports.assertApiKeyIsSet = exports.assertDependenciesUpToDate = void 0;
30
+ const commander_1 = require("commander");
31
+ const semver_1 = __importDefault(require("semver"));
32
+ const chalk_1 = __importDefault(require("chalk"));
33
+ const dotenv = __importStar(require("dotenv"));
34
+ const exec_async_child_process_1 = require("../utils/exec-async-child-process");
35
+ const versions_1 = require("./utils/versions");
36
+ async function assertDependenciesUpToDate() {
37
+ const { stdout: latestCliVersion } = await (0, exec_async_child_process_1.execAsync)({
38
+ cmd: 'npm show @shopify/shop-minis-cli version',
39
+ });
40
+ const installedCliVersion = (0, versions_1.getInstalledPackageVersion)('@shopify/shop-minis-cli') ?? '0.0.0';
41
+ const isUpToDate = semver_1.default.eq(installedCliVersion, latestCliVersion[0]);
42
+ if (!isUpToDate) {
43
+ console.warn(chalk_1.default.red('Check failed: Shop Minis CLI has to be updated.'));
44
+ console.log(`Installed version: ${installedCliVersion} (latest: ${latestCliVersion})`);
45
+ console.log(`Use ${chalk_1.default.blue.underline.bold('npm update @shopify/shop-minis-cli@latest')} to update.`);
46
+ process.exit(1);
47
+ }
48
+ }
49
+ exports.assertDependenciesUpToDate = assertDependenciesUpToDate;
50
+ function assertApiKeyIsSet() {
51
+ dotenv.config();
52
+ const apiKey = process.env.SHOP_MINIS_API_KEY;
53
+ if (!apiKey) {
54
+ console.warn(chalk_1.default.red('Check failed: Shop Minis API key is not set.'));
55
+ console.log(`To continue, set the environment variable in .env ${chalk_1.default.blue.underline.bold('SHOP_MINIS_API_KEY=<your-shop-minis-api-key>')}`);
56
+ process.exit(1);
57
+ }
58
+ }
59
+ exports.assertApiKeyIsSet = assertApiKeyIsSet;
60
+ async function assertNoActiveSubmissions() {
61
+ // TODO: check if there are any active submissions
62
+ }
63
+ exports.assertNoActiveSubmissions = assertNoActiveSubmissions;
64
+ async function loadCommand(parentProgram) {
65
+ const command = new commander_1.Command()
66
+ .name('check')
67
+ .version('2.0.0')
68
+ .description('Check your Shop Mini configuration')
69
+ .action(async () => {
70
+ assertApiKeyIsSet();
71
+ await assertDependenciesUpToDate();
72
+ await assertNoActiveSubmissions();
73
+ });
74
+ parentProgram.addCommand(command);
75
+ }
76
+ exports.loadCommand = loadCommand;
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAiC;AACjC,oDAA2B;AAC3B,kDAAyB;AACzB,+CAAgC;AAEhC,gFAA2D;AAE3D,+CAA2D;AAEpD,KAAK,UAAU,0BAA0B;IAC9C,MAAM,EAAC,MAAM,EAAE,gBAAgB,EAAC,GAAG,MAAM,IAAA,oCAAS,EAAC;QACjD,GAAG,EAAE,0CAA0C;KAChD,CAAC,CAAA;IACF,MAAM,mBAAmB,GACvB,IAAA,qCAA0B,EAAC,yBAAyB,CAAC,IAAI,OAAO,CAAA;IAElE,MAAM,UAAU,GAAG,gBAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtE,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CACT,sBAAsB,mBAAmB,aAAa,gBAAgB,GAAG,CAC1E,CAAA;QACD,OAAO,CAAC,GAAG,CACT,OAAO,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAC9B,2CAA2C,CAC5C,aAAa,CACf,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;AACH,CAAC;AArBD,gEAqBC;AAED,SAAgB,iBAAiB;IAC/B,MAAM,CAAC,MAAM,EAAE,CAAA;IACf,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAE7C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAA;QACvE,OAAO,CAAC,GAAG,CACT,qDAAqD,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAC5E,8CAA8C,CAC/C,EAAE,CACJ,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;AACH,CAAC;AAbD,8CAaC;AAEM,KAAK,UAAU,yBAAyB;IAC7C,kDAAkD;AACpD,CAAC;AAFD,8DAEC;AAEM,KAAK,UAAU,WAAW,CAAC,aAAsB;IACtD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;SAC1B,IAAI,CAAC,OAAO,CAAC;SACb,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,iBAAiB,EAAE,CAAA;QACnB,MAAM,0BAA0B,EAAE,CAAA;QAClC,MAAM,yBAAyB,EAAE,CAAA;IACnC,CAAC,CAAC,CAAA;IAEJ,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC;AAZD,kCAYC"}
@@ -0,0 +1 @@
1
+ export declare function getInstalledPackageVersion(packageName: string): string | null;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInstalledPackageVersion = void 0;
4
+ function getInstalledPackageVersion(packageName) {
5
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
6
+ const packageJson = require(`${process.cwd()}/package.json`);
7
+ const version = packageJson.dependencies[packageName];
8
+ if (!version) {
9
+ return null;
10
+ }
11
+ return version;
12
+ }
13
+ exports.getInstalledPackageVersion = getInstalledPackageVersion;
14
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../src/commands/check/utils/versions.ts"],"names":[],"mappings":";;;AAAA,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAErD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAVD,gEAUC"}
@@ -13,7 +13,7 @@ const middleware_1 = require("../../../../dev-panel/middleware");
13
13
  function injectMetroServerMiddleware(metroConfig) {
14
14
  const middleware = (0, connect_1.default)()
15
15
  .use('/symbolicate', rawBodyMiddleware)
16
- .use('/dev_panel', middleware_1.devPanelMiddleware)
16
+ .use('/dev-panel', middleware_1.devPanelMiddleware)
17
17
  .use('/status', statusPageMiddleware);
18
18
  const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;
19
19
  // @ts-ignore
@@ -0,0 +1,16 @@
1
+ {
2
+ "files": {
3
+ "main.css": "/dev-panel/static/css/main.31436fe3.css",
4
+ "main.js": "/dev-panel/static/js/main.27f47095.js",
5
+ "static/media/stories.png": "/dev-panel/static/media/stories.a425b6972a5338fabdad.png",
6
+ "static/media/navigation.png": "/dev-panel/static/media/navigation.597434370a97c328a970.png",
7
+ "static/media/bottomsheet.png": "/dev-panel/static/media/bottomsheet.fe525b8722f6d504a185.png",
8
+ "index.html": "/dev-panel/index.html",
9
+ "main.31436fe3.css.map": "/dev-panel/static/css/main.31436fe3.css.map",
10
+ "main.27f47095.js.map": "/dev-panel/static/js/main.27f47095.js.map"
11
+ },
12
+ "entrypoints": [
13
+ "static/css/main.31436fe3.css",
14
+ "static/js/main.27f47095.js"
15
+ ]
16
+ }
@@ -1,302 +1 @@
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>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><title>Shop Mini - Dev Panel</title><link rel="icon" type="image/png" href="https://cdn.shopify.com/shopifycloud/arrive_website/assets/favicon-7859a5f629d44e86a6673fe8db1b39aac82398fd6df9de33c3b3382805a6c761.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="preconnect" href="https://cdn.shopify.com"/><script defer="defer" src="/dev-panel/static/js/main.27f47095.js"></script><link href="/dev-panel/static/css/main.31436fe3.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -1,4 +1,4 @@
1
1
  /// <reference types="node" />
2
2
  import serve from 'serve-static';
3
3
  export declare const devPanelMiddleware: serve.RequestHandler<import("http").ServerResponse<import("http").IncomingMessage>>;
4
- export declare const DEV_PANEL_BASE_URL = "http://localhost:8082/dev_panel";
4
+ export declare const DEV_PANEL_BASE_URL = "http://localhost:8082/dev-panel";
@@ -7,5 +7,5 @@ exports.DEV_PANEL_BASE_URL = exports.devPanelMiddleware = void 0;
7
7
  const serve_static_1 = __importDefault(require("serve-static"));
8
8
  const INDEX_FILE_PATH = __dirname;
9
9
  exports.devPanelMiddleware = (0, serve_static_1.default)(INDEX_FILE_PATH);
10
- exports.DEV_PANEL_BASE_URL = `http://localhost:8082/dev_panel`;
10
+ exports.DEV_PANEL_BASE_URL = `http://localhost:8082/dev-panel`;
11
11
  //# sourceMappingURL=middleware.js.map
@@ -0,0 +1,3 @@
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
@@ -0,0 +1,2 @@
1
+ :root{--light-backgrounds-regular:#fff;--light-backgrounds-secondary:#f4f4ed;--light-backgrounds-inverse:#0f1721;--light-foregrounds-regular:#0f1721;--light-foregrounds-regular-inverse:#fff;--light-foregrounds-primary:#5433eb;--dark-background-regular:#0f1721;--dark-background-secondary:#3f454d;--dark-backgrounds-inverse:#fff;--dark-foregrounds-regular:#fff;--dark-foregrounds-regular-inverse:#0f1721;--dark-foregrounds-primary:#9c83f8}@font-face{font-display:swap;font-family:GoodSans;font-style:normal;font-weight:700;src:local("GoodSans"),url(https://cdn.shopify.com/static/fonts/GoodSans-Bold.woff2) format("woff2")}@font-face{font-display:swap;font-family:GoodSans;font-style:normal;font-weight:500;src:local("GoodSans"),url(https://cdn.shopify.com/static/fonts/GoodSans-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:GoodSans;font-style:normal;font-weight:400;src:local("GoodSans"),url(https://cdn.shopify.com/static/fonts/GoodSansText-Regular.woff) format("woff2")}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}html{font-family:GoodSans;font-size:1em}body{background:#f4f4ed;background:var(--light-backgrounds-secondary);padding-bottom:100px}a,body{color:#0f1721;color:var(--light-foregrounds-regular)}a{text-decoration:none}body::-webkit-scrollbar{width:10px}body::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}body::-webkit-scrollbar-track:hover{background:rgba(0,0,0,.3)}body::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:rgba(0,0,0,.3);border:2px solid transparent;border-radius:6px;margin:2px}body::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.8)}h1{font-size:1em;font-weight:500}.page{display:flex;flex-direction:column;margin:auto;max-width:min(70em,100%);padding-left:1em;padding-right:1em}.logo{align-self:center;margin-bottom:1em;margin-top:2em}.link-label{margin-bottom:.4em}.link{color:var(--light-foregrounds-regular);display:block;font-size:13px;font-style:normal;line-height:118%;margin-top:0;overflow:hidden;padding:1rem 0 1rem 1rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.link a,.link a:active,.link a:visited{color:var(--light-foregrounds-primary)}.qr-and-params-container{word-wrap:break-word;align-items:stretch;display:flex;flex-direction:column;gap:2em;margin-bottom:2em;margin-top:1em}.qrcode-container{position:relative}.params-container,.qrcode-container{flex:1 1;width:100%}.param-row{display:flex;flex-direction:row}.param-appendix{font-size:13px}b.param-appendix{font-family:Courier New,Courier,monospace}.cursor-pointer{cursor:pointer}.button{background-color:var(--light-backgrounds-inverse);border:none;border-radius:100px;color:var(--light-foregrounds-regular-inverse);font-size:1rem;margin-top:20px;min-width:200px;padding:16px;text-decoration:none}.button:hover{cursor:pointer}.Main{display:flex;flex:3 1;flex-direction:column;gap:2rem}.rail{gap:1rem}.button-link,.rail{display:flex;flex-direction:row}.button-link{align-items:flex-start;background:var(--light-backgrounds-inverse);border-radius:40px;box-sizing:border-box;color:var(--light-foregrounds-regular-inverse);font-family:GoodSans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:.8125rem;gap:10px;padding:8px 16px;text-decoration:none}.card{background:var(--light-backgrounds-regular);border-radius:1rem;display:flex;flex-direction:column;overflow:hidden}.card h3{margin:0}.p-2{padding:2rem}.icon-container{align-items:center;background-color:#eeeaff;border-radius:.5rem;display:flex;height:4rem;justify-content:center;margin-bottom:1rem;width:4rem}.deeplink-content{align-items:center;background:var(--light-backgrounds-regular);border:1px solid #cbcbca;border-radius:60px;display:flex;flex-direction:row;justify-content:space-between;margin-top:1rem;position:relative}.copy-deeplink{background:var(--light-backgrounds-inverse);border-radius:0 31px 31px 0;float:left;padding:1rem 1.5rem}.copy-deeplink:hover{cursor:pointer}.w-50{width:50%}@media only screen and (min-width:800px){.qr-and-params-container{align-items:center;flex-direction:row}.params-container{max-width:50%}.open-mini{display:none}}@media (prefers-color-scheme:dark){body{background:var(--dark-background-regular);color:var(--dark-foregrounds-regular)}body::-webkit-scrollbar{width:10px}body::-webkit-scrollbar-track{background:hsla(0,0%,100%,.1)}body::-webkit-scrollbar-track:hover{background:hsla(0,0%,100%,.3)}body::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:hsla(0,0%,100%,.3);border:2px solid transparent;border-radius:6px;margin:2px}body::-webkit-scrollbar-thumb:hover{background-color:hsla(0,0%,100%,.8)}a{text-decoration:none}.link,a{color:var(--dark-foregrounds-regular)}.link a,.link a:active,.link a:visited{color:var(--dark-foregrounds-primary)}.button,.button-link{background-color:var(--dark-backgrounds-inverse)!important;color:var(--dark-foregrounds-regular-inverse)!important}.card,.deeplink-content{background-color:var(--dark-background-secondary)}.deeplink-content{border-color:var(--dark-background-secondary);color:var(--dark-foregrounds-regular)}}.changelog-grid{display:flex;flex-direction:column;gap:20px;margin:0 auto;max-width:1200px;position:relative}.changelog-grid:after{content:"";position:none}.changelog-entry{display:flex;flex-direction:column;gap:16px;margin-top:20px}.date{font-size:.8rem}.items{display:flex;flex-direction:column;position:relative}.items p{margin-top:0}.items ul{margin:0;padding:0 1rem}.items ul li{margin:0;padding:0}.pill{align-items:center;border-radius:30px;color:#fff;display:inline-flex;flex-direction:row;font-size:.6875rem;justify-content:center;margin-left:.25rem;padding:4px 6px}.api{background-color:#00855b}.sdk{background-color:#5433eb}.changelog-grid:after{display:none}@media only screen and (min-width:800px){.date{width:6rem}.changelog-entry{flex-direction:row}.changelog-grid:after{background-color:#fff;border-radius:12px;bottom:0;content:"";display:block;left:117px;position:absolute;top:0;width:4px}.items{margin-left:30px}.items:before{background-color:#000;border:2px solid #fff;border-radius:50%;box-sizing:initial;content:"";height:8px;left:-29px;position:absolute;top:0;width:8px;z-index:1}}@media (prefers-color-scheme:dark){.changelog-grid:after{background-color:hsla(0,0%,100%,.3);border-radius:12px;bottom:0;content:"";left:117px;position:absolute;top:0;width:4px}}.icon{color:var(--light-foregrounds-regular-inverse);display:flex;gap:.5rem}.icon-checkmark,.icon-copy span{font-size:13px}input[type=text]{border:1px solid #cbcbca;border-radius:6px;box-sizing:border-box;font-family:GoodSans;font-size:.875em;margin:4px 0 12px;outline:none;padding:12px 16px;width:100%}label{font-size:12px}@media (prefers-color-scheme:dark){input[type=text]{background-color:var(--dark-background-secondary);border:none;color:var(--dark-foregrounds-regular)}}@media only screen and (min-width:800px){input[type=text]{width:60%}}.qr-code-container{margin:auto}.qr-code{background-color:#fff;border-radius:1em;display:none;height:auto;margin:0 auto;max-width:1000px;padding:15px;width:100%}.qr-code.dark{background-color:#3f454d}@media only screen and (min-width:800px){.open-mini{display:none}.qr-code{display:flex}.container{flex:1 1}}
2
+ /*# sourceMappingURL=main.31436fe3.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/css/main.31436fe3.css","mappings":"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","sources":["index.css","App.css","components/ChangeLog.css","components/CopyUrl.css","components/DeeplinkParameterInputs.css","components/QRCode.css"],"sourcesContent":[":root {\n /* Light colors */\n --light-backgrounds-regular: #fff;\n --light-backgrounds-secondary: #f4f4ed;\n --light-backgrounds-inverse: #0F1721;\n --light-foregrounds-regular: #0F1721;\n --light-foregrounds-regular-inverse: #fff;\n --light-foregrounds-primary: #5433EB;\n /* Dark colors */\n --dark-background-regular: #0F1721;\n --dark-background-secondary: #3F454D;\n --dark-backgrounds-inverse: #fff;\n --dark-foregrounds-regular: #fff;\n --dark-foregrounds-regular-inverse: #0F1721;\n --dark-foregrounds-primary: #9C83F8;\n}\n@font-face {\n font-family: 'GoodSans';\n src: local('GoodSans'),\n url('https://cdn.shopify.com/static/fonts/GoodSans-Bold.woff2') format('woff2');\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'GoodSans';\n src: local('GoodSans'),\n url('https://cdn.shopify.com/static/fonts/GoodSans-Medium.woff2') format('woff2');\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'GoodSans';\n src: local('GoodSans'),\n url('https://cdn.shopify.com/static/fonts/GoodSansText-Regular.woff') format('woff2');\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml,\nbody {\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font-family: 'GoodSans';\n font-size: 1em;\n}\n\nbody {\n padding-bottom: 100px;\n background: var(--light-backgrounds-secondary);\n color: var(--light-foregrounds-regular);\n}\n\na {\n color: var(--light-foregrounds-regular);\n text-decoration: none;\n}\n\nbody::-webkit-scrollbar {\n width: 10px;\n}\n\nbody::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.1);\n}\n\nbody::-webkit-scrollbar-track:hover {\n background: rgba(0, 0, 0, 0.3);\n}\n\nbody::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.3);\n border-radius: 6px;\n border: 2px solid transparent;\n margin: 2px;\n background-clip: padding-box;\n}\n\nbody::-webkit-scrollbar-thumb:hover {\n background-color: rgba(0, 0, 0, 0.8);\n}\n\nh1 {\n font-size: 1em;\n font-weight: 500;\n}\n",".page {\n max-width: min(70em, 100%);\n display: flex;\n flex-direction: column;\n padding-left: 1em;\n padding-right: 1em;\n margin: auto;\n}\n\n.logo {\n margin-top: 2em;\n align-self: center;\n margin-bottom: 1em;\n}\n\n.link-label {\n margin-bottom: 0.4em;\n}\n\n.link {\n margin-top: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n font-style: normal;\n font-size: 13px;\n line-height: 118%;\n color: var(--light-foregrounds-regular);\n text-decoration: none;\n padding: 1rem 0 1rem 1rem;\n}\n\n.link a,\n.link a:active,\n.link a:visited {\n color: var(--light-foregrounds-primary);\n}\n\n.qr-and-params-container {\n margin-top: 1em;\n margin-bottom: 2em;\n display: flex;\n flex-direction: column;\n gap: 2em;\n word-wrap: break-word;\n align-items: stretch;\n}\n\n.qrcode-container {\n flex: 1;\n width: 100%;\n position: relative;\n}\n\n.params-container {\n flex: 1;\n width: 100%;\n}\n\n.param-row {\n display: flex;\n flex-direction: row;\n}\n\n.param-appendix {\n font-size: 13px;\n}\n\nb.param-appendix {\n font-family: 'Courier New', Courier, monospace;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.button {\n background-color: var(--light-backgrounds-inverse);\n color: var(--light-foregrounds-regular-inverse);\n border-radius: 100px;\n padding: 16px;\n min-width: 200px;\n border: none;\n text-decoration: none;\n font-size: 1rem;\n margin-top: 20px;\n}\n\n.button:hover {\n cursor: pointer;\n}\n\n.Main {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n flex: 3;\n}\n\n.rail {\n display: flex;\n flex-direction: row;\n gap: 1rem;\n}\n\n.button-link {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n background: var(--light-backgrounds-inverse);\n color: var(--light-foregrounds-regular-inverse);\n border-radius: 40px;\n padding: 8px 16px;\n gap: 10px;\n box-sizing: border-box;\n text-decoration: none;\n font-size: 0.8125rem;\n font-family: 'GoodSans', system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n background: var(--light-backgrounds-regular);\n border-radius: 1rem;\n overflow: hidden;\n}\n\n.card h3 {\n margin: 0;\n}\n\n.p-2 {\n padding: 2rem;\n}\n\n.icon-container {\n width: 4rem;\n height: 4rem;\n background-color: #eeeaff;\n border-radius: 0.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.deeplink-content {\n background: var(--light-backgrounds-regular);\n border-radius: 60px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-top: 1rem;\n position: relative;\n border: 1px solid #cbcbca;\n}\n\n.copy-deeplink {\n background: var(--light-backgrounds-inverse);\n border-radius: 0px 31px 31px 0px;\n padding: 1rem 1.5rem;\n float: left;\n}\n\n.copy-deeplink:hover {\n cursor: pointer;\n}\n\n.w-50 {\n width: 50%;\n}\n\n@media only screen and (min-width: 800px) {\n .qr-and-params-container {\n flex-direction: row;\n align-items: center;\n }\n\n .params-container {\n max-width: 50%;\n }\n\n .open-mini {\n display: none;\n }\n}\n\n@media (prefers-color-scheme: dark) {\n body {\n background: var(--dark-background-regular);\n color: var(--dark-foregrounds-regular);\n }\n\n body::-webkit-scrollbar {\n width: 10px;\n }\n\n body::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n }\n\n body::-webkit-scrollbar-track:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n body::-webkit-scrollbar-thumb {\n background-color: rgba(255, 255, 255, 0.3);\n border-radius: 6px;\n border: 2px solid transparent;\n margin: 2px;\n background-clip: padding-box;\n }\n\n body::-webkit-scrollbar-thumb:hover {\n background-color: rgba(255, 255, 255, 0.8);\n }\n\n a {\n color: var(--dark-foregrounds-regular);\n text-decoration: none;\n }\n\n .link {\n color: var(--dark-foregrounds-regular);\n }\n\n .link a,\n .link a:active,\n .link a:visited {\n color: var(--dark-foregrounds-primary);\n }\n\n .button,\n .button-link {\n background-color: var(--dark-backgrounds-inverse) !important;\n color: var(--dark-foregrounds-regular-inverse) !important;\n }\n\n .card {\n background-color: var(--dark-background-secondary);\n }\n\n .deeplink-content {\n background-color: var(--dark-background-secondary);\n border-color: var(--dark-background-secondary);\n color: var(--dark-foregrounds-regular);\n }\n}\n",".changelog-grid {\n position: relative;\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.changelog-grid::after {\n content: '';\n position: none;\n}\n\n.changelog-entry {\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 20px;\n}\n\n.date {\n font-size: 0.8rem;\n}\n\n.items {\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.items p {\n margin-top: 0\n}\n\n.items ul {\n padding: 0 1rem;\n margin: 0;\n}\n\n.items ul li {\n padding: 0;\n margin: 0;\n}\n\n\n.pill {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n color: white;\n padding: 4px 6px;\n border-radius: 30px;\n font-size: 0.6875rem;\n margin-left: 0.25rem;\n}\n\n.api {\n background-color: #00855B;\n}\n\n.sdk {\n background-color: #5433EB;\n}\n\n.changelog-grid::after {\n display: none;\n}\n\n@media only screen and (min-width: 800px) {\n .date {\n width: 6rem;\n }\n\n .changelog-entry {\n flex-direction: row;\n }\n\n .changelog-grid::after {\n content: '';\n position: absolute;\n display: block;\n width: 4px;\n background-color: white;\n top: 0;\n bottom: 0;\n left: 117px;\n border-radius: 12px;\n }\n\n .items {\n margin-left: 30px;\n }\n\n .items::before {\n content: '';\n position: absolute;\n width: 8px;\n height: 8px;\n left: -29px;\n top: 0px;\n background-color: black;\n border: 2px solid white;\n border-radius: 50%;\n z-index: 1;\n box-sizing: content-box;\n }\n}\n\n@media (prefers-color-scheme: dark) {\n .changelog-grid::after {\n content: '';\n position: absolute;\n width: 4px;\n background-color: rgba(255, 255, 255, 0.3);\n top: 0;\n bottom: 0;\n left: 117px;\n border-radius: 12px;\n }\n}\n",".icon {\n color: var(--light-foregrounds-regular-inverse);\n display: flex;\n gap: 0.5rem\n}\n\n.icon-checkmark, .icon-copy span {\n font-size: 13px;\n }\n","input[type='text'] {\n border: none;\n width: 100%;\n padding: 12px 16px;\n margin: 4px 0 12px;\n box-sizing: border-box;\n border-radius: 6px;\n border: 1px solid #cbcbca;\n font-family: 'GoodSans';\n font-size: 0.875em;\n outline: none;\n}\n\nlabel {\n font-size: 12px;\n}\n\n@media (prefers-color-scheme: dark) {\n input[type='text'] {\n background-color: var(--dark-background-secondary);\n color: var(--dark-foregrounds-regular);\n border: none;\n }\n}\n\n@media only screen and (min-width: 800px) {\n input[type='text'] {\n width: 60%;\n }\n}\n",".qr-code-container {\n margin: auto;\n}\n\n.qr-code {\n display: none;\n height: auto;\n margin: 0 auto;\n max-width: 1000px;\n width: 100%;\n padding: 15px;\n border-radius: 1em;\n background-color: #ffffff;\n}\n\n.qr-code.dark {\n background-color: #3F454D;\n}\n\n@media only screen and (min-width: 800px) {\n .open-mini {\n display: none;\n }\n .qr-code {\n display: flex;\n }\n .container {\n flex: 1;\n }\n}\n"],"names":[],"sourceRoot":""}