@shopify/cli-kit 3.0.25 → 3.0.26

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 (286) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/assets/auth-error.html +2 -4
  3. package/assets/empty-url.html +2 -4
  4. package/assets/missing-code.html +2 -4
  5. package/assets/missing-state.html +2 -4
  6. package/assets/style.css +5 -8
  7. package/assets/success.html +1 -1
  8. package/dist/abort.d.ts +1 -0
  9. package/dist/abort.js +2 -0
  10. package/dist/abort.js.map +1 -0
  11. package/dist/analytics.d.ts +11 -0
  12. package/dist/analytics.js +96 -0
  13. package/dist/analytics.js.map +1 -0
  14. package/dist/api/admin.d.ts +3 -0
  15. package/dist/api/admin.js +80 -0
  16. package/dist/api/admin.js.map +1 -0
  17. package/dist/api/common.d.ts +11 -0
  18. package/dist/api/common.js +40 -0
  19. package/dist/api/common.js.map +1 -0
  20. package/dist/api/graphql/all_app_extension_registrations.d.ts +14 -0
  21. package/dist/api/graphql/all_app_extension_registrations.js +14 -0
  22. package/dist/api/graphql/all_app_extension_registrations.js.map +1 -0
  23. package/dist/api/graphql/all_orgs.d.ts +12 -0
  24. package/dist/api/graphql/all_orgs.js +14 -0
  25. package/dist/api/graphql/all_orgs.js.map +1 -0
  26. package/dist/api/graphql/all_stores_by_org.d.ts +18 -0
  27. package/dist/api/graphql/all_stores_by_org.js +21 -0
  28. package/dist/api/graphql/all_stores_by_org.js.map +1 -0
  29. package/dist/api/graphql/convert_dev_to_test_store.d.ts +16 -0
  30. package/dist/api/graphql/convert_dev_to_test_store.js +13 -0
  31. package/dist/api/graphql/convert_dev_to_test_store.js.map +1 -0
  32. package/dist/api/graphql/create_app.d.ts +28 -0
  33. package/dist/api/graphql/create_app.js +32 -0
  34. package/dist/api/graphql/create_app.js.map +1 -0
  35. package/dist/api/graphql/create_deployment.d.ts +33 -0
  36. package/dist/api/graphql/create_deployment.js +25 -0
  37. package/dist/api/graphql/create_deployment.js.map +1 -0
  38. package/dist/api/graphql/extension_create.d.ts +30 -0
  39. package/dist/api/graphql/extension_create.js +26 -0
  40. package/dist/api/graphql/extension_create.js.map +1 -0
  41. package/dist/api/graphql/extension_specifications.d.ts +18 -0
  42. package/dist/api/graphql/extension_specifications.js +18 -0
  43. package/dist/api/graphql/extension_specifications.js.map +1 -0
  44. package/dist/api/graphql/find_app.d.ts +13 -0
  45. package/dist/api/graphql/find_app.js +16 -0
  46. package/dist/api/graphql/find_app.js.map +1 -0
  47. package/dist/api/graphql/find_org.d.ts +23 -0
  48. package/dist/api/graphql/find_org.js +26 -0
  49. package/dist/api/graphql/find_org.js.map +1 -0
  50. package/dist/api/graphql/find_org_basic.d.ts +11 -0
  51. package/dist/api/graphql/find_org_basic.js +14 -0
  52. package/dist/api/graphql/find_org_basic.js.map +1 -0
  53. package/dist/api/graphql/functions/app_function_set.d.ts +43 -0
  54. package/dist/api/graphql/functions/app_function_set.js +52 -0
  55. package/dist/api/graphql/functions/app_function_set.js.map +1 -0
  56. package/dist/api/graphql/functions/compile_module.d.ts +15 -0
  57. package/dist/api/graphql/functions/compile_module.js +13 -0
  58. package/dist/api/graphql/functions/compile_module.js.map +1 -0
  59. package/dist/api/graphql/functions/function_service_proxy.d.ts +4 -0
  60. package/dist/api/graphql/functions/function_service_proxy.js +7 -0
  61. package/dist/api/graphql/functions/function_service_proxy.js.map +1 -0
  62. package/dist/api/graphql/functions/get_app_functions.d.ts +1 -0
  63. package/dist/api/graphql/functions/get_app_functions.js +10 -0
  64. package/dist/api/graphql/functions/get_app_functions.js.map +1 -0
  65. package/dist/api/graphql/functions/module_compilation_status.d.ts +15 -0
  66. package/dist/api/graphql/functions/module_compilation_status.js +13 -0
  67. package/dist/api/graphql/functions/module_compilation_status.js.map +1 -0
  68. package/dist/api/graphql/functions/module_upload_url_generate.d.ts +18 -0
  69. package/dist/api/graphql/functions/module_upload_url_generate.js +17 -0
  70. package/dist/api/graphql/functions/module_upload_url_generate.js.map +1 -0
  71. package/dist/api/graphql/generate_signed_upload_url.d.ts +15 -0
  72. package/dist/api/graphql/generate_signed_upload_url.js +15 -0
  73. package/dist/api/graphql/generate_signed_upload_url.js.map +1 -0
  74. package/dist/api/graphql/get_variant_id.d.ts +17 -0
  75. package/dist/api/graphql/get_variant_id.js +20 -0
  76. package/dist/api/graphql/get_variant_id.js.map +1 -0
  77. package/dist/api/graphql/index.d.ts +21 -0
  78. package/dist/api/graphql/index.js +22 -0
  79. package/dist/api/graphql/index.js.map +1 -0
  80. package/dist/api/graphql/update_draft.d.ts +33 -0
  81. package/dist/api/graphql/update_draft.js +24 -0
  82. package/dist/api/graphql/update_draft.js.map +1 -0
  83. package/dist/api/graphql/update_urls.d.ts +14 -0
  84. package/dist/api/graphql/update_urls.js +12 -0
  85. package/dist/api/graphql/update_urls.js.map +1 -0
  86. package/dist/api/identity.d.ts +1 -0
  87. package/dist/api/identity.js +29 -0
  88. package/dist/api/identity.js.map +1 -0
  89. package/dist/api/partners.d.ts +25 -0
  90. package/dist/api/partners.js +100 -0
  91. package/dist/api/partners.js.map +1 -0
  92. package/dist/api.d.ts +5 -0
  93. package/dist/api.js +6 -0
  94. package/dist/api.js.map +1 -0
  95. package/dist/checksum.d.ts +15 -0
  96. package/dist/checksum.js +27 -0
  97. package/dist/checksum.js.map +1 -0
  98. package/dist/cli.d.ts +7 -0
  99. package/dist/cli.js +13 -0
  100. package/dist/cli.js.map +1 -0
  101. package/dist/colors.d.ts +1 -0
  102. package/dist/colors.js +8 -0
  103. package/dist/colors.js.map +1 -0
  104. package/dist/constants.d.ts +43 -0
  105. package/dist/constants.js +63 -0
  106. package/dist/constants.js.map +1 -0
  107. package/dist/dependency.d.ts +128 -0
  108. package/dist/dependency.js +302 -0
  109. package/dist/dependency.js.map +1 -0
  110. package/dist/dot-env.d.ts +28 -0
  111. package/dist/dot-env.js +31 -0
  112. package/dist/dot-env.js.map +1 -0
  113. package/dist/environment/fqdn.d.ts +23 -0
  114. package/dist/environment/fqdn.js +61 -0
  115. package/dist/environment/fqdn.js.map +1 -0
  116. package/dist/environment/local.d.ts +48 -0
  117. package/dist/environment/local.js +82 -0
  118. package/dist/environment/local.js.map +1 -0
  119. package/dist/environment/service.d.ts +17 -0
  120. package/dist/environment/service.js +41 -0
  121. package/dist/environment/service.js.map +1 -0
  122. package/dist/environment/spin.d.ts +47 -0
  123. package/dist/environment/spin.js +83 -0
  124. package/dist/environment/spin.js.map +1 -0
  125. package/dist/environment/utilities.d.ts +6 -0
  126. package/dist/environment/utilities.js +12 -0
  127. package/dist/environment/utilities.js.map +1 -0
  128. package/dist/environment.d.ts +5 -0
  129. package/dist/environment.js +6 -0
  130. package/dist/environment.js.map +1 -0
  131. package/dist/error.d.ts +44 -0
  132. package/dist/error.js +91 -0
  133. package/dist/error.js.map +1 -0
  134. package/dist/file.d.ts +67 -0
  135. package/dist/file.js +165 -0
  136. package/dist/file.js.map +1 -0
  137. package/dist/git.d.ts +15 -0
  138. package/dist/git.js +48 -0
  139. package/dist/git.js.map +1 -0
  140. package/dist/github.d.ts +33 -0
  141. package/dist/github.js +56 -0
  142. package/dist/github.js.map +1 -0
  143. package/dist/haiku.d.ts +1 -0
  144. package/dist/haiku.js +8 -0
  145. package/dist/haiku.js.map +1 -0
  146. package/dist/http/fetch.d.ts +16 -0
  147. package/dist/http/fetch.js +18 -0
  148. package/dist/http/fetch.js.map +1 -0
  149. package/dist/http/formdata.d.ts +3 -0
  150. package/dist/http/formdata.js +6 -0
  151. package/dist/http/formdata.js.map +1 -0
  152. package/dist/http.d.ts +2 -0
  153. package/dist/http.js +3 -0
  154. package/dist/http.js.map +1 -0
  155. package/dist/id.d.ts +6 -0
  156. package/dist/id.js +18 -0
  157. package/dist/id.js.map +1 -0
  158. package/dist/index.d.ts +37 -2179
  159. package/dist/index.js +38 -3264
  160. package/dist/index.js.map +1 -1
  161. package/dist/network/api.d.ts +2 -0
  162. package/dist/network/api.js +2 -0
  163. package/dist/network/api.js.map +1 -0
  164. package/dist/network/service.d.ts +16 -0
  165. package/dist/network/service.js +12 -0
  166. package/dist/network/service.js.map +1 -0
  167. package/dist/{archiver.d.ts → node/archiver.d.ts} +1 -4
  168. package/dist/node/archiver.js +22 -42
  169. package/dist/node/archiver.js.map +1 -1
  170. package/dist/node/cli.d.ts +18 -0
  171. package/dist/node/cli.js +91 -0
  172. package/dist/node/cli.js.map +1 -0
  173. package/dist/npm.d.ts +27 -0
  174. package/dist/npm.js +20 -0
  175. package/dist/npm.js.map +1 -0
  176. package/dist/os.d.ts +10 -0
  177. package/dist/os.js +70 -0
  178. package/dist/os.js.map +1 -0
  179. package/dist/output.d.ts +142 -0
  180. package/dist/output.js +505 -0
  181. package/dist/output.js.map +1 -0
  182. package/dist/path.d.ts +22 -0
  183. package/dist/path.js +43 -0
  184. package/dist/path.js.map +1 -0
  185. package/dist/plugins.d.ts +9 -0
  186. package/dist/plugins.js +12 -0
  187. package/dist/plugins.js.map +1 -0
  188. package/dist/port.d.ts +5 -0
  189. package/dist/port.js +13 -0
  190. package/dist/port.js.map +1 -0
  191. package/dist/ruby.d.ts +21 -0
  192. package/dist/ruby.js +192 -0
  193. package/dist/ruby.js.map +1 -0
  194. package/dist/schema.d.ts +1 -0
  195. package/dist/schema.js +2 -0
  196. package/dist/schema.js.map +1 -0
  197. package/dist/secure-store.d.ts +19 -0
  198. package/dist/secure-store.js +63 -0
  199. package/dist/secure-store.js.map +1 -0
  200. package/dist/semver.d.ts +3 -0
  201. package/dist/semver.js +6 -0
  202. package/dist/semver.js.map +1 -0
  203. package/dist/session/authorize.d.ts +7 -0
  204. package/dist/session/authorize.js +40 -0
  205. package/dist/session/authorize.js.map +1 -0
  206. package/dist/session/exchange.d.ts +42 -0
  207. package/dist/session/exchange.js +144 -0
  208. package/dist/session/exchange.js.map +1 -0
  209. package/dist/session/identity.d.ts +3 -0
  210. package/dist/session/identity.js +58 -0
  211. package/dist/session/identity.js.map +1 -0
  212. package/dist/session/post-auth.d.ts +13 -0
  213. package/dist/session/post-auth.js +56 -0
  214. package/dist/session/post-auth.js.map +1 -0
  215. package/dist/session/redirect-listener.d.ts +34 -0
  216. package/dist/session/redirect-listener.js +97 -0
  217. package/dist/session/redirect-listener.js.map +1 -0
  218. package/dist/session/schema.d.ts +174 -0
  219. package/dist/session/schema.js +59 -0
  220. package/dist/session/schema.js.map +1 -0
  221. package/dist/session/scopes.d.ts +16 -0
  222. package/dist/session/scopes.js +53 -0
  223. package/dist/session/scopes.js.map +1 -0
  224. package/dist/session/store.d.ts +24 -0
  225. package/dist/session/store.js +88 -0
  226. package/dist/session/store.js.map +1 -0
  227. package/dist/session/token.d.ts +40 -0
  228. package/dist/session/token.js +22 -0
  229. package/dist/session/token.js.map +1 -0
  230. package/dist/session/validate.d.ts +17 -0
  231. package/dist/session/validate.js +75 -0
  232. package/dist/session/validate.js.map +1 -0
  233. package/dist/session.d.ts +88 -0
  234. package/dist/session.js +251 -0
  235. package/dist/session.js.map +1 -0
  236. package/dist/store/schema.d.ts +3 -0
  237. package/dist/store/schema.js +27 -0
  238. package/dist/store/schema.js.map +1 -0
  239. package/dist/store.d.ts +32 -0
  240. package/dist/store.js +102 -0
  241. package/dist/store.js.map +1 -0
  242. package/dist/string.d.ts +22 -0
  243. package/dist/string.js +38 -0
  244. package/dist/string.js.map +1 -0
  245. package/dist/system.d.ts +53 -0
  246. package/dist/system.js +109 -0
  247. package/dist/system.js.map +1 -0
  248. package/dist/template.d.ts +11 -0
  249. package/dist/template.js +50 -0
  250. package/dist/template.js.map +1 -0
  251. package/dist/testing/output.d.ts +9 -0
  252. package/dist/testing/output.js +15 -0
  253. package/dist/testing/output.js.map +1 -0
  254. package/dist/testing/store.d.ts +7 -0
  255. package/dist/testing/store.js +26 -0
  256. package/dist/testing/store.js.map +1 -0
  257. package/dist/toml.d.ts +3 -0
  258. package/dist/toml.js +8 -0
  259. package/dist/toml.js.map +1 -0
  260. package/dist/tsconfig.tsbuildinfo +1 -0
  261. package/dist/ui/autocomplete.d.ts +7 -0
  262. package/dist/ui/autocomplete.js +43 -0
  263. package/dist/ui/autocomplete.js.map +1 -0
  264. package/dist/ui/input.d.ts +7 -0
  265. package/dist/ui/input.js +48 -0
  266. package/dist/ui/input.js.map +1 -0
  267. package/dist/ui/select.d.ts +6 -0
  268. package/dist/ui/select.js +30 -0
  269. package/dist/ui/select.js.map +1 -0
  270. package/dist/ui.d.ts +36 -0
  271. package/dist/ui.js +124 -0
  272. package/dist/ui.js.map +1 -0
  273. package/dist/version.d.ts +19 -0
  274. package/dist/version.js +34 -0
  275. package/dist/version.js.map +1 -0
  276. package/dist/vscode.d.ts +8 -0
  277. package/dist/vscode.js +36 -0
  278. package/dist/vscode.js.map +1 -0
  279. package/dist/yaml.d.ts +2 -0
  280. package/dist/yaml.js +8 -0
  281. package/dist/yaml.js.map +1 -0
  282. package/package.json +14 -7
  283. package/dist/archiver.d.ts.map +0 -1
  284. package/dist/index.d.ts.map +0 -1
  285. package/dist/local-d0094ffe.js +0 -1344
  286. package/dist/local-d0094ffe.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @shopify/cli-kit
