shopify_app 11.0.0 → 11.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99e91b542c6d5f2fb530c9d259e6d32d463bb6e8d0720dd11faa009e845d2ced
4
- data.tar.gz: '0214085b33d8ccbb7dfe929430f81b75296ac5cf201c6b9969ba0b5d78ea7351'
3
+ metadata.gz: 15eca48ef29e1c972ae2444aa0f87d0174a86fe429a5f006fb1dcad801040f89
4
+ data.tar.gz: f91ad649d3b251111a6b48ec0545e4716a18540e3efbe18c89bd8f36becd5d1c
5
5
  SHA512:
6
- metadata.gz: f8fb32cc915ecfeba1ee7db40f1cd3ec4e0c9b8c8bae697370248a8f6225f70504da6a3a160cdfb960426899c2d0abcbbe8f623a0771cef81c7ddb1e58ac779d
7
- data.tar.gz: 73c4b7f0f49130ea808fd7b4c24cef408025a5fcaf89a8b29ee2c0baa0e00d0837b11ec6ecd7f35d4c57269a39e357a9d3cb7d5b55b66a76ff25b0444f503405
6
+ metadata.gz: 16bebc85b8c03bc330c583d43310a33cb0dfa789087cc84a73722ffa02de045113ccdf69a25f1bb975ceae35ad60b6b938b80e57972bf654fc5d4d79299e4fde
7
+ data.tar.gz: 874b833abb3c157aecebecb62d2ecba4f886af24d476f6c55826cca1eec023f6109ec66b33ab2661c6dfab9a9db3da8b247d80beb39a4e8187066e0bae1c7acc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,35 @@
1
+ 11.3.0
2
+ -----
3
+ * Update assets to be compatible with Rails 6 [#808](https://github.com/Shopify/shopify_app/pull/808)
4
+
5
+ 11.2.1
6
+ -----
7
+ * Adds ngrok whitelist in development [#802](https://github.com/Shopify/shopify_app/pull/802)
8
+
9
+ 11.2.0
10
+ -----
11
+
12
+ * Bump omniauth-shopify-oauth2 gem to v2.2.0
13
+
14
+ 11.1.0
15
+ -----
16
+
17
+ * Add Webmock and Pry as development dependencies
18
+ * Update install generator to leverage updates to ShopifyAPI::ApiVersion add in v8.0.0 of the shopify_api gem [#790](https://github.com/Shopify/shopify_app/pull/790)
19
+
20
+
21
+ 11.0.2
22
+ -----
23
+
24
+ * Lock shopify_api gem dependency to `~> 7.0` from `>= 7.0.0`.
25
+ * Remove flakey JS Tests
26
+ * bump sqlite3 development dependency to `~>1.4` from `~> 1.3.6`. [#789](https://github.com/Shopify/shopify_app/pull/789)
27
+
28
+ 11.0.1
29
+ -----
30
+
31
+ * Add dotenv-rails gem to install generator, so apps fetch credentials from `.env` by default: [#776](https://github.com/Shopify/shopify_app/pull/776)
32
+
1
33
  11.0.0
2
34
  -----
3
35
 
data/README.md CHANGED
@@ -26,7 +26,6 @@ Table of Contents
26
26
  * [App Proxy Controller Generator](#app-proxy-controller-generator)
27
27
  * [Controllers, Routes and Views](#controllers-routes-and-views)
28
28
  * [**Mounting the Engine**](#mounting-the-engine)
29
- * [**Managing Api Keys**](#managing-api-keys)
30
29
  * [**WebhooksManager**](#webhooksmanager)
31
30
  * [**ScripttagsManager**](#scripttagsmanager)
32
31
  * [**AfterAuthenticate Job**](#afterauthenticate-job)
@@ -104,11 +103,22 @@ Generators
104
103
  The default generator will run the `install`, `shop`, and `home_controller` generators. This is the recommended way to start your app.
105
104
 
106
105
  ```sh
107
- $ rails generate shopify_app --api_key <your_api_key> --secret <your_app_secret>
106
+ $ rails generate shopify_app
108
107
  ```
109
108
 
110
109
  After running the generator, you will need to run `rake db:migrate` to add tables to your database. You can start your app with `bundle exec rails server` and install your app by visiting localhost.
111
110
 
111
+ ### API Keys
112
+
113
+ The default and install generators have been updated to source Shopify API key and secret from a `.env` file, which you will need to create with the following format:
114
+
115
+ ```
116
+ SHOPIFY_API_KEY=your api key
117
+ SHOPIFY_API_SECRET=your api secret
118
+ ```
119
+
120
+ These values can be found on the "App Setup" page in the [Shopify Partners Dashboard][dashboard].
121
+
112
122
  ### Install Generator
113
123
 
114
124
  ```sh
@@ -116,7 +126,7 @@ $ rails generate shopify_app:install
116
126
 
117
127
  # or optionally with arguments:
118
128
 
119
- $ rails generate shopify_app:install --api_key <your_api_key> --secret <your_app_secret>
129
+ $ rails generate shopify_app:install
120
130
  ```
121
131
 
122
132
  Other options include:
@@ -244,21 +254,6 @@ The current Shopify user will be stored in the rails session at `session[:shopif
244
254
 
245
255
  This will change the type of token that Shopify returns and it will only be valid for a short time. Read more about `Online access` [here](https://help.shopify.com/api/getting-started/authentication/oauth). Note that this means you won't be able to use this token to respond to Webhooks.
246
256
 
247
- Managing Api Keys
248
- -----------------
249
-
250
- The `install` generator places your Api credentials directly into the shopify_app initializer which is convenient and fine for development but once your app goes into production **your api credentials should not be in source control**. When we develop apps we keep our keys in environment variables so a production shopify_app initializer would look like this:
251
-
252
- ```ruby
253
- ShopifyApp.configure do |config|
254
- config.application_name = 'Your app name' # Optional
255
- config.api_key = ENV['SHOPIFY_CLIENT_API_KEY']
256
- config.secret = ENV['SHOPIFY_CLIENT_API_SECRET']
257
- config.scope = 'read_customers, write_products'
258
- config.embedded_app = true
259
- end
260
- ```
261
-
262
257
 
263
258
  WebhooksManager
264
259
  ---------------
@@ -439,7 +434,7 @@ class ReviewsController < ApplicationController
439
434
  end
440
435
  ```
441
436
 
442
- Create your app proxy url in the [Shopify Partners' Dashboard](https://app.shopify.com/services/partners/api_clients), making sure to point it to `https://your_app_website.com/app_proxy`.
437
+ Create your app proxy url in the [Shopify Partners' Dashboard][dashboard], making sure to point it to `https://your_app_website.com/app_proxy`.
443
438
  ![Creating an App Proxy](/images/app-proxy-screenshot.png)
444
439
 
445
440
  Troubleshooting
@@ -462,6 +457,23 @@ Questions or problems?
462
457
  - [Ask questions!](https://ecommerce.shopify.com/c/shopify-apis-and-technology)
463
458
  - [Read the docs!](https://help.shopify.com/api/guides)
464
459
 
460
+ Rails 6 Compatibility
461
+ ---------------------------
462
+
463
+ ### Disable Webpacker
464
+ If you are using sprockets in rails 6 or want to generate a shopify_app without webpacker run the install task by running
465
+
466
+ ```
467
+ SHOPIFY_APP_DISABLE_WEBPACKER=1 rails generate shopify_app
468
+ ```
469
+
470
+ and then in your ShopifyApp configuration block, add
471
+
472
+ ```
473
+ ShopifyApp.configure do |config|
474
+ config.disable_webpacker = true
475
+ end
476
+ ```
465
477
 
466
478
  Upgrading from 8.6 to 9.0.0
467
479
  ---------------------------
@@ -476,7 +488,7 @@ config.api_version = '2019-04'
476
488
 
477
489
  ### Session storage change
478
490
 
479
- You will need to add an `api_version` method to you session storage object. The default implmentation for this is.
491
+ You will need to add an `api_version` method to you session storage object. The default implementation for this is.
480
492
  ```ruby
481
493
  def api_version
482
494
  ShopifyApp.configuration.api_version
@@ -485,7 +497,7 @@ end
485
497
 
486
498
  ### Generated file change
487
499
 
488
- `embedded_app.html.erb` the useage of `shop_session.url` needs to be changed to `shop_session.domain`
500
+ `embedded_app.html.erb` the usage of `shop_session.url` needs to be changed to `shop_session.domain`
489
501
  ```erb
490
502
  <script type="text/javascript">
491
503
  ShopifyApp.init({
@@ -515,3 +527,5 @@ is changed to
515
527
  ### ShopifyAPI changes
516
528
 
517
529
  You will need to also follow the ShopifyAPI [upgrade guide](https://github.com/Shopify/shopify_api/blob/master/README.md#-breaking-change-notice-for-version-700-) to ensure your app is ready to work with api versioning.
530
+
531
+ [dashboard]:https://partners.shopify.com
@@ -4,20 +4,20 @@ cs:
4
4
  could_not_log_in: Nelze se přihlásit do obchodu Shopify
5
5
  invalid_shop_url: Neplatná doména obchodu
6
6
  enable_cookies_heading: Zapnout soubory cookie z aplikace %{app}
7
- enable_cookies_body: Pokud chceš v Shopify používat aplikaci %{app}, musíš soubory
7
+ enable_cookies_body: Pokud chcete v Shopify používat aplikaci %{app}, musíte soubory
8
8
  cookie v tomto prohlížeči povolit ručně.
9
- enable_cookies_footer: Soubory cookie umožňují, aby aplikace ověřila pomocí dočasného
10
- uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
9
+ enable_cookies_footer: Soubory cookie umožňují, aby vás aplikace ověřila pomocí
10
+ dočasného uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
11
11
  enable_cookies_action: Povolit soubory cookie
12
- top_level_interaction_heading: Tvůj prohlížeč potřebuje ověřit aplikaci %{app}
13
- top_level_interaction_body: Tvůj prohlížeč vyžaduje, aby si od tebe aplikace, jako
14
- je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro tebe Shopify
12
+ top_level_interaction_heading: Váš prohlížeč potřebuje ověřit aplikaci %{app}
13
+ top_level_interaction_body: Váš prohlížeč vyžaduje, aby si od vás aplikace, jako
14
+ je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro vás Shopify
15
15
  otevře.
16
16
  top_level_interaction_action: Pokračovat
17
17
  request_storage_access_heading: Aplikace %{app} potřebuje získat přístup k souborům
18
18
  cookie
19
- request_storage_access_body: Tato aplikace ti umožní ověření prostřednictvím dočasného
20
- uchování tvých osobních údajů. Pokud chceš používat tuto aplikaci, klikni na tlačítko
21
- Pokračovat a povol soubory cookie.
19
+ request_storage_access_body: Tato aplikace vám umožní ověření prostřednictvím dočasného
20
+ uchování vašich osobních údajů. Pokud chcete používat tuto aplikaci, klikněte
21
+ na tlačítko Pokračovat a povolte soubory cookie.
22
22
  request_storage_access_footer: Platnost souborů cookie vyprší po 30 dnech.
23
23
  request_storage_access_action: Pokračovat
@@ -7,7 +7,7 @@ de:
7
7
  enable_cookies_body: Sie müssen Cookies in diesem Browser manuell aktivieren, um
8
8
  %{app} in Shopify verwenden zu können.
9
9
  enable_cookies_footer: Mithilfe von Cookies kann die App Sie authentifizieren, indem
10
- Ihre Einstellungen und persönlichen Informationen vorübergehend gespeichert werden.
10
+ Ihre Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden.
11
11
  Sie laufen nach 30 Tagen ab.
12
12
  enable_cookies_action: Cookies aktivieren
13
13
  top_level_interaction_heading: Ihr Browser muss %{app} authentifizieren
@@ -16,7 +16,7 @@ de:
16
16
  top_level_interaction_action: Weiter
17
17
  request_storage_access_heading: "%{app} braucht Zugriff auf Cookies"
18
18
  request_storage_access_body: Damit kann die App Sie authentifizieren, indem Ihre
19
- Einstellungen und persönlichen Informationen vorübergehend gespeichert werden.
20
- Klicken Sie auf "Weiter" und erlauben Sie den Cookies, die App zu verwenden.
19
+ Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden. Klicken
20
+ Sie auf "Weiter" und erlauben Sie den Cookies, die App zu verwenden.
21
21
  request_storage_access_footer: Cookies laufen nach 30 Tagen ab.
22
22
  request_storage_access_action: Weiter
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  es:
3
3
  logged_out: Cerrar sesión
4
- could_not_log_in: No se pudo iniciar sesión en tu tienda de Shopify
4
+ could_not_log_in: No se pudo iniciar sesión en tu tienda Shopify
5
5
  invalid_shop_url: Dominio de tienda inválido
6
6
  enable_cookies_heading: Habilitar cookies de %{app}
7
7
  enable_cookies_body: Debes habilitar manualmente las cookies en este navegador para
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  nl:
3
- logged_out: u bent afgemeld
3
+ logged_out: je bent afgemeld
4
4
  could_not_log_in: Kon niet aanmelden bij Shopify-winkel
5
5
  invalid_shop_url: Ongeldig winkeldomein
6
6
  enable_cookies_heading: Schakel cookies in van %{app}
@@ -1,15 +1,14 @@
1
1
  ---
2
2
  pt-BR:
3
- logged_out: Você saiu com sucesso
3
+ logged_out: Você saiu.
4
4
  could_not_log_in: Não foi possível fazer login na Shopify store
5
5
  invalid_shop_url: Domínio de loja inválido
6
- enable_cookies_heading: Ativar cookies de %{app}
7
- enable_cookies_body: Você deve ativar manualmente os cookies neste navegador para
8
- usar %{app} dentro da Shopify.
9
- enable_cookies_footer: Os cookies permitem que o aplicativo o autentique armazenando
10
- temporariamente suas preferências e informações pessoais. Eles expiram depois
11
- de 30 dias.
12
- enable_cookies_action: Ativar cookies
6
+ enable_cookies_heading: Habilitar cookies de %{app}
7
+ enable_cookies_body: Você deve habilitar manualmente os cookies neste navegador
8
+ para usar %{app} dentro da Shopify.
9
+ enable_cookies_footer: Os cookies permitem que o app o autentique armazenando temporariamente
10
+ suas preferências e dados pessoais. Eles expiram depois de 30 dias.
11
+ enable_cookies_action: Habilitar cookies
13
12
  top_level_interaction_heading: Seu navegador precisa autenticar %{app}
14
13
  top_level_interaction_body: Seu navegador exige que apps como o %{app} consultem
15
14
  você sobre o acesso a cookies antes que a Shopify os abra.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  zh-CN:
3
- logged_out: 已成功注销
3
+ logged_out: 已成功退出
4
4
  could_not_log_in: 无法登录到 Shopify 商店
5
5
  invalid_shop_url: 商店域名无效
6
6
  enable_cookies_heading: 从 %{app} 启用 Cookie
data/docs/Releasing.md CHANGED
@@ -3,7 +3,6 @@ Releasing ShopifyApp
3
3
  1. Check the Semantic Versioning page for info on how to version the new release: http://semver.org
4
4
  2. Create a pull request with the following changes:
5
5
  * Update the version of ShopifyApp in lib/shopify_app/version.rb
6
- * Update the version in package.json, then run `npm install` to make sure the lock file gets updated
7
6
  * Add a CHANGELOG entry for the new release with the date
8
7
  * Change the title of the PR to something like: "Packaging for release X.Y.Z"
9
8
  3. Merge your pull request
data/karma.conf.js CHANGED
@@ -26,6 +26,7 @@ module.exports = function(config) {
26
26
  preprocessors: {
27
27
  'test/javascripts/**/*test.js': ['webpack'],
28
28
  },
29
+ webpack: {},
29
30
  reporters: karmaReporters,
30
31
  port: 9876,
31
32
  colors: true,
@@ -7,20 +7,18 @@ module ShopifyApp
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
9
  class_option :application_name, type: :array, default: ['My', 'Shopify', 'App']
10
- class_option :api_key, type: :string, default: '<api_key>'
11
- class_option :secret, type: :string, default: '<secret>'
12
- class_option :old_secret, type: :string, default: '<old_secret>'
13
10
  class_option :scope, type: :array, default: ['read_products']
14
11
  class_option :embedded, type: :string, default: 'true'
15
- class_option :api_version, type: :string, default: ShopifyAPI::ApiVersion.latest_stable_version.to_s
12
+ class_option :api_version, type: :string, default: nil
13
+
14
+ def add_dotenv_gem
15
+ gem('dotenv-rails', group: [:test, :development])
16
+ end
16
17
 
17
18
  def create_shopify_app_initializer
18
19
  @application_name = format_array_argument(options['application_name'])
19
- @api_key = options['api_key']
20
- @secret = options['secret']
21
- @old_secret = options['old_secret']
22
20
  @scope = format_array_argument(options['scope'])
23
- @api_version = options['api_version']
21
+ @api_version = options['api_version'] || ShopifyAPI::Meta.admin_versions.find(&:latest_supported).handle
24
22
 
25
23
  template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
26
24
  end
@@ -42,19 +40,38 @@ module ShopifyApp
42
40
  end
43
41
 
44
42
  def create_embedded_app_layout
45
- if embedded_app?
46
- copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
43
+ return unless embedded_app?
44
+
45
+ copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
46
+ copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb'
47
+
48
+ if ShopifyApp.use_webpacker?
49
+ copy_file('shopify_app.js', 'app/javascript/shopify_app/shopify_app.js')
50
+ copy_file('flash_messages.js', 'app/javascript/shopify_app/flash_messages.js')
51
+ copy_file('shopify_app_index.js', 'app/javascript/shopify_app/index.js')
52
+ append_to_file('app/javascript/packs/application.js', 'require("shopify_app")')
53
+ else
47
54
  copy_file('shopify_app.js', 'app/assets/javascripts/shopify_app.js')
48
- copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb'
49
- copy_file('flash_messages.js',
50
- 'app/assets/javascripts/flash_messages.js')
55
+ copy_file('flash_messages.js', 'app/assets/javascripts/flash_messages.js')
51
56
  end
52
57
  end
53
58
 
59
+ def create_user_agent_initializer
60
+ template 'user_agent.rb', 'config/initializers/user_agent.rb'
61
+ end
62
+
54
63
  def mount_engine
55
64
  route "mount ShopifyApp::Engine, at: '/'"
56
65
  end
57
66
 
67
+ def insert_hosts_into_development_config
68
+ inject_into_file(
69
+ 'config/environments/development.rb',
70
+ " config.hosts << /\\h+.ngrok.io/\n",
71
+ after: "Rails.application.configure do\n"
72
+ )
73
+ end
74
+
58
75
  private
59
76
 
60
77
  def embedded_app?
@@ -5,7 +5,11 @@
5
5
  <% application_name = ShopifyApp.configuration.application_name %>
6
6
  <title><%= application_name %></title>
7
7
  <%= stylesheet_link_tag 'application' %>
8
- <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
8
+ <% if ShopifyApp.use_webpacker? %>
9
+ <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
10
+ <% else %>
11
+ <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
12
+ <% end %>
9
13
  <%= csrf_meta_tags %>
10
14
  </head>
11
15
 
@@ -1,7 +1,7 @@
1
1
  ShopifyApp.configure do |config|
2
2
  config.application_name = "<%= @application_name %>"
3
- config.api_key = "<%= @api_key %>"
4
- config.secret = "<%= @secret %>"
3
+ config.api_key = ENV['SHOPIFY_API_KEY']
4
+ config.secret = ENV['SHOPIFY_API_SECRET']
5
5
  config.old_secret = "<%= @old_secret %>"
6
6
  config.scope = "<%= @scope %>" # Consult this page for more scope options:
7
7
  # https://help.shopify.com/en/api/getting-started/authentication/oauth/scopes
@@ -10,3 +10,6 @@ ShopifyApp.configure do |config|
10
10
  config.api_version = "<%= @api_version %>"
11
11
  config.session_repository = ShopifyApp::InMemorySessionStore
12
12
  end
13
+
14
+ # ShopifyApp::Utils.fetch_known_api_versions # Uncomment to fetch known api versions from shopify servers on boot
15
+ # ShopifyAPI::ApiVersion.version_lookup_mode = :raise_on_unknown # Uncomment to raise an error if attempting to use an api version that was not previously known
@@ -0,0 +1,2 @@
1
+ require('./shopify_app')
2
+ require('./flash_messages')
@@ -0,0 +1,5 @@
1
+ module ShopifyAPI
2
+ class Base < ActiveResource::Base
3
+ self.headers['User-Agent'] << " | ShopifyApp/#{ShopifyApp::VERSION}"
4
+ end
5
+ end
data/lib/shopify_app.rb CHANGED
@@ -4,32 +4,44 @@ require 'shopify_app/version'
4
4
  require 'shopify_api'
5
5
  require 'omniauth-shopify-oauth2'
6
6
 
7
- # config
8
- require 'shopify_app/configuration'
9
-
10
- # engine
11
- require 'shopify_app/engine'
12
-
13
- # utils
14
- require 'shopify_app/utils'
15
-
16
- # controller concerns
17
- require 'shopify_app/controller_concerns/localization'
18
- require 'shopify_app/controller_concerns/itp'
19
- require 'shopify_app/controller_concerns/login_protection'
20
- require 'shopify_app/controller_concerns/embedded_app'
21
- require 'shopify_app/controller_concerns/webhook_verification'
22
- require 'shopify_app/controller_concerns/app_proxy_verification'
23
-
24
- # jobs
25
- require 'shopify_app/jobs/webhooks_manager_job'
26
- require 'shopify_app/jobs/scripttags_manager_job'
27
-
28
- # managers
29
- require 'shopify_app/managers/webhooks_manager'
30
- require 'shopify_app/managers/scripttags_manager'
31
-
32
- # session
33
- require 'shopify_app/session/session_storage'
34
- require 'shopify_app/session/session_repository'
35
- require 'shopify_app/session/in_memory_session_store'
7
+ module ShopifyApp
8
+ def self.rails6?
9
+ Rails::VERSION::MAJOR >= 6
10
+ end
11
+
12
+ def self.use_webpacker?
13
+ rails6? &&
14
+ defined?(Webpacker) == 'constant' &&
15
+ !configuration.disable_webpacker
16
+ end
17
+
18
+ # config
19
+ require 'shopify_app/configuration'
20
+
21
+ # engine
22
+ require 'shopify_app/engine'
23
+
24
+ # utils
25
+ require 'shopify_app/utils'
26
+
27
+ # controller concerns
28
+ require 'shopify_app/controller_concerns/localization'
29
+ require 'shopify_app/controller_concerns/itp'
30
+ require 'shopify_app/controller_concerns/login_protection'
31
+ require 'shopify_app/controller_concerns/embedded_app'
32
+ require 'shopify_app/controller_concerns/webhook_verification'
33
+ require 'shopify_app/controller_concerns/app_proxy_verification'
34
+
35
+ # jobs
36
+ require 'shopify_app/jobs/webhooks_manager_job'
37
+ require 'shopify_app/jobs/scripttags_manager_job'
38
+
39
+ # managers
40
+ require 'shopify_app/managers/webhooks_manager'
41
+ require 'shopify_app/managers/scripttags_manager'
42
+
43
+ # session
44
+ require 'shopify_app/session/session_storage'
45
+ require 'shopify_app/session/session_repository'
46
+ require 'shopify_app/session/in_memory_session_store'
47
+ end