@shopify/cli-kit 0.0.0-nightly-20230110194301

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 (488) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +63 -0
  3. package/assets/auth-error.html +23 -0
  4. package/assets/empty-url.html +23 -0
  5. package/assets/favicon.svg +26 -0
  6. package/assets/missing-code.html +23 -0
  7. package/assets/missing-state.html +23 -0
  8. package/assets/style.css +58 -0
  9. package/assets/success.html +20 -0
  10. package/dist/api/admin.d.ts +3 -0
  11. package/dist/api/admin.js +56 -0
  12. package/dist/api/admin.js.map +1 -0
  13. package/dist/api/common.d.ts +21 -0
  14. package/dist/api/common.js +87 -0
  15. package/dist/api/common.js.map +1 -0
  16. package/dist/api/graphql/all_app_extension_registrations.d.ts +20 -0
  17. package/dist/api/graphql/all_app_extension_registrations.js +20 -0
  18. package/dist/api/graphql/all_app_extension_registrations.js.map +1 -0
  19. package/dist/api/graphql/all_dev_stores_by_org.d.ts +18 -0
  20. package/dist/api/graphql/all_dev_stores_by_org.js +21 -0
  21. package/dist/api/graphql/all_dev_stores_by_org.js.map +1 -0
  22. package/dist/api/graphql/all_orgs.d.ts +12 -0
  23. package/dist/api/graphql/all_orgs.js +14 -0
  24. package/dist/api/graphql/all_orgs.js.map +1 -0
  25. package/dist/api/graphql/convert_dev_to_test_store.d.ts +16 -0
  26. package/dist/api/graphql/convert_dev_to_test_store.js +13 -0
  27. package/dist/api/graphql/convert_dev_to_test_store.js.map +1 -0
  28. package/dist/api/graphql/create_app.d.ts +29 -0
  29. package/dist/api/graphql/create_app.js +33 -0
  30. package/dist/api/graphql/create_app.js.map +1 -0
  31. package/dist/api/graphql/create_deployment.d.ts +33 -0
  32. package/dist/api/graphql/create_deployment.js +25 -0
  33. package/dist/api/graphql/create_deployment.js.map +1 -0
  34. package/dist/api/graphql/extension_create.d.ts +30 -0
  35. package/dist/api/graphql/extension_create.js +26 -0
  36. package/dist/api/graphql/extension_create.js.map +1 -0
  37. package/dist/api/graphql/extension_specifications.d.ts +27 -0
  38. package/dist/api/graphql/extension_specifications.js +22 -0
  39. package/dist/api/graphql/extension_specifications.js.map +1 -0
  40. package/dist/api/graphql/find_app.d.ts +14 -0
  41. package/dist/api/graphql/find_app.js +17 -0
  42. package/dist/api/graphql/find_app.js.map +1 -0
  43. package/dist/api/graphql/find_org.d.ts +18 -0
  44. package/dist/api/graphql/find_org.js +21 -0
  45. package/dist/api/graphql/find_org.js.map +1 -0
  46. package/dist/api/graphql/find_org_basic.d.ts +11 -0
  47. package/dist/api/graphql/find_org_basic.js +14 -0
  48. package/dist/api/graphql/find_org_basic.js.map +1 -0
  49. package/dist/api/graphql/find_store_by_domain.d.ts +21 -0
  50. package/dist/api/graphql/find_store_by_domain.js +24 -0
  51. package/dist/api/graphql/find_store_by_domain.js.map +1 -0
  52. package/dist/api/graphql/functions/api_schema_definition.d.ts +9 -0
  53. package/dist/api/graphql/functions/api_schema_definition.js +7 -0
  54. package/dist/api/graphql/functions/api_schema_definition.js.map +1 -0
  55. package/dist/api/graphql/functions/app_function_set.d.ts +30 -0
  56. package/dist/api/graphql/functions/app_function_set.js +38 -0
  57. package/dist/api/graphql/functions/app_function_set.js.map +1 -0
  58. package/dist/api/graphql/functions/function_service_proxy.d.ts +4 -0
  59. package/dist/api/graphql/functions/function_service_proxy.js +7 -0
  60. package/dist/api/graphql/functions/function_service_proxy.js.map +1 -0
  61. package/dist/api/graphql/functions/upload_url_generate.d.ts +12 -0
  62. package/dist/api/graphql/functions/upload_url_generate.js +11 -0
  63. package/dist/api/graphql/functions/upload_url_generate.js.map +1 -0
  64. package/dist/api/graphql/generate_signed_upload_url.d.ts +15 -0
  65. package/dist/api/graphql/generate_signed_upload_url.js +15 -0
  66. package/dist/api/graphql/generate_signed_upload_url.js.map +1 -0
  67. package/dist/api/graphql/get_urls.d.ts +10 -0
  68. package/dist/api/graphql/get_urls.js +10 -0
  69. package/dist/api/graphql/get_urls.js.map +1 -0
  70. package/dist/api/graphql/get_variant_id.d.ts +17 -0
  71. package/dist/api/graphql/get_variant_id.js +20 -0
  72. package/dist/api/graphql/get_variant_id.js.map +1 -0
  73. package/dist/api/graphql/index.d.ts +21 -0
  74. package/dist/api/graphql/index.js +22 -0
  75. package/dist/api/graphql/index.js.map +1 -0
  76. package/dist/api/graphql/update_draft.d.ts +33 -0
  77. package/dist/api/graphql/update_draft.js +24 -0
  78. package/dist/api/graphql/update_draft.js.map +1 -0
  79. package/dist/api/graphql/update_urls.d.ts +14 -0
  80. package/dist/api/graphql/update_urls.js +12 -0
  81. package/dist/api/graphql/update_urls.js.map +1 -0
  82. package/dist/api/identity.d.ts +1 -0
  83. package/dist/api/identity.js +41 -0
  84. package/dist/api/identity.js.map +1 -0
  85. package/dist/api/oxygen.d.ts +5 -0
  86. package/dist/api/oxygen.js +30 -0
  87. package/dist/api/oxygen.js.map +1 -0
  88. package/dist/api/partners.d.ts +14 -0
  89. package/dist/api/partners.js +44 -0
  90. package/dist/api/partners.js.map +1 -0
  91. package/dist/api.d.ts +6 -0
  92. package/dist/api.js +7 -0
  93. package/dist/api.js.map +1 -0
  94. package/dist/cli.d.ts +8 -0
  95. package/dist/cli.js +18 -0
  96. package/dist/cli.js.map +1 -0
  97. package/dist/constants.d.ts +52 -0
  98. package/dist/constants.js +71 -0
  99. package/dist/constants.js.map +1 -0
  100. package/dist/content-tokens.d.ts +44 -0
  101. package/dist/content-tokens.js +105 -0
  102. package/dist/content-tokens.js.map +1 -0
  103. package/dist/environment/fqdn.d.ts +29 -0
  104. package/dist/environment/fqdn.js +72 -0
  105. package/dist/environment/fqdn.js.map +1 -0
  106. package/dist/environment/local.d.ts +92 -0
  107. package/dist/environment/local.js +169 -0
  108. package/dist/environment/local.js.map +1 -0
  109. package/dist/environment/service.d.ts +4 -0
  110. package/dist/environment/service.js +19 -0
  111. package/dist/environment/service.js.map +1 -0
  112. package/dist/environment/spin-cache.d.ts +2 -0
  113. package/dist/environment/spin-cache.js +8 -0
  114. package/dist/environment/spin-cache.js.map +1 -0
  115. package/dist/environment/spin.d.ts +50 -0
  116. package/dist/environment/spin.js +99 -0
  117. package/dist/environment/spin.js.map +1 -0
  118. package/dist/environment/utilities.d.ts +8 -0
  119. package/dist/environment/utilities.js +19 -0
  120. package/dist/environment/utilities.js.map +1 -0
  121. package/dist/environment.d.ts +7 -0
  122. package/dist/environment.js +8 -0
  123. package/dist/environment.js.map +1 -0
  124. package/dist/error.d.ts +68 -0
  125. package/dist/error.js +143 -0
  126. package/dist/error.js.map +1 -0
  127. package/dist/file.d.ts +98 -0
  128. package/dist/file.js +216 -0
  129. package/dist/file.js.map +1 -0
  130. package/dist/git.d.ts +36 -0
  131. package/dist/git.js +133 -0
  132. package/dist/git.js.map +1 -0
  133. package/dist/http/fetch.d.ts +22 -0
  134. package/dist/http/fetch.js +44 -0
  135. package/dist/http/fetch.js.map +1 -0
  136. package/dist/http/formdata.d.ts +3 -0
  137. package/dist/http/formdata.js +6 -0
  138. package/dist/http/formdata.js.map +1 -0
  139. package/dist/http/graphql.d.ts +13 -0
  140. package/dist/http/graphql.js +12 -0
  141. package/dist/http/graphql.js.map +1 -0
  142. package/dist/http.d.ts +27 -0
  143. package/dist/http.js +32 -0
  144. package/dist/http.js.map +1 -0
  145. package/dist/index.d.ts +24 -0
  146. package/dist/index.js +25 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/metadata.d.ts +53 -0
  149. package/dist/metadata.js +62 -0
  150. package/dist/metadata.js.map +1 -0
  151. package/dist/monorail.d.ts +100 -0
  152. package/dist/monorail.js +39 -0
  153. package/dist/monorail.js.map +1 -0
  154. package/dist/network/api.d.ts +2 -0
  155. package/dist/network/api.js +2 -0
  156. package/dist/network/api.js.map +1 -0
  157. package/dist/network/service.d.ts +14 -0
  158. package/dist/network/service.js +11 -0
  159. package/dist/network/service.js.map +1 -0
  160. package/dist/npm.d.ts +27 -0
  161. package/dist/npm.js +20 -0
  162. package/dist/npm.js.map +1 -0
  163. package/dist/output.d.ts +129 -0
  164. package/dist/output.js +310 -0
  165. package/dist/output.js.map +1 -0
  166. package/dist/path.d.ts +25 -0
  167. package/dist/path.js +48 -0
  168. package/dist/path.js.map +1 -0
  169. package/dist/plugins.d.ts +73 -0
  170. package/dist/plugins.js +49 -0
  171. package/dist/plugins.js.map +1 -0
  172. package/dist/private/common/json.d.ts +6 -0
  173. package/dist/private/common/json.js +2 -0
  174. package/dist/private/common/json.js.map +1 -0
  175. package/dist/private/common/lodash.d.ts +47 -0
  176. package/dist/private/common/lodash.js +2 -0
  177. package/dist/private/common/lodash.js.map +1 -0
  178. package/dist/private/node/analytics.d.ts +27 -0
  179. package/dist/private/node/analytics.js +57 -0
  180. package/dist/private/node/analytics.js.map +1 -0
  181. package/dist/private/node/ui/alert.d.ts +2 -0
  182. package/dist/private/node/ui/alert.js +18 -0
  183. package/dist/private/node/ui/alert.js.map +1 -0
  184. package/dist/private/node/ui/components/Alert.d.ts +17 -0
  185. package/dist/private/node/ui/components/Alert.js +21 -0
  186. package/dist/private/node/ui/components/Alert.js.map +1 -0
  187. package/dist/private/node/ui/components/Alert.test.d.ts +1 -0
  188. package/dist/private/node/ui/components/Alert.test.js +95 -0
  189. package/dist/private/node/ui/components/Alert.test.js.map +1 -0
  190. package/dist/private/node/ui/components/Banner.d.ts +8 -0
  191. package/dist/private/node/ui/components/Banner.js +41 -0
  192. package/dist/private/node/ui/components/Banner.js.map +1 -0
  193. package/dist/private/node/ui/components/Banner.test.d.ts +1 -0
  194. package/dist/private/node/ui/components/Banner.test.js +52 -0
  195. package/dist/private/node/ui/components/Banner.test.js.map +1 -0
  196. package/dist/private/node/ui/components/Command.d.ts +9 -0
  197. package/dist/private/node/ui/components/Command.js +13 -0
  198. package/dist/private/node/ui/components/Command.js.map +1 -0
  199. package/dist/private/node/ui/components/Command.test.d.ts +1 -0
  200. package/dist/private/node/ui/components/Command.test.js +11 -0
  201. package/dist/private/node/ui/components/Command.test.js.map +1 -0
  202. package/dist/private/node/ui/components/ConcurrentOutput.d.ts +47 -0
  203. package/dist/private/node/ui/components/ConcurrentOutput.js +86 -0
  204. package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -0
  205. package/dist/private/node/ui/components/ConcurrentOutput.test.d.ts +1 -0
  206. package/dist/private/node/ui/components/ConcurrentOutput.test.js +54 -0
  207. package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -0
  208. package/dist/private/node/ui/components/FatalError.d.ts +7 -0
  209. package/dist/private/node/ui/components/FatalError.js +54 -0
  210. package/dist/private/node/ui/components/FatalError.js.map +1 -0
  211. package/dist/private/node/ui/components/FatalError.test.d.ts +1 -0
  212. package/dist/private/node/ui/components/FatalError.test.js +119 -0
  213. package/dist/private/node/ui/components/FatalError.test.js.map +1 -0
  214. package/dist/private/node/ui/components/FilePath.d.ts +9 -0
  215. package/dist/private/node/ui/components/FilePath.js +13 -0
  216. package/dist/private/node/ui/components/FilePath.js.map +1 -0
  217. package/dist/private/node/ui/components/FilePath.test.d.ts +1 -0
  218. package/dist/private/node/ui/components/FilePath.test.js +11 -0
  219. package/dist/private/node/ui/components/FilePath.test.js.map +1 -0
  220. package/dist/private/node/ui/components/FullScreen.d.ts +8 -0
  221. package/dist/private/node/ui/components/FullScreen.js +32 -0
  222. package/dist/private/node/ui/components/FullScreen.js.map +1 -0
  223. package/dist/private/node/ui/components/Link.d.ts +10 -0
  224. package/dist/private/node/ui/components/Link.js +15 -0
  225. package/dist/private/node/ui/components/Link.js.map +1 -0
  226. package/dist/private/node/ui/components/Link.test.d.ts +1 -0
  227. package/dist/private/node/ui/components/Link.test.js +22 -0
  228. package/dist/private/node/ui/components/Link.test.js.map +1 -0
  229. package/dist/private/node/ui/components/List.d.ts +13 -0
  230. package/dist/private/node/ui/components/List.js +19 -0
  231. package/dist/private/node/ui/components/List.js.map +1 -0
  232. package/dist/private/node/ui/components/List.test.d.ts +1 -0
  233. package/dist/private/node/ui/components/List.test.js +34 -0
  234. package/dist/private/node/ui/components/List.test.js.map +1 -0
  235. package/dist/private/node/ui/components/SelectInput.d.ts +12 -0
  236. package/dist/private/node/ui/components/SelectInput.js +87 -0
  237. package/dist/private/node/ui/components/SelectInput.js.map +1 -0
  238. package/dist/private/node/ui/components/SelectInput.test.d.ts +1 -0
  239. package/dist/private/node/ui/components/SelectInput.test.js +230 -0
  240. package/dist/private/node/ui/components/SelectInput.test.js.map +1 -0
  241. package/dist/private/node/ui/components/SelectPrompt.d.ts +11 -0
  242. package/dist/private/node/ui/components/SelectPrompt.js +34 -0
  243. package/dist/private/node/ui/components/SelectPrompt.js.map +1 -0
  244. package/dist/private/node/ui/components/SelectPrompt.test.d.ts +1 -0
  245. package/dist/private/node/ui/components/SelectPrompt.test.js +74 -0
  246. package/dist/private/node/ui/components/SelectPrompt.test.js.map +1 -0
  247. package/dist/private/node/ui/components/Table.d.ts +8 -0
  248. package/dist/private/node/ui/components/Table.js +17 -0
  249. package/dist/private/node/ui/components/Table.js.map +1 -0
  250. package/dist/private/node/ui/components/Tasks.d.ts +10 -0
  251. package/dist/private/node/ui/components/Tasks.js +27 -0
  252. package/dist/private/node/ui/components/Tasks.js.map +1 -0
  253. package/dist/private/node/ui/components/Tasks.test.d.ts +1 -0
  254. package/dist/private/node/ui/components/Tasks.test.js +50 -0
  255. package/dist/private/node/ui/components/Tasks.test.js.map +1 -0
  256. package/dist/private/node/ui/components/TextAnimation.d.ts +9 -0
  257. package/dist/private/node/ui/components/TextAnimation.js +35 -0
  258. package/dist/private/node/ui/components/TextAnimation.js.map +1 -0
  259. package/dist/private/node/ui/components/TextInput.d.ts +9 -0
  260. package/dist/private/node/ui/components/TextInput.js +74 -0
  261. package/dist/private/node/ui/components/TextInput.js.map +1 -0
  262. package/dist/private/node/ui/components/TextInput.test.d.ts +1 -0
  263. package/dist/private/node/ui/components/TextInput.test.js +139 -0
  264. package/dist/private/node/ui/components/TextInput.test.js.map +1 -0
  265. package/dist/private/node/ui/components/TextPrompt.d.ts +8 -0
  266. package/dist/private/node/ui/components/TextPrompt.js +52 -0
  267. package/dist/private/node/ui/components/TextPrompt.js.map +1 -0
  268. package/dist/private/node/ui/components/TextPrompt.test.d.ts +1 -0
  269. package/dist/private/node/ui/components/TextPrompt.test.js +68 -0
  270. package/dist/private/node/ui/components/TextPrompt.test.js.map +1 -0
  271. package/dist/private/node/ui/components/TokenizedText.d.ts +36 -0
  272. package/dist/private/node/ui/components/TokenizedText.js +70 -0
  273. package/dist/private/node/ui/components/TokenizedText.js.map +1 -0
  274. package/dist/private/node/ui/components/TokenizedText.test.d.ts +1 -0
  275. package/dist/private/node/ui/components/TokenizedText.test.js +44 -0
  276. package/dist/private/node/ui/components/TokenizedText.test.js.map +1 -0
  277. package/dist/private/node/ui/components/UserInput.d.ts +10 -0
  278. package/dist/private/node/ui/components/UserInput.js +11 -0
  279. package/dist/private/node/ui/components/UserInput.js.map +1 -0
  280. package/dist/private/node/ui/components/UserInput.test.d.ts +1 -0
  281. package/dist/private/node/ui/components/UserInput.test.js +11 -0
  282. package/dist/private/node/ui/components/UserInput.test.js.map +1 -0
  283. package/dist/private/node/ui/hooks/use-async-and-unmount.d.ts +6 -0
  284. package/dist/private/node/ui/hooks/use-async-and-unmount.js +17 -0
  285. package/dist/private/node/ui/hooks/use-async-and-unmount.js.map +1 -0
  286. package/dist/private/node/ui/hooks/use-layout.d.ts +6 -0
  287. package/dist/private/node/ui/hooks/use-layout.js +30 -0
  288. package/dist/private/node/ui/hooks/use-layout.js.map +1 -0
  289. package/dist/private/node/ui.d.ts +23 -0
  290. package/dist/private/node/ui.js +53 -0
  291. package/dist/private/node/ui.js.map +1 -0
  292. package/dist/public/common/array.d.ts +37 -0
  293. package/dist/public/common/array.js +51 -0
  294. package/dist/public/common/array.js.map +1 -0
  295. package/dist/public/common/collection.d.ts +23 -0
  296. package/dist/public/common/collection.js +29 -0
  297. package/dist/public/common/collection.js.map +1 -0
  298. package/dist/public/common/function.d.ts +30 -0
  299. package/dist/public/common/function.js +40 -0
  300. package/dist/public/common/function.js.map +1 -0
  301. package/dist/public/common/lang.d.ts +16 -0
  302. package/dist/public/common/lang.js +22 -0
  303. package/dist/public/common/lang.js.map +1 -0
  304. package/dist/public/common/object.d.ts +32 -0
  305. package/dist/public/common/object.js +45 -0
  306. package/dist/public/common/object.js.map +1 -0
  307. package/dist/public/common/string.d.ts +6 -0
  308. package/dist/public/common/string.js +109 -0
  309. package/dist/public/common/string.js.map +1 -0
  310. package/dist/public/common/url.d.ts +7 -0
  311. package/dist/public/common/url.js +17 -0
  312. package/dist/public/common/url.js.map +1 -0
  313. package/dist/public/node/abort.d.ts +16 -0
  314. package/dist/public/node/abort.js +17 -0
  315. package/dist/public/node/abort.js.map +1 -0
  316. package/dist/public/node/analytics.d.ts +13 -0
  317. package/dist/public/node/analytics.js +82 -0
  318. package/dist/public/node/analytics.js.map +1 -0
  319. package/dist/public/node/archiver.d.ts +9 -0
  320. package/dist/public/node/archiver.js +34 -0
  321. package/dist/public/node/archiver.js.map +1 -0
  322. package/dist/public/node/base-command.d.ts +26 -0
  323. package/dist/public/node/base-command.js +172 -0
  324. package/dist/public/node/base-command.js.map +1 -0
  325. package/dist/public/node/checksum.d.ts +20 -0
  326. package/dist/public/node/checksum.js +32 -0
  327. package/dist/public/node/checksum.js.map +1 -0
  328. package/dist/public/node/cli.d.ts +29 -0
  329. package/dist/public/node/cli.js +106 -0
  330. package/dist/public/node/cli.js.map +1 -0
  331. package/dist/public/node/colors.d.ts +2 -0
  332. package/dist/public/node/colors.js +3 -0
  333. package/dist/public/node/colors.js.map +1 -0
  334. package/dist/public/node/dot-env.d.ts +42 -0
  335. package/dist/public/node/dot-env.js +67 -0
  336. package/dist/public/node/dot-env.js.map +1 -0
  337. package/dist/public/node/error-handler.d.ts +41 -0
  338. package/dist/public/node/error-handler.js +198 -0
  339. package/dist/public/node/error-handler.js.map +1 -0
  340. package/dist/public/node/error.d.ts +4 -0
  341. package/dist/public/node/error.js +5 -0
  342. package/dist/public/node/error.js.map +1 -0
  343. package/dist/public/node/framework.d.ts +8 -0
  344. package/dist/public/node/framework.js +135 -0
  345. package/dist/public/node/framework.js.map +1 -0
  346. package/dist/public/node/fs.d.ts +17 -0
  347. package/dist/public/node/fs.js +21 -0
  348. package/dist/public/node/fs.js.map +1 -0
  349. package/dist/public/node/github.d.ts +50 -0
  350. package/dist/public/node/github.js +71 -0
  351. package/dist/public/node/github.js.map +1 -0
  352. package/dist/public/node/hooks/postrun.d.ts +2 -0
  353. package/dist/public/node/hooks/postrun.js +9 -0
  354. package/dist/public/node/hooks/postrun.js.map +1 -0
  355. package/dist/public/node/hooks/prerun.d.ts +12 -0
  356. package/dist/public/node/hooks/prerun.js +66 -0
  357. package/dist/public/node/hooks/prerun.js.map +1 -0
  358. package/dist/public/node/node-package-manager.d.ts +243 -0
  359. package/dist/public/node/node-package-manager.js +369 -0
  360. package/dist/public/node/node-package-manager.js.map +1 -0
  361. package/dist/public/node/os.d.ts +16 -0
  362. package/dist/public/node/os.js +77 -0
  363. package/dist/public/node/os.js.map +1 -0
  364. package/dist/public/node/plugins/tunnel.d.ts +47 -0
  365. package/dist/public/node/plugins/tunnel.js +19 -0
  366. package/dist/public/node/plugins/tunnel.js.map +1 -0
  367. package/dist/public/node/presets.d.ts +8 -0
  368. package/dist/public/node/presets.js +26 -0
  369. package/dist/public/node/presets.js.map +1 -0
  370. package/dist/public/node/result.d.ts +94 -0
  371. package/dist/public/node/result.js +134 -0
  372. package/dist/public/node/result.js.map +1 -0
  373. package/dist/public/node/ruby.d.ts +38 -0
  374. package/dist/public/node/ruby.js +234 -0
  375. package/dist/public/node/ruby.js.map +1 -0
  376. package/dist/public/node/semver.d.ts +3 -0
  377. package/dist/public/node/semver.js +6 -0
  378. package/dist/public/node/semver.js.map +1 -0
  379. package/dist/public/node/tcp.d.ts +5 -0
  380. package/dist/public/node/tcp.js +35 -0
  381. package/dist/public/node/tcp.js.map +1 -0
  382. package/dist/public/node/ui.d.ts +184 -0
  383. package/dist/public/node/ui.js +203 -0
  384. package/dist/public/node/ui.js.map +1 -0
  385. package/dist/schema.d.ts +1 -0
  386. package/dist/schema.js +2 -0
  387. package/dist/schema.js.map +1 -0
  388. package/dist/secure-store.d.ts +19 -0
  389. package/dist/secure-store.js +63 -0
  390. package/dist/secure-store.js.map +1 -0
  391. package/dist/session/authorize.d.ts +7 -0
  392. package/dist/session/authorize.js +52 -0
  393. package/dist/session/authorize.js.map +1 -0
  394. package/dist/session/device-authorization.d.ts +32 -0
  395. package/dist/session/device-authorization.js +92 -0
  396. package/dist/session/device-authorization.js.map +1 -0
  397. package/dist/session/exchange.d.ts +48 -0
  398. package/dist/session/exchange.js +159 -0
  399. package/dist/session/exchange.js.map +1 -0
  400. package/dist/session/identity.d.ts +3 -0
  401. package/dist/session/identity.js +58 -0
  402. package/dist/session/identity.js.map +1 -0
  403. package/dist/session/post-auth.d.ts +13 -0
  404. package/dist/session/post-auth.js +62 -0
  405. package/dist/session/post-auth.js.map +1 -0
  406. package/dist/session/redirect-listener.d.ts +34 -0
  407. package/dist/session/redirect-listener.js +106 -0
  408. package/dist/session/redirect-listener.js.map +1 -0
  409. package/dist/session/schema.d.ts +175 -0
  410. package/dist/session/schema.js +60 -0
  411. package/dist/session/schema.js.map +1 -0
  412. package/dist/session/scopes.d.ts +16 -0
  413. package/dist/session/scopes.js +53 -0
  414. package/dist/session/scopes.js.map +1 -0
  415. package/dist/session/store.d.ts +24 -0
  416. package/dist/session/store.js +89 -0
  417. package/dist/session/store.js.map +1 -0
  418. package/dist/session/token.d.ts +40 -0
  419. package/dist/session/token.js +22 -0
  420. package/dist/session/token.js.map +1 -0
  421. package/dist/session/validate.d.ts +17 -0
  422. package/dist/session/validate.js +65 -0
  423. package/dist/session/validate.js.map +1 -0
  424. package/dist/session.d.ts +96 -0
  425. package/dist/session.js +293 -0
  426. package/dist/session.js.map +1 -0
  427. package/dist/store/schema.d.ts +3 -0
  428. package/dist/store/schema.js +27 -0
  429. package/dist/store/schema.js.map +1 -0
  430. package/dist/store.d.ts +53 -0
  431. package/dist/store.js +134 -0
  432. package/dist/store.js.map +1 -0
  433. package/dist/string.d.ts +28 -0
  434. package/dist/string.js +77 -0
  435. package/dist/string.js.map +1 -0
  436. package/dist/system.d.ts +51 -0
  437. package/dist/system.js +128 -0
  438. package/dist/system.js.map +1 -0
  439. package/dist/template.d.ts +11 -0
  440. package/dist/template.js +50 -0
  441. package/dist/template.js.map +1 -0
  442. package/dist/testing/output.d.ts +10 -0
  443. package/dist/testing/output.js +16 -0
  444. package/dist/testing/output.js.map +1 -0
  445. package/dist/testing/store.d.ts +7 -0
  446. package/dist/testing/store.js +26 -0
  447. package/dist/testing/store.js.map +1 -0
  448. package/dist/testing/ui.d.ts +5 -0
  449. package/dist/testing/ui.js +23 -0
  450. package/dist/testing/ui.js.map +1 -0
  451. package/dist/toml.d.ts +3 -0
  452. package/dist/toml.js +8 -0
  453. package/dist/toml.js.map +1 -0
  454. package/dist/tsconfig.tsbuildinfo +1 -0
  455. package/dist/typing/deep-required.d.ts +12 -0
  456. package/dist/typing/deep-required.js +2 -0
  457. package/dist/typing/deep-required.js.map +1 -0
  458. package/dist/typing/overloaded-parameters.d.ts +6 -0
  459. package/dist/typing/overloaded-parameters.js +2 -0
  460. package/dist/typing/overloaded-parameters.js.map +1 -0
  461. package/dist/typing/pick-by-prefix.d.ts +12 -0
  462. package/dist/typing/pick-by-prefix.js +2 -0
  463. package/dist/typing/pick-by-prefix.js.map +1 -0
  464. package/dist/typing/simple-definitions.d.ts +4 -0
  465. package/dist/typing/simple-definitions.js +2 -0
  466. package/dist/typing/simple-definitions.js.map +1 -0
  467. package/dist/ui/executor.d.ts +14 -0
  468. package/dist/ui/executor.js +90 -0
  469. package/dist/ui/executor.js.map +1 -0
  470. package/dist/ui/inquirer/autocomplete.d.ts +11 -0
  471. package/dist/ui/inquirer/autocomplete.js +110 -0
  472. package/dist/ui/inquirer/autocomplete.js.map +1 -0
  473. package/dist/ui/inquirer/input.d.ts +16 -0
  474. package/dist/ui/inquirer/input.js +45 -0
  475. package/dist/ui/inquirer/input.js.map +1 -0
  476. package/dist/ui/inquirer/password.d.ts +7 -0
  477. package/dist/ui/inquirer/password.js +8 -0
  478. package/dist/ui/inquirer/password.js.map +1 -0
  479. package/dist/ui/inquirer/select.d.ts +14 -0
  480. package/dist/ui/inquirer/select.js +26 -0
  481. package/dist/ui/inquirer/select.js.map +1 -0
  482. package/dist/ui.d.ts +54 -0
  483. package/dist/ui.js +128 -0
  484. package/dist/ui.js.map +1 -0
  485. package/dist/vscode.d.ts +8 -0
  486. package/dist/vscode.js +36 -0
  487. package/dist/vscode.js.map +1 -0
  488. package/package.json +177 -0
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Converts a mapping type to be non-optional
3
+ *
4
+ * ```
5
+ * type T = DeepRequired<{optionalKey?: string, nullableValue: string | null, undefinableValue: string | undefined}>
6
+ * T = {optionalKey: string, nullableValue: string, undefinableValue: string}
7
+ * ```
8
+ *
9
+ */
10
+ export declare type DeepRequired<T> = {
11
+ [TKey in keyof Required<T>]: NonNullable<Required<T>[TKey]>;
12
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deep-required.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-required.js","sourceRoot":"","sources":["../../src/typing/deep-required.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Converts a mapping type to be non-optional\n *\n * ```\n * type T = DeepRequired<{optionalKey?: string, nullableValue: string | null, undefinableValue: string | undefined}>\n * T = {optionalKey: string, nullableValue: string, undefinableValue: string}\n * ```\n *\n */\nexport type DeepRequired<T> = {\n [TKey in keyof Required<T>]: NonNullable<Required<T>[TKey]>\n}\n"]}
@@ -0,0 +1,6 @@
1
+ declare type OverloadProps<TOverload> = Pick<TOverload, keyof TOverload>;
2
+ declare type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (...args: infer TArgs) => infer TReturn ? TPartialOverload extends TOverload ? never : OverloadUnionRecursive<TPartialOverload & TOverload, TPartialOverload & ((...args: TArgs) => TReturn) & OverloadProps<TOverload>> | ((...args: TArgs) => TReturn) : never;
3
+ declare type OverloadUnion<TOverload extends (...args: any[]) => any> = Exclude<OverloadUnionRecursive<(() => never) & TOverload>, TOverload extends () => never ? never : () => never>;
4
+ export declare type OverloadParameters<T extends (...args: any[]) => any> = Parameters<OverloadUnion<T>>;
5
+ export declare type OverloadReturnType<T extends (...args: any[]) => any> = ReturnType<OverloadUnion<T>>;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=overloaded-parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overloaded-parameters.js","sourceRoot":"","sources":["../../src/typing/overloaded-parameters.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ntype OverloadProps<TOverload> = Pick<TOverload, keyof TOverload>\n\n// Prevent infinite recursion by stopping recursion when TPartialOverload\n// has accumulated all of the TOverload signatures.\ntype OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (\n ...args: infer TArgs\n) => infer TReturn\n ? TPartialOverload extends TOverload\n ? never\n :\n | OverloadUnionRecursive<\n TPartialOverload & TOverload,\n TPartialOverload & ((...args: TArgs) => TReturn) & OverloadProps<TOverload>\n >\n | ((...args: TArgs) => TReturn)\n : never\n\n// The \"() => never\" signature must be hoisted to the \"front\" of the\n// intersection, for two reasons: a) because recursion stops when it is\n// encountered, and b) it seems to prevent the collapse of subsequent\n// \"compatible\" signatures (eg. \"() => void\" into \"(a?: 1) => void\"),\n// which gives a direct conversion to a union.\ntype OverloadUnion<TOverload extends (...args: any[]) => any> = Exclude<\n OverloadUnionRecursive<(() => never) & TOverload>,\n TOverload extends () => never ? never : () => never\n>\n\n// Inferring a union of parameter tuples or return types is now possible.\nexport type OverloadParameters<T extends (...args: any[]) => any> = Parameters<OverloadUnion<T>>\nexport type OverloadReturnType<T extends (...args: any[]) => any> = ReturnType<OverloadUnion<T>>\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Produces a subset of a mapping type, where the keys either match some prefix string, or are in a list of exact matches
3
+ *
4
+ * ```
5
+ * type T = PickByPrefix<{foo_1: number, foo_2: number, nope: string, included: string, also: number}, 'foo_', 'included' | 'also'>
6
+ *
7
+ * T = {foo_1: number, foo_2: number, included: string, also: number}
8
+ * ```
9
+ */
10
+ export declare type PickByPrefix<TMapping, TPrefix extends string, TKeys extends keyof TMapping = never> = {
11
+ [TKey in keyof TMapping as TKey extends `${TPrefix}${infer _TSuffix}` | TKeys ? TKey : never]: TMapping[TKey];
12
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pick-by-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick-by-prefix.js","sourceRoot":"","sources":["../../src/typing/pick-by-prefix.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Produces a subset of a mapping type, where the keys either match some prefix string, or are in a list of exact matches\n *\n * ```\n * type T = PickByPrefix<{foo_1: number, foo_2: number, nope: string, included: string, also: number}, 'foo_', 'included' | 'also'>\n *\n * T = {foo_1: number, foo_2: number, included: string, also: number}\n * ```\n */\nexport type PickByPrefix<TMapping, TPrefix extends string, TKeys extends keyof TMapping = never> = {\n [TKey in keyof TMapping as TKey extends `${TPrefix}${infer _TSuffix}` | TKeys ? TKey : never]: TMapping[TKey]\n}\n"]}
@@ -0,0 +1,4 @@
1
+ declare module 'color-json' {
2
+ function colour(content: string | object): string;
3
+ export default colour;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=simple-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-definitions.js","sourceRoot":"","sources":["../../src/typing/simple-definitions.ts"],"names":[],"mappings":"","sourcesContent":["declare module 'color-json' {\n function colour(content: string | object): string\n export default colour\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { Question, QuestionChoiceType } from '../ui.js';
2
+ export declare function run<TName extends string & keyof TAnswers, TAnswers extends {
3
+ [key in TName]: string;
4
+ } = {
5
+ [key in TName]: string;
6
+ }>(question: unknown): Promise<TAnswers>;
7
+ export declare function mapper(question: Question): unknown;
8
+ export declare function groupAndMapChoices(choices: QuestionChoiceType[]): ({
9
+ type: string;
10
+ line: string;
11
+ } | {
12
+ name: string;
13
+ value: string;
14
+ })[];
@@ -0,0 +1,90 @@
1
+ import { CustomInput } from './inquirer/input.js';
2
+ import { CustomAutocomplete } from './inquirer/autocomplete.js';
3
+ import { CustomSelect } from './inquirer/select.js';
4
+ import { CustomPassword } from './inquirer/password.js';
5
+ import inquirer from 'inquirer';
6
+ import fuzzy from 'fuzzy';
7
+ export async function run(question) {
8
+ const questionName = question.name;
9
+ return (await inquirer.prompt(question, { ...question.choices }))[questionName];
10
+ }
11
+ export function mapper(question) {
12
+ switch (question.type) {
13
+ case 'input':
14
+ inquirer.registerPrompt('custom-input', CustomInput);
15
+ return {
16
+ ...question,
17
+ type: 'custom-input',
18
+ };
19
+ case 'password':
20
+ inquirer.registerPrompt('custom-password', CustomPassword);
21
+ return {
22
+ ...question,
23
+ type: 'custom-password',
24
+ };
25
+ case 'select':
26
+ inquirer.registerPrompt('custom-select', CustomSelect);
27
+ return {
28
+ ...question,
29
+ type: 'custom-select',
30
+ source: getAutocompleteFilterType(),
31
+ choices: question.choices ? groupAndMapChoices(question.choices) : undefined,
32
+ };
33
+ case 'autocomplete': {
34
+ inquirer.registerPrompt('autocomplete', CustomAutocomplete);
35
+ const filterType = getAutocompleteFilterType();
36
+ return {
37
+ ...question,
38
+ type: 'autocomplete',
39
+ source: question.source ? question.source(filterType) : filterType,
40
+ };
41
+ }
42
+ }
43
+ }
44
+ function fuzzyFilter(answers, input = '') {
45
+ return new Promise((resolve) => {
46
+ resolve(fuzzy
47
+ .filter(input, Object.values(answers), {
48
+ extract(el) {
49
+ return el.name;
50
+ },
51
+ })
52
+ .map((el) => el.original));
53
+ });
54
+ }
55
+ function containsFilter(answers, input = '') {
56
+ return new Promise((resolve) => {
57
+ resolve(Object.values(answers).filter((answer) => !answer.name || answer.name.toLowerCase().includes(input.toLowerCase())));
58
+ });
59
+ }
60
+ function getAutocompleteFilterType() {
61
+ return process.env.SHOPIFY_USE_AUTOCOMPLETE_FILTER === 'fuzzy' ? fuzzyFilter : containsFilter;
62
+ }
63
+ export function groupAndMapChoices(choices) {
64
+ const initialGroups = [];
65
+ // Switched from choices with group information to groups with a list of choices
66
+ const groups = choices.reduce((finalChoices, choice) => {
67
+ const currentGroup = choice.group ?? { name: 'Other', order: Number.MAX_SAFE_INTEGER };
68
+ const existingGroup = finalChoices.find((group) => group.name === currentGroup.name);
69
+ if (existingGroup) {
70
+ existingGroup.choices.push(choice);
71
+ }
72
+ else {
73
+ finalChoices.push({ ...currentGroup, choices: [choice] });
74
+ }
75
+ return finalChoices;
76
+ }, initialGroups);
77
+ const sortedGroups = groups.sort((g1, g2) => g1.order - g2.order);
78
+ const grouped = sortedGroups.length > 1 || sortedGroups[0].order !== Number.MAX_SAFE_INTEGER;
79
+ // Mapped the group with a list of extensions to a list of inquirer choices including group separators
80
+ return sortedGroups.flatMap((group) => {
81
+ const finalChoices = [];
82
+ if (grouped && group.name) {
83
+ finalChoices.push({ type: 'separator', line: '' });
84
+ finalChoices.push({ type: 'separator', line: group.name });
85
+ }
86
+ finalChoices.push(...group.choices);
87
+ return finalChoices;
88
+ });
89
+ }
90
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/ui/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAA;AAErD,OAAO,QAAuC,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,KAAK,UAAU,GAAG,CAGvB,QAAiB;IACjB,MAAM,YAAY,GAAI,QAAqB,CAAC,IAAI,CAAA;IAChD,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAuC,EAAE,EAAC,GAAI,QAAqB,CAAC,OAAO,EAAC,CAAC,CAAC,CAC1G,YAAY,CACb,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAAkB;IACvC,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACrB,KAAK,OAAO;YACV,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YACpD,OAAO;gBACL,GAAG,QAAQ;gBACX,IAAI,EAAE,cAAc;aACrB,CAAA;QACH,KAAK,UAAU;YACb,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA;YAC1D,OAAO;gBACL,GAAG,QAAQ;gBACX,IAAI,EAAE,iBAAiB;aACxB,CAAA;QACH,KAAK,QAAQ;YACX,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YACtD,OAAO;gBACL,GAAG,QAAQ;gBACX,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,yBAAyB,EAAE;gBACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAA;QACH,KAAK,cAAc,CAAC,CAAC;YACnB,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;YAC3D,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAA;YAC9C,OAAO;gBACL,GAAG,QAAQ;gBACX,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU;aACnE,CAAA;SACF;KACF;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAwC,EAAE,KAAK,GAAG,EAAE;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CACL,KAAK;aACF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACrC,OAAO,CAAC,EAAiC;gBACvC,OAAO,EAAE,CAAC,IAAI,CAAA;YAChB,CAAC;SACF,CAAC;aACD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAC5B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAAwC,EAAE,KAAK,GAAG,EAAE;IAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CACL,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAC3B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACpF,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAA;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA6B;IAC9D,MAAM,aAAa,GAA+F,EAAE,CAAA;IAEpH,gFAAgF;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAC,CAAA;QACpF,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;QACpF,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACnC;aAAM;YACL,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA;SACxD;QACD,OAAO,YAAY,CAAA;IACrB,CAAC,EAAE,aAAa,CAAC,CAAA;IAEjB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACjE,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,MAAM,CAAC,gBAAgB,CAAA;IAE7F,sGAAsG;IACtG,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,YAAY,GAAqE,EAAE,CAAA;QACzF,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACzB,YAAY,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC,CAAA;YAChD,YAAY,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC,CAAA;SACzD;QACD,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,YAAY,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import {CustomInput} from './inquirer/input.js'\nimport {CustomAutocomplete} from './inquirer/autocomplete.js'\nimport {CustomSelect} from './inquirer/select.js'\nimport {CustomPassword} from './inquirer/password.js'\nimport {PromptAnswer, Question, QuestionChoiceType} from '../ui.js'\nimport inquirer, {Answers, QuestionCollection} from 'inquirer'\nimport fuzzy from 'fuzzy'\n\nexport async function run<\n TName extends string & keyof TAnswers,\n TAnswers extends {[key in TName]: string} = {[key in TName]: string},\n>(question: unknown): Promise<TAnswers> {\n const questionName = (question as Question).name\n return (await inquirer.prompt(question as QuestionCollection<Answers>, {...(question as Question).choices}))[\n questionName\n ]\n}\n\nexport function mapper(question: Question): unknown {\n switch (question.type) {\n case 'input':\n inquirer.registerPrompt('custom-input', CustomInput)\n return {\n ...question,\n type: 'custom-input',\n }\n case 'password':\n inquirer.registerPrompt('custom-password', CustomPassword)\n return {\n ...question,\n type: 'custom-password',\n }\n case 'select':\n inquirer.registerPrompt('custom-select', CustomSelect)\n return {\n ...question,\n type: 'custom-select',\n source: getAutocompleteFilterType(),\n choices: question.choices ? groupAndMapChoices(question.choices) : undefined,\n }\n case 'autocomplete': {\n inquirer.registerPrompt('autocomplete', CustomAutocomplete)\n const filterType = getAutocompleteFilterType()\n return {\n ...question,\n type: 'autocomplete',\n source: question.source ? question.source(filterType) : filterType,\n }\n }\n }\n}\n\nfunction fuzzyFilter(answers: {name: string; value: string}[], input = ''): Promise<PromptAnswer[]> {\n return new Promise((resolve) => {\n resolve(\n fuzzy\n .filter(input, Object.values(answers), {\n extract(el: {name: string; value: string}) {\n return el.name\n },\n })\n .map((el) => el.original),\n )\n })\n}\n\nfunction containsFilter(answers: {name: string; value: string}[], input = ''): Promise<PromptAnswer[]> {\n return new Promise((resolve) => {\n resolve(\n Object.values(answers).filter(\n (answer) => !answer.name || answer.name.toLowerCase().includes(input.toLowerCase()),\n ),\n )\n })\n}\n\nfunction getAutocompleteFilterType() {\n return process.env.SHOPIFY_USE_AUTOCOMPLETE_FILTER === 'fuzzy' ? fuzzyFilter : containsFilter\n}\n\nexport function groupAndMapChoices(choices: QuestionChoiceType[]) {\n const initialGroups: {name?: string; order: number; choices: {name: string; value: string; order?: number}[]}[] = []\n\n // Switched from choices with group information to groups with a list of choices\n const groups = choices.reduce((finalChoices, choice) => {\n const currentGroup = choice.group ?? {name: 'Other', order: Number.MAX_SAFE_INTEGER}\n const existingGroup = finalChoices.find((group) => group.name === currentGroup.name)\n if (existingGroup) {\n existingGroup.choices.push(choice)\n } else {\n finalChoices.push({...currentGroup, choices: [choice]})\n }\n return finalChoices\n }, initialGroups)\n\n const sortedGroups = groups.sort((g1, g2) => g1.order - g2.order)\n const grouped = sortedGroups.length > 1 || sortedGroups[0]!.order !== Number.MAX_SAFE_INTEGER\n\n // Mapped the group with a list of extensions to a list of inquirer choices including group separators\n return sortedGroups.flatMap((group) => {\n const finalChoices: ({type: string; line: string} | {name: string; value: string})[] = []\n if (grouped && group.name) {\n finalChoices.push({type: 'separator', line: ''})\n finalChoices.push({type: 'separator', line: group.name})\n }\n finalChoices.push(...group.choices)\n return finalChoices\n })\n}\n"]}
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import AutocompletePrompt from 'inquirer-autocomplete-prompt';
3
+ import { Question, Answers } from 'inquirer';
4
+ import { Interface } from 'readline';
5
+ export declare class CustomAutocomplete extends AutocompletePrompt {
6
+ protected isAutocomplete: boolean;
7
+ constructor(questions: Question<Answers>, rl: Interface, answers: Answers);
8
+ protected render(error?: string): void;
9
+ protected getQuestion(): string;
10
+ protected prefix(): string;
11
+ }
@@ -0,0 +1,110 @@
1
+ import colors from '../../public/node/colors.js';
2
+ import { escapeRegExp } from '../../string.js';
3
+ import AutocompletePrompt from 'inquirer-autocomplete-prompt';
4
+ import Paginator from 'inquirer/lib/utils/paginator.js';
5
+ export class CustomAutocomplete extends AutocompletePrompt {
6
+ constructor(questions, rl, answers) {
7
+ super(questions, rl, answers);
8
+ this.isAutocomplete = true;
9
+ this.paginator = new Paginator(this.screen, {
10
+ isInfinite: false,
11
+ });
12
+ }
13
+ render(error) {
14
+ let content = this.getQuestion();
15
+ let bottomContent = '';
16
+ if (this.status !== 'answered') {
17
+ content += colors.gray(this.isAutocomplete && this.firstRender ? 'Type to search… ' : '… ');
18
+ }
19
+ if (this.status === 'answered') {
20
+ content += `${colors.dim('·')} ${colors.magenta(this.shortAnswer || this.answerName || this.answer)}`;
21
+ process.stdout.write('\u001b[?25h');
22
+ }
23
+ else if (this.searching) {
24
+ content += this.rl.line;
25
+ bottomContent += ` ${colors.magenta.dim('Searching...')}`;
26
+ }
27
+ else if (this.nbChoices) {
28
+ const choicesStr = listRender(this.currentChoices, this.selected, this.isAutocomplete ? this.rl.line : undefined);
29
+ content += this.isAutocomplete ? this.rl.line : '';
30
+ const indexPosition = this.selected;
31
+ let realIndexPosition = 0;
32
+ this.currentChoices.choices.every((choice, index) => {
33
+ if (index > indexPosition) {
34
+ return false;
35
+ }
36
+ if (choice.type === 'separator') {
37
+ return true;
38
+ }
39
+ const name = choice.name;
40
+ realIndexPosition += name ? name.split('\n').length : 0;
41
+ return true;
42
+ });
43
+ bottomContent += this.paginator.paginate(choicesStr, realIndexPosition, this.isAutocomplete ? 10 : 500);
44
+ }
45
+ else {
46
+ content += this.rl.line;
47
+ bottomContent += ` ${colors.magenta('No matching choices')}`;
48
+ }
49
+ if (error) {
50
+ bottomContent += `\n${colors.magenta('>> ')}${error}`;
51
+ }
52
+ this.firstRender = false;
53
+ this.screen.render(content, bottomContent);
54
+ }
55
+ getQuestion() {
56
+ return `${this.prefix()} ${colors.bold(this.opt.message)}${this.opt.suffix}${colors.reset(' ')}`;
57
+ }
58
+ prefix() {
59
+ const color = colors.magenta.bold;
60
+ return this.status === 'answered' ? color('✔') : color('?');
61
+ }
62
+ }
63
+ function listRender(choices, pointer, searchToken) {
64
+ let output = '';
65
+ let separatorOffset = 0;
66
+ choices.forEach((choice, i) => {
67
+ if (choice.type === 'separator') {
68
+ separatorOffset++;
69
+ if (choice.line.includes('──────────────')) {
70
+ output += `\n`;
71
+ }
72
+ else {
73
+ output += ` ${colors.dim.underline(choice)}\n`;
74
+ }
75
+ return;
76
+ }
77
+ if (choice.disabled) {
78
+ separatorOffset++;
79
+ output += ` - ${choice.name}`;
80
+ output += ` (${typeof choice.disabled === 'string' ? choice.disabled : 'Disabled'})`;
81
+ output += '\n';
82
+ return;
83
+ }
84
+ const isSelected = i - separatorOffset === pointer;
85
+ let line = (isSelected ? '> ' : ' ') + choice.name;
86
+ if (isSelected) {
87
+ line = colors.magenta(line);
88
+ }
89
+ if (searchToken) {
90
+ const regexified = escapeRegExp(searchToken);
91
+ line = line
92
+ .split(new RegExp(`(${regexified})`, 'ig'))
93
+ .map((token) => {
94
+ if (token.match(new RegExp(regexified, 'ig'))) {
95
+ return colors.magenta.dim(token);
96
+ }
97
+ else {
98
+ return isSelected ? colors.magenta(token) : token;
99
+ }
100
+ })
101
+ .join('');
102
+ }
103
+ else if (isSelected) {
104
+ line = colors.magenta(line);
105
+ }
106
+ output += `${line} \n`;
107
+ });
108
+ return output.replace(/\n$/, '');
109
+ }
110
+ //# sourceMappingURL=autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../../src/ui/inquirer/autocomplete.ts"],"names":[],"mappings":"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","sourcesContent":["import colors from '../../public/node/colors.js'\nimport {escapeRegExp} from '../../string.js'\nimport AutocompletePrompt from 'inquirer-autocomplete-prompt'\nimport DistinctChoice from 'inquirer/lib/objects/choices'\nimport {Question, Answers} from 'inquirer'\n\nimport Paginator from 'inquirer/lib/utils/paginator.js'\nimport {Interface} from 'readline'\n\nexport class CustomAutocomplete extends AutocompletePrompt {\n protected isAutocomplete: boolean\n\n constructor(questions: Question<Answers>, rl: Interface, answers: Answers) {\n super(questions, rl, answers)\n this.isAutocomplete = true\n this.paginator = new Paginator(this.screen, {\n isInfinite: false,\n })\n }\n\n protected render(error?: string) {\n let content = this.getQuestion()\n let bottomContent = ''\n\n if (this.status !== 'answered') {\n content += colors.gray(this.isAutocomplete && this.firstRender ? 'Type to search… ' : '… ')\n }\n\n if (this.status === 'answered') {\n content += `${colors.dim('·')} ${colors.magenta(this.shortAnswer || this.answerName || this.answer)}`\n process.stdout.write('\\u001b[?25h')\n } else if (this.searching) {\n content += this.rl.line\n bottomContent += ` ${colors.magenta.dim('Searching...')}`\n } else if (this.nbChoices) {\n const choicesStr = listRender(this.currentChoices, this.selected, this.isAutocomplete ? this.rl.line : undefined)\n content += this.isAutocomplete ? this.rl.line : ''\n const indexPosition = this.selected\n let realIndexPosition = 0\n this.currentChoices.choices.every((choice, index: number) => {\n if (index > indexPosition) {\n return false\n }\n if (choice.type === 'separator') {\n return true\n }\n const name = choice.name\n realIndexPosition += name ? name.split('\\n').length : 0\n return true\n })\n bottomContent += this.paginator.paginate(choicesStr, realIndexPosition, this.isAutocomplete ? 10 : 500)\n } else {\n content += this.rl.line\n bottomContent += ` ${colors.magenta('No matching choices')}`\n }\n\n if (error) {\n bottomContent += `\\n${colors.magenta('>> ')}${error}`\n }\n\n this.firstRender = false\n\n this.screen.render(content, bottomContent)\n }\n\n protected getQuestion(): string {\n return `${this.prefix()} ${colors.bold(this.opt.message)}${this.opt.suffix}${colors.reset(' ')}`\n }\n\n protected prefix(): string {\n const color = colors.magenta.bold\n return this.status === 'answered' ? color('✔') : color('?')\n }\n}\n\nfunction listRender(choices: DistinctChoice, pointer: number, searchToken?: string): string {\n let output = ''\n let separatorOffset = 0\n\n choices.forEach((choice, i: number) => {\n if (choice.type === 'separator') {\n separatorOffset++\n if (choice.line.includes('──────────────')) {\n output += `\\n`\n } else {\n output += ` ${colors.dim.underline(choice)}\\n`\n }\n return\n }\n\n if (choice.disabled) {\n separatorOffset++\n output += ` - ${choice.name}`\n output += ` (${typeof choice.disabled === 'string' ? choice.disabled : 'Disabled'})`\n output += '\\n'\n return\n }\n\n const isSelected = i - separatorOffset === pointer\n let line = (isSelected ? '> ' : ' ') + choice.name\n\n if (isSelected) {\n line = colors.magenta(line)\n }\n\n if (searchToken) {\n const regexified = escapeRegExp(searchToken)\n line = line\n .split(new RegExp(`(${regexified})`, 'ig'))\n .map((token) => {\n if (token.match(new RegExp(regexified, 'ig'))) {\n return colors.magenta.dim(token)\n } else {\n return isSelected ? colors.magenta(token) : token\n }\n })\n .join('')\n } else if (isSelected) {\n line = colors.magenta(line)\n }\n\n output += `${line} \\n`\n })\n\n return output.replace(/\\n$/, '')\n}\n"]}
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import Input from 'inquirer/lib/prompts/input.js';
3
+ import { Question, Answers } from 'inquirer';
4
+ import { Interface } from 'readline';
5
+ export declare class CustomInput extends Input {
6
+ protected isPassword: boolean;
7
+ constructor(questions: Question<Answers>, rl: Interface, answers: Answers);
8
+ protected render(error?: string): void;
9
+ protected getQuestion(): string;
10
+ protected prefix(): string;
11
+ protected onError(data: {
12
+ isValid: string;
13
+ value: string;
14
+ }): void;
15
+ private formatContent;
16
+ }
@@ -0,0 +1,45 @@
1
+ import colors from '../../public/node/colors.js';
2
+ import Input from 'inquirer/lib/prompts/input.js';
3
+ import readline from 'readline';
4
+ export class CustomInput extends Input {
5
+ constructor(questions, rl, answers) {
6
+ super(questions, rl, answers);
7
+ this.isPassword = false;
8
+ }
9
+ render(error) {
10
+ const color = colors.magenta;
11
+ const isFinal = this.status === 'answered';
12
+ let prompt = this.getQuestion();
13
+ let bottomContent = '';
14
+ if (isFinal) {
15
+ prompt += `${colors.dim('·')} ${color(this.formatContent(this.answer))}`;
16
+ }
17
+ else {
18
+ prompt += `\n${color('>')} ${this.rl.line ? this.formatContent(this.rl.line) : color.dim(this.opt.default)}`;
19
+ bottomContent = '─'.repeat(Math.max(this.rl.line.length, 30));
20
+ bottomContent = ` ${color(bottomContent)}`;
21
+ if (error) {
22
+ bottomContent += `\n\n ${colors.red(`! ${error}`)}`;
23
+ }
24
+ }
25
+ this.screen.render(prompt, bottomContent);
26
+ if (!isFinal && !this.rl.line) {
27
+ readline.cursorTo(process.stdout, 2);
28
+ }
29
+ }
30
+ getQuestion() {
31
+ return `${this.prefix()} ${colors.bold(this.opt.message)}${this.opt.suffix}${colors.reset(' ')}`;
32
+ }
33
+ prefix() {
34
+ const color = colors.magenta.bold;
35
+ return this.status === 'answered' ? color('✔') : color('?');
36
+ }
37
+ onError(data) {
38
+ this.rl.write(data.value === this.opt.default ? '' : data.value);
39
+ this.render(data.isValid);
40
+ }
41
+ formatContent(content) {
42
+ return this.isPassword ? colors.gray('*'.repeat(content.length)) : content;
43
+ }
44
+ }
45
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/ui/inquirer/input.ts"],"names":[],"mappings":"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","sourcesContent":["import colors from '../../public/node/colors.js'\nimport Input from 'inquirer/lib/prompts/input.js'\nimport {Question, Answers} from 'inquirer'\nimport readline, {Interface} from 'readline'\n\nexport class CustomInput extends Input {\n protected isPassword: boolean\n\n constructor(questions: Question<Answers>, rl: Interface, answers: Answers) {\n super(questions, rl, answers)\n this.isPassword = false\n }\n\n protected render(error?: string): void {\n const color = colors.magenta\n const isFinal = this.status === 'answered'\n\n let prompt = this.getQuestion()\n\n let bottomContent = ''\n if (isFinal) {\n prompt += `${colors.dim('·')} ${color(this.formatContent(this.answer))}`\n } else {\n prompt += `\\n${color('>')} ${this.rl.line ? this.formatContent(this.rl.line) : color.dim(this.opt.default)}`\n bottomContent = '─'.repeat(Math.max(this.rl.line.length, 30))\n bottomContent = ` ${color(bottomContent)}`\n if (error) {\n bottomContent += `\\n\\n ${colors.red(`! ${error}`)}`\n }\n }\n this.screen.render(prompt, bottomContent)\n if (!isFinal && !this.rl.line) {\n readline.cursorTo(process.stdout, 2)\n }\n }\n\n protected getQuestion() {\n return `${this.prefix()} ${colors.bold(this.opt.message)}${this.opt.suffix}${colors.reset(' ')}`\n }\n\n protected prefix() {\n const color = colors.magenta.bold\n return this.status === 'answered' ? color('✔') : color('?')\n }\n\n protected onError(data: {isValid: string; value: string}) {\n this.rl.write(data.value === this.opt.default ? '' : data.value)\n this.render(data.isValid)\n }\n\n private formatContent(content: string): string {\n return this.isPassword ? colors.gray('*'.repeat(content.length)) : content\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { CustomInput } from './input.js';
3
+ import { Question, Answers } from 'inquirer';
4
+ import { Interface } from 'readline';
5
+ export declare class CustomPassword extends CustomInput {
6
+ constructor(questions: Question<Answers>, rl: Interface, answers: Answers);
7
+ }
@@ -0,0 +1,8 @@
1
+ import { CustomInput } from './input.js';
2
+ export class CustomPassword extends CustomInput {
3
+ constructor(questions, rl, answers) {
4
+ super(questions, rl, answers);
5
+ this.isPassword = true;
6
+ }
7
+ }
8
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/ui/inquirer/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AAItC,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC7C,YAAY,SAA4B,EAAE,EAAa,EAAE,OAAgB;QACvE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;CACF","sourcesContent":["import {CustomInput} from './input.js'\nimport {Question, Answers} from 'inquirer'\nimport {Interface} from 'readline'\n\nexport class CustomPassword extends CustomInput {\n constructor(questions: Question<Answers>, rl: Interface, answers: Answers) {\n super(questions, rl, answers)\n this.isPassword = true\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ import { CustomAutocomplete } from './autocomplete.js';
3
+ import { Question, Answers } from 'inquirer';
4
+ import { Interface } from 'readline';
5
+ export declare class CustomSelect extends CustomAutocomplete {
6
+ constructor(questions: Question<Answers>, rl: Interface, answers: Answers);
7
+ onKeypress(event: {
8
+ key: {
9
+ name: string;
10
+ ctrl: boolean;
11
+ };
12
+ value: string;
13
+ }): void;
14
+ }
@@ -0,0 +1,26 @@
1
+ import { CustomAutocomplete } from './autocomplete.js';
2
+ import { up } from 'inquirer/lib/utils/readline.js';
3
+ export class CustomSelect extends CustomAutocomplete {
4
+ constructor(questions, rl, answers) {
5
+ super(questions, rl, answers);
6
+ this.isAutocomplete = false;
7
+ }
8
+ onKeypress(event) {
9
+ let len;
10
+ const keyName = (event.key && event.key.name) || undefined;
11
+ if (keyName === 'down' || (keyName === 'n' && event.key.ctrl)) {
12
+ len = this.nbChoices;
13
+ this.selected = this.selected < len - 1 ? this.selected + 1 : 0;
14
+ this.ensureSelectedInRange();
15
+ super.render();
16
+ up(this.rl, 2);
17
+ }
18
+ else if (keyName === 'up' || (keyName === 'p' && event.key.ctrl)) {
19
+ len = this.nbChoices;
20
+ this.selected = this.selected > 0 ? this.selected - 1 : len - 1;
21
+ this.ensureSelectedInRange();
22
+ this.render();
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/ui/inquirer/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAC,EAAE,EAAC,MAAM,gCAAgC,CAAA;AAIjD,MAAM,OAAO,YAAa,SAAQ,kBAAkB;IAClD,YAAY,SAA4B,EAAE,EAAa,EAAE,OAAgB;QACvE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;IAC7B,CAAC;IAED,UAAU,CAAC,KAA0D;QACnE,IAAI,GAAG,CAAA;QACP,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;QAE1D,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7D,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,KAAK,CAAC,MAAM,EAAE,CAAA;YACd,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;SACf;aAAM,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;YAC/D,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAA;SACd;IACH,CAAC;CACF","sourcesContent":["import {CustomAutocomplete} from './autocomplete.js'\n\nimport {up} from 'inquirer/lib/utils/readline.js'\nimport {Question, Answers} from 'inquirer'\nimport {Interface} from 'readline'\n\nexport class CustomSelect extends CustomAutocomplete {\n constructor(questions: Question<Answers>, rl: Interface, answers: Answers) {\n super(questions, rl, answers)\n this.isAutocomplete = false\n }\n\n onKeypress(event: {key: {name: string; ctrl: boolean}; value: string}) {\n let len\n const keyName = (event.key && event.key.name) || undefined\n\n if (keyName === 'down' || (keyName === 'n' && event.key.ctrl)) {\n len = this.nbChoices\n this.selected = this.selected < len - 1 ? this.selected + 1 : 0\n this.ensureSelectedInRange()\n super.render()\n up(this.rl, 2)\n } else if (keyName === 'up' || (keyName === 'p' && event.key.ctrl)) {\n len = this.nbChoices\n this.selected = this.selected > 0 ? this.selected - 1 : len - 1\n this.ensureSelectedInRange()\n this.render()\n }\n }\n}\n"]}
package/dist/ui.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import { Listr as OriginalListr, ListrTask, ListrBaseClassOptions } from 'listr2';
2
+ export declare function newListr(tasks: ListrTask[], options?: object | ListrBaseClassOptions): OriginalListr<any, any, "verbose">;
3
+ export declare type ListrTasks = ConstructorParameters<typeof OriginalListr>[0];
4
+ export type { ListrTaskWrapper, ListrDefaultRenderer, ListrTask } from 'listr2';
5
+ export interface PromptAnswer {
6
+ name: string;
7
+ value: string;
8
+ }
9
+ export declare type FilterFunction = (answers: PromptAnswer[], input: string) => Promise<PromptAnswer[]>;
10
+ interface BaseQuestion<TName extends string> {
11
+ name: TName;
12
+ message: string;
13
+ preface?: string;
14
+ validate?: (value: string) => string | true;
15
+ default?: string;
16
+ result?: (value: string) => string | boolean;
17
+ choices?: QuestionChoiceType[];
18
+ source?: (filter: FilterFunction) => FilterFunction;
19
+ }
20
+ declare type TextQuestion<TName extends string> = BaseQuestion<TName> & {
21
+ type: 'input';
22
+ default: string;
23
+ };
24
+ declare type PasswordQuestion<TName extends string> = BaseQuestion<TName> & {
25
+ type: 'password';
26
+ };
27
+ declare type SelectableQuestion<TName extends string> = BaseQuestion<TName> & {
28
+ type: 'select' | 'autocomplete';
29
+ choices: QuestionChoiceType[];
30
+ };
31
+ export declare type Question<TName extends string = string> = TextQuestion<TName> | SelectableQuestion<TName> | PasswordQuestion<TName>;
32
+ export interface QuestionChoiceType {
33
+ name: string;
34
+ value: string;
35
+ group?: {
36
+ name: string;
37
+ order: number;
38
+ };
39
+ }
40
+ /**
41
+ * Performs a task with the title kept up to date and stdout available to the
42
+ * task while it runs (there is no re-writing stdout while the task runs).
43
+ */
44
+ export interface TaskOptions {
45
+ title: string;
46
+ task: () => Promise<void | {
47
+ successMessage: string;
48
+ }>;
49
+ }
50
+ export declare const task: ({ title, task }: TaskOptions) => Promise<void>;
51
+ export declare const prompt: <TName extends string & keyof TAnswers, TAnswers extends { [key in TName]: string; } = { [key_1 in TName]: string; }>(questions: readonly Question<TName>[]) => Promise<TAnswers>;
52
+ export declare function nonEmptyDirectoryPrompt(directory: string): Promise<void>;
53
+ export declare function terminateBlockingPortProcessPrompt(port: number, stepDescription?: string): Promise<boolean>;
54
+ export declare const keypress: () => Promise<unknown>;