@shopify/cli 3.69.4 → 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 (540) hide show
  1. package/{dist/assets/cli-ruby/LICENSE → LICENSE} +0 -2
  2. package/dist/chunk-2PUMVRDO.js +131 -0
  3. package/dist/{chunk-KM4TMAQ2.js → chunk-335KXO4I.js} +12 -8
  4. package/dist/{chunk-HV364V3E.js → chunk-43YGIE7Y.js} +2 -2
  5. package/dist/chunk-47OJGAFT.js +28 -0
  6. package/dist/chunk-5OP2SA7G.js +3634 -0
  7. package/dist/{chunk-YNL4XNMX.js → chunk-5QQTRGJ7.js} +4 -4
  8. package/dist/{chunk-FWX3KCDM.js → chunk-7GNQ7YY4.js} +7 -7
  9. package/dist/{chunk-2JRUKBKX.js → chunk-AT4IG4GJ.js} +32 -216
  10. package/dist/{chunk-BMTELIUS.js → chunk-BMNDAI5O.js} +4 -4
  11. package/dist/{chunk-6XKWVDB6.js → chunk-CBBS4CV7.js} +3 -3
  12. package/dist/{chunk-27ILOE3X.js → chunk-CBD6UXLA.js} +8 -8
  13. package/dist/chunk-DVTWERMH.js +105 -0
  14. package/dist/{chunk-FX2HB3CJ.js → chunk-E2SYFYJU.js} +4 -4
  15. package/dist/{chunk-JHVVETTP.js → chunk-FDJVVEGH.js} +17 -7
  16. package/dist/{chunk-7NPDPZ22.js → chunk-GDYKHT64.js} +2610 -6199
  17. package/dist/{chunk-EJGKAHVK.js → chunk-I3IIDOBX.js} +3 -3
  18. package/dist/{chunk-ISDSND4L.js → chunk-JLK5OMFF.js} +2 -2
  19. package/dist/{chunk-N3U3EHOE.js → chunk-KYBCPKPL.js} +3 -3
  20. package/dist/{chunk-S2IXL3EU.js → chunk-LN444KRM.js} +2 -2
  21. package/dist/chunk-MH5JSAVK.js +28 -0
  22. package/dist/{chunk-TLZ4ZBH3.js → chunk-MMQOVZDR.js} +6 -4
  23. package/dist/{chunk-UQUVQV3X.js → chunk-MQXHFQM3.js} +4 -4
  24. package/dist/{chunk-F54UWMGQ.js → chunk-MRDDDATQ.js} +3 -3
  25. package/dist/{chunk-6IATSQ3X.js → chunk-N2DEYZD6.js} +3 -3
  26. package/dist/{chunk-334DJQUN.js → chunk-N4X7XQWN.js} +2 -2
  27. package/dist/{chunk-YPWRQ5AU.js → chunk-ND6AGPC6.js} +3 -3
  28. package/dist/{chunk-A3JXD7N7.js → chunk-NEOIQ6PN.js} +3 -3
  29. package/dist/{chunk-OWCYMR5Y.js → chunk-NH4U4X67.js} +3 -3
  30. package/dist/{chunk-VQ3R5DHS.js → chunk-NYFXBTWK.js} +3 -3
  31. package/dist/{chunk-GYP4MV72.js → chunk-P6ABWRKD.js} +7 -7
  32. package/dist/{chunk-2NCWYVM4.js → chunk-PJKCWDDX.js} +117 -117
  33. package/dist/{chunk-VHEJRU4K.js → chunk-PKE54TAY.js} +5 -5
  34. package/dist/{chunk-FVUAIT37.js → chunk-RUK73IAH.js} +2 -2
  35. package/dist/{chunk-RYTZQSHH.js → chunk-SYRHCENA.js} +2 -2
  36. package/dist/{chunk-K3GASX6Y.js → chunk-TCTXUAZT.js} +3 -3
  37. package/dist/chunk-UOZCMFCN.js +160 -0
  38. package/dist/{chunk-7B5FNNVB.js → chunk-VFQMUAHB.js} +4 -4
  39. package/dist/{chunk-ORDEDRCZ.js → chunk-VHAXHYTL.js} +3 -3
  40. package/dist/{chunk-CPEFXM7T.js → chunk-VT3VJHZ7.js} +4 -4
  41. package/dist/{chunk-TV5WOUSX.js → chunk-WI6MEN7U.js} +2 -2
  42. package/dist/{chunk-WHP4CEBJ.js → chunk-WN3FKMKB.js} +14 -14
  43. package/dist/{chunk-Y3MSANL5.js → chunk-X6F3DHKX.js} +2 -2
  44. package/dist/{chunk-P7JUHQKL.js → chunk-XEDHKQZA.js} +4 -3
  45. package/dist/{chunk-BRO6DC7D.js → chunk-XSMWYZDC.js} +17 -23
  46. package/dist/cli/commands/auth/logout.js +20 -18
  47. package/dist/cli/commands/auth/logout.test.js +25 -23
  48. package/dist/cli/commands/cache/clear.d.ts +6 -0
  49. package/dist/cli/commands/cache/clear.js +35 -0
  50. package/dist/cli/commands/debug/command-flags.js +19 -17
  51. package/dist/cli/commands/demo/catalog.js +20 -18
  52. package/dist/cli/commands/demo/generate-file.js +20 -18
  53. package/dist/cli/commands/demo/index.js +20 -18
  54. package/dist/cli/commands/demo/print-ai-prompt.js +20 -18
  55. package/dist/cli/commands/docs/generate.js +19 -17
  56. package/dist/cli/commands/docs/generate.test.js +19 -17
  57. package/dist/cli/commands/help.js +19 -17
  58. package/dist/cli/commands/kitchen-sink/async.js +20 -18
  59. package/dist/cli/commands/kitchen-sink/async.test.js +20 -18
  60. package/dist/cli/commands/kitchen-sink/index.js +22 -20
  61. package/dist/cli/commands/kitchen-sink/index.test.js +22 -20
  62. package/dist/cli/commands/kitchen-sink/prompts.js +20 -18
  63. package/dist/cli/commands/kitchen-sink/prompts.test.js +20 -18
  64. package/dist/cli/commands/kitchen-sink/static.js +20 -18
  65. package/dist/cli/commands/kitchen-sink/static.test.js +20 -18
  66. package/dist/cli/commands/notifications/generate.d.ts +6 -0
  67. package/dist/cli/commands/notifications/generate.js +36 -0
  68. package/dist/cli/commands/notifications/list.d.ts +6 -0
  69. package/dist/cli/commands/notifications/list.js +36 -0
  70. package/dist/cli/commands/search.js +20 -18
  71. package/dist/cli/commands/upgrade.js +20 -18
  72. package/dist/cli/commands/version.js +20 -18
  73. package/dist/cli/commands/version.test.js +20 -18
  74. package/dist/cli/services/commands/notifications.d.ts +2 -0
  75. package/dist/cli/services/commands/notifications.js +31 -0
  76. package/dist/cli/services/commands/search.js +9 -9
  77. package/dist/cli/services/commands/search.test.js +9 -9
  78. package/dist/cli/services/commands/version.js +10 -10
  79. package/dist/cli/services/commands/version.test.js +11 -11
  80. package/dist/cli/services/demo.js +9 -9
  81. package/dist/cli/services/demo.test.js +11 -11
  82. package/dist/cli/services/kitchen-sink/async.js +9 -9
  83. package/dist/cli/services/kitchen-sink/prompts.js +9 -9
  84. package/dist/cli/services/kitchen-sink/static.js +9 -9
  85. package/dist/cli/services/upgrade.js +10 -10
  86. package/dist/cli/services/upgrade.test.js +12 -12
  87. package/dist/{constants-T7JXE5K7.js → constants-QFFDI47A.js} +6 -4
  88. package/dist/{custom-oclif-loader-TBU3GENB.js → custom-oclif-loader-IZLFCRGJ.js} +11 -11
  89. package/dist/data/filters.json +39 -16
  90. package/dist/data/latest.json +1 -1
  91. package/dist/data/objects.json +164 -6
  92. package/dist/data/shopify_system_translations.json +32 -3
  93. package/dist/{del-7ZS2Z64N.js → del-FEQWOMIX.js} +2 -2
  94. package/dist/{error-handler-IL72ACEX.js → error-handler-DAI5HMQW.js} +17 -16
  95. package/dist/hooks/postrun.js +14 -13
  96. package/dist/hooks/prerun.js +14 -13
  97. package/dist/index.js +9901 -8692
  98. package/dist/{lib-JHUCJTHS.js → lib-JJXX7GH6.js} +5 -5
  99. package/dist/{local-OE2I46PA.js → local-QD6GDUUE.js} +9 -9
  100. package/dist/{morph-UIXWG2S7.js → morph-FN23MJ2S.js} +2 -2
  101. package/dist/{node-SDBKEHIV.js → node-4XKDIIJ7.js} +21 -19
  102. package/dist/{node-package-manager-LPDV6HZY.js → node-package-manager-IEZ6F5VN.js} +10 -10
  103. package/dist/{system-SGABHAU2.js → system-KSIGUX64.js} +9 -9
  104. package/dist/tsconfig.tsbuildinfo +1 -1
  105. package/dist/{ui-WB42ZV4M.js → ui-BUB4OWO7.js} +9 -9
  106. package/dist/{workerd-YWTPL4SF.js → workerd-DIIGDIHZ.js} +21 -19
  107. package/oclif.manifest.json +60 -93
  108. package/package.json +6 -6
  109. package/dist/assets/cli-ruby/.devcontainer.json +0 -5
  110. package/dist/assets/cli-ruby/.rubocop.yml +0 -102
  111. package/dist/assets/cli-ruby/.rubocop_todo.yml +0 -24
  112. package/dist/assets/cli-ruby/CHANGELOG.md +0 -634
  113. package/dist/assets/cli-ruby/CONTRIBUTING.md +0 -3
  114. package/dist/assets/cli-ruby/Codespace.dockerfile +0 -35
  115. package/dist/assets/cli-ruby/Gemfile +0 -32
  116. package/dist/assets/cli-ruby/README.md +0 -30
  117. package/dist/assets/cli-ruby/Rakefile +0 -167
  118. package/dist/assets/cli-ruby/SECURITY.md +0 -59
  119. package/dist/assets/cli-ruby/Tests.dockerfile +0 -35
  120. package/dist/assets/cli-ruby/assets/logo.png +0 -0
  121. package/dist/assets/cli-ruby/bin/console +0 -11
  122. package/dist/assets/cli-ruby/bin/load_shopify.rb +0 -22
  123. package/dist/assets/cli-ruby/bin/shopify +0 -67
  124. package/dist/assets/cli-ruby/bin/shopify.bat +0 -3
  125. package/dist/assets/cli-ruby/bin/update-deps +0 -97
  126. package/dist/assets/cli-ruby/dev.yml +0 -29
  127. package/dist/assets/cli-ruby/docs/README.md +0 -13
  128. package/dist/assets/cli-ruby/docs/contributors/testing.md +0 -27
  129. package/dist/assets/cli-ruby/docs/users/installation.md +0 -3
  130. package/dist/assets/cli-ruby/docs/users/migrate-from-themekit.md +0 -18
  131. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.1.0.gz.sha256 +0 -1
  132. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.2.0.gz.sha256 +0 -1
  133. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.2.1.gz.sha256 +0 -1
  134. package/dist/assets/cli-ruby/ext/javy/hashes/javy-arm-macos-v0.3.0.gz.sha256 +0 -1
  135. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.1.0.gz.sha256 +0 -1
  136. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.2.0.gz.sha256 +0 -1
  137. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.2.1.gz.sha256 +0 -1
  138. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-linux-v0.3.0.gz.sha256 +0 -1
  139. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.1.0.gz.sha256 +0 -1
  140. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.2.0.gz.sha256 +0 -1
  141. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.2.1.gz.sha256 +0 -1
  142. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-macos-v0.3.0.gz.sha256 +0 -1
  143. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.1.0.gz.sha256 +0 -1
  144. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.2.0.gz.sha256 +0 -1
  145. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.2.1.gz.sha256 +0 -1
  146. package/dist/assets/cli-ruby/ext/javy/hashes/javy-x86_64-windows-v0.3.0.gz.sha256 +0 -1
  147. package/dist/assets/cli-ruby/ext/javy/javy.rb +0 -204
  148. package/dist/assets/cli-ruby/ext/javy/version +0 -1
  149. package/dist/assets/cli-ruby/ext/shopify-extensions/extconf.rb +0 -21
  150. package/dist/assets/cli-ruby/ext/shopify-extensions/shopify_extensions.rb +0 -152
  151. package/dist/assets/cli-ruby/ext/shopify-extensions/version +0 -1
  152. package/dist/assets/cli-ruby/features/support/assertions.rb +0 -17
  153. package/dist/assets/cli-ruby/features/support/cli.rb +0 -7
  154. package/dist/assets/cli-ruby/features/support/process.rb +0 -27
  155. package/dist/assets/cli-ruby/features/support/requires.rb +0 -3
  156. package/dist/assets/cli-ruby/lib/docgen/class_template.md.erb +0 -81
  157. package/dist/assets/cli-ruby/lib/docgen/index_template.md.erb +0 -5
  158. package/dist/assets/cli-ruby/lib/docgen/markdown.rb +0 -101
  159. package/dist/assets/cli-ruby/lib/graphql/admin_introspection.graphql +0 -87
  160. package/dist/assets/cli-ruby/lib/graphql/all_organizations.graphql +0 -19
  161. package/dist/assets/cli-ruby/lib/graphql/all_orgs_with_apps.graphql +0 -30
  162. package/dist/assets/cli-ruby/lib/graphql/api_versions.graphql +0 -6
  163. package/dist/assets/cli-ruby/lib/graphql/convert_dev_to_test_store.graphql +0 -10
  164. package/dist/assets/cli-ruby/lib/graphql/create_app.graphql +0 -20
  165. package/dist/assets/cli-ruby/lib/graphql/create_customer.graphql +0 -9
  166. package/dist/assets/cli-ruby/lib/graphql/create_draft_order.graphql +0 -8
  167. package/dist/assets/cli-ruby/lib/graphql/create_product.graphql +0 -9
  168. package/dist/assets/cli-ruby/lib/graphql/extension_create.graphql +0 -37
  169. package/dist/assets/cli-ruby/lib/graphql/extension_update_draft.graphql +0 -19
  170. package/dist/assets/cli-ruby/lib/graphql/fetch_specifications.graphql +0 -14
  171. package/dist/assets/cli-ruby/lib/graphql/find_organization.graphql +0 -18
  172. package/dist/assets/cli-ruby/lib/graphql/find_organization_with_apps.graphql +0 -20
  173. package/dist/assets/cli-ruby/lib/graphql/get_app_by_api_key.graphql +0 -9
  174. package/dist/assets/cli-ruby/lib/graphql/get_app_urls.graphql +0 -6
  175. package/dist/assets/cli-ruby/lib/graphql/get_extension_registrations.graphql +0 -28
  176. package/dist/assets/cli-ruby/lib/graphql/get_variant_id.graphql +0 -16
  177. package/dist/assets/cli-ruby/lib/graphql/update_dashboard_urls.graphql +0 -8
  178. package/dist/assets/cli-ruby/lib/project_types/extension/cli.rb +0 -75
  179. package/dist/assets/cli-ruby/lib/project_types/extension/commands/extension_command.rb +0 -29
  180. package/dist/assets/cli-ruby/lib/project_types/extension/commands/serve.rb +0 -164
  181. package/dist/assets/cli-ruby/lib/project_types/extension/errors.rb +0 -9
  182. package/dist/assets/cli-ruby/lib/project_types/extension/extension_project.rb +0 -151
  183. package/dist/assets/cli-ruby/lib/project_types/extension/extension_project_keys.rb +0 -12
  184. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo.rb +0 -50
  185. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_config.rb +0 -59
  186. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_dependencies.rb +0 -28
  187. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_runtime.rb +0 -15
  188. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_serve.rb +0 -115
  189. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup.rb +0 -54
  190. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup_step.rb +0 -31
  191. package/dist/assets/cli-ruby/lib/project_types/extension/features/argo_setup_steps.rb +0 -51
  192. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/admin.rb +0 -29
  193. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/base.rb +0 -19
  194. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/checkout_post_purchase.rb +0 -23
  195. package/dist/assets/cli-ruby/lib/project_types/extension/features/runtimes/checkout_ui_extension.rb +0 -29
  196. package/dist/assets/cli-ruby/lib/project_types/extension/loaders/project.rb +0 -50
  197. package/dist/assets/cli-ruby/lib/project_types/extension/loaders/specification_handler.rb +0 -22
  198. package/dist/assets/cli-ruby/lib/project_types/extension/messages/message_loading.rb +0 -34
  199. package/dist/assets/cli-ruby/lib/project_types/extension/messages/messages.rb +0 -320
  200. package/dist/assets/cli-ruby/lib/project_types/extension/models/app.rb +0 -14
  201. package/dist/assets/cli-ruby/lib/project_types/extension/models/lazy_specification_handler.rb +0 -12
  202. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification.rb +0 -41
  203. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/default.rb +0 -145
  204. package/dist/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +0 -134
  205. package/dist/assets/cli-ruby/lib/project_types/extension/models/specifications.rb +0 -91
  206. package/dist/assets/cli-ruby/lib/project_types/extension/models/validation_error.rb +0 -17
  207. package/dist/assets/cli-ruby/lib/project_types/extension/models/version.rb +0 -15
  208. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/configure_features.rb +0 -73
  209. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/configure_options.rb +0 -21
  210. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/converters/validation_error_converter.rb +0 -25
  211. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/converters/version_converter.rb +0 -28
  212. package/dist/assets/cli-ruby/lib/project_types/extension/tasks/fetch_specifications.rb +0 -21
  213. package/dist/assets/cli-ruby/lib/project_types/node/cli.rb +0 -12
  214. package/dist/assets/cli-ruby/lib/project_types/node/forms/create.rb +0 -45
  215. package/dist/assets/cli-ruby/lib/project_types/node/messages/messages.rb +0 -33
  216. package/dist/assets/cli-ruby/lib/project_types/php/cli.rb +0 -16
  217. package/dist/assets/cli-ruby/lib/project_types/php/forms/create.rb +0 -44
  218. package/dist/assets/cli-ruby/lib/project_types/php/messages/messages.rb +0 -29
  219. package/dist/assets/cli-ruby/lib/project_types/rails/cli.rb +0 -15
  220. package/dist/assets/cli-ruby/lib/project_types/rails/forms/create.rb +0 -75
  221. package/dist/assets/cli-ruby/lib/project_types/rails/gem.rb +0 -110
  222. package/dist/assets/cli-ruby/lib/project_types/rails/messages/messages.rb +0 -101
  223. package/dist/assets/cli-ruby/lib/project_types/script/cli.rb +0 -27
  224. package/dist/assets/cli-ruby/lib/project_types/script/commands/connect.rb +0 -16
  225. package/dist/assets/cli-ruby/lib/project_types/script/commands/create.rb +0 -24
  226. package/dist/assets/cli-ruby/lib/project_types/script/commands/javy.rb +0 -24
  227. package/dist/assets/cli-ruby/lib/project_types/script/commands/push.rb +0 -26
  228. package/dist/assets/cli-ruby/lib/project_types/script/loaders/project.rb +0 -46
  229. package/dist/assets/cli-ruby/lib/project_types/script/loaders/specification_handler.rb +0 -22
  230. package/dist/assets/cli-ruby/lib/project_types/script/messages/messages.rb +0 -11
  231. package/dist/assets/cli-ruby/lib/project_types/theme/cli.rb +0 -33
  232. package/dist/assets/cli-ruby/lib/project_types/theme/commands/common/root_helper.rb +0 -94
  233. package/dist/assets/cli-ruby/lib/project_types/theme/commands/common/shop_helper.rb +0 -13
  234. package/dist/assets/cli-ruby/lib/project_types/theme/commands/console.rb +0 -23
  235. package/dist/assets/cli-ruby/lib/project_types/theme/commands/delete.rb +0 -70
  236. package/dist/assets/cli-ruby/lib/project_types/theme/commands/init.rb +0 -46
  237. package/dist/assets/cli-ruby/lib/project_types/theme/commands/list.rb +0 -33
  238. package/dist/assets/cli-ruby/lib/project_types/theme/commands/open.rb +0 -73
  239. package/dist/assets/cli-ruby/lib/project_types/theme/commands/package.rb +0 -73
  240. package/dist/assets/cli-ruby/lib/project_types/theme/commands/publish.rb +0 -49
  241. package/dist/assets/cli-ruby/lib/project_types/theme/commands/pull.rb +0 -118
  242. package/dist/assets/cli-ruby/lib/project_types/theme/commands/push.rb +0 -160
  243. package/dist/assets/cli-ruby/lib/project_types/theme/commands/serve.rb +0 -91
  244. package/dist/assets/cli-ruby/lib/project_types/theme/commands/share.rb +0 -62
  245. package/dist/assets/cli-ruby/lib/project_types/theme/commands/token.rb +0 -22
  246. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/base_glob.rb +0 -65
  247. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/ignore_glob.rb +0 -15
  248. package/dist/assets/cli-ruby/lib/project_types/theme/conversions/include_glob.rb +0 -15
  249. package/dist/assets/cli-ruby/lib/project_types/theme/forms/confirm_store.rb +0 -15
  250. package/dist/assets/cli-ruby/lib/project_types/theme/forms/select.rb +0 -34
  251. package/dist/assets/cli-ruby/lib/project_types/theme/messages/messages.rb +0 -429
  252. package/dist/assets/cli-ruby/lib/project_types/theme/models/specification_handlers/theme.rb +0 -19
  253. package/dist/assets/cli-ruby/lib/project_types/theme/presenters/theme_presenter.rb +0 -48
  254. package/dist/assets/cli-ruby/lib/project_types/theme/presenters/themes_presenter.rb +0 -29
  255. package/dist/assets/cli-ruby/lib/project_types/theme/ui/sync_progress_bar.rb +0 -20
  256. package/dist/assets/cli-ruby/lib/rubygems_plugin.rb +0 -26
  257. package/dist/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -160
  258. package/dist/assets/cli-ruby/lib/shopify_cli/api.rb +0 -130
  259. package/dist/assets/cli-ruby/lib/shopify_cli/command/project_command.rb +0 -31
  260. package/dist/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +0 -20
  261. package/dist/assets/cli-ruby/lib/shopify_cli/command.rb +0 -166
  262. package/dist/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -21
  263. package/dist/assets/cli-ruby/lib/shopify_cli/constants.rb +0 -101
  264. package/dist/assets/cli-ruby/lib/shopify_cli/context.rb +0 -709
  265. package/dist/assets/cli-ruby/lib/shopify_cli/core/cli_version.rb +0 -20
  266. package/dist/assets/cli-ruby/lib/shopify_cli/core/entry_point.rb +0 -64
  267. package/dist/assets/cli-ruby/lib/shopify_cli/core/executor.rb +0 -23
  268. package/dist/assets/cli-ruby/lib/shopify_cli/core/finalize.rb +0 -13
  269. package/dist/assets/cli-ruby/lib/shopify_cli/core/monorail.rb +0 -122
  270. package/dist/assets/cli-ruby/lib/shopify_cli/core.rb +0 -8
  271. package/dist/assets/cli-ruby/lib/shopify_cli/db.rb +0 -114
  272. package/dist/assets/cli-ruby/lib/shopify_cli/environment.rb +0 -217
  273. package/dist/assets/cli-ruby/lib/shopify_cli/exception_reporter.rb +0 -80
  274. package/dist/assets/cli-ruby/lib/shopify_cli/feature.rb +0 -95
  275. package/dist/assets/cli-ruby/lib/shopify_cli/file_system_listener.rb +0 -30
  276. package/dist/assets/cli-ruby/lib/shopify_cli/form.rb +0 -42
  277. package/dist/assets/cli-ruby/lib/shopify_cli/git.rb +0 -320
  278. package/dist/assets/cli-ruby/lib/shopify_cli/github/issue_url_generator.rb +0 -30
  279. package/dist/assets/cli-ruby/lib/shopify_cli/github.rb +0 -5
  280. package/dist/assets/cli-ruby/lib/shopify_cli/helpers/haikunator.rb +0 -92
  281. package/dist/assets/cli-ruby/lib/shopify_cli/helpers.rb +0 -5
  282. package/dist/assets/cli-ruby/lib/shopify_cli/http_request.rb +0 -43
  283. package/dist/assets/cli-ruby/lib/shopify_cli/identity_auth/env_auth_token.rb +0 -34
  284. package/dist/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -332
  285. package/dist/assets/cli-ruby/lib/shopify_cli/js_system.rb +0 -115
  286. package/dist/assets/cli-ruby/lib/shopify_cli/lazy_delegator.rb +0 -55
  287. package/dist/assets/cli-ruby/lib/shopify_cli/messages/messages.rb +0 -863
  288. package/dist/assets/cli-ruby/lib/shopify_cli/method_object.rb +0 -123
  289. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migration.rb +0 -27
  290. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migrations/1631709766_noop.rb +0 -13
  291. package/dist/assets/cli-ruby/lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb +0 -41
  292. package/dist/assets/cli-ruby/lib/shopify_cli/migrator.rb +0 -46
  293. package/dist/assets/cli-ruby/lib/shopify_cli/options.rb +0 -40
  294. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/app_extensions/job.rb +0 -36
  295. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/app_extensions.rb +0 -46
  296. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api/organizations.rb +0 -45
  297. package/dist/assets/cli-ruby/lib/shopify_cli/partners_api.rb +0 -91
  298. package/dist/assets/cli-ruby/lib/shopify_cli/project.rb +0 -199
  299. package/dist/assets/cli-ruby/lib/shopify_cli/project_type.rb +0 -66
  300. package/dist/assets/cli-ruby/lib/shopify_cli/reporting_configuration_controller.rb +0 -29
  301. package/dist/assets/cli-ruby/lib/shopify_cli/resolve_constant.rb +0 -25
  302. package/dist/assets/cli-ruby/lib/shopify_cli/resources/env_file.rb +0 -108
  303. package/dist/assets/cli-ruby/lib/shopify_cli/resources.rb +0 -5
  304. package/dist/assets/cli-ruby/lib/shopify_cli/result.rb +0 -448
  305. package/dist/assets/cli-ruby/lib/shopify_cli/shopifolk.rb +0 -82
  306. package/dist/assets/cli-ruby/lib/shopify_cli/task.rb +0 -20
  307. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/confirm_store.rb +0 -18
  308. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/create_api_client.rb +0 -40
  309. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_authenticated.rb +0 -19
  310. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_dev_store.rb +0 -41
  311. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_env.rb +0 -90
  312. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_git_dependency.rb +0 -14
  313. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_loopback_url.rb +0 -20
  314. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/ensure_project_type.rb +0 -14
  315. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/select_org_and_shop.rb +0 -81
  316. package/dist/assets/cli-ruby/lib/shopify_cli/tasks/update_dashboard_urls.rb +0 -57
  317. package/dist/assets/cli-ruby/lib/shopify_cli/tasks.rb +0 -44
  318. package/dist/assets/cli-ruby/lib/shopify_cli/theme/backoff_helper.rb +0 -47
  319. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/cdn_fonts.rb +0 -82
  320. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/certificate_manager.rb +0 -79
  321. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/errors.rb +0 -9
  322. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/header_hash.rb +0 -98
  323. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hooks/file_change_hook.rb +0 -77
  324. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_deleter.rb +0 -62
  325. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_reloader.rb +0 -63
  326. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +0 -27
  327. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/hot_reload.js +0 -48
  328. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/sse_client.js +0 -43
  329. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme.js +0 -114
  330. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme_extension.js +0 -121
  331. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/script_injector.rb +0 -57
  332. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload/sections_index.rb +0 -50
  333. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/hot_reload.rb +0 -75
  334. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/local_assets.rb +0 -101
  335. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +0 -313
  336. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy_param_builder.rb +0 -84
  337. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/reload_mode.rb +0 -34
  338. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/remote_watcher/json_files_update_job.rb +0 -35
  339. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/remote_watcher.rb +0 -44
  340. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/sse.rb +0 -75
  341. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/watcher.rb +0 -64
  342. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/web_server.rb +0 -140
  343. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server.rb +0 -332
  344. package/dist/assets/cli-ruby/lib/shopify_cli/theme/development_theme.rb +0 -101
  345. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/app_extension.rb +0 -40
  346. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hooks/file_change_hook.rb +0 -76
  347. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hot_reload/script_injector.rb +0 -30
  348. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/hot_reload.rb +0 -13
  349. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/local_assets.rb +0 -31
  350. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/proxy_param_builder.rb +0 -94
  351. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server/watcher.rb +0 -49
  352. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/dev_server.rb +0 -175
  353. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/host_theme.rb +0 -109
  354. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ignore_helper.rb +0 -35
  355. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer/extension_serve_job.rb +0 -120
  356. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer/operation.rb +0 -25
  357. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/syncer.rb +0 -100
  358. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ui/host_theme_progress_bar.rb +0 -35
  359. package/dist/assets/cli-ruby/lib/shopify_cli/theme/extension/ui/host_theme_raw_progress_bar.rb +0 -40
  360. package/dist/assets/cli-ruby/lib/shopify_cli/theme/file.rb +0 -133
  361. package/dist/assets/cli-ruby/lib/shopify_cli/theme/filter/path_matcher.rb +0 -38
  362. package/dist/assets/cli-ruby/lib/shopify_cli/theme/ignore_filter.rb +0 -112
  363. package/dist/assets/cli-ruby/lib/shopify_cli/theme/ignore_helper.rb +0 -37
  364. package/dist/assets/cli-ruby/lib/shopify_cli/theme/include_filter.rb +0 -67
  365. package/dist/assets/cli-ruby/lib/shopify_cli/theme/mime_type.rb +0 -34
  366. package/dist/assets/cli-ruby/lib/shopify_cli/theme/notifier.rb +0 -52
  367. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/api.rb +0 -109
  368. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/auth_dev_server.rb +0 -93
  369. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/auth_middleware.rb +0 -97
  370. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/remote_evaluator.rb +0 -166
  371. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/resources/success.html +0 -78
  372. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/resources/template.liquid +0 -15
  373. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl/snippet.rb +0 -81
  374. package/dist/assets/cli-ruby/lib/shopify_cli/theme/repl.rb +0 -88
  375. package/dist/assets/cli-ruby/lib/shopify_cli/theme/root.rb +0 -62
  376. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/checksums.rb +0 -66
  377. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/downloader.rb +0 -63
  378. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/error_reporter.rb +0 -45
  379. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/merger.rb +0 -53
  380. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/operation.rb +0 -49
  381. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/standard_reporter.rb +0 -32
  382. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/unsupported_script_warning.rb +0 -90
  383. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk.rb +0 -133
  384. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_item.rb +0 -64
  385. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_job.rb +0 -139
  386. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/bulk_request.rb +0 -30
  387. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/apply_to_all.rb +0 -41
  388. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +0 -37
  389. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/base_strategy_form.rb +0 -64
  390. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +0 -29
  391. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/forms/select_update_strategy.rb +0 -30
  392. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/json_delete_handler.rb +0 -49
  393. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader/json_update_handler.rb +0 -71
  394. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer/uploader.rb +0 -231
  395. package/dist/assets/cli-ruby/lib/shopify_cli/theme/syncer.rb +0 -391
  396. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme.rb +0 -212
  397. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme_access_api.rb +0 -89
  398. package/dist/assets/cli-ruby/lib/shopify_cli/theme/theme_admin_api.rb +0 -101
  399. package/dist/assets/cli-ruby/lib/shopify_cli/thread_pool/job.rb +0 -35
  400. package/dist/assets/cli-ruby/lib/shopify_cli/thread_pool.rb +0 -49
  401. package/dist/assets/cli-ruby/lib/shopify_cli/transform_data_structure.rb +0 -87
  402. package/dist/assets/cli-ruby/lib/shopify_cli/utilities.rb +0 -21
  403. package/dist/assets/cli-ruby/lib/shopify_cli/version.rb +0 -3
  404. package/dist/assets/cli-ruby/lib/shopify_cli.rb +0 -182
  405. package/dist/assets/cli-ruby/shipit.rubygems.yml +0 -3
  406. package/dist/assets/cli-ruby/shopify-cli.gemspec +0 -46
  407. package/dist/assets/cli-ruby/shopify-dev +0 -16
  408. package/dist/assets/cli-ruby/test/minitest_ext.rb +0 -115
  409. package/dist/assets/cli-ruby/test/project_types/extension/extension_test_helpers.rb +0 -70
  410. package/dist/assets/cli-ruby/test/shopify-cli/migrator/migrations/migration_helper.rb +0 -20
  411. package/dist/assets/cli-ruby/test/test_helpers.rb +0 -16
  412. package/dist/assets/cli-ruby/utilities/constants.rb +0 -7
  413. package/dist/assets/cli-ruby/utilities/docker/container.rb +0 -104
  414. package/dist/assets/cli-ruby/utilities/docker.rb +0 -89
  415. package/dist/assets/cli-ruby/utilities/utilities.rb +0 -6
  416. package/dist/assets/cli-ruby/vendor/deps/cli-kit/REVISION +0 -1
  417. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/autocall.rb +0 -21
  418. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +0 -49
  419. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +0 -94
  420. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/config.rb +0 -133
  421. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +0 -123
  422. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/executor.rb +0 -79
  423. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/ini.rb +0 -102
  424. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +0 -82
  425. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/logger.rb +0 -82
  426. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +0 -60
  427. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/ruby_backports/enumerable.rb +0 -6
  428. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +0 -244
  429. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/support.rb +0 -9
  430. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/system.rb +0 -243
  431. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/util.rb +0 -193
  432. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit/version.rb +0 -5
  433. package/dist/assets/cli-ruby/vendor/deps/cli-kit/lib/cli/kit.rb +0 -60
  434. package/dist/assets/cli-ruby/vendor/deps/cli-ui/REVISION +0 -1
  435. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +0 -157
  436. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/color.rb +0 -84
  437. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +0 -193
  438. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +0 -98
  439. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +0 -166
  440. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +0 -139
  441. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +0 -120
  442. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/frame.rb +0 -269
  443. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +0 -84
  444. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/os.rb +0 -73
  445. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/printer.rb +0 -59
  446. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/progress.rb +0 -90
  447. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/progress_plain.rb +0 -50
  448. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +0 -484
  449. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +0 -29
  450. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +0 -282
  451. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +0 -40
  452. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +0 -263
  453. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +0 -66
  454. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +0 -232
  455. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +0 -46
  456. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +0 -102
  457. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/version.rb +0 -5
  458. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +0 -27
  459. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +0 -61
  460. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +0 -77
  461. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +0 -56
  462. package/dist/assets/cli-ruby/vendor/deps/cli-ui/lib/cli/ui.rb +0 -234
  463. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/LICENSE +0 -22
  464. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/README.md +0 -67
  465. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/Rakefile +0 -54
  466. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/lib/ruby2_keywords.rb +0 -57
  467. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/ruby2_keywords.gemspec +0 -18
  468. package/dist/assets/cli-ruby/vendor/deps/ruby2_keywords/test/test_keyword.rb +0 -41
  469. package/dist/assets/cli-ruby/vendor/deps/smart_properties/REVISION +0 -1
  470. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/errors.rb +0 -114
  471. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/property.rb +0 -168
  472. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/property_collection.rb +0 -83
  473. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/validations/ancestor.rb +0 -27
  474. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/validations.rb +0 -8
  475. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties/version.rb +0 -3
  476. package/dist/assets/cli-ruby/vendor/deps/smart_properties/lib/smart_properties.rb +0 -174
  477. package/dist/assets/cli-ruby/vendor/deps/webrick/Gemfile +0 -3
  478. package/dist/assets/cli-ruby/vendor/deps/webrick/LICENSE.txt +0 -22
  479. package/dist/assets/cli-ruby/vendor/deps/webrick/README.md +0 -61
  480. package/dist/assets/cli-ruby/vendor/deps/webrick/Rakefile +0 -10
  481. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/accesslog.rb +0 -157
  482. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/cgi.rb +0 -313
  483. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/compat.rb +0 -36
  484. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/config.rb +0 -158
  485. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/cookie.rb +0 -172
  486. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/htmlutils.rb +0 -30
  487. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +0 -117
  488. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +0 -116
  489. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +0 -395
  490. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +0 -132
  491. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +0 -97
  492. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +0 -158
  493. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +0 -53
  494. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpauth.rb +0 -96
  495. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpproxy.rb +0 -354
  496. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httprequest.rb +0 -636
  497. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpresponse.rb +0 -564
  498. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/https.rb +0 -152
  499. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpserver.rb +0 -294
  500. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +0 -152
  501. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +0 -47
  502. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +0 -126
  503. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +0 -88
  504. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +0 -552
  505. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +0 -47
  506. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpservlet.rb +0 -23
  507. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpstatus.rb +0 -194
  508. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httputils.rb +0 -512
  509. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/httpversion.rb +0 -76
  510. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/log.rb +0 -156
  511. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/server.rb +0 -381
  512. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/ssl.rb +0 -215
  513. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/utils.rb +0 -265
  514. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick/version.rb +0 -18
  515. package/dist/assets/cli-ruby/vendor/deps/webrick/lib/webrick.rb +0 -232
  516. package/dist/assets/cli-ruby/vendor/deps/webrick/webrick.gemspec +0 -74
  517. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands/help.rb +0 -20
  518. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands/new.rb +0 -21
  519. package/dist/assets/cli-ruby/vendor/gen/lib/gen/commands.rb +0 -18
  520. package/dist/assets/cli-ruby/vendor/gen/lib/gen/entry_point.rb +0 -10
  521. package/dist/assets/cli-ruby/vendor/gen/lib/gen/generator.rb +0 -165
  522. package/dist/assets/cli-ruby/vendor/gen/lib/gen.rb +0 -39
  523. package/dist/assets/cli-ruby/vendor/gen/template/Gemfile +0 -10
  524. package/dist/assets/cli-ruby/vendor/gen/template/README.md +0 -1
  525. package/dist/assets/cli-ruby/vendor/gen/template/bin/testunit +0 -23
  526. package/dist/assets/cli-ruby/vendor/gen/template/bin/update-deps +0 -97
  527. package/dist/assets/cli-ruby/vendor/gen/template/dev-gems.yml +0 -3
  528. package/dist/assets/cli-ruby/vendor/gen/template/dev-vendor.yml +0 -4
  529. package/dist/assets/cli-ruby/vendor/gen/template/exe/__app__-gems +0 -17
  530. package/dist/assets/cli-ruby/vendor/gen/template/exe/__app__-vendor +0 -18
  531. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands/example.rb +0 -19
  532. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands/help.rb +0 -21
  533. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/commands.rb +0 -18
  534. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__/entry_point.rb +0 -10
  535. package/dist/assets/cli-ruby/vendor/gen/template/lib/__app__.rb +0 -33
  536. package/dist/assets/cli-ruby/vendor/gen/template/test/example_test.rb +0 -17
  537. package/dist/assets/cli-ruby/vendor/gen/template/test/test_helper.rb +0 -22
  538. package/dist/assets/cli-ruby/vendor/lib/semantic/LICENSE +0 -20
  539. package/dist/assets/cli-ruby/vendor/lib/semantic/semantic.rb +0 -4
  540. 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