2
2
 
3
+ ## 3.0.26
4
+
5
+ ### Patch Changes
6
+
7
+ - dbcffdbb: Fix issue when exchanging an identity token fails
8
+ - 022a4e24: Internal: build cli-kit using tsc instead of rollup+esbuild
9
+ - e81e52b1: Report error events
10
+ - c16035f1: Fix post auth screen styling
11
+ - 61f595df: Fix an issue that will force the users to re-login when the token expires
12
+ - 87f7843f: Show validation errors when deploying UI extensions
13
+ - 8ff4e3d7: Fix runCreateCLI's detection of the executable index
14
+ - 168bb4c6: Add total time to analytics reports
15
+ - 0a9dbc63: Fix path outputs for the working directory
16
+ - 2d8e4458: Log Listr task titles to logfile
17
+
3
18
  ## 3.0.25
4
19
 
5
20
  ### Patch Changes
@@ -12,13 +12,11 @@
12
12
  <body class="body-error">
13
13
  <div class="app-error">
14
14
  <div class="container">
15
- <h1>Something went wrong!</p>
15
+ <h1>Something went wrong!</h1>
16
16
  <p>There was an issue while trying to authenticate.</p>
17
17
  <br />
18
18
  <br />
19
- <div class="subtext-container">
20
- <p>Return to your terminal and try running the previous command again.</p>
21
- </div>
19
+ <p>Return to your terminal and try running the previous command again.</p>
22
20
  </div>
