@shopify/cli-kit 3.45.0-pre.5 → 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 (184) 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/api.rb +2 -3
  6. package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
  7. package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
  8. package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
  9. package/assets/cli-ruby/lib/shopify_cli/context.rb +4 -2
  10. package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
  11. package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
  12. package/assets/cli-ruby/lib/shopify_cli/messages/messages.rb +1 -1
  13. package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +15 -2
  14. package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
  15. package/assets/cli-ruby/test/test_helpers.rb +0 -2
  16. package/dist/private/node/api/graphql.d.ts +5 -10
  17. package/dist/private/node/api/graphql.js +4 -16
  18. package/dist/private/node/api/graphql.js.map +1 -1
  19. package/dist/private/node/conf-store.d.ts +2 -1
  20. package/dist/private/node/conf-store.js +3 -2
  21. package/dist/private/node/conf-store.js.map +1 -1
  22. package/dist/private/node/session.d.ts +2 -2
  23. package/dist/private/node/session.js +4 -4
  24. package/dist/private/node/session.js.map +1 -1
  25. package/dist/private/node/ui/components/SelectPrompt.js +1 -1
  26. package/dist/private/node/ui/components/SelectPrompt.js.map +1 -1
  27. package/dist/private/node/ui/components/SelectPrompt.test.js +16 -0
  28. package/dist/private/node/ui/components/SelectPrompt.test.js.map +1 -1
  29. package/dist/public/common/version.d.ts +1 -1
  30. package/dist/public/common/version.js +1 -1
  31. package/dist/public/common/version.js.map +1 -1
  32. package/dist/public/node/api/admin.d.ts +1 -1
  33. package/dist/public/node/api/admin.js +10 -3
  34. package/dist/public/node/api/admin.js.map +1 -1
  35. package/dist/public/node/api/graphql.d.ts +27 -0
  36. package/dist/public/node/api/graphql.js +26 -0
  37. package/dist/public/node/api/graphql.js.map +1 -0
  38. package/dist/public/node/api/partners.d.ts +1 -1
  39. package/dist/public/node/api/partners.js +9 -2
  40. package/dist/public/node/api/partners.js.map +1 -1
  41. package/dist/public/node/crypto.d.ts +7 -0
  42. package/dist/public/node/crypto.js +9 -0
  43. package/dist/public/node/crypto.js.map +1 -1
  44. package/dist/public/node/environment.d.ts +12 -0
  45. package/dist/public/node/environment.js +17 -0
  46. package/dist/public/node/environment.js.map +1 -1
  47. package/dist/public/node/git.d.ts +15 -0
  48. package/dist/public/node/git.js +23 -0
  49. package/dist/public/node/git.js.map +1 -1
  50. package/dist/public/node/hooks/deprecations.js +1 -1
  51. package/dist/public/node/hooks/deprecations.js.map +1 -1
  52. package/dist/public/node/ruby.d.ts +7 -0
  53. package/dist/public/node/ruby.js +29 -8
  54. package/dist/public/node/ruby.js.map +1 -1
  55. package/dist/public/node/session.d.ts +2 -2
  56. package/dist/public/node/session.js +4 -4
  57. package/dist/public/node/session.js.map +1 -1
  58. package/dist/public/node/ui.d.ts +2 -1
  59. package/dist/public/node/ui.js +2 -1
  60. package/dist/public/node/ui.js.map +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +1 -1
  63. package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
  64. package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
  65. package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
  66. package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
  67. package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
  68. package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
  69. package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
  70. package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
  71. package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
  72. package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
  73. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
  74. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
  75. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
  76. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
  77. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
  78. package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
  79. package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
  80. package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
  81. package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
  82. package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
  83. package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
  84. package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
  85. package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
  86. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
  87. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
  88. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
  89. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
  90. package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
  91. package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
  92. package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
  93. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
  94. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
  95. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
  96. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
  97. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
  98. package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
  99. package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
  100. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
  101. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
  102. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
  103. package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
  104. package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
  105. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
  106. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
  107. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
  108. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
  109. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
  110. package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
  111. package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
  112. package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
  113. package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
  114. package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
  115. package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
  116. package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
  117. package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
  118. package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
  119. package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
  120. package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
  121. package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
  122. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
  123. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
  124. package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
  125. package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
  126. package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
  127. package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
  128. package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
  129. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
  130. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
  131. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
  132. package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
  133. package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
  134. package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
  135. package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
  136. package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
  137. package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
  138. package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
  139. package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
  140. package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
  141. package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
  142. package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
  143. package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
  144. package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
  145. package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
  146. package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
  147. package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
  148. package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
  149. package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
  150. package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
  151. package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
  152. package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
  153. package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
  154. package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
  155. package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
  156. package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
  157. package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
  158. package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
  159. package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
  160. package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
  161. package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
  162. package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
  163. package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
  164. package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
  165. package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
  166. package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
  167. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
  168. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
  169. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
  170. package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
  171. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
  172. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
  173. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
  174. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
  175. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
  176. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
  177. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
  178. package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
  179. package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
  180. package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
  181. package/assets/cli-ruby/lib/shopify_cli/tunnel.rb +0 -255
  182. package/dist/public/node/api/oxygen.d.ts +0 -22
  183. package/dist/public/node/api/oxygen.js +0 -40
  184. package/dist/public/node/api/oxygen.js.map +0 -1
@@ -17,7 +17,6 @@ group :development, :test do
17
17
  gem "rubocop-rake", require: false
18
18
  gem "iniparse", "~> 1.5"
19
19
  gem "colorize", "~> 0.8.1"
20
- gem "octokit", "~> 4.0"
21
20
  gem "bundler", ">= 2.3.11"
22
21
  gem "rake", "~> 12.3", ">= 12.3.3"
23
22
  gem "minitest", "~> 5.0"
@@ -57,16 +57,12 @@ namespace :rdoc do
57
57
  "lib/shopify_cli/context.rb",
58
58
  "lib/shopify_cli/db.rb",
59
59
  "lib/shopify_cli/git.rb",
60
- "lib/shopify_cli/heroku.rb",
61
- "lib/shopify_cli/js_deps.rb",
62
60
  "lib/shopify_cli/lazy_delegator.rb",
63
61
  "lib/shopify_cli/method_object.rb",
64
62
  "lib/shopify_cli/partners_api.rb",
65
- "lib/shopify_cli/process_supervision.rb",
66
63
  "lib/shopify_cli/project.rb",
