@shopify/cli 3.69.3 → 3.70.0

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 (550) hide show
  1. package/{dist/assets/cli-ruby/LICENSE → LICENSE} +0 -2
  2. package/dist/assets/hydrogen/starter/CHANGELOG.md +147 -0
  3. package/dist/assets/hydrogen/starter/app/components/ProductForm.tsx +1 -1
  4. package/dist/assets/hydrogen/starter/app/root.tsx +1 -1
  5. package/dist/assets/hydrogen/starter/app/routes/[sitemap.xml].tsx +6 -166
  6. package/dist/assets/hydrogen/starter/app/routes/cart.tsx +2 -1
  7. package/dist/assets/hydrogen/starter/app/routes/products.$handle.tsx +3 -1
  8. package/dist/assets/hydrogen/starter/app/routes/sitemap.$type.$page[.xml].tsx +24 -0
  9. package/dist/assets/hydrogen/starter/package.json +10 -10
  10. package/dist/assets/hydrogen/starter/storefrontapi.generated.d.ts +11 -37
  11. package/dist/chunk-2PUMVRDO.js +131 -0
  12. package/dist/{chunk-WJCZFW37.js → chunk-335KXO4I.js} +12 -8
  13. package/dist/{chunk-MLSNFFTR.js → chunk-43YGIE7Y.js} +2 -2
  14. package/dist/chunk-47OJGAFT.js +28 -0
  15. package/dist/chunk-5OP2SA7G.js +3634 -0
  16. package/dist/{chunk-BZO3BX6M.js → chunk-5QQTRGJ7.js} +4 -4
  17. package/dist/{chunk-V5DOEDF4.js → chunk-7GNQ7YY4.js} +7 -7
  18. package/dist/{chunk-RTXVY32Y.js → chunk-AT4IG4GJ.js} +32 -216
  19. package/dist/{chunk-T65TTGOS.js → chunk-BMNDAI5O.js} +4 -4
  20. package/dist/{chunk-6XKWVDB6.js → chunk-CBBS4CV7.js} +3 -3
  21. package/dist/{chunk-27ILOE3X.js → chunk-CBD6UXLA.js} +8 -8
  22. package/dist/chunk-DVTWERMH.js +105 -0
  23. package/dist/{chunk-KNW6BL2Q.js → chunk-E2SYFYJU.js} +4 -4
  24. package/dist/{chunk-7D77RINN.js → chunk-FDJVVEGH.js} +17 -7
  25. package/dist/{chunk-65CKWSWQ.js → chunk-GDYKHT64.js} +2610 -6199
  26. package/dist/{chunk-NIFSDRC3.js → chunk-I3IIDOBX.js} +3 -3
  27. package/dist/{chunk-ZCYPTS6V.js → chunk-JLK5OMFF.js} +2 -2
  28. package/dist/{chunk-WHHRKJDE.js → chunk-KYBCPKPL.js} +3 -3
  29. package/dist/{chunk-AKHBZYBW.js → chunk-LN444KRM.js} +2 -2
  30. package/dist/chunk-MH5JSAVK.js +28 -0
  31. package/dist/{chunk-7GWY3FA4.js → chunk-MMQOVZDR.js} +6 -4
  32. package/dist/{chunk-RHX2I4MG.js → chunk-MQXHFQM3.js} +4 -4
  33. package/dist/{chunk-PO7KPJGR.js → chunk-MRDDDATQ.js} +3 -3
  34. package/dist/{chunk-UL6L7ZS3.js → chunk-N2DEYZD6.js} +3 -3
  35. package/dist/{chunk-WITDBDKW.js → chunk-N4X7XQWN.js} +2 -2
  36. package/dist/{chunk-AN5WQN4K.js → chunk-ND6AGPC6.js} +3 -3
  37. package/dist/{chunk-A3JXD7N7.js → chunk-NEOIQ6PN.js} +3 -3
  38. package/dist/{chunk-KGLQ4JD4.js → chunk-NH4U4X67.js} +3 -3
  39. package/dist/{chunk-AZKJLRVK.js → chunk-NYFXBTWK.js} +3 -3
  40. package/dist/{chunk-ERVB6ERU.js → chunk-OWLPHMUA.js} +3 -3
  41. package/dist/{chunk-Y54K4MPH.js → chunk-P6ABWRKD.js} +7 -7
  42. package/dist/{chunk-B6RI3XO4.js → chunk-PJKCWDDX.js} +117 -117
  43. package/dist/{chunk-2Q5IM74H.js → chunk-PKE54TAY.js} +5 -5
  44. package/dist/{chunk-JGXT3WUR.js → chunk-RUK73IAH.js} +2 -2
  45. package/dist/{chunk-IUHYP3QG.js → chunk-SYRHCENA.js} +2 -2
  46. package/dist/{chunk-XROTFVTO.js → chunk-TCTXUAZT.js} +3 -3
  47. package/dist/chunk-UOZCMFCN.js +160 -0
  48. package/dist/{chunk-VEEUPLAO.js → chunk-VFQMUAHB.js} +4 -4
  49. package/dist/{chunk-I66GPBMO.js → chunk-VHAXHYTL.js} +3 -3
  50. package/dist/{chunk-F2NOZSYG.js → chunk-VT3VJHZ7.js} +4 -4
  51. package/dist/{chunk-ACM5TZH6.js → chunk-WI6MEN7U.js} +2 -2
  52. package/dist/{chunk-OWPU7LGF.js → chunk-WN3FKMKB.js} +14 -14
  53. package/dist/{chunk-FRDQIYC3.js → chunk-X6F3DHKX.js} +2 -2
  54. package/dist/{chunk-P7JUHQKL.js → chunk-XEDHKQZA.js} +4 -3
  55. package/dist/{chunk-5O3Y6TSZ.js → chunk-XSMWYZDC.js} +86 -106
  56. package/dist/cli/commands/auth/logout.js +20 -18
  57. package/dist/cli/commands/auth/logout.test.js +25 -23
  58. package/dist/cli/commands/cache/clear.d.ts +6 -0
  59. package/dist/cli/commands/cache/clear.js +35 -0
  60. package/dist/cli/commands/debug/command-flags.js +19 -17
  61. package/dist/cli/commands/demo/catalog.js +20 -18
  62. package/dist/cli/commands/demo/generate-file.js +20 -18
  63. package/dist/cli/commands/demo/index.js +20 -18
  64. package/dist/cli/commands/demo/print-ai-prompt.js +20 -18
  65. package/dist/cli/commands/docs/generate.js +19 -17
  66. package/dist/cli/commands/docs/generate.test.js +19 -17
  67. package/dist/cli/commands/help.js +19 -17
  68. package/dist/cli/commands/kitchen-sink/async.js +20 -18
  69. package/dist/cli/commands/kitchen-sink/async.test.js +20 -18
  70. package/dist/cli/commands/kitchen-sink/index.js +22 -20
  71. package/dist/cli/commands/kitchen-sink/index.test.js +22 -20
  72. package/dist/cli/commands/kitchen-sink/prompts.js +20 -18
  73. package/dist/cli/commands/kitchen-sink/prompts.test.js +20 -18
  74. package/dist/cli/commands/kitchen-sink/static.js +20 -18
  75. package/dist/cli/commands/kitchen-sink/static.test.js +20 -18
  76. package/dist/cli/commands/notifications/generate.d.ts +6 -0
  77. package/dist/cli/commands/notifications/generate.js +36 -0
  78. package/dist/cli/commands/notifications/list.d.ts +6 -0
  79. package/dist/cli/commands/notifications/list.js +36 -0
  80. package/dist/cli/commands/search.js +20 -18
  81. package/dist/cli/commands/upgrade.js +20 -18
  82. package/dist/cli/commands/version.js +20 -18
  83. package/dist/cli/commands/version.test.js +20 -18
  84. package/dist/cli/services/commands/notifications.d.ts +2 -0
  85. package/dist/cli/services/commands/notifications.js +31 -0
  86. package/dist/cli/services/commands/search.js +9 -9
  87. package/dist/cli/services/commands/search.test.js +9 -9
  88. package/dist/cli/services/commands/version.js +10 -10
  89. package/dist/cli/services/commands/version.test.js +11 -11
  90. package/dist/cli/services/demo.js +9 -9
  91. package/dist/cli/services/demo.test.js +11 -11
  92. package/dist/cli/services/kitchen-sink/async.js +9 -9
  93. package/dist/cli/services/kitchen-sink/prompts.js +9 -9
  94. package/dist/cli/services/kitchen-sink/static.js +9 -9
  95. package/dist/cli/services/upgrade.js +10 -10
  96. package/dist/cli/services/upgrade.test.js +12 -12
  97. package/dist/{constants-T7JXE5K7.js → constants-QFFDI47A.js} +6 -4
  98. package/dist/{custom-oclif-loader-YBMJNE6U.js → custom-oclif-loader-IZLFCRGJ.js} +11 -11
  99. package/dist/data/filters.json +39 -16
  100. package/dist/data/latest.json +1 -1
  101. package/dist/data/objects.json +164 -6
  102. package/dist/data/shopify_system_translations.json +32 -3
  103. package/dist/{del-7ZS2Z64N.js → del-FEQWOMIX.js} +2 -2
  104. package/dist/{error-handler-A4P3264C.js → error-handler-DAI5HMQW.js} +17 -16
  105. package/dist/hooks/postrun.js +14 -13
  106. package/dist/hooks/prerun.js +14 -13
  107. package/dist/index.js +13542 -10915
  108. package/dist/{lib-JHUCJTHS.js → lib-JJXX7GH6.js} +5 -5
  109. package/dist/{local-ZKVS3PQJ.js → local-QD6GDUUE.js} +9 -9
  110. package/dist/{morph-QZYXTRWT.js → morph-FN23MJ2S.js} +10 -10
  111. package/dist/{node-UHHST6UJ.js → node-4XKDIIJ7.js} +23 -21
  112. package/dist/{node-package-manager-EU3ZOEFD.js → node-package-manager-IEZ6F5VN.js} +10 -10
  113. package/dist/{system-L7HP2PAP.js → system-KSIGUX64.js} +9 -9
  114. package/dist/tsconfig.tsbuildinfo +1 -1
  115. package/dist/{ui-HXNDVEEG.js → ui-BUB4OWO7.js} +9 -9
  116. package/dist/{workerd-7CGH4YHE.js → workerd-DIIGDIHZ.js} +22 -20
  117. package/oclif.manifest.json +61 -104
  118. package/package.json +7 -7
  119. package/dist/assets/cli-ruby/.devcontainer.json +0 -5
  120. package/dist/assets/cli-ruby/.rubocop.yml +0 -102
  121. package/dist/assets/cli-ruby/.rubocop_todo.yml +0 -24
  122. package/dist/assets/cli-ruby/CHANGELOG.md +0 -634
  123. package/dist/assets/cli-ruby/CONTRIBUTING.md +0 -3
  124. package/dist/assets/cli-ruby/Codespace.dockerfile +0 -35
  125. package/dist/assets/cli-ruby/Gemfile +0 -32
  126. package/dist/assets/cli-ruby/README.md +0 -30
  127. package/dist/assets/cli-ruby/Rakefile +0 -167
  128. package/dist/assets/cli-ruby/SECURITY.md +0 -59
  129. package/dist/assets/cli-ruby/Tests.dockerfile +0 -35
  130. package/dist/assets/cli-ruby/assets/logo.png +0 -0
  131. package/dist/assets/cli-ruby/bin/console +0 -11
  132. package/dist/assets/cli-ruby/bin/load_shopify.rb +0 -22
  133. package/dist/assets/cli-ruby/bin/shopify +0 -67
  134. package/dist/assets/cli-ruby/bin/shopify.bat +0 -3
  135. package/dist/assets/cli-ruby/bin/update-deps +0 -97
  136. package/dist/assets/cli-ruby/dev.yml +0 -29
  137. package/dist/assets/cli-ruby/docs/README.md +0 -13
  138. package/dist/assets/cli-ruby/docs/contributors/testing.md +0 -27
  139. package/dist/assets/cli-ruby/docs/users/installation.md +0 -3
  140. package/dist/assets/cli-ruby/docs/users/migrate-from-themekit.md +0 -18
  141. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.1.0.gz.sha256 +0 -1
  142. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.2.0.gz.sha256 +0 -1
  143. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.2.1.gz.sha256 +0 -1
  144. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.3.0.gz.sha256 +0 -1
  145. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.1.0.gz.sha256 +0 -1
  146. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.2.0.gz.sha256 +0 -1
  147. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.2.1.gz.sha256 +0 -1
  148. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.3.0.gz.sha256 +0 -1
  149. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.1.0.gz.sha256 +0 -1
  150. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.2.0.gz.sha256 +0 -1
  151. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.2.1.gz.sha256 +0 -1
  152. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.3.0.gz.sha256 +0 -1
  153. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.1.0.gz.sha256 +0 -1
  154. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.2.0.gz.sha256 +0 -1
  155. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.2.1.gz.sha256 +0 -1
  156. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.3.0.gz.sha256 +0 -1
  157. package/dist/assets/cli-ruby/ext/javy/javy.rb +0 -204
  158. package/dist/assets/cli-ruby/ext/javy/version +0 -1
  159. package/dist/assets/cli-ruby/ext/shopify-extensions/extconf.rb +0 -21
  160. package/dist/assets/cli-ruby/ext/shopify-extensions/shopify_extensions.rb +0 -152
  161. package/dist/assets/cli-ruby/ext/shopify-extensions/version +0 -1
  162. package/dist/assets/cli-ruby/features/support/assertions.rb +0 -17
  163. package/dist/assets/cli-ruby/features/support/cli.rb +0 -7
  164. package/dist/assets/cli-ruby/features/support/process.rb +0 -27
  165. package/dist/assets/cli-ruby/features/support/requires.rb +0 -3
  166. package/dist/assets/cli-ruby/lib/docgen/class_template.md.erb +0 -81
  167. package/dist/assets/cli-ruby/lib/docgen/index_template.md.erb +0 -5
  168. package/dist/assets/cli-ruby/lib/docgen/markdown.rb +0 -101
  169. package/dist/assets/cli-ruby/lib/graphql/admin_introspection.graphql +0 -87
  170. package/dist/assets/cli-ruby/lib/graphql/all_organizations.graphql +0 -19
  171. package/dist/assets/cli-ruby/lib/graphql/all_orgs_with_apps.graphql +0 -30
  172. package/dist/assets/cli-ruby/lib/graphql/api_versions.graphql +0 -6
  173. package/dist/assets/cli-ruby/lib/graphql/convert_dev_to_test_store.graphql +0 -10
  174. package/dist/assets/cli-ruby/lib/graphql/create_app.graphql +0 -20
  175. package/dist/assets/cli-ruby/lib/graphql/create_customer.graphql +0 -9
  176. package/dist/assets/cli-ruby/lib/graphql/create_draft_order.graphql +0 -8
  177. package/dist/assets/cli-ruby/lib/graphql/create_product.graphql +0 -9
  178. package/dist/assets/cli-ruby/lib/graphql/extension_create.graphql +0 -37
  179. package/dist/assets/cli-ruby/lib/graphql/extension_update_draft.graphql +0 -19
  180. package/dist/assets/cli-ruby/lib/graphql/fetch_specifications.graphql +0 -14
  181. package/dist/assets/cli-ruby/lib/graphql/find_organization.graphql +0 -18
  182. package/dist/assets/cli-ruby/lib/graphql/find_organization_with_apps.graphql +0 -20
  183. package/dist/assets/cli-ruby/lib/graphql/get_app_by_api_key.graphql +0 -9
  184. package/dist/assets/cli-ruby/lib/graphql/get_app_urls.graphql +0 -6
  185. package/dist/assets/cli-ruby/lib/graphql/get_extension_registrations.graphql +0 -28
  186. package/dist/assets/cli-ruby/lib/graphql/get_variant_id.graphql +0 -16
  187. package/dist/assets/cli-ruby/lib/graphql/update_dashboard_urls.graphql +0 -8
  188. package/dist/assets/cli-ruby/lib/project_types/extension/cli.rb +0 -75
  189. package/dist/assets/cli-ruby/lib/project_types/extension/commands/extension_command.rb +0 -29
  190. package/dist/assets/cli-ruby/lib/project_types/extension/commands/serve.rb +0 -164
  191. package/dist/assets/cli-ruby/lib/project_types/extension/errors.rb +0 -9
  192. package/dist/assets/cli-ruby/lib/project_types/extension/extension_project.rb +0 -151
  193. package/dist/assets/cli-ruby/lib/project_types/extension/extension_project_keys.rb +0 -12
  194. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo.rb +0 -50
  195. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_config.rb +0 -59
  196. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_dependencies.rb +0 -28
  197. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_runtime.rb +0 -15
  198. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_serve.rb +0 -115
  199. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup.rb +0 -54
  200. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup_step.rb +0 -31
  201. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup_steps.rb +0 -51
  202. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/admin.rb +0 -29
  203. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/base.rb +0 -19
  204. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/checkout_post_purchase.rb +0 -23
  205. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/checkout_ui_extension.rb +0 -29
  206. package/dist/assets/cli-ruby/lib/project_types/extension/loaders/project.rb +0 -50
  207. package/dist/assets/cli-ruby/lib/project_types/extension/loaders/specification_handler.rb +0 -22
  208. package/dist/assets/cli-ruby/lib/project_types/extension/messages/message_loading.rb +0 -34
  209. package/dist/assets/cli-ruby/lib/project_types/extension/messages/messages.rb +0 -320
  210. package/dist/assets/cli-ruby/lib/project_types/extension/models/app.rb +0 -14
  211. package/dist/assets/cli-ruby/lib/project_types/extension/models/lazy_specification_handler.rb +0 -12
  212. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification.rb +0 -41
  213. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/default.rb +0 -145
  214. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +0 -134
  215. package/dist/assets/cli-ruby/lib/project_types/extension/models/specifications.rb +0 -91
  216. package/dist/assets/cli-ruby/lib/project_types/extension/models/validation_error.rb +0 -17
  217. package/dist/assets/cli-ruby/lib/project_types/extension/models/version.rb +0 -15
  218. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/configure_features.rb +0 -73
  219. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/configure_options.rb +0 -21
  220. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/converters/validation_error_converter.rb +0 -25
  221. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/converters/version_converter.rb +0 -28
  222. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/fetch_specifications.rb +0 -21
  223. package/dist/assets/cli-ruby/lib/project_types/node/cli.rb +0 -12
  224. package/dist/assets/cli-ruby/lib/project_types/node/forms/create.rb +0 -45
  225. package/dist/assets/cli-ruby/lib/project_types/node/messages/messages.rb +0 -33
  226. package/dist/assets/cli-ruby/lib/project_types/php/cli.rb +0 -16
  227. package/dist/assets/cli-ruby/lib/project_types/php/forms/create.rb +0 -44
  228. package/dist/assets/cli-ruby/lib/project_types/php/messages/messages.rb +0 -29
  229. package/dist/assets/cli-ruby/lib/project_types/rails/cli.rb +0 -15
  230. package/dist/assets/cli-ruby/lib/project_types/rails/forms/create.rb +0 -75
  231. package/dist/assets/cli-ruby/lib/project_types/rails/gem.rb +0 -110
  232. package/dist/assets/cli-ruby/lib/project_types/rails/messages/messages.rb +0 -101
  233. package/dist/assets/cli-ruby/lib/project_types/script/cli.rb +0 -27
  234. package/dist/assets/cli-ruby/lib/project_types/script/commands/connect.rb +0 -16
  235. package/dist/assets/cli-ruby/lib/project_types/script/commands/create.rb +0 -24
  236. package/dist/assets/cli-ruby/lib/project_types/script/commands/javy.rb +0 -24
  237. package/dist/assets/cli-ruby/lib/project_types/script/commands/push.rb +0 -26
  238. package/dist/assets/cli-ruby/lib/project_types/script/loaders/project.rb +0 -46
  239. package/dist/assets/cli-ruby/lib/project_types/script/loaders/specification_handler.rb +0 -22
  240. package/dist/assets/cli-ruby/lib/project_types/script/messages/messages.rb +0 -11
  241. package/dist/assets/cli-ruby/lib/project_types/theme/cli.rb +0 -33
  242. package/dist/assets/cli-ruby/lib/project_types/theme/commands/common/root_helper.rb +0 -94
  243. package/dist/assets/cli-ruby/lib/project_types/theme/commands/common/shop_helper.rb +0 -13
  244. package/dist/assets/cli-ruby/lib/project_types/theme/commands/console.rb +0 -23
  245. package/dist/assets/cli-ruby/lib/project_types/theme/commands/delete.rb +0 -70
  246. package/dist/assets/cli-ruby/lib/project_types/theme/commands/init.rb +0 -46
  247. package/dist/assets/cli-ruby/lib/project_types/theme/commands/list.rb +0 -33
  248. package/dist/assets/cli-ruby/lib/project_types/theme/commands/open.rb +0 -73
  249. package/dist/assets/cli-ruby/lib/project_types/theme/commands/package.rb +0 -73
  250. package/dist/assets/cli-ruby/lib/project_types/theme/commands/publish.rb +0 -49
  251. package/dist/assets/cli-ruby/lib/project_types/theme/commands/pull.rb +0 -118
  252. package/dist/assets/cli-ruby/lib/project_types/theme/commands/push.rb +0 -160
  253. package/dist/assets/cli-ruby/lib/project_types/theme/commands/serve.rb +0 -91
  254. package/dist/assets/cli-ruby/lib/project_types/theme/commands/share.rb +0 -62
  255. package/dist/assets/cli-ruby/lib/project_types/theme/commands/token.rb +0 -22
  256. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/base_glob.rb +0 -65
  257. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/ignore_glob.rb +0 -15
  258. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/include_glob.rb +0 -15
  259. package/dist/assets/cli-ruby/lib/project_types/theme/forms/confirm_store.rb +0 -15
  260. package/dist/assets/cli-ruby/lib/project_types/theme/forms/select.rb +0 -34
  261. package/dist/assets/cli-ruby/lib/project_types/theme/messages/messages.rb +0 -429
  262. package/dist/assets/cli-ruby/lib/project_types/theme/models/specification_handlers/theme.rb +0 -19
  263. package/dist/assets/cli-ruby/lib/project_types/theme/presenters/theme_presenter.rb +0 -48
  264. package/dist/assets/cli-ruby/lib/project_types/theme/presenters/themes_presenter.rb +0 -29
  265. package/dist/assets/cli-ruby/lib/project_types/theme/ui/sync_progress_bar.rb +0 -20
  266. package/dist/assets/cli-ruby/lib/rubygems_plugin.rb +0 -26
  267. package/dist/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -160
  268. package/dist/assets/cli-ruby/lib/shopify_cli/api.rb +0 -130
  269. package/dist/assets/cli-ruby/lib/shopify_cli/command/project_command.rb +0 -31
  270. package/dist/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +0 -20
  271. package/dist/assets/cli-ruby/lib/shopify_cli/command.rb +0 -166
  272. package/dist/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -21
  273. package/dist/assets/cli-ruby/lib/shopify_cli/constants.rb +0 -101
  274. package/dist/assets/cli-ruby/lib/shopify_cli/context.rb +0 -709
  275. package/dist/assets/cli-ruby/lib/shopify_cli/core/cli_version.rb +0 -20
  276. package/dist/assets/cli-ruby/lib/shopify_cli/core/entry_point.rb +0 -64
  277. package/dist/assets/cli-ruby/lib/shopify_cli/core/executor.rb +0 -23
  278. package/dist/assets/cli-ruby/lib/shopify_cli/core/finalize.rb +0 -13
  279. package/dist/assets/cli-ruby/lib/shopify_cli/core/monorail.rb +0 -122
  280. package/dist/assets/cli-ruby/lib/shopify_cli/core.rb +0 -8
  281. package/dist/assets/cli-ruby/lib/shopify_cli/db.rb +0 -114
  282. package/dist/assets/cli-ruby/lib/shopify_cli/environment.rb +0 -217
  283. package/dist/assets/cli-ruby/lib/shopify_cli/exception_reporter.rb +0 -80
  284. package/dist/assets/cli-ruby/lib/shopify_cli/feature.rb +0 -95
  285. package/dist/assets/cli-ruby/lib/shopify_cli/file_system_listener.rb +0 -30
  286. package/dist/assets/cli-ruby/lib/shopify_cli/form.rb +0 -42
  287. package/dist/assets/cli-ruby/lib/shopify_cli/git.rb +0 -320
  288. package/dist/assets/cli-ruby/lib/shopify_cli/github/issue_url_generator.rb +0 -30
  289. package/dist/assets/cli-ruby/lib/shopify_cli/github.rb +0 -5
  290. package/dist/assets/cli-ruby/lib/shopify_cli/helpers/haikunator.rb +0 -92
  291. package/dist/assets/cli-ruby/lib/shopify_cli/helpers.rb +0 -5
  292. package/dist/assets/cli-ruby/lib/shopify_cli/http_request.rb +0 -43
  293. package/dist/assets/cli-ruby/lib/shopify_cli/identity_auth/env_auth_token.rb +0 -34
  294. package/dist/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -332
  295. package/dist/assets/cli-ruby/lib/shopify_cli/js_system.rb +0 -115
  296. package/dist/assets/cli-ruby/lib/shopify_cli/lazy_delegator.rb +0 -55
  297. package/dist/assets/cli-ruby/lib/shopify_cli/messages/messages.rb +0 -863
  298. package/dist/assets/cli-ruby/lib/shopify_cli/method_object.rb +0 -123
  299. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migration.rb +0 -27
  300. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migrations/1631709766_noop.rb +0 -13
  301. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb +0 -41
  302. package/dist/assets/cli-ruby/lib/shopify_cli/migrator.rb +0 -46
  303. package/dist/assets/cli-ruby/lib/shopify_cli/options.rb +0 -40
  304. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/app_extensions/job.rb +0 -36
  305. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/app_extensions.rb +0 -46
  306. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/organizations.rb +0 -45
  307. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api.rb +0 -91
  308. package/dist/assets/cli-ruby/lib/shopify_cli/project.rb +0 -199
  309. package/dist/assets/cli-ruby/lib/shopify_cli/project_type.rb +0 -66
  310. package/dist/assets/cli-ruby/lib/shopify_cli/reporting_configuration_controller.rb +0 -29
  311. package/dist/assets/cli-ruby/lib/shopify_cli/resolve_constant.rb +0 -25
  312. package/dist/assets/cli-ruby/lib/shopify_cli/resources/env_file.rb +0 -108
  313. package/dist/assets/cli-ruby/lib/shopify_cli/resources.rb +0 -5
  314. package/dist/assets/cli-ruby/lib/shopify_cli/result.rb +0 -448
  315. package/dist/assets/cli-ruby/lib/shopify_cli/shopifolk.rb +0 -82
  316. package/dist/assets/cli-ruby/lib/shopify_cli/task.rb +0 -20
  317. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/confirm_store.rb +0 -18
  318. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/create_api_client.rb +0 -40
  319. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_authenticated.rb +0 -19
  320. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_dev_store.rb +0 -41
  321. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_env.rb +0 -90
  322. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_git_dependency.rb +0 -14
  323. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_loopback_url.rb +0 -20
  324. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_project_type.rb +0 -14
  325. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/select_org_and_shop.rb +0 -81
  326. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/update_dashboard_urls.rb +0 -57
  327. package/dist/assets/cli-ruby/lib/shopify_cli/tasks.rb +0 -44
  328. package/dist/assets/cli-ruby/lib/shopify_cli/theme/backoff_helper.rb +0 -47
  329. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/cdn_fonts.rb +0 -82
  330. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/certificate_manager.rb +0 -79
  331. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/errors.rb +0 -9
  332. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/header_hash.rb +0 -98
  333. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hooks/file_change_hook.rb +0 -77
  334. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_deleter.rb +0 -62
  335. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_reloader.rb +0 -63
  336. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +0 -27
  337. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/hot_reload.js +0 -48
  338. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/sse_client.js +0 -43
  339. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme.js +0 -114
  340. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme_extension.js +0 -121
  341. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/script_injector.rb +0 -57
  342. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/sections_index.rb +0 -50
  343. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload.rb +0 -75
  344. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/local_assets.rb +0 -101
  345. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +0 -313
  346. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy_param_builder.rb +0 -84
  347. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/reload_mode.rb +0 -34
  348. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/remote_watcher/json_files_update_job.rb +0 -35
  349. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/remote_watcher.rb +0 -44
  350. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/sse.rb +0 -75
  351. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/watcher.rb +0 -64
  352. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/web_server.rb +0 -140
  353. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server.rb +0 -332
  354. package/dist/assets/cli-ruby/lib/shopify_cli/theme/development_theme.rb +0 -101
  355. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/app_extension.rb +0 -40
  356. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hooks/file_change_hook.rb +0 -76
  357. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hot_reload/script_injector.rb +0 -30
  358. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hot_reload.rb +0 -13
  359. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/local_assets.rb +0 -31
  360. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/proxy_param_builder.rb +0 -94
  361. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/watcher.rb +0 -49
  362. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server.rb +0 -175
  363. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/host_theme.rb +0 -109
  364. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ignore_helper.rb +0 -35
  365. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer/extension_serve_job.rb +0 -120
  366. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer/operation.rb +0 -25
  367. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer.rb +0 -100
  368. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ui/host_theme_progress_bar.rb +0 -35
  369. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ui/host_theme_raw_progress_bar.rb +0 -40
  370. package/dist/assets/cli-ruby/lib/shopify_cli/theme/file.rb +0 -133
  371. package/dist/assets/cli-ruby/lib/shopify_cli/theme/filter/path_matcher.rb +0 -38
  372. package/dist/assets/cli-ruby/lib/shopify_cli/theme/ignore_filter.rb +0 -112
  373. package/dist/assets/cli-ruby/lib/shopify_cli/theme/ignore_helper.rb +0 -37
  374. package/dist/assets/cli-ruby/lib/shopify_cli/theme/include_filter.rb +0 -67
  375. package/dist/assets/cli-ruby/lib/shopify_cli/theme/mime_type.rb +0 -34
  376. package/dist/assets/cli-ruby/lib/shopify_cli/theme/notifier.rb +0 -52
  377. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/api.rb +0 -109
  378. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/auth_dev_server.rb +0 -93
  379. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/auth_middleware.rb +0 -97
  380. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/remote_evaluator.rb +0 -166
  381. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/resources/success.html +0 -78
  382. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/resources/template.liquid +0 -15
  383. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/snippet.rb +0 -81
  384. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl.rb +0 -88
  385. package/dist/assets/cli-ruby/lib/shopify_cli/theme/root.rb +0 -62
  386. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/checksums.rb +0 -66
  387. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/downloader.rb +0 -63
  388. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/error_reporter.rb +0 -45
  389. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/merger.rb +0 -53
  390. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/operation.rb +0 -49
  391. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/standard_reporter.rb +0 -32
  392. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/unsupported_script_warning.rb +0 -90
  393. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk.rb +0 -133
  394. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_item.rb +0 -64
  395. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_job.rb +0 -139
  396. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_request.rb +0 -30
  397. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/apply_to_all.rb +0 -41
  398. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +0 -37
  399. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/base_strategy_form.rb +0 -64
  400. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +0 -29
  401. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/select_update_strategy.rb +0 -30
  402. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/json_delete_handler.rb +0 -49
  403. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/json_update_handler.rb +0 -71
  404. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader.rb +0 -231
  405. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer.rb +0 -391
  406. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme.rb +0 -212
  407. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme_access_api.rb +0 -89
  408. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme_admin_api.rb +0 -101
  409. package/dist/assets/cli-ruby/lib/shopify_cli/thread_pool/job.rb +0 -35
  410. package/dist/assets/cli-ruby/lib/shopify_cli/thread_pool.rb +0 -49
  411. package/dist/assets/cli-ruby/lib/shopify_cli/transform_data_structure.rb +0 -87
  412. package/dist/assets/cli-ruby/lib/shopify_cli/utilities.rb +0 -21
  413. package/dist/assets/cli-ruby/lib/shopify_cli/version.rb +0 -3
  414. package/dist/assets/cli-ruby/lib/shopify_cli.rb +0 -182
  415. package/dist/assets/cli-ruby/shipit.rubygems.yml +0 -3
  416. package/dist/assets/cli-ruby/shopify-cli.gemspec +0 -46
  417. package/dist/assets/cli-ruby/shopify-dev +0 -16
  418. package/dist/assets/cli-ruby/test/minitest_ext.rb +0 -115
  419. package/dist/assets/cli-ruby/test/project_types/extension/extension_test_helpers.rb +0 -70
  420. package/dist/assets/cli-ruby/test/shopify-cli/migrator/migrations/migration_helper.rb +0 -20
  421. package/dist/assets/cli-ruby/test/test_helpers.rb +0 -16
  422. package/dist/assets/cli-ruby/utilities/constants.rb +0 -7
  423. package/dist/assets/cli-ruby/utilities/docker/container.rb +0 -104
  424. package/dist/assets/cli-ruby/utilities/docker.rb +0 -89
  425. package/dist/assets/cli-ruby/utilities/utilities.rb +0 -6
  426. package/dist/assets/cli-ruby/vendor/deps/cli-kit/REVISION +0 -1
  427. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/autocall.rb +0 -21
  428. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +0 -49
  429. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +0 -94
  430. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/config.rb +0 -133
  431. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +0 -123
  432. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/executor.rb +0 -79
  433. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/ini.rb +0 -102
  434. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +0 -82
  435. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/logger.rb +0 -82
  436. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +0 -60
  437. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/ruby_backports/enumerable.rb +0 -6
  438. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +0 -244
  439. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/support.rb +0 -9
  440. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/system.rb +0 -243
  441. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/util.rb +0 -193
  442. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/version.rb +0 -5
  443. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit.rb +0 -60
  444. package/dist/assets/cli-ruby/vendor/deps/cli-ui/REVISION +0 -1
  445. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +0 -157
  446. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/color.rb +0 -84
  447. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +0 -193
  448. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +0 -98
  449. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +0 -166
  450. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +0 -139
  451. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +0 -120
  452. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame.rb +0 -269
  453. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +0 -84
  454. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/os.rb +0 -73
  455. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/printer.rb +0 -59
  456. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/progress.rb +0 -90
  457. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/progress_plain.rb +0 -50
  458. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +0 -484
  459. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +0 -29
  460. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +0 -282
  461. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +0 -40
  462. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +0 -263
  463. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +0 -66
  464. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +0 -232
  465. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +0 -46
  466. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +0 -102
  467. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/version.rb +0 -5
  468. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +0 -27
  469. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +0 -61
  470. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +0 -77
  471. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +0 -56
  472. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui.rb +0 -234
  473. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/LICENSE +0 -22
  474. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/README.md +0 -67
  475. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/Rakefile +0 -54
  476. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/lib/ruby2_keywords.rb +0 -57
  477. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/ruby2_keywords.gemspec +0 -18
  478. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/test/test_keyword.rb +0 -41
  479. package/dist/assets/cli-ruby/vendor/deps/smart_properties/REVISION +0 -1
  480. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/errors.rb +0 -114
  481. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/property.rb +0 -168
  482. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/property_collection.rb +0 -83
  483. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/validations/ancestor.rb +0 -27
  484. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/validations.rb +0 -8
  485. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/version.rb +0 -3
  486. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties.rb +0 -174
  487. package/dist/assets/cli-ruby/vendor/deps/webrick/Gemfile +0 -3
  488. package/dist/assets/cli-ruby/vendor/deps/webrick/LICENSE.txt +0 -22
  489. package/dist/assets/cli-ruby/vendor/deps/webrick/README.md +0 -61
  490. package/dist/assets/cli-ruby/vendor/deps/webrick/Rakefile +0 -10
  491. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/accesslog.rb +0 -157
  492. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/cgi.rb +0 -313
  493. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/compat.rb +0 -36
  494. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/config.rb +0 -158
  495. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/cookie.rb +0 -172
  496. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/htmlutils.rb +0 -30
  497. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +0 -117
  498. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +0 -116
  499. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +0 -395
  500. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +0 -132
  501. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +0 -97
  502. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +0 -158
  503. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +0 -53
  504. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth.rb +0 -96
  505. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpproxy.rb +0 -354
  506. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httprequest.rb +0 -636
  507. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpresponse.rb +0 -564
  508. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/https.rb +0 -152
  509. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpserver.rb +0 -294
  510. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +0 -152
  511. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +0 -47
  512. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +0 -126
  513. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +0 -88
  514. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +0 -552
  515. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +0 -47
  516. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet.rb +0 -23
  517. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpstatus.rb +0 -194
  518. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httputils.rb +0 -512
  519. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpversion.rb +0 -76
  520. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/log.rb +0 -156
  521. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/server.rb +0 -381
  522. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/ssl.rb +0 -215
  523. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/utils.rb +0 -265
  524. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/version.rb +0 -18
  525. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick.rb +0 -232
  526. package/dist/assets/cli-ruby/vendor/deps/webrick/webrick.gemspec +0 -74
  527. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands/help.rb +0 -20
  528. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands/new.rb +0 -21
  529. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands.rb +0 -18
  530. package/dist/assets/cli-ruby/vendor/gen/lib/gen/entry_point.rb +0 -10
  531. package/dist/assets/cli-ruby/vendor/gen/lib/gen/generator.rb +0 -165
  532. package/dist/assets/cli-ruby/vendor/gen/lib/gen.rb +0 -39
  533. package/dist/assets/cli-ruby/vendor/gen/template/Gemfile +0 -10
  534. package/dist/assets/cli-ruby/vendor/gen/template/README.md +0 -1
  535. package/dist/assets/cli-ruby/vendor/gen/template/bin/testunit +0 -23
  536. package/dist/assets/cli-ruby/vendor/gen/template/bin/update-deps +0 -97
  537. package/dist/assets/cli-ruby/vendor/gen/template/dev-gems.yml +0 -3
  538. package/dist/assets/cli-ruby/vendor/gen/template/dev-vendor.yml +0 -4
  539. package/dist/assets/cli-ruby/vendor/gen/template/exe/__app__-gems +0 -17
  540. package/dist/assets/cli-ruby/vendor/gen/template/exe/__app__-vendor +0 -18
  541. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands/example.rb +0 -19
  542. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands/help.rb +0 -21
  543. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands.rb +0 -18
  544. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/entry_point.rb +0 -10
  545. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__.rb +0 -33
  546. package/dist/assets/cli-ruby/vendor/gen/template/test/example_test.rb +0 -17
  547. package/dist/assets/cli-ruby/vendor/gen/template/test/test_helper.rb +0 -22
  548. package/dist/assets/cli-ruby/vendor/lib/semantic/LICENSE +0 -20
  549. package/dist/assets/cli-ruby/vendor/lib/semantic/semantic.rb +0 -4
  550. package/dist/assets/cli-ruby/vendor/lib/semantic/version.rb +0 -179
