@shopify/cli-kit 3.45.0 → 3.46.0-pre.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 (136) 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/public/common/version.d.ts +1 -1
  14. package/dist/public/common/version.js +1 -1
  15. package/dist/public/common/version.js.map +1 -1
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
  19. package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
  20. package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
  21. package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
  22. package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
  23. package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
  24. package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
  25. package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
  26. package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
  27. package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
  28. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
  29. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
  30. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
  31. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
  32. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
  33. package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
  34. package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
  35. package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
  36. package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
  37. package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
  38. package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
  39. package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
  40. package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
  41. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
  42. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
  43. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
  44. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
  45. package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
  46. package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
  47. package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
  48. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
  49. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
  50. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
  51. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
  52. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
  53. package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
  54. package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
  55. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
  56. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
  57. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
  58. package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
  59. package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
  60. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
  61. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
  62. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
  63. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
  64. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
  65. package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
  66. package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
  67. package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
  68. package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
  69. package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
  70. package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
  71. package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
  72. package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
  73. package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
  74. package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
  75. package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
  76. package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
  77. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
  78. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
  79. package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
  80. package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
  81. package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
  82. package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
  83. package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
  84. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
  85. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
  86. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
  87. package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
  88. package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
  89. package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
  90. package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
  91. package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
  92. package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
  93. package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
  94. package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
  95. package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
  96. package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
  97. package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
  98. package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
  99. package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
  100. package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
  101. package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
  102. package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
  103. package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
  104. package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
  105. package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
  106. package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
  107. package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
  108. package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
  109. package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
  110. package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
  111. package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
  112. package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
  113. package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
  114. package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
  115. package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
  116. package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
  117. package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
  118. package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
  119. package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
  120. package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
  121. package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
  122. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
  123. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
  124. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
  125. package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
  126. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
  127. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
  128. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
  129. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
  130. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
  131. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
  132. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
  133. package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
  134. package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
  135. package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
  136. package/assets/cli-ruby/lib/shopify_cli/tunnel.rb +0 -255
