shopify-cli 1.2.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +2 -2
  3. data/.github/CONTRIBUTING.md +9 -1
  4. data/.github/PULL_REQUEST_TEMPLATE.md +9 -1
  5. data/.github/workflows/release.yml +61 -0
  6. data/.github/workflows/triage.yml +22 -0
  7. data/.gitignore +0 -1
  8. data/.rubocop.yml +61 -8
  9. data/.rubocop_todo.yml +11 -0
  10. data/CHANGELOG.md +25 -0
  11. data/Gemfile +3 -2
  12. data/Gemfile.lock +39 -37
  13. data/RELEASING.md +19 -29
  14. data/docs/core/index.md +16 -0
  15. data/lib/project_types/extension/cli.rb +7 -2
  16. data/lib/project_types/extension/commands/register.rb +1 -1
  17. data/lib/project_types/extension/features/argo/admin.rb +20 -0
  18. data/lib/project_types/extension/features/argo/base.rb +129 -0
  19. data/lib/project_types/extension/features/argo/checkout.rb +20 -0
  20. data/lib/project_types/extension/messages/messages.rb +8 -2
  21. data/lib/project_types/extension/models/type.rb +4 -0
  22. data/lib/project_types/extension/models/types/checkout_post_purchase.rb +2 -2
  23. data/lib/project_types/extension/models/types/product_subscription.rb +24 -0
  24. data/lib/project_types/node/cli.rb +4 -1
  25. data/lib/project_types/node/commands/connect.rb +15 -0
  26. data/lib/project_types/node/commands/create.rb +8 -4
  27. data/lib/project_types/node/messages/messages.rb +7 -6
  28. data/lib/project_types/rails/cli.rb +4 -1
  29. data/lib/project_types/rails/commands/connect.rb +15 -0
  30. data/lib/project_types/rails/commands/create.rb +8 -4
  31. data/lib/project_types/rails/messages/messages.rb +7 -4
  32. data/lib/project_types/script/cli.rb +2 -1
  33. data/lib/project_types/script/commands/enable.rb +12 -4
  34. data/lib/project_types/script/config/extension_points.yml +13 -12
  35. data/lib/project_types/script/errors.rb +4 -0
  36. data/lib/project_types/script/layers/application/build_script.rb +12 -16
  37. data/lib/project_types/script/layers/domain/errors.rb +3 -0
  38. data/lib/project_types/script/layers/domain/extension_point.rb +0 -1
  39. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +15 -50
  40. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +28 -7
  41. data/lib/project_types/script/layers/infrastructure/errors.rb +16 -0
  42. data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -12
  43. data/lib/project_types/script/layers/infrastructure/script_service.rb +2 -0
  44. data/lib/project_types/script/messages/messages.rb +23 -5
  45. data/lib/project_types/script/ui/error_handler.rb +31 -6
  46. data/lib/shopify-cli/api.rb +8 -10
  47. data/lib/shopify-cli/commands/config.rb +57 -1
  48. data/lib/shopify-cli/commands/connect.rb +32 -15
  49. data/lib/shopify-cli/commands/system.rb +9 -0
  50. data/lib/shopify-cli/core/entry_point.rb +1 -1
  51. data/lib/shopify-cli/core/monorail.rb +6 -4
  52. data/lib/shopify-cli/http_request.rb +15 -0
  53. data/lib/shopify-cli/js_deps.rb +1 -1
  54. data/lib/shopify-cli/js_system.rb +22 -5
  55. data/lib/shopify-cli/messages/messages.rb +44 -9
  56. data/lib/shopify-cli/partners_api.rb +17 -1
  57. data/lib/shopify-cli/process_supervision.rb +1 -1
  58. data/lib/shopify-cli/project.rb +12 -8
  59. data/lib/shopify-cli/project_type.rb +17 -1
  60. data/lib/shopify-cli/shopifolk.rb +86 -0
  61. data/lib/shopify-cli/task.rb +8 -0
  62. data/lib/shopify-cli/tasks/create_api_client.rb +13 -2
  63. data/lib/shopify-cli/tasks/ensure_env.rb +3 -0
  64. data/lib/shopify-cli/tasks/select_org_and_shop.rb +4 -0
  65. data/lib/shopify-cli/tunnel.rb +1 -1
  66. data/lib/shopify-cli/version.rb +1 -1
  67. data/lib/shopify_cli.rb +1 -0
  68. metadata +13 -5
  69. data/lib/project_types/extension/features/argo.rb +0 -48
  70. data/lib/project_types/extension/models/types/subscription_management.rb +0 -20
  71. data/lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb +0 -38