@@ -1,332 +0,0 @@
1
- require "base64"
2
- require "digest"
3
- require "json"
4
- require "net/http"
5
- require "securerandom"
6
- require "openssl"
7
- require "shopify_cli"
8
- require "uri"
9
- require "webrick"
10
-
11
- module ShopifyCLI
12
- class IdentityAuth
13
- include SmartProperties
14
-
15
- autoload :EnvAuthToken, "shopify_cli/identity_auth/env_auth_token"
16
-
17
- class Error < StandardError; end
18
- class Timeout < StandardError; end
19
- LocalRequest = Struct.new(:method, :path, :query, :protocol)
20
-
21
- DEFAULT_PORT = 3456
22
- REDIRECT_HOST = "http://127.0.0.1:#{DEFAULT_PORT}"
23
-
24
- APPLICATION_SCOPES = {
25
- "shopify" => %w[https://api.shopify.com/auth/shop.admin.graphql https://api.shopify.com/auth/shop.admin.themes https://api.shopify.com/auth/partners.collaborator-relationships.readonly],
26
- "storefront_renderer_production" => %w[https://api.shopify.com/auth/shop.storefront-renderer.devtools],
27
- "partners" => %w[https://api.shopify.com/auth/partners.app.cli.access],
28
- }
29
-
30
- APPLICATION_CLIENT_IDS = {
31
- "shopify" => "7ee65a63608843c577db8b23c4d7316ea0a01bd2f7594f8a9c06ea668c1b775c",
32
- "storefront_renderer_production" => "ee139b3d-5861-4d45-b387-1bc3ada7811c",
33
- "partners" => "271e16d403dfa18082ffb3d197bd2b5f4479c3fc32736d69296829cbb28d41a6",
34
- }
35
-
36
- DEV_APPLICATION_CLIENT_IDS = {
37
- "shopify" => "e92482cebb9bfb9fb5a0199cc770fde3de6c8d16b798ee73e36c9d815e070e52",
38
- "storefront_renderer_production" => "46f603de-894f-488d-9471-5b721280ff49",
39
- "partners" => "df89d73339ac3c6c5f0a98d9ca93260763e384d51d6038da129889c308973978",
40
- }
41
-
42
- EXCHANGE_TOKENS = APPLICATION_SCOPES.keys.map do |key|
43
- "#{key}_exchange_token".to_sym
44
- end
45
-
46
- IDENTITY_ACCESS_TOKENS = %i[
47
- identity_access_token
48
- identity_refresh_token
49
- ]
50
-
51
- property! :ctx
52
- property :store, default: -> { ShopifyCLI::DB.new }
53
- property :state_token, accepts: String, default: SecureRandom.hex(30)
54
- property :code_verifier, accepts: String, default: SecureRandom.hex(30)
55
-
56
- attr_accessor :response_query
57
-
58
- def authenticate(spinner: false)
59
- return if with_spinner(spinner, ctx.message("core.login.spinner.initiating")) do
60
- attempt_reauthenticate
61
- end
62
-
63
- initiate_authentication
64
-
65
- begin
66
- request_access_token(code: receive_access_code)
67
- rescue IdentityAuth::Timeout => e
68
- ctx.abort(e.message)
69
- end
70
- with_spinner(spinner, ctx.message("core.login.spinner.finalizing")) do
71
- request_exchange_tokens
72
- end
73
- end
74
-
75
- def with_spinner(spinner, message, &block)
76
- result = nil
77
- if spinner
78
- CLI::UI::Spinner.spin(message) do
79
- result = block.call
80
- end
81
- else
82
- result = block.call
83
- end
84
- result
85
- end
86
-
87
- def fetch_or_auth_partners_token
88
- if EnvAuthToken.partners_token_present?
89
- return Environment.auth_token if Environment.run_as_subprocess?
90
- return EnvAuthToken.fetch_exchanged_partners_token do |env_token|
91
- exchange_partners_auth_token(env_token)
92
- end
93
- end
94
-
95
- ShopifyCLI::DB.get(:partners_exchange_token) do
96
- IdentityAuth.new(ctx: ctx).authenticate
97
- ShopifyCLI::DB.get(:partners_exchange_token)
98
- end
99
- end
100
-
101
- def exchange_partners_auth_token(subject_token)
102
- application = "partners"
103
- request_exchange_token(
104
- audience: client_id_for_application(application),
105
- scopes: APPLICATION_SCOPES[application],
106
- subject_token: subject_token,
107
- )
108
- end
109
-
110
- def self.environment_auth_token?
111
- !!Environment.auth_token
112
- end
113
-
114
- def self.authenticated?
115
- environment_auth_token? || IDENTITY_ACCESS_TOKENS.all? { |key| ShopifyCLI::DB.exists?(key) }
116
- end
117
-
118
- def reauthenticate
119
- return if attempt_reauthenticate
120
- ctx.abort(ctx.message("core.identity_auth.error.reauthenticate", ShopifyCLI::TOOL_NAME))
121
- end
122
-
123
- def attempt_reauthenticate
124
- refresh_exchange_tokens || refresh_access_tokens
125
- end
126
-
127
- def code_challenge
128
- @code_challenge ||= Base64.urlsafe_encode64(
129
- OpenSSL::Digest::SHA256.digest(code_verifier),
130
- padding: false,
131
- )
132
- end
133
-
134
- def server
135
- @server ||= begin
136
- server = WEBrick::HTTPServer.new(
137
- Port: DEFAULT_PORT,
138
- Logger: WEBrick::Log.new(File.open(File::NULL, "w")),
139
- AccessLog: [],
140
- )
141
- server.mount("/", Servlet, self, state_token)
142
- server
143
- end
144
- end
145
-
146
- def self.delete_tokens_and_keys
147
- ShopifyCLI::DB.del(*IDENTITY_ACCESS_TOKENS)
148
- ShopifyCLI::DB.del(*EXCHANGE_TOKENS)
149
- end
150
-
151
- private
152
-
153
- def initiate_authentication
154
- @server_thread = Thread.new { server.start }
155
- params = {
156
- client_id: client_id,
157
- scope: scopes(APPLICATION_SCOPES.values.flatten),
158
- redirect_uri: REDIRECT_HOST,
159
- state: state_token,
160
- response_type: :code,
161
- }
162
- params.merge!(challange_params)
163
- uri = URI.parse("#{auth_url}/authorize")
164
- uri.query = URI.encode_www_form(params)
165
- open_browser_authentication(uri)
166
- end
167
-
168
- def open_browser_authentication(uri)
169
- ctx.open_browser_url!(uri)
170
- end
171
-
172
- def receive_access_code
173
- @access_code ||= begin
174
- @server_thread.join(240)
175
- raise Timeout, ctx.message("core.identity_auth.error.timeout") if response_query.nil?
176
- raise Error, response_query["error_description"] unless response_query["error"].nil?
177
- response_query["code"]
178
- end
179
- end
180
-
181
- def request_access_token(code:)
182
- resp = post_token_request(
183
- grant_type: :authorization_code,
184
- code: code,
185
- redirect_uri: REDIRECT_HOST,
186
- client_id: client_id,
187
- code_verifier: code_verifier,
188
- )
189
- store.set(
190
- identity_access_token: resp["access_token"],
191
- identity_refresh_token: resp["refresh_token"],
192
- )
193
- end
194
-
195
- def refresh_access_tokens
196
- return false unless IDENTITY_ACCESS_TOKENS.all? { |key| store.exists?(key) }
197
-
198
- resp = post_token_request(
199
- grant_type: :refresh_token,
200
- access_token: store.get(:identity_access_token),
201
- refresh_token: store.get(:identity_refresh_token),
202
- client_id: client_id,
203
- )
204
- store.set(
205
- identity_access_token: resp["access_token"],
206
- identity_refresh_token: resp["refresh_token"],
207
- )
208
-
209
- # Need to refresh the exchange token on successful access token refresh
210
- request_exchange_tokens
211
-
212
- true
213
- rescue
214
- store.del(*IDENTITY_ACCESS_TOKENS)
215
- false
216
- end
217
-
218
- def refresh_exchange_tokens
219
- return false unless EXCHANGE_TOKENS.all? { |key| store.exists?(key) }
220
-
221
- request_exchange_tokens
222
-
223
- true
224
- rescue
225
- store.del(*EXCHANGE_TOKENS)
226
- false
227
- end
228
-
229
- def request_exchange_tokens
230
- APPLICATION_SCOPES.each do |key, scopes|
231
- request_and_save_exchange_token(key, client_id_for_application(key), scopes)
232
- end
233
- end
234
-
235
- def request_and_save_exchange_token(name, audience, additional_scopes)
236
- return if name == "shopify" && !store.exists?(:shop)
237
- access_token = request_exchange_token(
238
- audience: audience,
239
- scopes: scopes(additional_scopes),
240
- subject_token: store.get(:identity_access_token),
241
- destination: name == "shopify" ? "https://#{store.get(:shop)}/admin" : nil
242
- )["access_token"]
243
- store.set("#{name}_exchange_token".to_sym => access_token)
244
- ctx.debug("#{name}_exchange_token: " + access_token)
245
- end
246
-
247
- def request_exchange_token(audience:, scopes:, subject_token:, destination: nil)
248
- params = {
249
- grant_type: "urn:ietf:params:oauth:grant-type:token-exchange",
250
- requested_token_type: "urn:ietf:params:oauth:token-type:access_token",
251
- subject_token_type: "urn:ietf:params:oauth:token-type:access_token",
252
- client_id: client_id,
253
- audience: audience,
254
- scope: scopes,
255
- subject_token: subject_token,
256
- destination: destination,
257
- }.compact
258
- # ctx.debug(params)
259
- post_token_request(params)
260
- end
261
-
262
- def post_token_request(params)
263
- post_request("/token", params)
264
- end
265
-
266
- def post_request(endpoint, params)
267
- uri = URI.parse("#{auth_url}#{endpoint}")
268
- https = Net::HTTP.new(uri.host, uri.port)
269
- https.use_ssl = true
270
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE if ENV["SSL_VERIFY_NONE"]
271
- request = Net::HTTP::Post.new(uri.path)
272
- request["User-Agent"] = "Shopify CLI #{::ShopifyCLI::VERSION}"
273
- request.body = URI.encode_www_form(params)
274
- res = https.request(request)
275
- unless res.is_a?(Net::HTTPSuccess)
276
- error_msg = JSON.parse(res.body)["error_description"]
277
- shop = store.get(:shop)
278
- if error_msg.include?("destination")
279
- store.del(:shop)
280
- ctx.abort(ctx.message("core.identity_auth.error.invalid_destination", shop))
281
- end
282
- raise Error, error_msg
283
- end
284
- JSON.parse(res.body)
285
- end
286
-
287
- def challange_params
288
- {
289
- code_challenge: code_challenge,
290
- code_challenge_method: "S256",
291
- }
292
- end
293
-
294
- def auth_url
295
- if Environment.use_local_partners_instance?
296
- "https://identity.myshopify.io/oauth"
297
- elsif Environment.use_spin?
298
- "https://identity.#{Environment.spin_url}/oauth"
299
- else
300
- "https://accounts.shopify.com/oauth"
301
- end
302
- end
303
-
304
- def client_id_for_application(application_name)
305
- client_ids = if Environment.use_local_partners_instance? || Environment.use_spin?
306
- DEV_APPLICATION_CLIENT_IDS
307
- else
308
- APPLICATION_CLIENT_IDS
309
- end
310
-
311
- client_ids[application_name]
312
- end
313
-
314
- def scopes(additional_scopes = [])
315
- (["openid"] + additional_scopes).tap do |result|
316
- result << "employee" if ShopifyCLI::Shopifolk.acting_as_shopify_organization?
317
- end.join(" ")
318
- end
319
-
320
- def client_id
321
- if Environment.use_local_partners_instance? || Environment.use_spin?
322
- Constants::Identity::CLIENT_ID_DEV
323
- else
324
- # In the future we might want to use Identity's dynamic
325
- # registration. To migrate to a dynamic client ID we
326
- # need to refactor some code that relies on a static
327
- # value for the client
328
- Constants::Identity::CLIENT_ID
329
- end
330
- end
331
- end
332
- end
@@ -1,115 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- ##
5
- # ShopifyCLI::JsSystem allows conditional system calls of npm or yarn commands.
6
- #
7
- class JsSystem
8
- include SmartProperties
9
-
10
- YARN_CORE_COMMAND = "yarn"
11
- NPM_CORE_COMMAND = "npm"
12
-
13
- class << self
14
- ##
15
- # Proxy to instance method `ShopifyCLI::JsSystem.new.yarn?`
16
- #
17
- # #### Parameters
18
- # - `ctx`: running context from your command
19
- #
20
- # #### Example
21
- #
22
- # ShopifyCLI::JsSystem.yarn?(ctx)
23
- #
24
- def yarn?(ctx)
25
- JsSystem.new(ctx: ctx).yarn?
26
- end
27
-
28
- ##
29
- # Proxy to instance method `ShopifyCLI::JsSystem.new.call`
30
- #
31
- # #### Parameters
32
- # - `ctx`: running context from your command
33
- # - `yarn`: The proc, array, or string command to run if yarn is available
34
- # - `npm`: The proc, array, or string command to run if npm is available
35
- #
36
- # #### Example
37
- #
38
- # ShopifyCLI::JsSystem.call(ctx, yarn: ['install', '--silent'], npm: ['install', '--no-audit'])
39
- #
40
- def call(ctx, yarn:, npm:, capture_response: false)
41
- JsSystem.new(ctx: ctx).call(yarn: yarn, npm: npm, capture_response: capture_response)
42
- end
43
- end
44
-
45
- property :ctx, accepts: ShopifyCLI::Context
46
-
47
- ##
48
- # Returns the name of the JS package manager being used
49
- #
50
- # #### Example
51
- #
52
- # ShopifyCLI::JsSystem.new(ctx: ctx).package_manager
53
- #
54
- def package_manager
55
- yarn? ? YARN_CORE_COMMAND : NPM_CORE_COMMAND
56
- end
57
-
58
- ##
59
- # Returns true if yarn is available and false otherwise
60
- #
61
- # #### Example
62
- #
63
- # ShopifyCLI::JsSystem.new(ctx: ctx).yarn?
64
- #
65
- def yarn?
66
- @has_yarn ||= begin
67
- cmd_path = @ctx.which("yarn")
68
- File.exist?(File.join(ctx.root, "yarn.lock")) && !cmd_path.nil?
69
- end
70
- end
71
-
72
- ##
73
- # Runs a command with the proper JS package manager depending on the result of `yarn?`
74
- #
75
- # #### Parameters
76
- # - `ctx`: running context from your command
77
- # - `yarn`: The proc, array, or string command to run if yarn is available
78
- # - `npm`: The proc, array, or string command to run if npm is available
79
- # - `capture_response`: The boolean flag to capture the output of the running command if it is set to true
80
- #
81
- # #### Example
82
- #
83
- # ShopifyCLI::JsSystem.new(ctx: ctx).call(
84
- # yarn: ['install', '--silent'],
85
- # npm: ['install', '--no-audit'],
86
- # capture_response: false
87
- # )
88
- #
89
- def call(yarn:, npm:, capture_response: false)
90
- if yarn?
91
- call_command(yarn, YARN_CORE_COMMAND, capture_response)
92
- else
93
- call_command(npm, NPM_CORE_COMMAND, capture_response)
94
- end
95
- end
96
-
97
- private
98
-
99
- def call_command(command, core_command, capture_response)
100
- if command.is_a?(String) || command.is_a?(Array)
101
- capture_response ? call_with_capture(command, core_command) : call_without_capture(command, core_command)
102
- else
103
- command.call
104
- end
105
- end
106
-
107
- def call_with_capture(command, core_command)
108
- CLI::Kit::System.capture3(core_command, *command, chdir: ctx.root)
109
- end
110
-
111
- def call_without_capture(command, core_command)
112
- CLI::Kit::System.system(core_command, *command, chdir: ctx.root).success?
113
- end
114
- end
115
- end
@@ -1,55 +0,0 @@
1
- require "delegate"
2
-
3
- module ShopifyCLI
4
- ##
5
- # `LazyDelegator` defers initialization of its underlying delegatee until the
6
- # latter is accessed for the first time due to a method call that the
7
- # delegator cannot handle itself:
8
- #
9
- # result = LazyDelegator.new do
10
- # # carry out costly operation ...
11
- # end
12
- #
13
- # result # referencing the object itself does not result in Proc evaluation
14
- # result.to_h # however, calling a method on it will result in Proc evaluation
15
- #
16
- # LazyDelegator lends itself to being subclassed in scenarios where some
17
- # facts are known and others are costly to compute:
18
- #
19
- # class LazySpecificationHandler < ShopifyCLI::LazyDelegator
20
- # attr_reader :identifier
21
- #
22
- # def initialize(identifier, &initializer)
23
- # super(&initializer)
24
- # @identifier = identifier
25
- # end
26
- # end
27
- #
28
- # handler = LazySpecificationHandler.new(:product_subscription) do
29
- # # fetch specification from the Partners Dashboard API ...
30
- # end
31
- #
32
- # # Accessing identifier will not result in Proc evaluation as it is
33
- # # available as an attribute of the delegator itself
34
- # handler.identifier # => :product_subscription
35
- #
36
- # # Accessing the specification will result in evaluation of the Proc
37
- # # and in our example in a subsequent network call
38
- # handler.specification # => <Extension::Models::Specifcation:...>
39
- #
40
- class LazyDelegator < SimpleDelegator
41
- def initialize(&delegatee_initializer)
42
- super([false, delegatee_initializer])
43
- end
44
-
45
- protected
46
-
47
- def __getobj__(*)
48
- initialized, value_or_initializer = super
49
- return value_or_initializer if initialized
50
- value_or_initializer.call.tap do |value|
51
- __setobj__([true, value])
52
- end
53
- end
54
- end
55
- end