@shopify/cli-kit 3.45.1 → 3.46.0-pre.1

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 (159) hide show
  1. package/assets/cli-ruby/Gemfile +0 -1
  2. package/assets/cli-ruby/Rakefile +0 -76
  3. package/assets/cli-ruby/lib/project_types/extension/cli.rb +5 -86
  4. package/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -3
  5. package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
  6. package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
  7. package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
  8. package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
  9. package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
  10. package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +9 -1
  11. package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
  12. package/assets/cli-ruby/test/test_helpers.rb +0 -2
  13. package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
  14. package/dist/private/node/ui/components/ConcurrentOutput.test.js +2 -2
  15. package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
  16. package/dist/private/node/ui/components/List.d.ts +2 -0
  17. package/dist/private/node/ui/components/List.js +5 -4
  18. package/dist/private/node/ui/components/List.js.map +1 -1
  19. package/dist/private/node/ui/components/Prompts/InfoTable.d.ts +10 -2
  20. package/dist/private/node/ui/components/Prompts/InfoTable.js +12 -8
  21. package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
  22. package/dist/public/common/string.js +62 -0
  23. package/dist/public/common/string.js.map +1 -1
  24. package/dist/public/common/version.d.ts +1 -1
  25. package/dist/public/common/version.js +1 -1
  26. package/dist/public/common/version.js.map +1 -1
  27. package/dist/public/node/cli.d.ts +1 -0
  28. package/dist/public/node/cli.js +15 -1
  29. package/dist/public/node/cli.js.map +1 -1
  30. package/dist/public/node/fs.d.ts +7 -2
  31. package/dist/public/node/fs.js +4 -3
  32. package/dist/public/node/fs.js.map +1 -1
  33. package/dist/public/node/output.d.ts +3 -1
  34. package/dist/public/node/output.js +10 -2
  35. package/dist/public/node/output.js.map +1 -1
  36. package/dist/public/node/ui.d.ts +3 -2
  37. package/dist/public/node/ui.js +1 -1
  38. package/dist/public/node/ui.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +8 -8
  41. package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
  42. package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
  43. package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
  44. package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
  45. package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
  46. package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
  47. package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
  48. package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
  49. package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
  50. package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
  51. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
  52. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
  53. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
  54. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
  55. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
  56. package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
  57. package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
  58. package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
  59. package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
  60. package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
  61. package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
  62. package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
  63. package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
  64. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
  65. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
  66. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
  67. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
  68. package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
  69. package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
  70. package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
  71. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
  72. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
  73. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
  74. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
  75. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
  76. package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
  77. package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
  78. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
  79. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
  80. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
  81. package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
  82. package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
  83. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
  84. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
  85. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
  86. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
  87. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
  88. package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
  89. package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
  90. package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
  91. package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
  92. package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
  93. package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
  94. package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
  95. package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
  96. package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
  97. package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
  98. package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
  99. package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
  100. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
  101. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
  102. package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
  103. package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
  104. package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
  105. package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
  106. package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
  107. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
  108. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
  109. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
  110. package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
  111. package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
  112. package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
  113. package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
  114. package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
  115. package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
  116. package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
  117. package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
  118. package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
  119. package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
  120. package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
  121. package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
  122. package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
  123. package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
  124. package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
  125. package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
  126. package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
  127. package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
  128. package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
  129. package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
  130. package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
  131. package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
  132. package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
  133. package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
  134. package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
  135. package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
  136. package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
  137. package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
  138. package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
  139. package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
  140. package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
  141. package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
  142. package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
  143. package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
  144. package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
  145. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
  146. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
  147. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
  148. package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
  149. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
  150. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
  151. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
  152. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
  153. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
  154. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
  155. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
  156. package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
  157. package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
  158. package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
  159. package/assets/cli-ruby/lib/shopify_cli/tunnel.rb +0 -255
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class EnsureResourceUrl < ShopifyCLI::Task
7
- include SmartProperties
8
-
9
- property! :context, accepts: ShopifyCLI::Context
10
- property! :specification_handler, accepts: Extension::Models::SpecificationHandlers::Default
11
-
12
- def self.call(*args)
13
- new(*args).call
14
- end
15
-
16
- def call
17
- project = ExtensionProject.current(force_reload: true)
18
-
19
- ShopifyCLI::Result
20
- .wrap(project.resource_url)
21
- .rescue { specification_handler.build_resource_url(shop: project.env.shop, context: context) }
22
- .then(&method(:persist_resource_url))
23
- .unwrap do |nil_or_exception|
24
- case nil_or_exception
25
- when nil
26
- context.warn(context.message("warnings.resource_url_auto_generation_failed", project.env.shop))
27
- else
28
- context.abort(nil_or_exception)
29
- end
30
- end
31
- end
32
-
33
- def persist_resource_url(resource_url)
34
- ExtensionProject.update_env_file(context: context, resource_url: resource_url)
35
- resource_url
36
- end
37
- end
38
- end
39
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- module ExecuteCommands
7
- class Base
8
- include SmartProperties
9
-
10
- property! :type, accepts: Models::DevelopmentServerRequirements::SUPPORTED_EXTENSION_TYPES
11
- property! :context, accepts: ShopifyCLI::Context
12
- end
13
- end
14
- end
15
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- module ExecuteCommands
7
- class Build < Base
8
- prepend OutdatedExtensionDetection
9
-
10
- property! :config_file_path, accepts: String
11
-
12
- def call
13
- ShopifyCLI::Result
14
- .call(&method(:merge_server_config))
15
- .then { |server_config| Models::DevelopmentServer.new.build(server_config) }
16
- end
17
-
18
- private
19
-
20
- def merge_server_config
21
- Tasks::MergeServerConfig.call(
22
- context: context,
23
- file_path: config_file_path,
24
- type: type
25
- )
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- module ExecuteCommands
7
- class Create < Base
8
- property! :template, accepts: Models::ServerConfig::Development::VALID_TEMPLATES
9
- property! :root_dir, accepts: String
10
-
11
- def call
12
- ShopifyCLI::Result.success(generate_config)
13
- .then { |server_config| Models::DevelopmentServer.new.create(server_config) }
14
- end
15
-
16
- private
17
-
18
- def generate_config
19
- extension = Models::ServerConfig::Extension.build(
20
- template: template,
21
- type: type,
22
- root_dir: root_dir,
23
- )
24
-
25
- Models::ServerConfig::Root.new(extensions: [extension])
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,57 +0,0 @@
1
- module Extension
2
- module Tasks
3
- module ExecuteCommands
4
- module OutdatedExtensionDetection
5
- class OutdatedCheck
6
- include ShopifyCLI::MethodObject
7
-
8
- property! :type, accepts: Models::DevelopmentServerRequirements.method(:type_supported?)
9
- property! :context, accepts: ShopifyCLI::Context
10
- property! :project, accepts: ShopifyCLI::Project, default: -> { ShopifyCLI::Project.current }
11
-
12
- def call
13
- return false if valid?(parse_package)
14
- context.abort(upgrade_instructions)
15
- end
16
-
17
- private
18
-
19
- def upgrade_instructions
20
- case type
21
- when "checkout_ui_extension"
22
- context.message("errors.outdated_extensions.checkout_ui_extension")
23
- when "product_subscription"
24
- context.message("errors.outdated_extensions.product_subscription")
25
- when "checkout_post_purchase"
26
- context.message("errors.outdated_extensions.checkout_post_purchase")
27
- else
28
- context.message("errors.outdated_extensions.unknown")
29
- end
30
- end
31
-
32
- def parse_package
33
- File.open(Pathname(project.directory).join("package.json")) do |file|
34
- Models::NpmPackage.parse(file)
35
- end
36
- end
37
-
38
- def valid?(package)
39
- case type
40
- when "checkout_ui_extension", "product_subscription", "checkout_post_purchase"
41
- package.dev_dependency?("@shopify/shopify-cli-extensions") &&
42
- package.script?("build") &&
43
- package.script?("develop")
44
- else
45
- true
46
- end
47
- end
48
- end
49
-
50
- def call(*)
51
- return super unless Models::DevelopmentServerRequirements.supported?(type)
52
- OutdatedCheck.call(type: type, context: context).then { super }
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- module ExecuteCommands
7
- class Serve < Base
8
- prepend OutdatedExtensionDetection
9
-
10
- property! :config_file_path, accepts: String
11
- property :port, accepts: Integer, default: ShopifyCLI::Constants::Extension::DEFAULT_PORT
12
- property :resource_url, accepts: String
13
- property! :tunnel_url, accepts: String
14
-
15
- def call
16
- ShopifyCLI::Result
17
- .call(&method(:merge_server_config))
18
- .then { |server_config| Models::DevelopmentServer.new.serve(context, server_config) }
19
- end
20
-
21
- private
22
-
23
- def merge_server_config
24
- Tasks::MergeServerConfig.call(
25
- context: context,
26
- file_path: config_file_path,
27
- port: port,
28
- resource_url: resource_url,
29
- tunnel_url: tunnel_url,
30
- type: type
31
- )
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,106 +0,0 @@
1
- module Extension
2
- module Tasks
3
- class FindNpmPackages
4
- include ShopifyCLI::MethodObject
5
-
6
- property! :js_system, accepts: ShopifyCLI::JsSystem
7
- property! :production_only, accepts: [true, false], default: false, reader: :production_only?
8
-
9
- def self.at_least_one_of(*package_names, **config)
10
- new(**config).at_least_one_of(*package_names)
11
- end
12
-
13
- def self.all(*package_names, **config)
14
- new(**config).all(*package_names)
15
- end
16
-
17
- def self.exactly_one_of(*package_names, **config)
18
- new(**config).exactly_one_of(*package_names)
19
- end
20
-
21
- def all(*package_names)
22
- call(*package_names) do |found_packages|
23
- found_package_names = found_packages.map(&:name)
24
- next found_packages if Set.new(found_package_names) == Set.new(package_names)
25
- raise PackageResolutionFailed, format(
26
- "Missing packages: %s",
27
- (package_names - found_package_names).join(", ")
28
- )
29
- end
30
- end
31
-
32
- def at_least_one_of(*package_names)
33
- call(*package_names) do |found_packages|
34
- found_package_names = found_packages.map(&:name)
35
- next found_packages unless (found_package_names & package_names).empty?
36
- raise PackageResolutionFailed, format(
37
- "Expected at least one of the following packages: %s",
38
- package_names.join(", ")
39
- )
40
- end
41
- end
42
-
43
- def exactly_one_of(*package_names)
44
- call(*package_names) do |found_packages|
45
- case found_packages.count
46
- when 0
47
- raise PackageResolutionFailed, format(
48
- "Expected one of the following packages: %s",
49
- package_names.join(", ")
50
- )
51
- when 1
52
- found_packages.first.tap do |found_package|
53
- next found_package if package_names.include?(found_package.name)
54
- raise PackageResolutionFailed, format(
55
- "Expected the following package: %s",
56
- found_package.name
57
- )
58
- end
59
- else
60
- raise PackageResolutionFailed, "Found more than one package"
61
- end
62
- end
63
- end
64
-
65
- def call(*package_names, &validate)
66
- validate ||= ->(found_packages) { found_packages }
67
-
68
- unless package_names.all? { |name| name.is_a?(String) }
69
- raise ArgumentError, "Expected a list of package names"
70
- end
71
-
72
- ShopifyCLI::Result
73
- .call(&method(:list_packages))
74
- .then(&method(:search_packages).curry[package_names])
75
- .then(&method(:filter_duplicates))
76
- .then(&validate)
77
- end
78
-
79
- def list_packages
80
- result, error, status =
81
- js_system.call(yarn: yarn_list, npm: npm_list, capture_response: true)
82
- raise error unless status.success?
83
- result
84
- end
85
-
86
- def yarn_list
87
- production_only? ? %w[list --production --depth=0] : %w[list]
88
- end
89
-
90
- def npm_list
91
- production_only? ? %w[list --prod --depth=0] : %w[list]
92
- end
93
-
94
- def search_packages(packages, package_list)
95
- pattern = /(#{packages.join("|")})@(\d.*)$/
96
- package_list.scan(pattern).map do |(name, version)|
97
- Models::NpmPackage.new(name: name, version: version.strip)
98
- end
99
- end
100
-
101
- def filter_duplicates(packages)
102
- packages.reject { |p| p.version.match(/deduped/) }.uniq
103
- end
104
- end
105
- end
106
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
- require "json"
3
-
4
- module Extension
5
- module Tasks
6
- class FindPackageFromJson < ShopifyCLI::Task
7
- include SmartProperties
8
-
9
- property! :context, accepts: ShopifyCLI::Context
10
-
11
- def self.call(package_name, **config)
12
- new(**config).call(package_name)
13
- end
14
-
15
- def call(package_name)
16
- ShopifyCLI::Result.success(resolve_package_json(package_name))
17
- .then { |file| File.read(file) }
18
- .then { |file| JSON.parse(file) }
19
- .then { |file| file.dig("version") }
20
- .then { |version| return Models::NpmPackage.new(name: package_name, version: version) }
21
- .unwrap do |error|
22
- context.debug(error)
23
- context.abort(context.message("errors.module_not_found", package_name))
24
- end
25
- end
26
-
27
- private
28
-
29
- def resolve_package_json(package_name)
30
- path = "path.join(require.resolve('#{package_name}'), '../package.json')"
31
- package_json, error, _ = CLI::Kit::System.capture3("node", "-p", path)
32
- return error unless !error.nil?
33
- package_json.chomp
34
- end
35
- end
36
- end
37
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class GetApp < ShopifyCLI::Task
7
- GRAPHQL_FILE = "get_app_by_api_key"
8
-
9
- RESPONSE_FIELD = %w(data)
10
- APP_FIELD = "app"
11
-
12
- def call(context:, api_key:)
13
- input = { api_key: api_key }
14
-
15
- response = ShopifyCLI::PartnersAPI.query(context, GRAPHQL_FILE, **input).dig(*RESPONSE_FIELD)
16
- context.abort(context.message("tasks.errors.parse_error")) if response.nil?
17
-
18
- Converters::AppConverter.from_hash(response.dig(APP_FIELD))
19
- end
20
- end
21
- end
22
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class GetApps < ShopifyCLI::Task
7
- def call(context:)
8
- org_id = ShopifyCLI::DB.get(:organization_id)
9
- return [] unless org_id
10
-
11
- organization = ShopifyCLI::PartnersAPI::Organizations.fetch_with_apps(context, id: org_id)
12
- apps_owned_by_organization(organization)
13
- end
14
-
15
- private
16
-
17
- def apps_owned_by_organization(organization)
18
- return [] unless organization&.dig("apps")
19
-
20
- organization["apps"].map do |app|
21
- Converters::AppConverter.from_hash(app, organization)
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class GetExtensions < ShopifyCLI::Task
7
- def call(context:, type:)
8
- org_id = ShopifyCLI::DB.get(:organization_id)
9
- return [] unless org_id
10
-
11
- organization = ShopifyCLI::PartnersAPI::Organizations.fetch_with_extensions(context, type, id: org_id)
12
- return [] unless organization_with_apps?(organization)
13
- extensions_owned_by_organization(organization, context: context)
14
- end
15
-
16
- private
17
-
18
- def extensions_owned_by_organization(organization, context:)
19
- organization["apps"].flat_map do |app|
20
- registrations = app["extensionRegistrations"] || []
21
- registrations.map do |registration|
22
- [Converters::AppConverter.from_hash(app, organization),
23
- Converters::RegistrationConverter.from_hash(context, registration)]
24
- end
25
- end
26
- end
27
-
28
- def organization_with_apps?(organization)
29
- organization&.key?("apps") && organization["apps"].any?
30
- end
31
- end
32
- end
33
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class GetProduct < ShopifyCLI::Task
7
- API_VERSION = "2021-07"
8
- GRAPHQL_FILE = "get_variant_id"
9
-
10
- def call(context, shop)
11
- response = ShopifyCLI::AdminAPI.query(
12
- context,
13
- GRAPHQL_FILE,
14
- shop: shop,
15
- api_version: API_VERSION
16
- )
17
- context.abort(context.message("tasks.errors.store_error")) if response.nil?
18
- Converters::ProductConverter.from_hash(response)
19
- end
20
- end
21
- end
22
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
- require "pathname"
4
-
5
- module Extension
6
- module Tasks
7
- class MergeServerConfig
8
- include SmartProperties
9
-
10
- property! :context, accepts: ShopifyCLI::Context
11
- property! :file_path, accepts: ->(path) { Pathname(path).yield_self(&:absolute?) }
12
- property! :port, accepts: Integer, default: ShopifyCLI::Constants::Extension::DEFAULT_PORT
13
- property :resource_url, accepts: String
14
- property :tunnel_url, accepts: String
15
- property! :type, accepts: Models::DevelopmentServerRequirements::SUPPORTED_EXTENSION_TYPES
16
-
17
- def self.call(*args)
18
- new(*args).call
19
- end
20
-
21
- def call
22
- config = YAML.load_file(file_path) if File.file?(file_path)
23
- config ||= {}
24
-
25
- project = ExtensionProject.current
26
- Tasks::ConvertServerConfig.call(
27
- api_key: project.env.api_key,
28
- context: context,
29
- hash: config,
30
- registration_uuid: project.registration_uuid,
31
- resource_url: resource_url || project.resource_url,
32
- store: project.env.shop || "",
33
- title: project.title,
34
- tunnel_url: tunnel_url,
35
- type: type,
36
- port: port,
37
- metafields: config["metafields"]
38
- )
39
- rescue Psych::SyntaxError => e
40
- raise(
41
- ShopifyCLI::Abort,
42
- ShopifyCLI::Context.message("core.yaml.error.invalid", file_name, e.message)
43
- )
44
- end
45
- end
46
- end
47
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- class UpdateDraft < ShopifyCLI::Task
7
- include UserErrors
8
-
9
- GRAPHQL_FILE = "extension_update_draft"
10
-
11
- RESPONSE_FIELD = %w(data extensionUpdateDraft)
12
- VERSION_FIELD = "extensionVersion"
13
-
14
- def call(context:, api_key:, registration_id:, config:, extension_context:)
15
- input = {
16
- api_key: api_key,
17
- registration_id: registration_id,
18
- config: JSON.generate(config),
19
- extension_context: extension_context,
20
- }
21
- response = ShopifyCLI::PartnersAPI.query(context, GRAPHQL_FILE, **input).dig(*RESPONSE_FIELD)
22
- context.abort(context.message("tasks.errors.parse_error")) if response.nil?
23
-
24
- abort_if_user_errors(context, response)
25
- Converters::VersionConverter.from_hash(context, response.dig(VERSION_FIELD))
26
- end
27
- end
28
- end
29
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Extension
5
- module Tasks
6
- module UserErrors
7
- USER_ERRORS_FIELD = "userErrors"
8
- MESSAGE_FIELD = "message"
9
- USER_ERRORS_PARSE_ERROR = "Unable to parse errors from server."
10
-
11
- def abort_if_user_errors(context, response)
12
- return if response.nil?
13
-
14
- user_errors = response.dig(USER_ERRORS_FIELD)
15
- output_all_user_errors(context, user_errors)
16
- end
17
-
18
- private
19
-
20
- def output_all_user_errors(context, user_errors)
21
- return if user_errors.nil? || user_errors.empty?
22
- last_user_error = user_errors.pop
23
-
24
- user_errors.each { |user_error| puts_user_error(context, user_error) }
25
- abort_user_error(context, last_user_error)
26
- end
27
-
28
- def puts_user_error(context, user_error)
29
- output_user_error(context, user_error) { |message| context.puts("{{x}} #{message}") }
30
- end
31
-
32
- def abort_user_error(context, user_error)
33
- output_user_error(context, user_error) { |message| context.abort(message) }
34
- end
35
-
36
- def output_user_error(context, user_error)
37
- if user_error.key?(MESSAGE_FIELD)
38
- yield(user_error[MESSAGE_FIELD])
39
- else
40
- context.abort(USER_ERRORS_PARSE_ERROR)
41
- end
42
- end
43
- end
44
- end
45
- end