@@ -1,255 +0,0 @@
1
- require "json"
2
- require "fileutils"
3
- require "shopify_cli"
4
- require "forwardable"
5
- require "uri"
6
-
7
- module ShopifyCLI
8
- ##
9
- # Wraps around ngrok functionality to allow you to spawn a ngrok proccess in the
10
- # background and stop the process when you need to. It also allows control over
11
- # the ngrok process between application runs.
12
- class Tunnel
13
- extend SingleForwardable
14
-
15
- def_delegators :new, :start, :stop, :auth, :authenticated?, :stats, :urls, :running_on?
16
-
17
- class FetchUrlError < RuntimeError; end
18
- class NgrokError < RuntimeError; end
19
-
20
- PORT = 8081 # port that ngrok will bind to
21
- # mapping for supported operating systems for where to download ngrok from.
22
- DOWNLOAD_URLS = {
23
- mac: "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-darwin-amd64.zip",
24
- mac_m1: "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-darwin-arm64.zip",
25
- linux: "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip",
26
- windows: "https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-windows-amd64.zip",
27
- }
28
-
29
- NGROK_TUNNELS_URI = URI.parse("http://localhost:4040/api/tunnels")
30
- TUNNELS_FIELD = "tunnels"
31
- TUNNEL_ADDRESS_KEY_PATH = ["config", "addr"]
32
- PUBLIC_URL_FIELD = "public_url"
33
-
34
- ##
35
- # will find and stop a running tunnel process. It will also output if the
36
- # operation was successful or not
37
- #
38
- # #### Paramters
39
- #
40
- # * `ctx` - running context from your command
41
- #
42
- def stop(ctx)
43
- if ShopifyCLI::ProcessSupervision.running?(:ngrok)
44
- if ShopifyCLI::ProcessSupervision.stop(:ngrok)
45
- ctx.puts(ctx.message("core.tunnel.stopped"))
46
- else
47
- ctx.abort(ctx.message("core.tunnel.error.stop"))
48
- end
49
- else
50
- ctx.puts(ctx.message("core.tunnel.not_running"))
51
- end
52
- end
53
-
54
- ##
55
- # start will start a running ngrok process running in the background. It will
56
- # also output the success of this operation
57
- #
58
- # #### Paramters
59
- #
60
- # * `ctx` - running context from your command
61
- # * `port` - port to use to open the ngrok tunnel
62
- #
63
- # #### Returns
64
- #
65
- # * `url` - the url that the tunnel is now bound to and available to the public
66
- #
67
- def start(ctx, port: PORT)
68
- install(ctx)
69
- ctx.abort(ctx.message("core.tunnel.error.signup_required", ShopifyCLI::TOOL_NAME)) unless authenticated?
70
- url, account = start_ngrok(ctx, port)
71
- ctx.puts(ctx.message("core.tunnel.start_with_account", url, account))
72
- url
73
- end
74
-
75
- ##
76
- # will add the users authentication token to our version of ngrok to unlock the
77
- # extended ngrok features
78
- #
79
- # #### Paramters
80
- #
81
- # * `ctx` - running context from your command
82
- # * `token` - authentication token provided by ngrok for extended features
83
- #
84
- def auth(ctx, token)
85
- install(ctx)
86
- ctx.system(ngrok_path(ctx), "authtoken", token)
87
- end
88
-
89
- ##
90
- # returns a boolean: if the user has a ngrok token to authenticate
91
- #
92
- def authenticated?
93
- ngrok_config_path = File.join(Dir.home, ".ngrok2/ngrok.yml")
94
- return false unless File.exist?(ngrok_config_path)
95
- File.read(ngrok_config_path).include?("authtoken")
96
- end
97
-
98
- ##
99
- # will return the statistics of the current running tunnels
100
- #
101
- # #### Returns
102
- #
103
- # * `stats` - the hash of running statistics returning from the ngrok api
104
- #
105
- def stats
106
- response = Net::HTTP.get_response(NGROK_TUNNELS_URI)
107
- JSON.parse(response.body)
108
- rescue
109
- {}
110
- end
111
-
112
- ##
113
- # will return the urls of the current running tunnels
114
- #
115
- # #### Returns
116
- #
117
- # * `stats` - the array of urls
118
- #
119
- def urls
120
- tunnels = stats.dig(TUNNELS_FIELD)
121
- tunnels.map { |tunnel| tunnel.dig(PUBLIC_URL_FIELD) }
122
- rescue
123
- []
124
- end
125
-
126
- ##
127
- # Returns Boolean if a tunnel is running on a given port
128
- #
129
- # #### Parameters
130
- #
131
- # * `port` - port to check
132
- #
133
- # #### Returns
134
- #
135
- # * true / false
136
- #
137
- def running_on?(port)
138
- extract_port = ->(tunnel) { URI(tunnel.dig(*TUNNEL_ADDRESS_KEY_PATH)).port }
139
- matches_port = ->(occupied_port) { occupied_port == port }
140
- stats.fetch(TUNNELS_FIELD, []).map(&extract_port).any?(&matches_port)
141
- rescue
142
- false
143
- end
144
-
145
- private
146
-
147
- def install(ctx)
148
- ngrok = "ngrok#{ctx.executable_file_extension}"
149
- return if File.exist?(ngrok_path(ctx))
150
- check_prereq_command(ctx, "curl")
151
- check_prereq_command(ctx, ctx.linux? ? "unzip" : "tar")
152
- spinner = CLI::UI::SpinGroup.new
153
- spinner.add(ctx.message("core.tunnel.installing")) do
154
- zip_dest = File.join(ShopifyCLI.cache_dir, "ngrok.zip")
155
- unless File.exist?(zip_dest)
156
- ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir: ShopifyCLI.cache_dir)
157
- end
158
- args = if ctx.linux?
159
- %W(unzip -u #{zip_dest})
160
- else
161
- %W(tar -xf #{zip_dest})
162
- end
163
- ctx.system(*args, chdir: ShopifyCLI.cache_dir)
164
- ctx.rm(zip_dest)
165
- end
166
- spinner.wait
167
-
168
- # final check to see if ngrok is accessible
169
- unless File.exist?(ngrok_path(ctx))
170
- ctx.abort(ctx.message("core.tunnel.error.ngrok", ngrok, ShopifyCLI.cache_dir))
171
- end
172
- end
173
-
174
- def fetch_url(ctx, log_path)
175
- LogParser.new(log_path)
176
- rescue NgrokError => e
177
- # Full error messages/descriptions: https://ngrok.com/docs/errors
178
- case e.message
179
- when /ERR_NGROK_107/
180
- ctx.abort(ctx.message("tunnel.invalid_token", e.message))
181
- when /ERR_NGROK_108/
182
- ctx.abort(ctx.message("tunnel.duplicate_session", e.message))
183
- end
184
- raise e.class, e.message
185
- rescue RuntimeError => e
186
- stop(ctx)
187
- raise e.class, e.message
188
- end
189
-
190
- def ngrok_path(ctx)
191
- ngrok = "ngrok#{ctx.executable_file_extension}"
192
- File.join(ShopifyCLI.cache_dir, ngrok)
193
- end
194
-
195
- def seconds_to_hm(seconds)
196
- format("%d hours %d minutes", seconds / 3600, seconds / 60 % 60)
197
- end
198
-
199
- def start_ngrok(ctx, port)
200
- ngrok_command = "\"#{ngrok_path(ctx)}\" http -inspect=false -log=stdout -log-level=debug #{port}"
201
- process = ShopifyCLI::ProcessSupervision.start(:ngrok, ngrok_command)
202
- log = fetch_url(ctx, process.log_path)
203
- [log.url, log.account]
204
- end
205
-
206
- def check_prereq_command(ctx, command)
207
- cmd_path = ctx.which(command)
208
- ctx.abort(ctx.message("core.tunnel.error.prereq_command_required", command)) if cmd_path.nil?
209
- ctx.done(ctx.message("core.tunnel.prereq_command_location", command, cmd_path))
210
- end
211
-
212
- class LogParser # :nodoc:
213
- TIMEOUT = 10
214
-
215
- attr_reader :url, :account
216
-
217
- def initialize(log_path)
218
- @log_path = log_path
219
- counter = 0
220
- while counter < TIMEOUT
221
- parse
222
- return if url
223
- counter += 1
224
- sleep(1)
225
- end
226
-
227
- raise FetchUrlError, Context.message("core.tunnel.error.url_fetch_failure") unless url
228
- end
229
-
230
- def parse
231
- @log = File.read(@log_path)
232
- unless error.empty?
233
- raise NgrokError, error.first
234
- end
235
- parse_account
236
- parse_url
237
- end
238
-
239
- def parse_url
240
- @url, _ = @log.match(/msg="started tunnel".*url=(https:\/\/.+)/)&.captures
241
- end
242
-
243
- def parse_account
244
- account, _ = @log.match(/AccountName:(.*)\s+SessionDuration/)&.captures
245
- @account = account&.empty? ? nil : account
246
- end
247
-
248
- def error
249
- @log.scan(/msg="command failed" err="([^"]+)"/).flatten
250
- end
251
- end
252
-
253
- private_constant :LogParser
254
- end
255
- end