shopify-cli 2.16.1 → 2.18.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/Gemfile.lock +3 -3
- data/ext/shopify-extensions/version +1 -1
- data/lib/project_types/extension/cli.rb +1 -0
- data/lib/project_types/extension/commands/build.rb +0 -2
- data/lib/project_types/extension/commands/serve.rb +8 -3
- data/lib/project_types/extension/features/argo_serve.rb +1 -1
- data/lib/project_types/extension/forms/questions/ask_template.rb +3 -3
- data/lib/project_types/extension/messages/messages.rb +16 -0
- data/lib/project_types/extension/models/development_server_requirements.rb +1 -1
- data/lib/project_types/extension/models/server_config/capabilities.rb +11 -0
- data/lib/project_types/extension/models/server_config/development.rb +9 -0
- data/lib/project_types/extension/models/server_config/development_renderer.rb +2 -0
- data/lib/project_types/extension/models/server_config/extension.rb +10 -3
- data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/{beacon_extension.rb → web_pixel_extension.rb} +11 -10
- data/lib/project_types/extension/models/specification_handlers/{beacon_extension_utils → web_pixel_extension_utils}/script_config.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/{beacon_extension_utils → web_pixel_extension_utils}/script_config_repository.rb +2 -2
- data/lib/project_types/extension/tasks/configure_options.rb +1 -1
- data/lib/project_types/extension/tasks/convert_server_config.rb +8 -4
- data/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +5 -1
- data/lib/project_types/extension/tasks/merge_server_config.rb +4 -2
- data/lib/project_types/script/cli.rb +1 -0
- data/lib/project_types/script/config/extension_points.yml +20 -18
- data/lib/project_types/script/graphql/app_script_set.graphql +2 -0
- data/lib/project_types/script/layers/application/push_script.rb +1 -0
- data/lib/project_types/script/layers/domain/app_bridge.rb +16 -0
- data/lib/project_types/script/layers/domain/script_project.rb +1 -0
- data/lib/project_types/script/layers/infrastructure/errors.rb +11 -0
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +15 -1
- data/lib/project_types/script/layers/infrastructure/script_service.rb +9 -0
- data/lib/project_types/script/messages/messages.rb +4 -1
- data/lib/project_types/script/ui/error_handler.rb +8 -0
- data/lib/project_types/theme/commands/delete.rb +1 -0
- data/lib/project_types/theme/commands/open.rb +6 -1
- data/lib/project_types/theme/commands/publish.rb +1 -0
- data/lib/project_types/theme/commands/serve.rb +28 -0
- data/lib/project_types/theme/forms/select.rb +4 -1
- data/lib/project_types/theme/messages/messages.rb +33 -3
- data/lib/shopify_cli/admin_api.rb +1 -1
- data/lib/shopify_cli/commands/login.rb +2 -2
- data/lib/shopify_cli/context.rb +1 -1
- data/lib/shopify_cli/core/monorail.rb +1 -1
- data/lib/shopify_cli/git.rb +7 -2
- data/lib/shopify_cli/heroku.rb +5 -3
- data/lib/shopify_cli/messages/messages.rb +1 -1
- data/lib/shopify_cli/release.rb +5 -2
- data/lib/shopify_cli/services/app/create/node_service.rb +1 -1
- data/lib/shopify_cli/services/app/create/php_service.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/hot_reload/sections_index.rb +5 -6
- data/lib/shopify_cli/theme/dev_server/watcher.rb +2 -1
- data/lib/shopify_cli/theme/dev_server.rb +20 -3
- data/lib/shopify_cli/theme/development_theme.rb +11 -1
- data/lib/shopify_cli/theme/file.rb +9 -0
- data/lib/shopify_cli/theme/syncer/forms/select_update_strategy.rb +2 -2
- data/lib/shopify_cli/theme/syncer/json_update_handler.rb +1 -1
- data/lib/shopify_cli/theme/theme_admin_api.rb +3 -1
- data/lib/shopify_cli/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bad168cdd878e04ba4bc934a9caa6bfd19ffba653564734395d0e53a20957a81
|
4
|
+
data.tar.gz: 2f45edbce9f20fe63472a26221a71ef4733ad6e9f951abe86f3b213a869b0cc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14ced1d055b8aa918d0168aa0b91ba8e8a3093a99838868a630866b34af28f4547e55cf208dc6051ee4ef20426b5202badaa5b7ab2ac5c536a9e39030a4d1744
|
7
|
+
data.tar.gz: 37d84adeb8489f6596f2ed9bf1481ecc9060697a88fb10fcd5b59e8c20bf3e021c0502019c43b38fb0ec1e424b06ecd4f377ebb20a5517272a9e46cce2fcc1ff
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,32 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## Version 2.18.0 - 2022-05-30
|
6
|
+
|
7
|
+
### Added
|
8
|
+
* [#2336](https://github.com/Shopify/shopify-cli/pull/2336): Add `--theme/-t` flag support to the `theme serve` command
|
9
|
+
* [#2325](https://github.com/Shopify/shopify-cli/pull/2325): Add `-e/--editor` flag to open theme editor in the `theme open` command
|
10
|
+
* [#2330](https://github.com/Shopify/shopify-cli/pull/2330): Add remote file deleted warning flow to `theme serve --theme-editor-sync`
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
* [#2352](https://github.com/Shopify/shopify-cli/pull/2352): Provide better DX when dealing with empty theme selection
|
14
|
+
* [#2347](https://github.com/Shopify/shopify-cli/pull/2347): Fix #2346 Heroku CLI installation for Apple silicon
|
15
|
+
|
16
|
+
## Version 2.17.0 - 2022-05-12
|
17
|
+
|
18
|
+
### Added
|
19
|
+
* [#2262](https://github.com/Shopify/shopify-cli/pull/2262): Add `capabilities` permissions to checkout extensions config
|
20
|
+
* [#2292](https://github.com/Shopify/shopify-cli/pull/2292): Add support for App Bridge create/details URLs for scripts
|
21
|
+
|
22
|
+
### Fixed
|
23
|
+
* [#2287](https://github.com/Shopify/shopify-cli/pull/2287): Fix `Encoding::UndefinedConversionError` on `theme serve` and `theme pull`
|
24
|
+
* [#2310](https://github.com/Shopify/shopify-cli/pull/2310): Fix live-reload to be resilient and no longer raise an error when a locale file is invalid
|
25
|
+
* [#2297](https://github.com/Shopify/shopify-cli/pull/2297): Only show update message when the new version is higher
|
26
|
+
* [#2270](https://github.com/Shopify/shopify-cli/pull/2270): Use ignore filter regex in watcher class
|
27
|
+
|
28
|
+
### Changed
|
29
|
+
* [#2299](https://github.com/Shopify/shopify-cli/pull/2299): Improve the unauthorized API errors when doing theme development
|
30
|
+
|
5
31
|
## Version 2.16.1 - 2022-04-26
|
6
32
|
|
7
33
|
### Fixed
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify-cli (2.
|
4
|
+
shopify-cli (2.18.1)
|
5
5
|
bugsnag (~> 6.22)
|
6
6
|
listen (~> 3.7.0)
|
7
7
|
theme-check (~> 1.10.1)
|
@@ -101,7 +101,7 @@ GEM
|
|
101
101
|
mocha (1.13.0)
|
102
102
|
multi_test (0.1.2)
|
103
103
|
multipart-post (2.1.1)
|
104
|
-
nokogiri (1.13.
|
104
|
+
nokogiri (1.13.6)
|
105
105
|
mini_portile2 (~> 2.8.0)
|
106
106
|
racc (~> 1.4)
|
107
107
|
octokit (4.22.0)
|
@@ -118,7 +118,7 @@ GEM
|
|
118
118
|
pry (~> 0.13.0)
|
119
119
|
public_suffix (4.0.6)
|
120
120
|
racc (1.6.0)
|
121
|
-
rack (2.2.3)
|
121
|
+
rack (2.2.3.1)
|
122
122
|
rainbow (3.1.1)
|
123
123
|
rake (13.0.6)
|
124
124
|
rb-fsevent (0.11.1)
|
@@ -1 +1 @@
|
|
1
|
-
v0.
|
1
|
+
v0.12.0
|
@@ -122,6 +122,7 @@ module Extension
|
|
122
122
|
module ServerConfig
|
123
123
|
autoload :Base, Project.project_filepath("models/server_config/base")
|
124
124
|
autoload :App, Project.project_filepath("models/server_config/app")
|
125
|
+
autoload :Capabilities, Project.project_filepath("models/server_config/capabilities")
|
125
126
|
autoload :Development, Project.project_filepath("models/server_config/development")
|
126
127
|
autoload :DevelopmentEntries, Project.project_filepath("models/server_config/development_entries")
|
127
128
|
autoload :DevelopmentRenderer, Project.project_filepath("models/server_config/development_renderer")
|
@@ -14,6 +14,9 @@ module Extension
|
|
14
14
|
parser.on("--resourceUrl=RESOURCE_URL", "Provide a resource URL") do |resource_url|
|
15
15
|
flags[:resource_url] = resource_url
|
16
16
|
end
|
17
|
+
parser.on("-p", "--port=PORT", "Specify the port to use") do |port|
|
18
|
+
flags[:port] = port.to_i
|
19
|
+
end
|
17
20
|
end
|
18
21
|
|
19
22
|
class RuntimeConfiguration
|
@@ -22,13 +25,14 @@ module Extension
|
|
22
25
|
property :tunnel_url, accepts: String, default: nil
|
23
26
|
property :resource_url, accepts: String, default: nil
|
24
27
|
property! :tunnel_requested, accepts: [true, false], reader: :tunnel_requested?, default: true
|
25
|
-
property
|
28
|
+
property :port, accepts: (1...(2**16))
|
26
29
|
end
|
27
30
|
|
28
31
|
def call(_args, _command_name)
|
29
32
|
config = RuntimeConfiguration.new(
|
30
33
|
tunnel_requested: tunnel_requested?,
|
31
|
-
resource_url: options.flags[:resource_url]
|
34
|
+
resource_url: options.flags[:resource_url],
|
35
|
+
port: options.flags[:port]
|
32
36
|
)
|
33
37
|
|
34
38
|
ShopifyCLI::Result
|
@@ -51,10 +55,11 @@ module Extension
|
|
51
55
|
end
|
52
56
|
|
53
57
|
def find_available_port(runtime_configuration)
|
58
|
+
return runtime_configuration unless runtime_configuration.port.nil?
|
54
59
|
return runtime_configuration unless specification_handler.choose_port?(@ctx)
|
55
60
|
|
56
61
|
chosen_port = Tasks::ChooseNextAvailablePort
|
57
|
-
.call(from:
|
62
|
+
.call(from: DEFAULT_PORT)
|
58
63
|
.unwrap { |_error| @ctx.abort(@ctx.message("serve.no_available_ports_found")) }
|
59
64
|
runtime_configuration.tap { |c| c.port = chosen_port }
|
60
65
|
end
|
@@ -9,7 +9,7 @@ module Extension
|
|
9
9
|
property! :specification_handler, accepts: Extension::Models::SpecificationHandlers::Default
|
10
10
|
property :argo_runtime, accepts: -> (runtime) { runtime.class < Features::Runtimes::Base }
|
11
11
|
property! :context, accepts: ShopifyCLI::Context
|
12
|
-
property! :port, accepts: Integer
|
12
|
+
property! :port, accepts: Integer
|
13
13
|
property :tunnel_url, accepts: String, default: nil
|
14
14
|
property! :js_system, accepts: ->(jss) { jss.respond_to?(:call) }, default: ShopifyCLI::JsSystem
|
15
15
|
property :resource_url, accepts: String, default: nil
|
@@ -12,7 +12,7 @@ module Extension
|
|
12
12
|
|
13
13
|
def call(project_details)
|
14
14
|
if template_required?(project_details)
|
15
|
-
project_details.template = template || choose_interactively
|
15
|
+
project_details.template = template || choose_interactively(project_details)
|
16
16
|
end
|
17
17
|
project_details
|
18
18
|
end
|
@@ -24,9 +24,9 @@ module Extension
|
|
24
24
|
Models::DevelopmentServerRequirements.supported?(type)
|
25
25
|
end
|
26
26
|
|
27
|
-
def choose_interactively
|
27
|
+
def choose_interactively(project_details)
|
28
28
|
prompt.call(ctx.message("create.ask_template")) do |handler|
|
29
|
-
Models::ServerConfig::Development
|
29
|
+
Models::ServerConfig::Development.find(project_details&.type&.identifier).each do |template|
|
30
30
|
handler.option(template) { template }
|
31
31
|
end
|
32
32
|
end
|
@@ -216,6 +216,22 @@ module Extension
|
|
216
216
|
* Add a develop script: shopify-cli-extensions develop
|
217
217
|
* Change the build script to: shopify-cli-extensions build
|
218
218
|
TEXT
|
219
|
+
product_subscription: <<~TEXT.strip,
|
220
|
+
Please update your package.json as follows:
|
221
|
+
* Replace the development dependency @shopify/admin-ui-extensions-run
|
222
|
+
with @shopify/shopify-cli-extensions
|
223
|
+
* Remove the start and server script
|
224
|
+
* Add a develop script: shopify-cli-extensions develop
|
225
|
+
* Change the build script to: shopify-cli-extensions build
|
226
|
+
TEXT
|
227
|
+
checkout_post_purchase: <<~TEXT.strip,
|
228
|
+
Please update your package.json as follows:
|
229
|
+
* Replace the development dependency @shopify/checkout-ui-extensions-run
|
230
|
+
with @shopify/shopify-cli-extensions
|
231
|
+
* Remove the start and server script
|
232
|
+
* Add a develop script: shopify-cli-extensions develop
|
233
|
+
* Change the build script to: shopify-cli-extensions build
|
234
|
+
TEXT
|
219
235
|
},
|
220
236
|
},
|
221
237
|
warnings: {
|
@@ -18,6 +18,15 @@ module Extension
|
|
18
18
|
property :renderer, accepts: ServerConfig::DevelopmentRenderer
|
19
19
|
property :entries, accepts: ServerConfig::DevelopmentEntries
|
20
20
|
property :resource, accepts: ServerConfig::DevelopmentResource
|
21
|
+
|
22
|
+
def self.find(type)
|
23
|
+
case type.downcase
|
24
|
+
when "web_pixel_extension"
|
25
|
+
["javascript"]
|
26
|
+
else
|
27
|
+
VALID_TEMPLATES
|
28
|
+
end
|
29
|
+
end
|
21
30
|
end
|
22
31
|
end
|
23
32
|
end
|
@@ -26,6 +26,8 @@ module Extension
|
|
26
26
|
new(name: "@shopify/post-purchase-ui-extensions", version: "^0.13.2")
|
27
27
|
when "pos_ui_extension"
|
28
28
|
new(name: "@shopify/retail-ui-extensions", version: "^0.1.0")
|
29
|
+
when "web_pixel_extension"
|
30
|
+
nil
|
29
31
|
else
|
30
32
|
raise ArgumentError, "Unknown extension type: #{type}"
|
31
33
|
end
|
@@ -10,11 +10,14 @@ module Extension
|
|
10
10
|
property! :type, accepts: String
|
11
11
|
property! :user, accepts: ServerConfig::User
|
12
12
|
property! :development, accepts: ServerConfig::Development
|
13
|
+
property :capabilities, accepts: ServerConfig::Capabilities
|
13
14
|
property :extension_points, accepts: Array
|
14
|
-
property :version, accepts: String
|
15
15
|
property :title, accepts: String
|
16
|
+
property :description, accepts: String
|
17
|
+
property :version, accepts: String
|
18
|
+
property :metafields, accepts: Array
|
16
19
|
|
17
|
-
def self.build(uuid: "", template:, type:, root_dir
|
20
|
+
def self.build(uuid: "", template:, type:, root_dir:, **args)
|
18
21
|
renderer = ServerConfig::DevelopmentRenderer.find(type)
|
19
22
|
entry = ServerConfig::DevelopmentEntries.find(template)
|
20
23
|
new(
|
@@ -26,7 +29,11 @@ module Extension
|
|
26
29
|
template: template,
|
27
30
|
renderer: renderer,
|
28
31
|
entries: entry
|
29
|
-
)
|
32
|
+
),
|
33
|
+
capabilities: ServerConfig::Capabilities.new(
|
34
|
+
network_access: false
|
35
|
+
),
|
36
|
+
metafields: args.delete(:metafields)
|
30
37
|
)
|
31
38
|
end
|
32
39
|
|
@@ -15,7 +15,7 @@ module Extension
|
|
15
15
|
(?<region>[a-zA-Z]{2}) # Optional region subtag
|
16
16
|
)?
|
17
17
|
\z}x
|
18
|
-
PERMITTED_CONFIG_KEYS = [:extension_points, :metafields, :name]
|
18
|
+
PERMITTED_CONFIG_KEYS = [:extension_points, :metafields, :name, :capabilities]
|
19
19
|
|
20
20
|
def config(context)
|
21
21
|
{
|
@@ -2,45 +2,46 @@
|
|
2
2
|
require "base64"
|
3
3
|
require "fileutils"
|
4
4
|
require "json"
|
5
|
-
require_relative "
|
6
|
-
require_relative "
|
5
|
+
require_relative "web_pixel_extension_utils/script_config"
|
6
|
+
require_relative "web_pixel_extension_utils/script_config_repository"
|
7
7
|
|
8
8
|
module Extension
|
9
9
|
module Models
|
10
10
|
module SpecificationHandlers
|
11
|
-
class
|
11
|
+
class WebPixelExtension < Default
|
12
12
|
SCRIPT_FILE = "build/main.js"
|
13
13
|
|
14
14
|
def name
|
15
|
-
"
|
15
|
+
"Web Pixel Extension"
|
16
16
|
end
|
17
17
|
|
18
18
|
def read_configuration
|
19
19
|
end
|
20
20
|
|
21
21
|
def access_config_property(context, ext_config, key, &process_value)
|
22
|
-
context.abort(context.message("core.extension.push.
|
22
|
+
context.abort(context.message("core.extension.push.web_pixel_extension.error.missing_config_key_error",
|
23
23
|
key)) unless ext_config.key?(key)
|
24
24
|
|
25
25
|
begin
|
26
26
|
process_value.nil? ? ext_config[key] : process_value.call(ext_config[key])
|
27
27
|
rescue StandardError
|
28
|
-
context.abort(context.message("core.extension.push.
|
28
|
+
context.abort(context.message("core.extension.push.web_pixel_extension.error.invalid_config_value_error",
|
29
|
+
key))
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
32
33
|
def config(context)
|
33
34
|
begin
|
34
|
-
ext_config =
|
35
|
+
ext_config = WebPixelExtensionUtils::ScriptConfigYmlRepository.new(ctx: context).get!.content
|
35
36
|
rescue StandardError
|
36
|
-
context.abort(context.message("core.extension.push.
|
37
|
-
|
37
|
+
context.abort(context.message("core.extension.push.web_pixel_extension.error.file_read_error",
|
38
|
+
WebPixelExtensionUtils::ScriptConfigYmlRepository.filename))
|
38
39
|
end
|
39
40
|
|
40
41
|
begin
|
41
42
|
script_contents = File.read(File.join(context.root, SCRIPT_FILE)).chomp
|
42
43
|
rescue
|
43
|
-
context.abort(context.message("core.extension.push.
|
44
|
+
context.abort(context.message("core.extension.push.web_pixel_extension.error.file_read_error", SCRIPT_FILE))
|
44
45
|
end
|
45
46
|
{
|
46
47
|
runtime_context: access_config_property(context, ext_config, "runtime_context"),
|
@@ -2,7 +2,7 @@ require_relative "script_config"
|
|
2
2
|
module Extension
|
3
3
|
module Models
|
4
4
|
module SpecificationHandlers
|
5
|
-
module
|
5
|
+
module WebPixelExtensionUtils
|
6
6
|
class ScriptConfigRepository
|
7
7
|
include SmartProperties
|
8
8
|
property! :ctx, accepts: ShopifyCLI::Context
|
@@ -27,7 +27,7 @@ module Extension
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def from_h(hash)
|
30
|
-
Extension::Models::SpecificationHandlers::
|
30
|
+
Extension::Models::SpecificationHandlers::WebPixelExtensionUtils::ScriptConfig.new(content: hash,
|
31
31
|
filename: filename)
|
32
32
|
end
|
33
33
|
|
@@ -14,7 +14,7 @@ module Extension
|
|
14
14
|
|
15
15
|
def configure_skip_build(attributes)
|
16
16
|
attributes[:options].merge!(skip_build: attributes[:identifier] == "theme_app_extension" ||
|
17
|
-
attributes[:identifier] == "
|
17
|
+
attributes[:identifier] == "web_pixel_extension")
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -9,13 +9,14 @@ module Extension
|
|
9
9
|
property! :api_key, accepts: String
|
10
10
|
property! :context, accepts: ShopifyCLI::Context
|
11
11
|
property! :hash, accepts: Hash
|
12
|
-
property
|
12
|
+
property! :port, accepts: Integer
|
13
13
|
property! :registration_uuid, accepts: String
|
14
14
|
property :resource_url, accepts: String
|
15
15
|
property! :store, accepts: String
|
16
16
|
property! :title, accepts: String
|
17
17
|
property :tunnel_url, accepts: String
|
18
18
|
property! :type, accepts: String
|
19
|
+
property :metafields, accepts: Array
|
19
20
|
|
20
21
|
DEFAULT_BUILD_DIR = "build"
|
21
22
|
|
@@ -27,10 +28,9 @@ module Extension
|
|
27
28
|
context.abort(context.message("tasks.errors.parse_error")) if hash.nil?
|
28
29
|
|
29
30
|
renderer = Models::ServerConfig::DevelopmentRenderer.find(type)
|
30
|
-
|
31
31
|
extension = Models::ServerConfig::Extension.new(
|
32
32
|
uuid: registration_uuid,
|
33
|
-
type: type
|
33
|
+
type: type,
|
34
34
|
user: Models::ServerConfig::User.new,
|
35
35
|
development: Models::ServerConfig::Development.new(
|
36
36
|
build_dir: hash.dig("development", "build_dir") || DEFAULT_BUILD_DIR,
|
@@ -40,8 +40,12 @@ module Extension
|
|
40
40
|
)
|
41
41
|
),
|
42
42
|
extension_points: hash.dig("extension_points"),
|
43
|
+
capabilities: Models::ServerConfig::Capabilities.new(
|
44
|
+
network_access: hash.dig("capabilities", "network_access") || false
|
45
|
+
),
|
43
46
|
version: renderer ? version(renderer.name, context) : nil,
|
44
|
-
title: title
|
47
|
+
title: title,
|
48
|
+
metafields: metafields
|
45
49
|
)
|
46
50
|
|
47
51
|
unless resource_url.nil?
|
@@ -20,6 +20,10 @@ module Extension
|
|
20
20
|
case type
|
21
21
|
when "checkout_ui_extension"
|
22
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")
|
23
27
|
else
|
24
28
|
context.message("errors.outdated_extensions.unknown")
|
25
29
|
end
|
@@ -33,7 +37,7 @@ module Extension
|
|
33
37
|
|
34
38
|
def valid?(package)
|
35
39
|
case type
|
36
|
-
when "checkout_ui_extension"
|
40
|
+
when "checkout_ui_extension", "product_subscription", "checkout_post_purchase"
|
37
41
|
package.dev_dependency?("@shopify/shopify-cli-extensions") &&
|
38
42
|
package.script?("build") &&
|
39
43
|
package.script?("develop")
|
@@ -9,7 +9,7 @@ module Extension
|
|
9
9
|
|
10
10
|
property! :context, accepts: ShopifyCLI::Context
|
11
11
|
property! :file_path, accepts: ->(path) { Pathname(path).yield_self(&:absolute?) }
|
12
|
-
property
|
12
|
+
property! :port, accepts: Integer, default: ShopifyCLI::Constants::Extension::DEFAULT_PORT
|
13
13
|
property :resource_url, accepts: String
|
14
14
|
property :tunnel_url, accepts: String
|
15
15
|
property! :type, accepts: Models::DevelopmentServerRequirements::SUPPORTED_EXTENSION_TYPES
|
@@ -32,7 +32,9 @@ module Extension
|
|
32
32
|
store: project.env.shop || "",
|
33
33
|
title: project.title,
|
34
34
|
tunnel_url: tunnel_url,
|
35
|
-
type: type
|
35
|
+
type: type,
|
36
|
+
port: port,
|
37
|
+
metafields: config["metafields"]
|
36
38
|
)
|
37
39
|
rescue Psych::SyntaxError => e
|
38
40
|
raise(
|
@@ -50,6 +50,7 @@ module Script
|
|
50
50
|
autoload :ExtensionPoint, Project.project_filepath("layers/domain/extension_point")
|
51
51
|
autoload :ScriptConfig, Project.project_filepath("layers/domain/script_config")
|
52
52
|
autoload :ScriptProject, Project.project_filepath("layers/domain/script_project")
|
53
|
+
autoload :AppBridge, Project.project_filepath("layers/domain/app_bridge")
|
53
54
|
end
|
54
55
|
|
55
56
|
module Infrastructure
|
@@ -9,50 +9,52 @@ payment_methods:
|
|
9
9
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
10
10
|
rust:
|
11
11
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
12
|
-
|
12
|
+
payment_customization:
|
13
|
+
beta: true
|
13
14
|
domain: 'checkout'
|
14
15
|
libraries:
|
15
|
-
typescript:
|
16
|
-
beta: true
|
17
|
-
package: "@shopify/scripts-checkout-apis"
|
18
|
-
repo: "https://github.com/Shopify/scripts-apis-examples"
|
19
16
|
wasm:
|
20
17
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
rust:
|
19
|
+
repo: "https://github.com/Shopify/scripts-apis-examples"
|
20
|
+
shipping_methods:
|
21
|
+
domain: 'checkout'
|
24
22
|
libraries:
|
25
23
|
typescript:
|
26
24
|
beta: true
|
27
|
-
package: "@shopify/scripts-
|
25
|
+
package: "@shopify/scripts-checkout-apis"
|
28
26
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
29
27
|
wasm:
|
30
28
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
31
|
-
|
29
|
+
rust:
|
30
|
+
repo: "https://github.com/Shopify/scripts-apis-examples"
|
31
|
+
product_discounts:
|
32
32
|
beta: true
|
33
33
|
domain: 'discounts'
|
34
34
|
libraries:
|
35
|
-
typescript:
|
36
|
-
beta: true
|
37
|
-
package: "@shopify/scripts-discounts-apis"
|
38
|
-
repo: "https://github.com/Shopify/scripts-apis-examples"
|
39
35
|
wasm:
|
40
36
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
41
|
-
|
37
|
+
rust:
|
38
|
+
repo: "https://github.com/Shopify/scripts-apis-examples"
|
39
|
+
order_discounts:
|
42
40
|
beta: true
|
43
41
|
domain: 'discounts'
|
44
42
|
libraries:
|
45
43
|
wasm:
|
46
44
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
47
|
-
|
45
|
+
rust:
|
46
|
+
repo: "https://github.com/Shopify/scripts-apis-examples"
|
47
|
+
shipping_discounts:
|
48
48
|
beta: true
|
49
49
|
domain: 'discounts'
|
50
50
|
libraries:
|
51
51
|
wasm:
|
52
52
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
53
|
-
|
53
|
+
rust:
|
54
|
+
repo: "https://github.com/Shopify/scripts-apis-examples"
|
55
|
+
shipping_rates_consolidation:
|
54
56
|
beta: true
|
55
|
-
domain: '
|
57
|
+
domain: 'checkout'
|
56
58
|
libraries:
|
57
59
|
wasm:
|
58
60
|
repo: "https://github.com/Shopify/scripts-apis-examples"
|
@@ -12,6 +12,7 @@ mutation AppScriptSet(
|
|
12
12
|
$moduleUploadUrl: String!,
|
13
13
|
$library: LibraryInput,
|
14
14
|
$inputQuery: String,
|
15
|
+
$appBridge: AppBridgeInput!,
|
15
16
|
) {
|
16
17
|
appScriptSet(
|
17
18
|
uuid: $uuid
|
@@ -27,6 +28,7 @@ mutation AppScriptSet(
|
|
27
28
|
moduleUploadUrl: $moduleUploadUrl,
|
28
29
|
library: $library,
|
29
30
|
inputQuery: $inputQuery,
|
31
|
+
appBridge: $appBridge
|
30
32
|
) {
|
31
33
|
userErrors {
|
32
34
|
field
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Script
|
4
|
+
module Layers
|
5
|
+
module Domain
|
6
|
+
class AppBridge
|
7
|
+
attr_reader :create_path, :details_path
|
8
|
+
|
9
|
+
def initialize(create_path:, details_path:)
|
10
|
+
@create_path = create_path
|
11
|
+
@details_path = details_path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -194,6 +194,17 @@ module Script
|
|
194
194
|
messages.join("\n")
|
195
195
|
end
|
196
196
|
end
|
197
|
+
|
198
|
+
class InvalidAppBridgePathError < ScriptProjectError
|
199
|
+
def initialize(path_type)
|
200
|
+
@path_type = path_type
|
201
|
+
super()
|
202
|
+
end
|
203
|
+
|
204
|
+
def path_key
|
205
|
+
"app_bridge_#{@path_type}_path"
|
206
|
+
end
|
207
|
+
end
|
197
208
|
end
|
198
209
|
end
|
199
210
|
end
|