@@ -3,6 +3,16 @@
3
3
  module ShopifyCli
4
4
  module Messages
5
5
  MESSAGES = {
6
+ apps: {
7
+ create: {
8
+ info: {
9
+ created: "{{v}} {{green:%s}} was created in the organization's Partner Dashboard {{underline:%s}}",
10
+ serve: "{{*}} Change directories to your new project folder {{green:%s}} and run {{command:%s serve}} " \
11
+ "to start a local server",
12
+ install: "{{*}} Then, visit {{underline:%s/test}} to install {{green:%s}} on your Dev Store",
13
+ },
14
+ },
15
+ },
6
16
  core: {
7
17
  connect: {
8
18
  help: <<~HELP,
@@ -10,11 +20,7 @@ module ShopifyCli
10
20
  Usage: {{command:%s connect}}
11
21
  HELP
12
22
 
13
- production_warning: <<~MESSAGE,
14
- {{yellow:! Warning: if you have connected to an {{bold:app in production}}, running {{command:serve}} may update the app URL and cause an outage.
15
- MESSAGE
16
23
  already_connected_warning: "{{yellow:! This app appears to be already connected}}",
17
- connected: "{{v}} Project now connected to {{green:%s}}",
18
24
  project_type_select: "What type of project would you like to connect?",
19
25
  cli_yml_saved: ".shopify-cli.yml saved to project root",
20
26
  },
@@ -48,13 +54,37 @@ module ShopifyCli
48
54
  config: {
49
55
  help: <<~HELP,
50
56
  Change configuration of how the CLI operates
51
- Usage: {{command:%s config [ feature ] [ feature_name ] }}
57
+ Usage: {{command:%s config [ feature | analytics ] }}
52
58
  HELP
53
59
  feature: {
54
- enabled: "{{v}} feature {{green:%s}} was enabled",
55
- disabled: "{{v}} feature {{green:%s}} was disabled",
56
- is_enabled: "{{v}} feature {{green:%s}} is enabled",
57
- is_disabled: "{{v}} feature {{green:%s}} is disabled",
60
+ help: <<~HELP,
61
+ Change configuration of various features
62
+ Usage: {{command:%s config [ feature ] [ feature_name ] }}
63
+ HELP
64
+ enabled: "{{v}} feature {{green:%s}} has been enabled",
65
+ disabled: "{{v}} feature {{green:%s}} has been disabled",
66
+ is_enabled: "{{v}} feature {{green:%s}} is currently enabled",
67
+ is_disabled: "{{v}} feature {{green:%s}} is currently disabled",
68
+ },
69
+ analytics: {
70
+ help: <<~HELP,
71
+ Opt in/out of anonymous usage reporting
72
+ Usage: {{command:%s config [ analytics ] }}
73
+ HELP
74
+ enabled: "{{v}} analytics have been enabled",
75
+ disabled: "{{v}} analytics have been disabled",
76
+ is_enabled: "{{v}} analytics are currently enabled",
77
+ is_disabled: "{{v}} analytics are currently disabled",
78
+ },
79
+ shopifolk_beta: {
80
+ help: <<~HELP,
81
+ Opt in/out of shopifolk beta
82
+ Usage: {{command:%s config [ analytics ] }}
83
+ HELP
84
+ enabled: "{{v}} shopifolk-beta has been enabled",
85
+ disabled: "{{v}} shopifolk-beta has been disabled",
86
+ is_enabled: "{{v}} shopifolk-beta is currently enabled",
87
+ is_disabled: "{{v}} shopifolk-beta is currently disabled",
58
88
  },
59
89
  },
60
90
 
@@ -163,6 +193,7 @@ module ShopifyCli
163
193
  api: {
164
194
  error: {
165
195
  internal_server_error: '{{red:{{x}} An unexpected error occurred on Shopify.}}',
196
+ internal_server_error_debug: "\n{{red:Response details:}}\n%s\n\n",
166
197
  },
167
198
  },
168
199
 
@@ -237,6 +268,8 @@ module ShopifyCli
237
268
  },
238
269
  environment_header: "{{bold:Environment}}",
239
270
  env: "%-17s = %s",
271
+ identity_header: "{{bold:Identity}}",
272
+ identity_is_shopifolk: "{{v}} Checked user settings: you’re Shopify staff!",
240
273
  },
241
274
 
242
275
  tasks: {
@@ -283,6 +316,8 @@ module ShopifyCli
283
316
  organization_not_found: "Cannot find a partner organization with that ID",
284
317
  partners_notice: "Please visit https://partners.shopify.com/ to create a partners account",
285
318
  },
319
+ first_party: "Are you working on a 1P (1st Party) app?",
320
+ identified_as_shopify: "We've identified you as a {{green:Shopify}} employee.",
286
321
  organization: "Partner organization {{green:%s (%s)}}",
287
322
  organization_select: "Select partner organization",
288
323
  },
@@ -27,7 +27,7 @@ module ShopifyCli
27
27
  # #### Parameters
28
28
  # - `ctx`: running context from your command
29
29
  # - `query_name`: name of the query you want to use, loaded from the `lib/graphql` directory.
30
- # - `**variable`: a hash of variables to be supplied to the query ro mutation
30
+ # - `**variables`: a hash of variables to be supplied to the query or mutation
31
31
  #
32
32
  # #### Raises
33
33
  #
@@ -50,6 +50,13 @@ module ShopifyCli
50
50
  end
51
51
  end
52
52
 
53
+ def partners_url_for(organization_id, api_client_id, local_debug)
54
+ if ShopifyCli::Shopifolk.acting_as_shopify_organization?
55
+ organization_id = 'internal'
56
+ end
57
+ "#{partners_endpoint(local_debug)}/#{organization_id}/apps/#{api_client_id}"
58
+ end
59
+
53
60
  private
54
61
 
55
62
  def authenticated_req(ctx)
@@ -105,6 +112,15 @@ module ShopifyCli
105
112
  return 'https://partners.shopify.com' if ENV[LOCAL_DEBUG].nil?
106
113
  'https://partners.myshopify.io/'
107
114
  end
115
+
116
+ def partners_endpoint(local_debug)
117
+ domain = if local_debug
118
+ 'partners.myshopify.io'
119
+ else
120
+ 'partners.shopify.com'
121
+ end
122
+ "https://#{domain}"
123
+ end
108
124
  end
109
125
 
110
126
  def auth_headers(token)
@@ -206,7 +206,7 @@ module ShopifyCli
206
206
  unless ctx.windows?
207
207
  Process.kill('TERM', id)
208
208
  50.times do
209
- sleep 0.1
209
+ sleep(0.1)
210
210
  break unless stat(id)
211
211
  end
212
212
  end
@@ -34,7 +34,8 @@ module ShopifyCli
34
34
  # project = ShopifyCli::Project.current
35
35
  #
36
36
  def current(force_reload: false)
37
- at(Dir.pwd, force_reload: force_reload)
37
+ clear if force_reload
38
+ at(Dir.pwd)
38
39
  end
39
40
 
40
41
  ##
@@ -87,27 +88,30 @@ module ShopifyCli
87
88
  content = Hash[{ project_type: project_type, organization_id: organization_id.to_i }
88
89
  .merge(identifiers)
89
90
  .collect { |k, v| [k.to_s, v] }]
91
+ content['shopify_organization'] = true if Shopifolk.acting_as_shopify_organization?
90
92
 
91
93
  ctx.write('.shopify-cli.yml', YAML.dump(content))
94
+ clear
92
95
  end
93
96
 
94
97
  def project_name
95
98
  File.basename(current.directory)
96
99
  end
97
100
 
98
- private
101
+ def clear
102
+ @at = nil
103
+ @dir = nil
104
+ end
99
105
 
100
- def directory(dir, force_reload: false)
101
- @dir = nil if force_reload
106
+ private
102
107
 
108
+ def directory(dir)
103
109
  @dir ||= Hash.new { |h, k| h[k] = __directory(k) }
104
110
  @dir[dir]
105
111
  end
106
112
 
107
- def at(dir, force_reload: false)
108
- @at = nil if force_reload
109
-
110
- proj_dir = directory(dir, force_reload: force_reload)
113
+ def at(dir)
114
+ proj_dir = directory(dir)
111
115
  unless proj_dir
112
116
  raise(ShopifyCli::Abort, Context.message('core.project.error.not_in_project'))
113
117
  end
@@ -45,8 +45,11 @@ module ShopifyCli
45
45
  File.join(ShopifyCli::PROJECT_TYPES_DIR, project_type.to_s, path)
46
46
  end
47
47
 
48
- def creator(name, command_const)
48
+ def title(name)
49
49
  @project_name = name
50
+ end
51
+
52
+ def creator(command_const)
50
53
  @project_creator_command_class = command_const
51
54
  ShopifyCli::Commands::Create.subcommand(command_const, @project_type)
52
55
  end
@@ -55,6 +58,19 @@ module ShopifyCli
55
58
  const_get(@project_creator_command_class)
56
59
  end
57
60
 
61
+ def connector(command_const)
62
+ @project_connector_command_class = command_const
63
+ ShopifyCli::Commands::Connect.subcommand(command_const, @project_type)
64
+ end
65
+
66
+ def connect_command
67
+ if @project_connector_command_class.nil?
68
+ nil
69
+ else
70
+ const_get(@project_connector_command_class)
71
+ end
72
+ end
73
+
58
74
  def register_command(const, cmd)
59
75
  return if project_load_shallow
60
76
  Context.new.abort(
@@ -0,0 +1,86 @@
1
+ module ShopifyCli
2
+ ##
3
+ # ShopifyCli::Shopifolk contains the logic to determine if the user appears to be a Shopify staff
4
+ #
5
+ # The Shopifolk Feature flag will persist between runs so if the flag is enabled or disabled,
6
+ # it will still be in that same state until the next class invocation.
7
+ class Shopifolk
8
+ GCLOUD_CONFIG_FILE = File.expand_path('~/.config/gcloud/configurations/config_default')
9
+ DEV_PATH = '/opt/dev'
10
+ SECTION = 'core'
11
+ FEATURE_NAME = 'shopifolk'
12
+
13
+ class << self
14
+ attr_writer :acting_as_shopify_organization
15
+
16
+ ##
17
+ # will return if the user appears to be a Shopify employee, based on several heuristics
18
+ #
19
+ # #### Returns
20
+ #
21
+ # * `is_shopifolk` - returns true if the user is a Shopify Employee
22
+ #
23
+ # #### Example
24
+ #
25
+ # ShopifyCli::Shopifolk.check
26
+ #
27
+ def check
28
+ return false unless Feature.enabled?('shopifolk-beta')
29
+ ShopifyCli::Shopifolk.new.shopifolk?
30
+ end
31
+
32
+ def act_as_shopify_organization
33
+ @acting_as_shopify_organization = true
34
+ end
35
+
36
+ def acting_as_shopify_organization?
37
+ !!@acting_as_shopify_organization || (Project.has_current? && Project.current.config['shopify_organization'])
38
+ end
39
+
40
+ def reset
41
+ @acting_as_shopify_organization = nil
42
+ end
43
+ end
44
+
45
+ ##
46
+ # will return if the user is a Shopify employee
47
+ #
48
+ # #### Returns
49
+ #
50
+ # * `is_shopifolk` - returns true if the user has `dev` installed and
51
+ # a valid google cloud config file with email ending in "@shopify.com"
52
+ #
53
+ def shopifolk?
54
+ return false unless Feature.enabled?('shopifolk-beta')
55
+ return true if Feature.enabled?(FEATURE_NAME)
56
+
57
+ if shopifolk_by_gcloud? && shopifolk_by_dev?
58
+ ShopifyCli::Feature.enable(FEATURE_NAME)
59
+ true
60
+ else
61
+ ShopifyCli::Feature.disable(FEATURE_NAME)
62
+ false
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def shopifolk_by_gcloud?
69
+ ini&.dig("[#{SECTION}]", 'account')&.match?(/@shopify.com\z/)
70
+ end
71
+
72
+ def shopifolk_by_dev?
73
+ File.exist?("#{DEV_PATH}/bin/dev") && File.exist?("#{DEV_PATH}/.shopify-build")
74
+ end
75
+
76
+ def ini
77
+ @ini ||= begin
78
+ if File.exist?(GCLOUD_CONFIG_FILE)
79
+ CLI::Kit::Ini
80
+ .new(GCLOUD_CONFIG_FILE, default_section: "[#{SECTION}]", convert_types: false)
81
+ .tap(&:parse).ini
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -6,5 +6,13 @@ module ShopifyCli
6
6
  task = new
7
7
  task.call(*args, **kwargs)
8
8
  end
9
+
10
+ private
11
+
12
+ def wants_to_run_against_shopify_org?
13
+ @ctx.puts(@ctx.message('core.tasks.select_org_and_shop.identified_as_shopify'))
14
+ message = @ctx.message('core.tasks.select_org_and_shop.first_party')
15
+ CLI::UI::Prompt.confirm(message, default: false)
16
+ end
9
17
  end
10
18
  end
@@ -17,12 +17,23 @@ module ShopifyCli
17
17
  redir: [OAuth::REDIRECT_HOST]
18
18
  )
19
19
 
20
- user_errors = resp["data"]["appCreate"]["userErrors"]
20
+ unless resp
21
+ ctx.abort("Error - empty response")
22
+ end
23
+
24
+ errors = resp.dig("errors")
25
+ if !errors.nil? && errors.any?
26
+ ctx.abort(errors.map { |err| "#{err['field']} #{err['message']}" }.join(", "))
27
+ end
28
+
29
+ user_errors = resp.dig("data", "appCreate", "userErrors")
21
30
  if !user_errors.nil? && user_errors.any?
22
31
  ctx.abort(user_errors.map { |err| "#{err['field']} #{err['message']}" }.join(", "))
23
32
  end
24
33
 
25
- resp["data"]["appCreate"]["app"]
34
+ ShopifyCli::Core::Monorail.metadata[:api_key] = resp.dig("data", "appCreate", "app", "apiKey")
35
+
36
+ resp.dig("data", "appCreate", "app")
26
37
  end
27
38
  end
28
39
  end
@@ -22,6 +22,9 @@ module ShopifyCli
22
22
  private
23
23
 
24
24
  def fetch_org
25
+ if Shopifolk.check && wants_to_run_against_shopify_org?
26
+ Shopifolk.act_as_shopify_organization
27
+ end
25
28
  orgs = PartnersAPI::Organizations.fetch_with_app(@ctx)
26
29
  org_id = if orgs.count == 1
27
30
  orgs.first["id"]
@@ -8,8 +8,12 @@ module ShopifyCli
8
8
  def call(ctx, organization_id: nil, shop_domain: nil)
9
9
  @ctx = ctx
10
10
  return response(organization_id.to_i, shop_domain) unless organization_id.nil? || shop_domain.nil?
11
+ if Shopifolk.check && wants_to_run_against_shopify_org?
12
+ Shopifolk.act_as_shopify_organization
13
+ end
11
14
  org = get_organization(organization_id)
12
15
  shop_domain ||= get_shop_domain(org)
16
+ ShopifyCli::Core::Monorail.metadata[:organization_id] = org["id"].to_i
13
17
  response(org["id"].to_i, shop_domain)
14
18
  end
15
19
 
@@ -210,7 +210,7 @@ module ShopifyCli
210
210
  end
211
211
 
212
212
  def parse_account
213
- account, timeout, _ = @log.match(/AccountName:([\w\s\d@._\-]*) SessionDuration:([\d]+) PlanName/)&.captures
213
+ account, timeout, _ = @log.match(/AccountName:(.*)\s+SessionDuration:([\d]+) PlanName/)&.captures
214
214
  @account = account&.empty? ? nil : account
215
215
  @timeout = timeout&.empty? ? 0 : timeout.to_i
216
216
  end
@@ -1,3 +1,3 @@
1
1
  module ShopifyCli
2
- VERSION = '1.2.0'
2
+ VERSION = '1.5.0'
3
3
  end
@@ -116,6 +116,7 @@ module ShopifyCli
116
116
  autoload :Project, 'shopify-cli/project'
117
117
  autoload :ProjectType, 'shopify-cli/project_type'
118
118
  autoload :Resources, 'shopify-cli/resources'
119
+ autoload :Shopifolk, 'shopify-cli/shopifolk'
119
120
  autoload :SubCommand, 'shopify-cli/sub_command'
120
121
  autoload :Task, 'shopify-cli/task'
121
122
  autoload :Tasks, 'shopify-cli/tasks'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-14 00:00:00.000000000 Z
11
+ date: 2020-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -77,8 +77,11 @@ files:
77
77
  - ".github/ISSUE_TEMPLATE.md"
78
78
  - ".github/PULL_REQUEST_TEMPLATE.md"
79
79
  - ".github/probots.yml"
80
+ - ".github/workflows/release.yml"
81
+ - ".github/workflows/triage.yml"
80
82
  - ".gitignore"
81
83
  - ".rubocop.yml"
84
+ - ".rubocop_todo.yml"
82
85
  - ".ruby-version"
83
86
  - ".tmp/.gitkeep"
84
87
  - ".tmp/sv/.gitkeep"
@@ -147,7 +150,9 @@ files:
147
150
  - lib/project_types/extension/commands/tunnel.rb
148
151
  - lib/project_types/extension/extension_project.rb
149
152
  - lib/project_types/extension/extension_project_keys.rb
150
- - lib/project_types/extension/features/argo.rb
153
+ - lib/project_types/extension/features/argo/admin.rb
154
+ - lib/project_types/extension/features/argo/base.rb
155
+ - lib/project_types/extension/features/argo/checkout.rb
151
156
  - lib/project_types/extension/features/argo_config.rb
152
157
  - lib/project_types/extension/features/argo_dependencies.rb
153
158
  - lib/project_types/extension/features/argo_setup.rb
@@ -162,7 +167,7 @@ files:
162
167
  - lib/project_types/extension/models/registration.rb
163
168
  - lib/project_types/extension/models/type.rb
164
169
  - lib/project_types/extension/models/types/checkout_post_purchase.rb
165
- - lib/project_types/extension/models/types/subscription_management.rb
170
+ - lib/project_types/extension/models/types/product_subscription.rb
166
171
  - lib/project_types/extension/models/validation_error.rb
167
172
  - lib/project_types/extension/models/version.rb
168
173
  - lib/project_types/extension/tasks/converters/app_converter.rb
@@ -175,6 +180,7 @@ files:
175
180
  - lib/project_types/extension/tasks/update_draft.rb
176
181
  - lib/project_types/extension/tasks/user_errors.rb
177
182
  - lib/project_types/node/cli.rb
183
+ - lib/project_types/node/commands/connect.rb
178
184
  - lib/project_types/node/commands/create.rb
179
185
  - lib/project_types/node/commands/deploy.rb
180
186
  - lib/project_types/node/commands/deploy/heroku.rb
@@ -192,6 +198,7 @@ files:
192
198
  - lib/project_types/node/forms/create.rb
193
199
  - lib/project_types/node/messages/messages.rb
194
200
  - lib/project_types/rails/cli.rb
201
+ - lib/project_types/rails/commands/connect.rb
195
202
  - lib/project_types/rails/commands/create.rb
196
203
  - lib/project_types/rails/commands/deploy.rb
197
204
  - lib/project_types/rails/commands/deploy/heroku.rb
@@ -233,7 +240,6 @@ files:
233
240
  - lib/project_types/script/layers/domain/script.rb
234
241
  - lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb
235
242
  - lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb
236
- - lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb
237
243
  - lib/project_types/script/layers/infrastructure/errors.rb
238
244
  - lib/project_types/script/layers/infrastructure/extension_point_repository.rb
239
245
  - lib/project_types/script/layers/infrastructure/project_creator.rb
@@ -276,6 +282,7 @@ files:
276
282
  - lib/shopify-cli/helpers.rb
277
283
  - lib/shopify-cli/helpers/haikunator.rb
278
284
  - lib/shopify-cli/heroku.rb
285
+ - lib/shopify-cli/http_request.rb
279
286
  - lib/shopify-cli/js_deps.rb
280
287
  - lib/shopify-cli/js_system.rb
281
288
  - lib/shopify-cli/messages/messages.rb
@@ -290,6 +297,7 @@ files:
290
297
  - lib/shopify-cli/project_type.rb
291
298
  - lib/shopify-cli/resources.rb
292
299
  - lib/shopify-cli/resources/env_file.rb
300
+ - lib/shopify-cli/shopifolk.rb
293
301
  - lib/shopify-cli/sub_command.rb
294
302
  - lib/shopify-cli/task.rb
295
303
  - lib/shopify-cli/tasks.rb