67
64
  "lib/shopify_cli/result.rb",
68
65
  "lib/shopify_cli/transform_data_structure.rb",
69
- "lib/shopify_cli/tunnel.rb",
70
66
  ]
71
67
 
72
68
  task all: [:markdown, :wiki, :cleanup]
@@ -105,78 +101,6 @@ end
105
101
  desc("Generate markdown documentation and update the wiki")
106
102
  task(rdoc: "rdoc:all")
107
103
 
108
- namespace :package do
109
- require "shopify_cli/packager"
110
-
111
- task all: [:debian, :rpm, :homebrew]
112
-
113
- desc("Builds a Debian package of the CLI")
114
- task :debian do
115
- ShopifyCLI::Packager.new.build_debian
116
- end
117
-
118
- desc("Builds an RPM package of the CLI")
119
- task :rpm do
120
- ShopifyCLI::Packager.new.build_rpm
121
- end
122
-
123
- desc("Builds a Homebrew package of the CLI")
124
- task :homebrew do
125
- ShopifyCLI::Packager.new.build_homebrew
126
- end
127
- end
128
-
129
- desc("Builds all distribution packages of the CLI")
130
- task(package: "package:all")
131
-
132
- namespace :changelog do
133
- require "shopify_cli/changelog"
134
-
135
- task :update do
136
- ShopifyCLI::Changelog.new.update!
137
- end
138
- end
139
-
140
- namespace :release do
141
- require "shopify_cli/release"
142
-
143
- task :prepare, [:new_version] do |_t, args|
144
- new_version = args[:new_version]
145
- unless new_version
146
- raise <<~NO_NEW_VERSION
147
- New version must be provided, e.g.:
148
-
149
- $ GITHUB_ACCESS_TOKEN=abcdef rake "release:prepare[1.2.3]"
150
-
151
- NO_NEW_VERSION
152
- end
153
- github_access_token = ENV["GITHUB_ACCESS_TOKEN"]
154
- unless github_access_token
155
- raise <<~NO_GITHUB_ACCESS_TOKEN
156
- GitHub access token must be provided, e.g.:
157
-
158
- $ GITHUB_ACCESS_TOKEN=abcdef rake "release:prepare[1.2.3]"
159
- NO_GITHUB_ACCESS_TOKEN
160
- end
161
-
162
- ShopifyCLI::Release.new(new_version, github_access_token).prepare!
163
- puts "Completed!"
164
- end
165
-
166
- task :package do
167
- github_access_token = ENV["GITHUB_ACCESS_TOKEN"]
168
- unless github_access_token
169
- raise <<~NO_GITHUB_ACCESS_TOKEN
170
- GitHub access token must be provided, e.g.:
171
-
172
- $ GITHUB_ACCESS_TOKEN=abcdef rake release:package
173
- NO_GITHUB_ACCESS_TOKEN
174
- end
175
- ShopifyCLI::Release.new(ShopifyCLI::VERSION, github_access_token).package!
176
- puts "Completed!"
177
- end
178
- end
179
-
180
104
  namespace :extensions do
181
105
  task :update do
182
106
  version = ENV.fetch("VERSION").strip
@@ -19,90 +19,27 @@ module Extension
19
19
  class Command < ShopifyCLI::Command::ProjectCommand
20
20
  autoload :ExtensionCommand, Project.project_filepath("commands/extension_command")
21
21
 
22
- subcommand :Create, "create", Project.project_filepath("commands/create")
23
- subcommand :Register, "register", Project.project_filepath("commands/register")
24
- subcommand :Info, "info", Project.project_filepath("commands/info")
25
- subcommand :Connect, "connect", Project.project_filepath("commands/connect")
26
- subcommand :Build, "build", Project.project_filepath("commands/build")
27
22
  subcommand :Serve, "serve", Project.project_filepath("commands/serve")
28
- subcommand :Push, "push", Project.project_filepath("commands/push")
29
- subcommand :Tunnel, "tunnel", Project.project_filepath("commands/tunnel")
30
- subcommand :Check, "check", Project.project_filepath("commands/check")
31
23
  end
32
24
  ShopifyCLI::Commands.register("Extension::Command", "extension")
33
25
 
34
26
  module Tasks
35
- autoload :UserErrors, Project.project_filepath("tasks/user_errors")
36
- autoload :GetApps, Project.project_filepath("tasks/get_apps")
37
- autoload :GetApp, Project.project_filepath("tasks/get_app")
38
- autoload :CreateExtension, Project.project_filepath("tasks/create_extension")
39
- autoload :UpdateDraft, Project.project_filepath("tasks/update_draft")
40
- autoload :FetchSpecifications, Project.project_filepath("tasks/fetch_specifications")
41
27
  autoload :ConfigureFeatures, Project.project_filepath("tasks/configure_features")
42
28
  autoload :ConfigureOptions, Project.project_filepath("tasks/configure_options")
43
- autoload :ChooseNextAvailablePort, Project.project_filepath("tasks/choose_next_available_port")
44
- autoload :FindNpmPackages, Project.project_filepath("tasks/find_npm_packages")
45
- autoload :GetExtensions, Project.project_filepath("tasks/get_extensions")
46
- autoload :GetProduct, Project.project_filepath("tasks/get_product")
47
- autoload :MergeServerConfig, Project.project_filepath("tasks/merge_server_config")
48
- autoload :FindPackageFromJson, Project.project_filepath("tasks/find_package_from_json.rb")
49
- autoload :EnsureResourceUrl, Project.project_filepath("tasks/ensure_resource_url.rb")
50
- autoload :ConvertServerConfig, Project.project_filepath("tasks/convert_server_config")
29
+ autoload :FetchSpecifications, Project.project_filepath("tasks/fetch_specifications")
51
30
 
52
31
  module Converters
53
- autoload :RegistrationConverter, Project.project_filepath("tasks/converters/registration_converter")
54
32
  autoload :VersionConverter, Project.project_filepath("tasks/converters/version_converter")
55
33
  autoload :ValidationErrorConverter, Project.project_filepath("tasks/converters/validation_error_converter")