23
21
  </div>
24
22
  </body>
@@ -12,13 +12,11 @@
12
12
  <body class="body-error">
13
13
  <div class="app-error">
14
14
  <div class="container">
15
- <h1>Something went wrong!</p>
15
+ <h1>Something went wrong!</h1>
16
16
  <p>We received the authentication redirect but the URL is empty.</p>
17
17
  <br />
18
18
  <br />
19
- <div class="subtext-container">
20
- <p>Return to your terminal and try running the previous command again.</p>
21
- </div>
19
+ <p>Return to your terminal and try running the previous command again.</p>
22
20
  </div>
23
21
  </div>
24
22
  </body>
@@ -12,13 +12,11 @@
12
12
  <body class="body-error">
13
13
  <div class="app-error">
14
14
  <div class="container">
15
- <h1>Something went wrong!</p>
15
+ <h1>Something went wrong!</h1>
16
16
  <p>The authentication can't continue because the redirect doesn't include the code.</p>
17
17
  <br />
18
18
  <br />
19
- <div class="subtext-container">
20
- <p>Return to your terminal and try running the previous command again.</p>
21
- </div>
19
+ <p>Return to your terminal and try running the previous command again.</p>
22
20
  </div>
23
21
  </div>
24
22
  </body>
@@ -12,13 +12,11 @@
12
12
  <body class="body-error">
