@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.
- package/assets/cli-ruby/Gemfile +0 -1
- package/assets/cli-ruby/Rakefile +0 -76
- package/assets/cli-ruby/lib/project_types/extension/cli.rb +5 -86
- package/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -3
- package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
- package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
- package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
- package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
- package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +9 -1
- package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
- package/assets/cli-ruby/test/test_helpers.rb +0 -2
- package/dist/private/node/ui/components/ConcurrentOutput.js.map +1 -1
- package/dist/private/node/ui/components/ConcurrentOutput.test.js +2 -2
- package/dist/private/node/ui/components/ConcurrentOutput.test.js.map +1 -1
- package/dist/private/node/ui/components/List.d.ts +2 -0
- package/dist/private/node/ui/components/List.js +5 -4
- package/dist/private/node/ui/components/List.js.map +1 -1
- package/dist/private/node/ui/components/Prompts/InfoTable.d.ts +10 -2
- package/dist/private/node/ui/components/Prompts/InfoTable.js +12 -8
- package/dist/private/node/ui/components/Prompts/InfoTable.js.map +1 -1
- package/dist/public/common/string.js +62 -0
- package/dist/public/common/string.js.map +1 -1
- package/dist/public/common/version.d.ts +1 -1
- package/dist/public/common/version.js +1 -1
- package/dist/public/common/version.js.map +1 -1
- package/dist/public/node/cli.d.ts +1 -0
- package/dist/public/node/cli.js +15 -1
- package/dist/public/node/cli.js.map +1 -1
- package/dist/public/node/fs.d.ts +7 -2
- package/dist/public/node/fs.js +4 -3
- package/dist/public/node/fs.js.map +1 -1
- package/dist/public/node/output.d.ts +3 -1
- package/dist/public/node/output.js +10 -2
- package/dist/public/node/output.js.map +1 -1
- package/dist/public/node/ui.d.ts +3 -2
- package/dist/public/node/ui.js +1 -1
- package/dist/public/node/ui.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
- package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
- package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
- package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
- package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
- package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
- package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
- package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
- package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
- package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
- package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
- package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
- package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
- package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
- package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
- package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
- package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
- package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
- package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
- package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
- package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
- package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
- package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
- package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
- package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
- package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
- package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
- package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
- package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
- package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
- package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
- package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
- package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
- package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
- package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
- package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
- package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
- package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
- package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
- package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
- package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
- package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
- package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
- package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
- package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
- package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
- package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
- package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
- package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
- package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
- package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
- package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
- package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
- package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
- package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
- package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
- package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
- package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
- package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
- package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
- package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
- package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
- package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
- package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
- package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
- package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
- package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
- package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
- package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
- 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
|