56
- autoload :AppConverter, Project.project_filepath("tasks/converters/app_converter")
57
- autoload :ProductConverter, Project.project_filepath("tasks/converters/product_converter")
58
- autoload :ExecuteCommands, Project.project_filepath("cli/execute_commands")
59
- end
60
-
61
- module ExecuteCommands
62
- autoload :Base, Project.project_filepath("tasks/execute_commands/base")
63
- autoload :Build, Project.project_filepath("tasks/execute_commands/build")
64
- autoload :Create, Project.project_filepath("tasks/execute_commands/create")
65
- autoload :Serve, Project.project_filepath("tasks/execute_commands/serve")
66
- autoload :OutdatedExtensionDetection,
67
- Project.project_filepath("tasks/execute_commands/outdated_extension_detection")
68
-
69
- class << self
70
- def build(*args)
71
- Build.new(*args).call
72
- end
73
-
74
- def create(*args)
75
- Create.new(*args).call
76
- end
77
-
78
- def serve(*args)
79
- Serve.new(*args).call
80
- end
81
- end
82
- end
83
- end
84
-
85
- module Forms
86
- module Questions
87
- autoload :AskApp, Project.project_filepath("forms/questions/ask_app")
88
- autoload :AskName, Project.project_filepath("forms/questions/ask_name")
89
- autoload :AskTemplate, Project.project_filepath("forms/questions/ask_template")
90
- autoload :AskType, Project.project_filepath("forms/questions/ask_type")
91
- autoload :AskRegistration, Project.project_filepath("forms/questions/ask_registration")
92
34
  end
93
-
94
- autoload :Create, Project.project_filepath("forms/create")
95
- autoload :Register, Project.project_filepath("forms/register")
96
- autoload :Connect, Project.project_filepath("forms/connect")
97
35
  end
98
36
 
99
37
  module Features
100
38
  module Runtimes
101
- autoload :Admin, Project.project_filepath("features/runtimes/admin")
102
39
  autoload :Base, Project.project_filepath("features/runtimes/base")
103
- autoload :CheckoutPostPurchase, Project.project_filepath("features/runtimes/checkout_post_purchase")
104
40
  autoload :CheckoutUiExtension, Project.project_filepath("features/runtimes/checkout_ui_extension")
105
41
  end
42
+
106
43
  autoload :ArgoServe, Project.project_filepath("features/argo_serve")
107
44
  autoload :ArgoServeOptions, Project.project_filepath("features/argo_serve_options")
108
45
  autoload :ArgoSetup, Project.project_filepath("features/argo_setup")
@@ -119,30 +56,12 @@ module Extension
119
56
  autoload :Default, Project.project_filepath("models/specification_handlers/default")
120
57
  end
121
58
 
122
- module ServerConfig
123
- autoload :Base, Project.project_filepath("models/server_config/base")
124
- autoload :App, Project.project_filepath("models/server_config/app")
125
- autoload :Capabilities, Project.project_filepath("models/server_config/capabilities")
126
- autoload :Development, Project.project_filepath("models/server_config/development")
127
- autoload :DevelopmentEntries, Project.project_filepath("models/server_config/development_entries")
128
- autoload :DevelopmentRenderer, Project.project_filepath("models/server_config/development_renderer")
129
- autoload :DevelopmentResource, Project.project_filepath("models/server_config/development_resource")
130
- autoload :Extension, Project.project_filepath("models/server_config/extension")
131
- autoload :Root, Project.project_filepath("models/server_config/root")
132
- autoload :User, Project.project_filepath("models/server_config/user")
133
- end
134
-
135
59
  autoload :App, Project.project_filepath("models/app")
136
- autoload :Registration, Project.project_filepath("models/registration")
137
- autoload :Version, Project.project_filepath("models/version")
138
- autoload :ValidationError, Project.project_filepath("models/validation_error")
60
+ autoload :LazySpecificationHandler, Project.project_filepath("models/lazy_specification_handler")
139
61
  autoload :Specification, Project.project_filepath("models/specification")
140
62
  autoload :Specifications, Project.project_filepath("models/specifications")
141
- autoload :LazySpecificationHandler, Project.project_filepath("models/lazy_specification_handler")
142
- autoload :NpmPackage, Project.project_filepath("models/npm_package")
143
- autoload :Product, Project.project_filepath("models/product")
144
- autoload :DevelopmentServer, Project.project_filepath("models/development_server")
145
- autoload :DevelopmentServerRequirements, Project.project_filepath("models/development_server_requirements")
63
+ autoload :ValidationError, Project.project_filepath("models/validation_error")
64
+ autoload :Version, Project.project_filepath("models/version")
146
65
  end
147
66
 
148
67
  autoload :ExtensionProjectKeys, Project.project_filepath("extension_project_keys")
@@ -6,9 +6,6 @@ module ShopifyCLI
6
6
  # these concerns are taken care of.
7
7
  #
8
8
  class AdminAPI < API
9
- autoload :PopulateResourceCommand, "shopify_cli/admin_api/populate_resource_command"
10
- autoload :Schema, "shopify_cli/admin_api/schema"
11
-
12
9
  class << self
13
10
  ##
14
11
  # issues a graphql query or mutation to the Shopify Admin API. It loads a graphql
@@ -55,7 +55,6 @@ module ShopifyCLI
55
55
  # we delay this require so as to avoid a performance hit on starting the CLI
56
56
  require "shopify_cli/http_request"
57
57
  headers = default_headers.merge(headers)
58
- ctx.debug("#{method} #{uri} with X-Request-Id: #{headers["X-Request-Id"]}")
59
58
  response = if method == "POST"
60
59
  HttpRequest.post(uri, body, headers)
61
60
  elsif method == "PUT"
@@ -65,6 +64,7 @@ module ShopifyCLI
65
64
  elsif method == "DELETE"
66
65
  HttpRequest.delete(uri, body, headers)
67
66
  end
67
+ ctx.debug("#{method} #{uri} with request_id: #{response["x-request-id"]}")
68
68
  case response.code.to_i
69
69
  when 200..399
70
70
  [response.code.to_i, JSON.parse(response.body), response]
@@ -84,7 +84,7 @@ module ShopifyCLI
84
84
  raise APIRequestUnexpectedError.new("#{response.code}\n#{response.body}", response: response)
85
85
  end
86
86
  rescue Errno::ETIMEDOUT, Timeout::Error
87
- ctx.debug("timeout in #{method} #{uri} with X-Request-Id: #{headers["X-Request-Id"]}")
87
+ ctx.debug("timeout in #{method} #{uri}")
88
88
  raise APIRequestTimeoutError, "Timeout"
89
89
  end.retry_after(APIRequestRetriableError, retries: 3) do |e|