13
13
  <div class="app-error">
14
14
  <div class="container">
15
- <h1>Something went wrong!</p>
15
+ <h1>Something went wrong!</h1>
16
16
  <p>The authentication can't continue because the redirect doesn't include the state.</p>
17
17
  <br />
18
18
  <br />
19
- <div class="subtext-container">
20
- <p>Return to your terminal and try running the previous command again.</p>
21
- </div>
19
+ <p>Return to your terminal and try running the previous command again.</p>
22
20
  </div>
23
21
  </div>
24
22
  </body>
package/assets/style.css CHANGED
@@ -7,7 +7,7 @@ html {
7
7
  }
8
8
 
9
9
  body {
10
- font-size: 16px;
10
+ font-size: 26px;
11
11
  line-height: normal;
12
12
  margin: 0;
13
13
  padding: 0;
@@ -19,6 +19,7 @@ button, input, optgroup, select, textarea {
19
19
 
20
20
  h1 {
21
21
  font-weight: 600;
22
+ font-size: 1em;
22
23
  }
23
24
 
24
25
  p {
@@ -49,13 +50,9 @@ p {
49
50
 
50
51
  .container {
51
52
  display: flex;
52
- justify-content: left;
53
- align-items: center;
53
+ flex-direction: column;
54
+ justify-content: center;
54
55
  width: 100%;
55
56
  height: 100%;
56
- padding-left: 10em;
57
- }
58
-
59
- .subtext-container {
60
- width: 35em;
57
+ padding-left: 7.5em;
61
58
  }
@@ -12,7 +12,7 @@
12
12
  <body class="body-success">
13
13
  <div class="app-success">
14
14
  <div class="container">
15
- <h1>You've successfuly logged into the Shopify CLI!</p>
15
+ <h1>You've successfuly logged into the Shopify CLI!</h1>
16
16
  <p>You can close this tab and return to your terminal.</p>
17
17
  </div>
18
18
  </div>
@@ -0,0 +1 @@
1
+ export { AbortController as Controller, AbortSignal as Signal } from 'abort-controller';
package/dist/abort.js ADDED
@@ -0,0 +1,2 @@
1
+ export { AbortController as Controller, AbortSignal as Signal } from 'abort-controller';
2
+ //# sourceMappingURL=abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../src/abort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,IAAI,UAAU,EAAE,WAAW,IAAI,MAAM,EAAC,MAAM,kBAAkB,CAAA","sourcesContent":["export {AbortController as Controller, AbortSignal as Signal} from 'abort-controller'\n"]}
@@ -0,0 +1,11 @@
1
+ interface startOptions {
2
+ command: string;
3
+ args: string;
4
+ currentTime?: number;
5
+ }
6
+ export declare const start: ({ command, args, currentTime }: startOptions) => void;
7
+ interface ReportEventOptions {
8
+ errorMessage?: string;
9
+ }
10
+ export declare const reportEvent: (options?: ReportEventOptions) => Promise<void>;
11
+ export {};
@@ -0,0 +1,96 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import * as environment from './environment.js';
3
+ import { fetch } from './http.js';
4
+ import { platformAndArch } from './os.js';
5
+ import { join, resolve } from './path.js';
6
+ import { version as rubyVersion } from './ruby.js';
7
+ import { debug, content, token } from './output.js';
8
+ import { getProjectType } from './dependency.js';
9
+ import constants from './constants.js';
10
+ import { cliKitStore } from './store.js';
11
+ const url = 'https://monorail-edge.shopifysvc.com/v1/produce';
12
+ let startTime;
13
+ let startCommand;
14
+ let startArgs;
15
+ export const start = ({ command, args, currentTime = new Date().getTime() }) => {
16
+ startCommand = command;
17
+ startArgs = args;
18
+ startTime = currentTime;
19
+ };
20
+ export const reportEvent = async (options = {}) => {
21
+ if (environment.local.analyticsDisabled())
22
+ return;
23
+ if (startCommand === undefined)
24
+ return;
25
+ try {
26
+ const currentTime = new Date().getTime();
27
+ const payload = await buildPayload(options.errorMessage, currentTime);
28
+ const body = JSON.stringify(payload);
29
+ const headers = buildHeaders(currentTime);
30
+ const response = await fetch(url, { method: 'POST', body, headers });
31
+ if (response.status === 200) {
32
+ debug(content `Analytics event sent: ${token.json(payload)}`);
33
+ }
34
+ else {
35
+ debug(`Failed to report usage analytics: ${response.statusText}`);
36
+ }
37
+ // eslint-disable-next-line no-catch-all/no-catch-all
38
+ }
39
+ catch (error) {
40
+ let message = 'Failed to report usage analytics';
41
+ if (error instanceof Error) {
42
+ message = message.concat(`: ${error.message}`);
43
+ }
44
+ debug(message);
45
+ }
46
+ };
47
+ const totalTime = (currentTime) => {
48
+ if (startTime === undefined)
49
+ return undefined;
50
+ return currentTime - startTime;
51
+ };
52
+ const buildHeaders = (currentTime) => {
53
+ return {
54
+ 'Content-Type': 'application/json; charset=utf-8',
55
+ 'X-Monorail-Edge-Event-Created-At-Ms': currentTime.toString(),
56
+ 'X-Monorail-Edge-Event-Sent-At-Ms': currentTime.toString(),
57
+ };
58
+ };
59
+ const buildPayload = async (errorMessage, currentTime) => {
60
+ let directory = process.cwd();
61
+ const pathFlagIndex = startArgs.indexOf('--path');
62
+ if (pathFlagIndex >= 0) {
63
+ directory = resolve(startArgs[pathFlagIndex + 1]);
64
+ }
65
+ const appInfo = cliKitStore().getAppInfo(directory);
66
+ const { platform, arch } = platformAndArch();
67
+ const rawPartnerId = appInfo?.orgId;
68
+ let partnerIdAsInt;
69
+ if (rawPartnerId !== undefined) {
70
+ partnerIdAsInt = parseInt(rawPartnerId, 10);
71
+ if (isNaN(partnerIdAsInt)) {
72
+ partnerIdAsInt = undefined;
73
+ }
74
+ }
75
+ return {
76
+ schema_id: 'app_cli3_command/1.0',
77
+ payload: {
78
+ project_type: await getProjectType(join(directory, 'web')),
79
+ command: startCommand,
80
+ args: startArgs,
81
+ time_start: startTime,
82
+ time_end: currentTime,
83
+ total_time: totalTime(currentTime),
84
+ success: errorMessage === undefined,
85
+ error_message: errorMessage,
86
+ uname: `${platform} ${arch}`,
87
+ cli_version: await constants.versions.cliKit(),
88
+ ruby_version: (await rubyVersion()) || '',
89
+ node_version: process.version.replace('v', ''),
90
+ is_employee: await environment.local.isShopify(),
91
+ api_key: appInfo?.appId,
92
+ partner_id: partnerIdAsInt,
93
+ },
94
+ };
95
+ };
96
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport * as environment from './environment.js'\nimport {fetch} from './http.js'\nimport {platformAndArch} from './os.js'\nimport {join, resolve} from './path.js'\nimport {version as rubyVersion} from './ruby.js'\nimport {debug, content, token} from './output.js'\nimport {getProjectType} from './dependency.js'\nimport constants from './constants.js'\nimport {cliKitStore} from './store.js'\n\nconst url = 'https://monorail-edge.shopifysvc.com/v1/produce'\nlet startTime: number | undefined\nlet startCommand: string\nlet startArgs: string\n\ninterface startOptions {\n command: string\n args: string\n currentTime?: number\n}\n\nexport const start = ({command, args, currentTime = new Date().getTime()}: startOptions) => {\n startCommand = command\n startArgs = args\n startTime = currentTime\n}\n\ninterface ReportEventOptions {\n errorMessage?: string\n}\n\nexport const reportEvent = async (options: ReportEventOptions = {}) => {\n if (environment.local.analyticsDisabled()) return\n if (startCommand === undefined) return\n\n try {\n const currentTime = new Date().getTime()\n const payload = await buildPayload(options.errorMessage, currentTime)\n const body = JSON.stringify(payload)\n const headers = buildHeaders(currentTime)\n\n const response = await fetch(url, {method: 'POST', body, headers})\n if (response.status === 200) {\n debug(content`Analytics event sent: ${token.json(payload)}`)\n } else {\n debug(`Failed to report usage analytics: ${response.statusText}`)\n }\n // eslint-disable-next-line no-catch-all/no-catch-all\n } catch (error) {\n let message = 'Failed to report usage analytics'\n if (error instanceof Error) {\n message = message.concat(`: ${error.message}`)\n }\n debug(message)\n }\n}\n\nconst totalTime = (currentTime: number): number | undefined => {\n if (startTime === undefined) return undefined\n return currentTime - startTime\n}\n\nconst buildHeaders = (currentTime: number) => {\n return {\n 'Content-Type': 'application/json; charset=utf-8',\n 'X-Monorail-Edge-Event-Created-At-Ms': currentTime.toString(),\n 'X-Monorail-Edge-Event-Sent-At-Ms': currentTime.toString(),\n }\n}\n\nconst buildPayload = async (errorMessage: string | undefined, currentTime: number) => {\n let directory = process.cwd()\n const pathFlagIndex = startArgs.indexOf('--path')\n if (pathFlagIndex >= 0) {\n directory = resolve(startArgs[pathFlagIndex + 1])\n }\n const appInfo = cliKitStore().getAppInfo(directory)\n const {platform, arch} = platformAndArch()\n\n const rawPartnerId = appInfo?.orgId\n let partnerIdAsInt: number | undefined\n if (rawPartnerId !== undefined) {\n partnerIdAsInt = parseInt(rawPartnerId, 10)\n if (isNaN(partnerIdAsInt)) {\n partnerIdAsInt = undefined\n }\n }\n\n return {\n schema_id: 'app_cli3_command/1.0',\n payload: {\n project_type: await getProjectType(join(directory, 'web')),\n command: startCommand,\n args: startArgs,\n time_start: startTime,\n time_end: currentTime,\n total_time: totalTime(currentTime),\n success: errorMessage === undefined,\n error_message: errorMessage,\n uname: `${platform} ${arch}`,\n cli_version: await constants.versions.cliKit(),\n ruby_version: (await rubyVersion()) || '',\n node_version: process.version.replace('v', ''),\n is_employee: await environment.local.isShopify(),\n api_key: appInfo?.appId,\n partner_id: partnerIdAsInt,\n },\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { AdminSession } from '../session.js';
2
+ import { RequestDocument, Variables } from 'graphql-request';
3
+ export declare function request<T>(query: RequestDocument, session: AdminSession, variables?: Variables): Promise<T>;
@@ -0,0 +1,80 @@
1
+ import { buildHeaders, sanitizedHeadersOutput } from './common.js';
2
+ import { debug, content, token as outputToken } from '../output.js';
3
+ import { Bug, Abort } from '../error.js';
4
+ import { request as graphqlRequest, gql, ClientError } from 'graphql-request';
5
+ const UnauthorizedAccessError = (store) => {
6
+ const adminLink = outputToken.link(`URL`, `https://${store}/admin`);
7
+ const storeName = store.replace('.myshopify.com', '');
8
+ return new Abort(content `Looks like you need access to this dev store (${outputToken.link(storeName, `https://${store}`)})`, content `• Log in to the store directly from this ${adminLink}. If you're the store owner, then that direct log in should solve your access issue.
9
+ • If you're not the owner, create a dev store staff account for yourself. Then log in directly from the link above.
10
+ `);
11
+ };
12
+ const UnknownError = () => {
13
+ return new Bug(`Unknown error connecting to your store`);
14
+ };
15
+ export async function request(query, session, variables) {
16
+ const version = await fetchApiVersion(session);
17
+ const url = adminUrl(session.storeFqdn, version);
18
+ const headers = await buildHeaders(session.token);
19
+ debug(`
20
+ Sending Admin GraphQL request:
21
+ ${query}
22
+
23
+ With variables:
24
+ ${variables ? JSON.stringify(variables, null, 2) : ''}
25
+
26
+ And headers:
27
+ ${sanitizedHeadersOutput(headers)}
28
+ `);
29
+ try {
30
+ const response = await graphqlRequest(url, query, variables, headers);
31
+ return response;
32
+ }
33
+ catch (error) {
34
+ if (error instanceof ClientError) {
35
+ const errorMessage = content `
36
+ The Admin GraphQL API responded unsuccessfully with the HTTP status ${`${error.response.status}`} and errors:
37
+
38
+ ${outputToken.json(error.response.errors)}
39
+ `;
40
+ const abortError = new Abort(errorMessage.value);
41
+ abortError.stack = error.stack;
42
+ throw abortError;
43
+ }
44
+ else {
45
+ throw error;
46
+ }
47
+ }
48
+ }
49
+ async function fetchApiVersion(session) {
50
+ const url = adminUrl(session.storeFqdn, 'unstable');
51
+ const query = apiVersionQuery();
52
+ const headers = await buildHeaders(session.token);
53
+ debug(`
54
+ Sending Admin GraphQL request to URL ${url} with query:
55
+ ${query}
56
+ `);
57
+ const data = await graphqlRequest(url, query, {}, headers).catch((err) => {
58
+ throw err.response.status === 403 ? UnauthorizedAccessError(session.storeFqdn) : UnknownError();
59
+ });
60
+ return data.publicApiVersions
61
+ .filter((item) => item.supported)
62
+ .map((item) => item.handle)
63
+ .sort()
64
+ .reverse()[0];
65
+ }
66
+ function adminUrl(store, version) {
67
+ const realVersion = version || 'unstable';
68
+ return `https://${store}/admin/api/${realVersion}/graphql.json`;
69
+ }
70
+ function apiVersionQuery() {
71
+ return gql `
72
+ query {
73
+ publicApiVersions {
74
+ handle
75
+ supported
76
+ }
77
+ }
78
+ `;
79
+ }
80
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/api/admin.ts"],"names":[],"mappings":"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","sourcesContent":["import {buildHeaders, sanitizedHeadersOutput} from './common.js'\nimport {AdminSession} from '../session.js'\nimport {debug, content, token as outputToken} from '../output.js'\nimport {Bug, Abort} from '../error.js'\nimport {request as graphqlRequest, gql, RequestDocument, Variables, ClientError} from 'graphql-request'\n\nconst UnauthorizedAccessError = (store: string) => {\n const adminLink = outputToken.link(`URL`, `https://${store}/admin`)\n const storeName = store.replace('.myshopify.com', '')\n return new Abort(\n content`Looks like you need access to this dev store (${outputToken.link(storeName, `https://${store}`)})`,\n content`• Log in to the store directly from this ${adminLink}. If you're the store owner, then that direct log in should solve your access issue.\n• If you're not the owner, create a dev store staff account for yourself. Then log in directly from the link above.\n `,\n )\n}\n\nconst UnknownError = () => {\n return new Bug(`Unknown error connecting to your store`)\n}\n\nexport async function request<T>(query: RequestDocument, session: AdminSession, variables?: Variables): Promise<T> {\n const version = await fetchApiVersion(session)\n const url = adminUrl(session.storeFqdn, version)\n const headers = await buildHeaders(session.token)\n debug(`\nSending Admin GraphQL request:\n${query}\n\nWith variables:\n${variables ? JSON.stringify(variables, null, 2) : ''}\n\nAnd headers:\n${sanitizedHeadersOutput(headers)}\n`)\n try {\n const response = await graphqlRequest<T>(url, query, variables, headers)\n return response\n } catch (error) {\n if (error instanceof ClientError) {\n const errorMessage = content`\nThe Admin GraphQL API responded unsuccessfully with the HTTP status ${`${error.response.status}`} and errors:\n\n${outputToken.json(error.response.errors)}\n `\n const abortError = new Abort(errorMessage.value)\n abortError.stack = error.stack\n throw abortError\n } else {\n throw error\n }\n }\n}\n\nasync function fetchApiVersion(session: AdminSession): Promise<string> {\n const url = adminUrl(session.storeFqdn, 'unstable')\n const query = apiVersionQuery()\n const headers = await buildHeaders(session.token)\n\n debug(`\nSending Admin GraphQL request to URL ${url} with query:\n${query}\n `)\n const data = await graphqlRequest<{\n publicApiVersions: {handle: string; supported: boolean}[]\n }>(url, query, {}, headers).catch((err) => {\n throw err.response.status === 403 ? UnauthorizedAccessError(session.storeFqdn) : UnknownError()\n })\n\n return data.publicApiVersions\n .filter((item) => item.supported)\n .map((item) => item.handle)\n .sort()\n .reverse()[0]\n}\n\nfunction adminUrl(store: string, version: string | undefined): string {\n const realVersion = version || 'unstable'\n return `https://${store}/admin/api/${realVersion}/graphql.json`\n}\n\nfunction apiVersionQuery(): string {\n return gql`\n query {\n publicApiVersions {\n handle\n supported\n }\n }\n `\n}\n"]}
@@ -0,0 +1,11 @@
1
+ export declare function buildHeaders(token: string): Promise<{
2
+ [key: string]: string;
3
+ }>;
4
+ /**
5
+ * Remvoes the sensitive data from the headers and outputs them as a string.
6
+ * @param headers {{[key: string]: string}} HTTP headers.
7
+ * @returns {string} A sanitized version of the headers as a string.
8
+ */
9
+ export declare function sanitizedHeadersOutput(headers: {
10
+ [key: string]: string;
11
+ }): string;
@@ -0,0 +1,40 @@
1
+ import { isShopify } from '../environment/local.js';
2
+ import constants from '../constants.js';
3
+ import { randomUUID } from 'crypto';
4
+ export async function buildHeaders(token) {
5
+ const userAgent = `Shopify CLI; v=${await constants.versions.cliKit()}`;
6
+ const isEmployee = await isShopify();
7
+ const headers = {
8
+ /* eslint-disable @typescript-eslint/naming-convention */
9
+ 'User-Agent': userAgent,
10
+ // 'Sec-CH-UA': secCHUA, This header requires the Git sha.
11
+ 'Sec-CH-UA-PLATFORM': process.platform,
12
+ 'X-Request-Id': randomUUID(),
13
+ authorization: `Bearer ${token}`,
14
+ 'X-Shopify-Access-Token': `Bearer ${token}`,
15
+ 'Content-Type': 'application/json',
16
+ // ...(isEmployee && {'X-Shopify-Cli-Employee': '1'}),
17
+ /* eslint-enable @typescript-eslint/naming-convention */
18
+ };
19
+ return headers;
20
+ }
21
+ /**
22
+ * Remvoes the sensitive data from the headers and outputs them as a string.
23
+ * @param headers {{[key: string]: string}} HTTP headers.
24
+ * @returns {string} A sanitized version of the headers as a string.
25
+ */
26
+ export function sanitizedHeadersOutput(headers) {
27
+ const sanitized = {};
28
+ const keywords = ['token', 'authorization'];
29
+ Object.keys(headers).forEach((header) => {
30
+ if (keywords.find((keyword) => header.toLocaleLowerCase().includes(keyword)) === undefined) {
31
+ sanitized[header] = headers[header];
32
+ }
33
+ });
34
+ return Object.keys(sanitized)
35
+ .map((header) => {
36
+ return ` - ${header}: ${sanitized[header]}`;
37
+ })
38
+ .join('\n');
39
+ }
40
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAA;AACjD,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAA;AAEjC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC9C,MAAM,SAAS,GAAG,kBAAkB,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAA;IACvE,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE,CAAA;IAEpC,MAAM,OAAO,GAAG;QACd,yDAAyD;QACzD,YAAY,EAAE,SAAS;QACvB,0DAA0D;QAC1D,oBAAoB,EAAE,OAAO,CAAC,QAAQ;QACtC,cAAc,EAAE,UAAU,EAAE;QAC5B,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,wBAAwB,EAAE,UAAU,KAAK,EAAE;QAC3C,cAAc,EAAE,kBAAkB;QAClC,sDAAsD;QACtD,wDAAwD;KACzD,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgC;IACrE,MAAM,SAAS,GAA4B,EAAE,CAAA;IAC7C,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS,EAAE;YAC1F,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;SACpC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,OAAO,MAAM,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;IAC7C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC","sourcesContent":["import {isShopify} from '../environment/local.js'\nimport constants from '../constants.js'\nimport {randomUUID} from 'crypto'\n\nexport async function buildHeaders(token: string): Promise<{[key: string]: string}> {\n const userAgent = `Shopify CLI; v=${await constants.versions.cliKit()}`\n const isEmployee = await isShopify()\n\n const headers = {\n /* eslint-disable @typescript-eslint/naming-convention */\n 'User-Agent': userAgent,\n // 'Sec-CH-UA': secCHUA, This header requires the Git sha.\n 'Sec-CH-UA-PLATFORM': process.platform,\n 'X-Request-Id': randomUUID(),\n authorization: `Bearer ${token}`,\n 'X-Shopify-Access-Token': `Bearer ${token}`,\n 'Content-Type': 'application/json',\n // ...(isEmployee && {'X-Shopify-Cli-Employee': '1'}),\n /* eslint-enable @typescript-eslint/naming-convention */\n }\n\n return headers\n}\n\n/**\n * Remvoes the sensitive data from the headers and outputs them as a string.\n * @param headers {{[key: string]: string}} HTTP headers.\n * @returns {string} A sanitized version of the headers as a string.\n */\nexport function sanitizedHeadersOutput(headers: {[key: string]: string}): string {\n const sanitized: {[key: string]: string} = {}\n const keywords = ['token', 'authorization']\n Object.keys(headers).forEach((header) => {\n if (keywords.find((keyword) => header.toLocaleLowerCase().includes(keyword)) === undefined) {\n sanitized[header] = headers[header]\n }\n })\n return Object.keys(sanitized)\n .map((header) => {\n return ` - ${header}: ${sanitized[header]}`\n })\n .join('\\n')\n}\n"]}
@@ -0,0 +1,14 @@
1
+ export declare const AllAppExtensionRegistrationsQuery: string;
2
+ export interface AllAppExtensionRegistrationsQueryVariables {
3
+ apiKey: string;
4
+ }
5
+ export interface AllAppExtensionRegistrationsQuerySchema {
6
+ app: {
7
+ extensionRegistrations: {
8
+ id: string;
9
+ uuid: string;
10
+ title: string;
11
+ type: string;
12
+ }[];
13
+ };
14
+ }
@@ -0,0 +1,14 @@
1
+ import { gql } from 'graphql-request';
2
+ export const AllAppExtensionRegistrationsQuery = gql `
3
+ query allAppExtensionRegistrations($apiKey: String!) {
4
+ app(apiKey: $apiKey) {
5
+ extensionRegistrations {
6
+ id
7
+ uuid
8
+ title
9
+ type
10
+ }
11
+ }
12
+ }
13
+ `;
14
+ //# sourceMappingURL=all_app_extension_registrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all_app_extension_registrations.js","sourceRoot":"","sources":["../../../src/api/graphql/all_app_extension_registrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAA;AAEnC,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAA;;;;;;;;;;;CAWnD,CAAA","sourcesContent":["import {gql} from 'graphql-request'\n\nexport const AllAppExtensionRegistrationsQuery = gql`\n query allAppExtensionRegistrations($apiKey: String!) {\n app(apiKey: $apiKey) {\n extensionRegistrations {\n id\n uuid\n title\n type\n }\n }\n }\n`\n\nexport interface AllAppExtensionRegistrationsQueryVariables {\n apiKey: string\n}\n\nexport interface AllAppExtensionRegistrationsQuerySchema {\n app: {\n extensionRegistrations: {\n id: string\n uuid: string\n title: string\n type: string\n }[]\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ export interface AllOrganizationsQuerySchemaOrganization {
2
+ id: string;
3
+ businessName: string;
4
+ website: string;
5
+ appsNext: boolean;
6
+ }
7
+ export interface AllOrganizationsQuerySchema {
8
+ organizations: {
9
+ nodes: AllOrganizationsQuerySchemaOrganization[];
10
+ };
11
+ }
12
+ export declare const AllOrganizationsQuery: string;
@@ -0,0 +1,14 @@
1
+ import { gql } from 'graphql-request';
2
+ export const AllOrganizationsQuery = gql `
3
+ {
4
+ organizations(first: 200) {
5
+ nodes {
6
+ id
7
+ businessName
8
+ website
9
+ appsNext
10
+ }
11
+ }
12
+ }
13
+ `;
14
+ //# sourceMappingURL=all_orgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all_orgs.js","sourceRoot":"","sources":["../../../src/api/graphql/all_orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAA;AAenC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;CAWvC,CAAA","sourcesContent":["import {gql} from 'graphql-request'\n\nexport interface AllOrganizationsQuerySchemaOrganization {\n id: string\n businessName: string\n website: string\n appsNext: boolean\n}\n\nexport interface AllOrganizationsQuerySchema {\n organizations: {\n nodes: AllOrganizationsQuerySchemaOrganization[]\n }\n}\n\nexport const AllOrganizationsQuery = gql`\n {\n organizations(first: 200) {\n nodes {\n id\n businessName\n website\n appsNext\n }\n }\n }\n`\n"]}
@@ -0,0 +1,18 @@
1
+ export declare const AllStoresByOrganizationQuery: string;
2
+ export interface AllStoresByOrganizationSchema {
3
+ organizations: {
4
+ nodes: {
5
+ id: string;
6
+ stores: {
7
+ nodes: {
8
+ shopId: string;
9
+ link: string;
10
+ shopDomain: string;
11
+ shopName: string;
12
+ transferDisabled: boolean;
13
+ convertableToPartnerTest: boolean;
14
+ }[];
15
+ };
16
+ }[];
17
+ };
18
+ }
@@ -0,0 +1,21 @@
1
+ import { gql } from 'graphql-request';
2
+ export const AllStoresByOrganizationQuery = gql `
3
+ query FindOrganization($id: ID!) {
4
+ organizations(id: $id, first: 1) {
5
+ nodes {
6
+ id
7
+ stores(first: 500, archived: false) {
8
+ nodes {
9
+ shopId
10
+ link
11
+ shopDomain
12
+ shopName
13
+ transferDisabled
14
+ convertableToPartnerTest
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
20
+ `;
21
+ //# sourceMappingURL=all_stores_by_org.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all_stores_by_org.js","sourceRoot":"","sources":["../../../src/api/graphql/all_stores_by_org.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAA;AAEnC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;CAkB9C,CAAA","sourcesContent":["import {gql} from 'graphql-request'\n\nexport const AllStoresByOrganizationQuery = gql`\n query FindOrganization($id: ID!) {\n organizations(id: $id, first: 1) {\n nodes {\n id\n stores(first: 500, archived: false) {\n nodes {\n shopId\n link\n shopDomain\n shopName\n transferDisabled\n convertableToPartnerTest\n }\n }\n }\n }\n }\n`\n\nexport interface AllStoresByOrganizationSchema {\n organizations: {\n nodes: {\n id: string\n stores: {\n nodes: {\n shopId: string\n link: string\n shopDomain: string\n shopName: string\n transferDisabled: boolean\n convertableToPartnerTest: boolean\n }[]\n }\n }[]\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ export declare const ConvertDevToTestStoreQuery: string;
2
+ export interface ConvertDevToTestStoreVariables {
3
+ input: {
4
+ organizationID: number;
5
+ shopId: string;
6
+ };
7
+ }
8
+ export interface ConvertDevToTestStoreSchema {
9
+ convertDevToTestStore: {
10
+ convertedToTestStore: boolean;
11
+ userErrors: {
12
+ field: string[];
13
+ message: string;
14
+ }[];
15
+ };
16
+ }
@@ -0,0 +1,13 @@
1
+ import { gql } from 'graphql-request';
2
+ export const ConvertDevToTestStoreQuery = gql `
3
+ mutation convertDevToTestStore($input: ConvertDevToTestStoreInput!) {
4
+ convertDevToTestStore(input: $input) {
5
+ convertedToTestStore
6
+ userErrors {
7
+ message
8
+ field
9
+ }
10
+ }
11
+ }
12
+ `;
13
+ //# sourceMappingURL=convert_dev_to_test_store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert_dev_to_test_store.js","sourceRoot":"","sources":["../../../src/api/graphql/convert_dev_to_test_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAA;AAEnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA;;;;;;;;;;CAU5C,CAAA","sourcesContent":["import {gql} from 'graphql-request'\n\nexport const ConvertDevToTestStoreQuery = gql`\n mutation convertDevToTestStore($input: ConvertDevToTestStoreInput!) {\n convertDevToTestStore(input: $input) {\n convertedToTestStore\n userErrors {\n message\n field\n }\n }\n }\n`\n\nexport interface ConvertDevToTestStoreVariables {\n input: {\n organizationID: number\n shopId: string\n }\n}\n\nexport interface ConvertDevToTestStoreSchema {\n convertDevToTestStore: {\n convertedToTestStore: boolean\n userErrors: {\n field: string[]\n message: string\n }[]\n }\n}\n"]}
@@ -0,0 +1,28 @@
1
+ export declare const CreateAppQuery: string;
2
+ export interface CreateAppQueryVariables {
3
+ org: number;
4
+ title: string;
5
+ appUrl: string;
6
+ redir: string[];
7
+ type: string;
8
+ }
9
+ export interface CreateAppQuerySchema {
10
+ appCreate: {
11
+ app: {
12
+ id: string;
13
+ apiKey: string;
14
+ title: string;
15
+ applicationUrl: string;
16
+ redirectUrlWhitelist: string[];
17
+ organizationId: string;
18
+ apiSecretKeys: {
19
+ secret: string;
20
+ }[];
21
+ appType: string;
22
+ };
23
+ userErrors: {
24
+ field: string[];
25
+ message: string;
26
+ }[];
27
+ };
28
+ }
@@ -0,0 +1,32 @@
1
+ import { gql } from 'graphql-request';
2
+ export const CreateAppQuery = gql `
3
+ mutation AppCreate($org: Int!, $title: String!, $appUrl: Url!, $redir: [Url]!, $type: AppType) {
4
+ appCreate(
5
+ input: {
6
+ organizationID: $org
7
+ title: $title
8
+ applicationUrl: $appUrl
9
+ redirectUrlWhitelist: $redir
10
+ appType: $type
11
+ }
12
+ ) {
13
+ app {
14
+ id
15
+ apiKey
16
+ title
17
+ appType
18
+ applicationUrl
19
+ redirectUrlWhitelist
20
+ apiSecretKeys {
21
+ secret
22
+ }
23
+ appType
24
+ }
25
+ userErrors {
26
+ field
27
+ message
28
+ }
29
+ }
30
+ }
31
+ `;
32
+ //# sourceMappingURL=create_app.js.map