90
90
  sleep(1) if e.is_a?(APIRequestThrottledError)
@@ -117,7 +117,6 @@ module ShopifyCLI
117
117
  "User-Agent" => user_agent,
118
118
  "Sec-CH-UA" => sec_ch_ua,
119
119
  "Sec-CH-UA-PLATFORM" => ctx.os.to_s,
120
- "X-Request-Id" => SecureRandom.uuid,
121
120
  }.tap do |headers|
122
121
  headers["X-Shopify-Cli-Employee"] = "1" if Shopifolk.acting_as_shopify_organization?
123
122
  end.merge(auth_headers(token))
@@ -5,10 +5,9 @@ module ShopifyCLI
5
5
  class Command
6
6
  class SubCommand < Command
7
7
  class << self
8
- def call(args, command_name, parent_command)
8
+ def call(args, command_name, _parent_command)
9
9
  cmd = new(@ctx)
10
10
  args = cmd.options.parse(@_options, args || [])
11
- return call_help(parent_command, command_name) if cmd.options.help
12
11
  check_ruby_version
13
12
  check_node_version
14
13
  run_prerequisites
@@ -5,7 +5,6 @@ require "semantic/semantic"
5
5
  module ShopifyCLI
6
6
  class Command < CLI::Kit::BaseCommand
7
7
  autoload :SubCommand, "shopify_cli/command/sub_command"
8
- autoload :AppSubCommand, "shopify_cli/command/app_sub_command"
9
8
  autoload :ProjectCommand, "shopify_cli/command/project_command"
10
9
 
11
10
  VersionRange = Struct.new(:from, :to, keyword_init: true)
@@ -28,7 +27,6 @@ module ShopifyCLI
28
27
  else
29
28
  cmd = new(@ctx)
30
29
  cmd.options.parse(@_options, args)
31
- return call_help(command_name) if cmd.options.help
32
30
  check_ruby_version
33
31
  check_node_version
34
32
  run_prerequisites
@@ -149,11 +147,6 @@ module ShopifyCLI
149
147
  @task_registry || ShopifyCLI::Tasks::Registry
150
148
  end
151
149
 
152
- def call_help(*cmds)
153
- help = Commands::Help.new(@ctx)
154
- help.call(cmds, nil)
155
- end
156
-
157
150
  class PrerequisiteTask
158
151
  attr_reader :name, :args
159
152
 
@@ -17,20 +17,5 @@ module ShopifyCLI
17
17
  def self.core_command?(cmd)
18
18
  @core_commands.include?(cmd)
19
19
  end
20
-
21
- register :Config, "config", "shopify_cli/commands/config", true
22
- register :Help, "help", "shopify_cli/commands/help", true
23
- register :Login, "login", "shopify_cli/commands/login", true
24
- register :Logout, "logout", "shopify_cli/commands/logout", true
25
- register :Populate, "populate", "shopify_cli/commands/populate", true
26
- register :Reporting, "reporting", "shopify_cli/commands/reporting", true
27
- register :Store, "store", "shopify_cli/commands/store", true
28
- register :Switch, "switch", "shopify_cli/commands/switch", true
29
- register :System, "system", "shopify_cli/commands/system", true
30
- register :Version, "version", "shopify_cli/commands/version", true
31
- register :Whoami, "whoami", "shopify_cli/commands/whoami", true
32
- register :App, "app", "shopify_cli/commands/app", true
33
-
34
- autoload :Connect, "shopify_cli/commands/connect"
35
20
  end
36
21
  end
@@ -47,12 +47,14 @@ module ShopifyCLI
47
47
  str ? str % params : key
48
48
  end
49
49
 
50
- # a wrapper around Kernel.puts to allow for easy formatting
50
+ # a wrapper around $stdout.puts to allow for easy formatting
51
51
  #
52
52
  # #### Parameters
53
53
  # * `text` - a string message to output
54
54
  def puts(*args)
55
- Kernel.puts(CLI::UI.fmt(*args))
55
+ $stdout.puts(CLI::UI.fmt(*args)).tap do
56
+ $stdout.flush
57
+ end
56
58
  end
57
59
 
58
60
  # aborts the current running command and outputs an error message:
@@ -2,7 +2,6 @@ module ShopifyCLI
2
2
  module Core
3
3
  autoload :EntryPoint, "shopify_cli/core/entry_point"
4
4
  autoload :Executor, "shopify_cli/core/executor"
5
- autoload :HelpResolver, "shopify_cli/core/help_resolver"
6
5
  autoload :Monorail, "shopify_cli/core/monorail"
7
6
  autoload :CliVersion, "shopify_cli/core/cli_version"
8
7
  end
@@ -12,7 +12,6 @@ module ShopifyCLI
12
12
  class IdentityAuth
13
13
  include SmartProperties
14
14
 
15
- autoload :Servlet, "shopify_cli/identity_auth/servlet"
16
15
  autoload :EnvAuthToken, "shopify_cli/identity_auth/env_auth_token"
17
16
 
18
17
  class Error < StandardError; end
@@ -485,7 +485,7 @@ module ShopifyCLI
485
485
  error: {
486
486
  timeout: "Timed out while waiting for response from Shopify",
487
487
  local_identity_not_running: "Identity needs to be running locally in order to proceed.",
488
- reauthenticate: "Please login again with {{command:shopify login}}",
488
+ reauthenticate: "Please login again",
489
489
  invalid_destination: "The store %s doesn't exist. Please log out and try again.",
490
490
  },
491
491
 
@@ -28,7 +28,12 @@ module ShopifyCLI
28
28
  SESSION_COOKIE_NAME = "_secure_session_id"
29
29
  SESSION_COOKIE_REGEXP = /#{SESSION_COOKIE_NAME}=(\h+)/
30
30
  SESSION_COOKIE_MAX_AGE = 60 * 60 * 23 # 1 day - leeway of 1h
31
- IGNORED_ENDPOINTS = ["shopify/monorail", "mini-profiler-resources", "web-pixels-manager"]
31
+ IGNORED_ENDPOINTS = %w[
32
+ shopify/monorail
33
+ mini-profiler-resources
34
+ web-pixels-manager
35
+ wpm
36
+ ]
32
37
 
33
38
  def initialize(ctx, theme, param_builder)
34
39
  @ctx = ctx
@@ -205,7 +210,7 @@ module ShopifyCLI
205
210
  def request(method, path, headers: nil, query: [], form_data: nil, body_stream: nil)
206
211
  uri = URI.join("https://#{shop}", path)
207
212
 
208
- if Environment.theme_access_password?
213
+ if proxy_via_theme_access_app?(path)
209
214
  headers = headers ? headers.slice("ACCEPT", "CONTENT-TYPE", "CONTENT-LENGTH", "Cookie") : {}
210
215
  headers.merge!({
211
216
  "X-Shopify-Access-Token" => Environment.admin_auth_token,
@@ -244,6 +249,14 @@ module ShopifyCLI
244
249
  .with_rack_env(env)
245
250
  .build
246
251
  end
252
+
253
+ def proxy_via_theme_access_app?(path)
254
+ return false unless Environment.theme_access_password?
255
+ return false if path == "/localization"
256
+ return false if path.start_with?("/cart/")
257
+
258
+ true
259
+ end
247
260
  end
248
261
  end
249
262
  end
@@ -84,7 +84,7 @@ module ShopifyCLI
84
84
  autocall(:Logger) { CLI::Kit::Logger.new(debug_log_file: ShopifyCLI.debug_log_file) }
85
85
  # ShopifyCLI::Resolver
86
86
  autocall(:Resolver) do
87
- ShopifyCLI::Core::HelpResolver.new(
87
+ CLI::Kit::Resolver.new(
88
88
  tool_name: TOOL_NAME,
89
89
  command_registry: ShopifyCLI::Commands::Registry
90
90
  )
@@ -99,11 +99,8 @@ module ShopifyCLI
99
99
 
100
100
  autoload :AdminAPI, "shopify_cli/admin_api"
101
101
  autoload :API, "shopify_cli/api"
102
- autoload :AppTypeDetector, "shopify_cli/app_type_detector"
103
102
  autoload :Command, "shopify_cli/command"
104
- autoload :CommandOptions, "shopify_cli/command_options"
105
103
  autoload :Commands, "shopify_cli/commands"
106
- autoload :Connect, "shopify_cli/connect"
107
104
  autoload :Constants, "shopify_cli/constants"
108
105
  autoload :Context, "shopify_cli/context"
109
106
  autoload :Core, "shopify_cli/core"
@@ -114,28 +111,22 @@ module ShopifyCLI
114
111
  autoload :Git, "shopify_cli/git"
115
112
  autoload :GitHub, "shopify_cli/github"
116
113
  autoload :Helpers, "shopify_cli/helpers"
117
- autoload :Heroku, "shopify_cli/heroku"
118
114
  autoload :IdentityAuth, "shopify_cli/identity_auth"
119
- autoload :JsDeps, "shopify_cli/js_deps"
120
115
  autoload :JsSystem, "shopify_cli/js_system"
121
116
  autoload :LazyDelegator, "shopify_cli/lazy_delegator"
122
117
  autoload :MethodObject, "shopify_cli/method_object"
123
118
  autoload :Options, "shopify_cli/options"
124
119
  autoload :PartnersAPI, "shopify_cli/partners_api"
125
- autoload :PHPDeps, "shopify_cli/php_deps"
126
- autoload :ProcessSupervision, "shopify_cli/process_supervision"
127
120
  autoload :Project, "shopify_cli/project"
128
121
  autoload :ProjectType, "shopify_cli/project_type"
129
122
  autoload :ReportingConfigurationController, "shopify_cli/reporting_configuration_controller"
130
123
  autoload :ResolveConstant, "shopify_cli/resolve_constant"
131
124
  autoload :Resources, "shopify_cli/resources"
132
125
  autoload :Result, "shopify_cli/result"
133
- autoload :Services, "shopify_cli/services"
134
126
  autoload :Shopifolk, "shopify_cli/shopifolk"
135
127
  autoload :Task, "shopify_cli/task"
136
128
  autoload :Tasks, "shopify_cli/tasks"
137
129
  autoload :TransformDataStructure, "shopify_cli/transform_data_structure"
138
- autoload :Tunnel, "shopify_cli/tunnel"
139
130
  autoload :Utilities, "shopify_cli/utilities"
140
131
 
141
132
  require "shopify_cli/messages/messages"
@@ -8,10 +8,8 @@ module TestHelpers
8
8
  autoload :FakeFS, "test_helpers/fake_fs"
9
9
  autoload :FakeProject, "test_helpers/fake_project"
10
10
  autoload :FakeUI, "test_helpers/fake_ui"
11
- autoload :Heroku, "test_helpers/heroku"
12
11
  autoload :Partners, "test_helpers/partners"
13
12
  autoload :Project, "test_helpers/project"
14
- autoload :Schema, "test_helpers/schema"
15
13
  autoload :Shopifolk, "test_helpers/shopifolk"
16
14
  autoload :Singleton, "test_helpers/singleton"
17
15
  autoload :TemporaryDirectory, "test_helpers/temporary_directory"
@@ -1,10 +1,5 @@
1
- import { rawRequest, RequestDocument, Variables } from 'graphql-request';
2
- export interface GraphQLVariables {
3
- [key: string]: any;
4
- }
5
- export type GraphQLResponse<T> = Awaited<ReturnType<typeof rawRequest<T>>>;
6
- export interface GraphQLResponseOptions<T> {
7
- handleErrors?: boolean;
8
- onResponse?: (response: GraphQLResponse<T>) => void;
9
- }
10
- export declare function graphqlRequest<T>(query: RequestDocument, api: string, url: string, token: string, variables?: Variables, options?: GraphQLResponseOptions<T>): Promise<T>;
1
+ import { RequestDocument, Variables } from 'graphql-request';
2
+ export declare function debugLogRequestInfo<T>(api: string, query: RequestDocument, variables?: Variables, headers?: {
3
+ [key: string]: string;
4
+ }): void;
5
+ export declare function errorHandler<T>(api: string): (error: unknown) => Error | unknown;
@@ -1,20 +1,8 @@
1
- import { buildHeaders, httpsAgent, RequestClientError, sanitizedHeadersOutput } from './headers.js';
1
+ import { RequestClientError, sanitizedHeadersOutput } from './headers.js';
2
2
  import { stringifyMessage, outputContent, outputToken, outputDebug } from '../../../public/node/output.js';
3
3
  import { AbortError } from '../../../public/node/error.js';
4
- import { debugLogResponseInfo } from '../api.js';
5
- import { ClientError, GraphQLClient } from 'graphql-request';
6
- export async function graphqlRequest(query, api, url, token, variables, options) {
7
- const headers = buildHeaders(token);
8
- debugLogRequestInfo(api, query, variables, headers);
9
- const clientOptions = { agent: await httpsAgent(), headers };
10
- const client = new GraphQLClient(url, clientOptions);
11
- const response = await debugLogResponseInfo({ request: client.rawRequest(query, variables), url }, options?.handleErrors === false ? undefined : errorHandler(api));
12
- if (options?.onResponse) {
13
- options.onResponse(response);
14
- }
15
- return response.data;
16
- }
17
- function debugLogRequestInfo(api, query, variables, headers = {}) {
4
+ import { ClientError } from 'graphql-request';
5
+ export function debugLogRequestInfo(api, query, variables, headers = {}) {
18
6
  outputDebug(outputContent `Sending ${outputToken.json(api)} GraphQL request:
19
7
  ${outputToken.raw(query.toString().trim())}
20
8
  ${variables ? `\nWith variables:\n${JSON.stringify(variables, null, 2)}\n` : ''}
@@ -22,7 +10,7 @@ With request headers:
22
10
  ${sanitizedHeadersOutput(headers)}
23
11
  `);
24
12
  }
25
- function errorHandler(api) {
13
+ export function errorHandler(api) {
26
14
  return (error) => {
27
15
  if (error instanceof ClientError) {
28
16
  const errorMessage = stringifyMessage(outputContent `
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../../src/private/node/api/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AACjG,OAAO,EAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAA;AACxG,OAAO,EAAC,UAAU,EAAC,MAAM,+BAA+B,CAAA;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAC,WAAW,EAAE,aAAa,EAAyC,MAAM,iBAAiB,CAAA;AAclG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAsB,EACtB,GAAW,EACX,GAAW,EACX,KAAa,EACb,SAAqB,EACrB,OAAmC;IAEnC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACnC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,EAAC,KAAK,EAAE,MAAM,UAAU,EAAE,EAAE,OAAO,EAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CACzC,EAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAI,KAAe,EAAE,SAAS,CAAC,EAAE,GAAG,EAAC,EAChE,OAAO,EAAE,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAChE,CAAA;IAED,IAAI,OAAO,EAAE,UAAU,EAAE;QACvB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;KAC7B;IAED,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAW,EACX,KAAsB,EACtB,SAAqB,EACrB,UAAmC,EAAE;IAErC,WAAW,CAAC,aAAa,CAAA,WAAW,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IACvD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;EAC1C,SAAS,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;EAE7E,sBAAsB,CAAC,OAAO,CAAC;CAChC,CAAC,CAAA;AACF,CAAC;AAED,SAAS,YAAY,CAAI,GAAW;IAClC,OAAO,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAA;QACjD,WAAW,CAAC,GAAG,CACnB,GAAG,CACJ,8DAA8D,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;;IAEvF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;OACpC,CAAC,CAAA;YACF,IAAI,WAAkB,CAAA;YACtB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC/B,WAAW,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;aAC1E;iBAAM;gBACL,WAAW,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAA;aAC3C;YACD,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC/B,OAAO,WAAW,CAAA;SACnB;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,CAAA;AACH,CAAC","sourcesContent":["import {buildHeaders, httpsAgent, RequestClientError, sanitizedHeadersOutput} from './headers.js'\nimport {stringifyMessage, outputContent, outputToken, outputDebug} from '../../../public/node/output.js'\nimport {AbortError} from '../../../public/node/error.js'\nimport {debugLogResponseInfo} from '../api.js'\nimport {ClientError, GraphQLClient, rawRequest, RequestDocument, Variables} from 'graphql-request'\n\nexport interface GraphQLVariables {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n}\n\nexport type GraphQLResponse<T> = Awaited<ReturnType<typeof rawRequest<T>>>\n\nexport interface GraphQLResponseOptions<T> {\n handleErrors?: boolean\n onResponse?: (response: GraphQLResponse<T>) => void\n}\n\nexport async function graphqlRequest<T>(\n query: RequestDocument,\n api: string,\n url: string,\n token: string,\n variables?: Variables,\n options?: GraphQLResponseOptions<T>,\n): Promise<T> {\n const headers = buildHeaders(token)\n debugLogRequestInfo(api, query, variables, headers)\n const clientOptions = {agent: await httpsAgent(), headers}\n const client = new GraphQLClient(url, clientOptions)\n const response = await debugLogResponseInfo(\n {request: client.rawRequest<T>(query as string, variables), url},\n options?.handleErrors === false ? undefined : errorHandler(api),\n )\n\n if (options?.onResponse) {\n options.onResponse(response)\n }\n\n return response.data\n}\n\nfunction debugLogRequestInfo<T>(\n api: string,\n query: RequestDocument,\n variables?: Variables,\n headers: {[key: string]: string} = {},\n) {\n outputDebug(outputContent`Sending ${outputToken.json(api)} GraphQL request:\n ${outputToken.raw(query.toString().trim())}\n${variables ? `\\nWith variables:\\n${JSON.stringify(variables, null, 2)}\\n` : ''}\nWith request headers:\n${sanitizedHeadersOutput(headers)}\n`)\n}\n\nfunction errorHandler<T>(api: string): (error: unknown) => Error | unknown {\n return (error: unknown) => {\n if (error instanceof ClientError) {\n const errorMessage = stringifyMessage(outputContent`\n The ${outputToken.raw(\n api,\n )} GraphQL API responded unsuccessfully with the HTTP status ${`${error.response.status}`} and errors:\n\n ${outputToken.json(error.response.errors)}\n `)\n let mappedError: Error\n if (error.response.status < 500) {\n mappedError = new RequestClientError(errorMessage, error.response.status)\n } else {\n mappedError = new AbortError(errorMessage)\n }\n mappedError.stack = error.stack\n return mappedError\n } else {\n return error\n }\n }\n}\n"]}
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../../src/private/node/api/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AACvE,OAAO,EAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAA;AACxG,OAAO,EAAC,UAAU,EAAC,MAAM,+BAA+B,CAAA;AACxD,OAAO,EAAC,WAAW,EAA6B,MAAM,iBAAiB,CAAA;AAEvE,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,KAAsB,EACtB,SAAqB,EACrB,UAAmC,EAAE;IAErC,WAAW,CAAC,aAAa,CAAA,WAAW,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IACvD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;EAC1C,SAAS,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;EAE7E,sBAAsB,CAAC,OAAO,CAAC;CAChC,CAAC,CAAA;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,GAAW;IACzC,OAAO,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAA;QACjD,WAAW,CAAC,GAAG,CACnB,GAAG,CACJ,8DAA8D,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;;IAEvF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;OACpC,CAAC,CAAA;YACF,IAAI,WAAkB,CAAA;YACtB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;gBAC/B,WAAW,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;aAC1E;iBAAM;gBACL,WAAW,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAA;aAC3C;YACD,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC/B,OAAO,WAAW,CAAA;SACnB;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,CAAA;AACH,CAAC","sourcesContent":["import {RequestClientError, sanitizedHeadersOutput} from './headers.js'\nimport {stringifyMessage, outputContent, outputToken, outputDebug} from '../../../public/node/output.js'\nimport {AbortError} from '../../../public/node/error.js'\nimport {ClientError, RequestDocument, Variables} from 'graphql-request'\n\nexport function debugLogRequestInfo<T>(\n api: string,\n query: RequestDocument,\n variables?: Variables,\n headers: {[key: string]: string} = {},\n) {\n outputDebug(outputContent`Sending ${outputToken.json(api)} GraphQL request:\n ${outputToken.raw(query.toString().trim())}\n${variables ? `\\nWith variables:\\n${JSON.stringify(variables, null, 2)}\\n` : ''}\nWith request headers:\n${sanitizedHeadersOutput(headers)}\n`)\n}\n\nexport function errorHandler<T>(api: string): (error: unknown) => Error | unknown {\n return (error: unknown) => {\n if (error instanceof ClientError) {\n const errorMessage = stringifyMessage(outputContent`\n The ${outputToken.raw(\n api,\n )} GraphQL API responded unsuccessfully with the HTTP status ${`${error.response.status}`} and errors:\n\n ${outputToken.json(error.response.errors)}\n `)\n let mappedError: Error\n if (error.response.status < 500) {\n mappedError = new RequestClientError(errorMessage, error.response.status)\n } else {\n mappedError = new AbortError(errorMessage)\n }\n mappedError.stack = error.stack\n return mappedError\n } else {\n return error\n }\n }\n}\n"]}
@@ -33,7 +33,8 @@ type CacheValueForKey<TKey extends keyof Cache> = NonNullable<Cache[TKey]>['valu
33
33
  * before returning it.
34
34
  * @param key - The key to use for the cache.
35
35
  * @param fn - The function to run to get the value to cache, if a cache miss occurs.
36
- * @param timeout - The maximum valid age of a cached value, in milliseconds. If the cached value is older than this, it will be refreshed.
36
+ * @param timeout - The maximum valid age of a cached value, in milliseconds.
37
+ * If the cached value is older than this, it will be refreshed.
37
38
  * @returns The value from the cache or the result of the function.
38
39
  */
39
40
  export declare function cacheRetrieveOrRepopulate(key: keyof Cache, fn: () => Promise<CacheValueForKey<typeof key>>, timeout?: number, config?: LocalStorage<ConfSchema>): Promise<CacheValueForKey<typeof key>>;
@@ -42,13 +42,14 @@ export function removeSession(config = cliKitStore()) {
42
42
  * before returning it.
43
43
  * @param key - The key to use for the cache.
44
44
  * @param fn - The function to run to get the value to cache, if a cache miss occurs.
45
- * @param timeout - The maximum valid age of a cached value, in milliseconds. If the cached value is older than this, it will be refreshed.
45
+ * @param timeout - The maximum valid age of a cached value, in milliseconds.
46
+ * If the cached value is older than this, it will be refreshed.
46
47
  * @returns The value from the cache or the result of the function.
47
48
  */
48
49
  export async function cacheRetrieveOrRepopulate(key, fn, timeout, config = cliKitStore()) {
49
50
  const cache = config.get('cache') || {};
50
51
  const cached = cache[key];
51
- if (cached && (timeout === undefined || Date.now() - cached.timestamp < timeout)) {
52
+ if (cached?.value !== undefined && (timeout === undefined || Date.now() - cached.timestamp < timeout)) {
52
53
  return cached.value;
53
54
  }
54
55
  const value = await fn();
@@ -1 +1 @@
1
- {"version":3,"file":"conf-store.js","sourceRoot":"","sources":["../../../src/private/node/conf-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAkBvE,IAAI,SAA+C,CAAA;AAEnD;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,YAAY,CAAa,EAAC,WAAW,EAAE,iBAAiB,EAAC,CAAC,CAAA;KAC3E;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,SAAmC,WAAW,EAAE;IACzE,WAAW,CAAC,aAAa,CAAA,0BAA0B,CAAC,CAAA;IACpD,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,SAAmC,WAAW,EAAE;IAC1F,WAAW,CAAC,aAAa,CAAA,0BAA0B,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAmC,WAAW,EAAE;IAC5E,WAAW,CAAC,aAAa,CAAA,2BAA2B,CAAC,CAAA;IACrD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/B,CAAC;AAGD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAgB,EAChB,EAA+C,EAC/C,OAAgB,EAChB,MAAM,GAAG,WAAW,EAAE;IAEtB,MAAM,KAAK,GAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEzB,IAAI,MAAM,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE;QAChF,OAAO,MAAM,CAAC,KAAK,CAAA;KACpB;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAA;IACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAA;IAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1B,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["import {LocalStorage} from '../../public/node/local-storage.js'\nimport {outputContent, outputDebug} from '@shopify/cli-kit/node/output'\n\ninterface CacheValue<T> {\n value: T\n timestamp: number\n}\n\nexport type IntrospectionUrlKey = `identity-introspection-url-${string}`\n\ninterface Cache {\n [introspectionUrlKey: IntrospectionUrlKey]: CacheValue<string>\n}\n\nexport interface ConfSchema {\n sessionStore: string\n cache?: Cache\n}\n\nlet _instance: LocalStorage<ConfSchema> | undefined\n\n/**\n * CLIKIT Store.\n *\n * @returns CLIKitStore.\n */\nfunction cliKitStore() {\n if (!_instance) {\n _instance = new LocalStorage<ConfSchema>({projectName: 'shopify-cli-kit'})\n }\n return _instance\n}\n\n/**\n * Get session.\n *\n * @returns Session.\n */\nexport function getSession(config: LocalStorage<ConfSchema> = cliKitStore()): string | undefined {\n outputDebug(outputContent`Getting session store...`)\n return config.get('sessionStore')\n}\n\n/**\n * Set session.\n *\n * @param session - Session.\n */\nexport function setSession(session: string, config: LocalStorage<ConfSchema> = cliKitStore()): void {\n outputDebug(outputContent`Setting session store...`)\n config.set('sessionStore', session)\n}\n\n/**\n * Remove session.\n */\nexport function removeSession(config: LocalStorage<ConfSchema> = cliKitStore()): void {\n outputDebug(outputContent`Removing session store...`)\n config.delete('sessionStore')\n}\n\ntype CacheValueForKey<TKey extends keyof Cache> = NonNullable<Cache[TKey]>['value']\n/**\n * Fetch from cache, or run the provided function to get the value, and cache it\n * before returning it.\n * @param key - The key to use for the cache.\n * @param fn - The function to run to get the value to cache, if a cache miss occurs.\n * @param timeout - The maximum valid age of a cached value, in milliseconds. If the cached value is older than this, it will be refreshed.\n * @returns The value from the cache or the result of the function.\n */\nexport async function cacheRetrieveOrRepopulate(\n key: keyof Cache,\n fn: () => Promise<CacheValueForKey<typeof key>>,\n timeout?: number,\n config = cliKitStore(),\n): Promise<CacheValueForKey<typeof key>> {\n const cache: Cache = config.get('cache') || {}\n const cached = cache[key]\n\n if (cached && (timeout === undefined || Date.now() - cached.timestamp < timeout)) {\n return cached.value\n }\n\n const value = await fn()\n cache[key] = {value, timestamp: Date.now()}\n config.set('cache', cache)\n return value\n}\n"]}
1
+ {"version":3,"file":"conf-store.js","sourceRoot":"","sources":["../../../src/private/node/conf-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,8BAA8B,CAAA;AAkBvE,IAAI,SAA+C,CAAA;AAEnD;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,YAAY,CAAa,EAAC,WAAW,EAAE,iBAAiB,EAAC,CAAC,CAAA;KAC3E;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,SAAmC,WAAW,EAAE;IACzE,WAAW,CAAC,aAAa,CAAA,0BAA0B,CAAC,CAAA;IACpD,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,SAAmC,WAAW,EAAE;IAC1F,WAAW,CAAC,aAAa,CAAA,0BAA0B,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAmC,WAAW,EAAE;IAC5E,WAAW,CAAC,aAAa,CAAA,2BAA2B,CAAC,CAAA;IACrD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/B,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAgB,EAChB,EAA+C,EAC/C,OAAgB,EAChB,MAAM,GAAG,WAAW,EAAE;IAEtB,MAAM,KAAK,GAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAEzB,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE;QACrG,OAAO,MAAM,CAAC,KAAK,CAAA;KACpB;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAA;IACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAA;IAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1B,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["import {LocalStorage} from '../../public/node/local-storage.js'\nimport {outputContent, outputDebug} from '@shopify/cli-kit/node/output'\n\ninterface CacheValue<T> {\n value: T\n timestamp: number\n}\n\nexport type IntrospectionUrlKey = `identity-introspection-url-${string}`\n\ninterface Cache {\n [introspectionUrlKey: IntrospectionUrlKey]: CacheValue<string>\n}\n\nexport interface ConfSchema {\n sessionStore: string\n cache?: Cache\n}\n\nlet _instance: LocalStorage<ConfSchema> | undefined\n\n/**\n * CLIKIT Store.\n *\n * @returns CLIKitStore.\n */\nfunction cliKitStore() {\n if (!_instance) {\n _instance = new LocalStorage<ConfSchema>({projectName: 'shopify-cli-kit'})\n }\n return _instance\n}\n\n/**\n * Get session.\n *\n * @returns Session.\n */\nexport function getSession(config: LocalStorage<ConfSchema> = cliKitStore()): string | undefined {\n outputDebug(outputContent`Getting session store...`)\n return config.get('sessionStore')\n}\n\n/**\n * Set session.\n *\n * @param session - Session.\n */\nexport function setSession(session: string, config: LocalStorage<ConfSchema> = cliKitStore()): void {\n outputDebug(outputContent`Setting session store...`)\n config.set('sessionStore', session)\n}\n\n/**\n * Remove session.\n */\nexport function removeSession(config: LocalStorage<ConfSchema> = cliKitStore()): void {\n outputDebug(outputContent`Removing session store...`)\n config.delete('sessionStore')\n}\n\ntype CacheValueForKey<TKey extends keyof Cache> = NonNullable<Cache[TKey]>['value']\n/**\n * Fetch from cache, or run the provided function to get the value, and cache it\n * before returning it.\n * @param key - The key to use for the cache.\n * @param fn - The function to run to get the value to cache, if a cache miss occurs.\n * @param timeout - The maximum valid age of a cached value, in milliseconds.\n * If the cached value is older than this, it will be refreshed.\n * @returns The value from the cache or the result of the function.\n */\nexport async function cacheRetrieveOrRepopulate(\n key: keyof Cache,\n fn: () => Promise<CacheValueForKey<typeof key>>,\n timeout?: number,\n config = cliKitStore(),\n): Promise<CacheValueForKey<typeof key>> {\n const cache: Cache = config.get('cache') || {}\n const cached = cache[key]\n\n if (cached?.value !== undefined && (timeout === undefined || Date.now() - cached.timestamp < timeout)) {\n return cached.value\n }\n\n const value = await fn()\n cache[key] = {value, timestamp: Date.now()}\n config.set('cache', cache)\n return value\n}\n"]}
@@ -48,9 +48,9 @@ export interface OAuthSession {
48
48
  * This method ensures that we have a valid session to authenticate against the given applications using the provided scopes.
49
49
  *
50
50
  * @param applications - An object containing the applications we need to be authenticated with.
51
- * @param env - Optional environment variables to use.
51
+ * @param _env - Optional environment variables to use.
52
52
  * @param forceRefresh - Optional flag to force a refresh of the token.
53
53
  * @returns An instance with the access tokens organized by application.
54
54
  */
55
- export declare function ensureAuthenticated(applications: OAuthApplications, env?: NodeJS.ProcessEnv, forceRefresh?: boolean): Promise<OAuthSession>;
55
+ export declare function ensureAuthenticated(applications: OAuthApplications, _env?: NodeJS.ProcessEnv, forceRefresh?: boolean): Promise<OAuthSession>;
56
56
  export {};