shopify_app 21.6.0 → 22.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/ISSUE_TEMPLATE/bug-report.md +23 -18
  4. data/.github/workflows/build.yml +2 -2
  5. data/.github/workflows/release.yml +1 -1
  6. data/.github/workflows/rubocop.yml +1 -2
  7. data/.nvmrc +1 -1
  8. data/.rubocop.yml +0 -1
  9. data/CHANGELOG.md +115 -0
  10. data/CODE_OF_CONDUCT.md +46 -0
  11. data/CONTRIBUTING.md +1 -6
  12. data/Gemfile.lock +99 -96
  13. data/README.md +47 -2
  14. data/app/assets/javascripts/shopify_app/redirect.js +3 -10
  15. data/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb +5 -1
  16. data/app/controllers/concerns/shopify_app/ensure_has_session.rb +11 -5
  17. data/app/controllers/concerns/shopify_app/ensure_installed.rb +10 -4
  18. data/app/controllers/concerns/shopify_app/shop_access_scopes_verification.rb +5 -1
  19. data/app/controllers/shopify_app/callback_controller.rb +39 -18
  20. data/app/controllers/shopify_app/sessions_controller.rb +25 -4
  21. data/app/views/shopify_app/layouts/app_bridge.html.erb +17 -0
  22. data/app/views/shopify_app/sessions/patch_shopify_id_token.html.erb +0 -0
  23. data/app/views/shopify_app/shared/redirect.html.erb +10 -1
  24. data/config/locales/cs.yml +0 -18
  25. data/config/locales/da.yml +0 -15
  26. data/config/locales/de.yml +0 -17
  27. data/config/locales/en.yml +0 -11
  28. data/config/locales/es.yml +0 -17
  29. data/config/locales/fi.yml +0 -15
  30. data/config/locales/fr.yml +0 -18
  31. data/config/locales/it.yml +0 -16
  32. data/config/locales/ja.yml +0 -12
  33. data/config/locales/ko.yml +0 -14
  34. data/config/locales/nb.yml +0 -16
  35. data/config/locales/nl.yml +0 -16
  36. data/config/locales/pl.yml +0 -16
  37. data/config/locales/pt-BR.yml +0 -16
  38. data/config/locales/pt-PT.yml +0 -17
  39. data/config/locales/sv.yml +0 -16
  40. data/config/locales/th.yml +0 -15
  41. data/config/locales/tr.yml +0 -17
  42. data/config/locales/vi.yml +0 -17
  43. data/config/locales/zh-CN.yml +0 -11
  44. data/config/locales/zh-TW.yml +0 -11
  45. data/config/routes.rb +2 -1
  46. data/docs/Quickstart.md +9 -2
  47. data/docs/Troubleshooting.md +0 -23
  48. data/docs/Upgrading.md +64 -1
  49. data/docs/shopify_app/authentication.md +179 -58
  50. data/docs/shopify_app/controller-concerns.md +53 -12
  51. data/docs/shopify_app/generators.md +2 -2
  52. data/docs/shopify_app/sessions.md +358 -0
  53. data/docs/shopify_app/webhooks.md +88 -11
  54. data/karma.conf.js +6 -4
  55. data/lib/generators/shopify_app/add_declarative_webhook/add_declarative_webhook_generator.rb +53 -0
  56. data/lib/generators/shopify_app/add_declarative_webhook/templates/webhook_controller.rb.tt +13 -0
  57. data/lib/generators/shopify_app/add_declarative_webhook/templates/webhook_job.rb.tt +15 -0
  58. data/lib/generators/shopify_app/{add_gdpr_jobs/add_gdpr_jobs_generator.rb → add_privacy_jobs/add_privacy_jobs_generator.rb} +1 -1
  59. data/lib/generators/shopify_app/add_webhook/add_webhook_generator.rb +6 -1
  60. data/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +1 -0
  61. data/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +5 -2
  62. data/lib/generators/shopify_app/shopify_app_generator.rb +1 -1
  63. data/lib/generators/shopify_app/user_model/templates/db/migrate/add_user_expires_at_column.erb +5 -0
  64. data/lib/generators/shopify_app/user_model/user_model_generator.rb +20 -0
  65. data/lib/shopify_app/admin_api/with_token_refetch.rb +27 -0
  66. data/lib/shopify_app/auth/post_authenticate_tasks.rb +48 -0
  67. data/lib/shopify_app/auth/token_exchange.rb +73 -0
  68. data/lib/shopify_app/configuration.rb +69 -1
  69. data/lib/shopify_app/controller_concerns/app_proxy_verification.rb +1 -1
  70. data/lib/shopify_app/controller_concerns/csrf_protection.rb +2 -1
  71. data/lib/shopify_app/controller_concerns/embedded_app.rb +42 -3
  72. data/lib/shopify_app/controller_concerns/ensure_billing.rb +14 -3
  73. data/lib/shopify_app/controller_concerns/frame_ancestors.rb +1 -1
  74. data/lib/shopify_app/controller_concerns/localization.rb +11 -8
  75. data/lib/shopify_app/controller_concerns/login_protection.rb +34 -38
  76. data/lib/shopify_app/controller_concerns/redirect_for_embedded.rb +5 -0
  77. data/lib/shopify_app/controller_concerns/sanitized_params.rb +4 -0
  78. data/lib/shopify_app/controller_concerns/token_exchange.rb +111 -0
  79. data/lib/shopify_app/controller_concerns/with_shopify_id_token.rb +48 -0
  80. data/lib/shopify_app/engine.rb +5 -11
  81. data/lib/shopify_app/managers/webhooks_manager.rb +6 -2
  82. data/lib/shopify_app/middleware/jwt_middleware.rb +13 -9
  83. data/lib/shopify_app/session/in_memory_user_session_store.rb +1 -1
  84. data/lib/shopify_app/session/jwt.rb +9 -0
  85. data/lib/shopify_app/session/session_repository.rb +49 -8
  86. data/lib/shopify_app/session/shop_session_storage.rb +4 -0
  87. data/lib/shopify_app/session/shop_session_storage_with_scopes.rb +4 -0
  88. data/lib/shopify_app/session/user_session_storage.rb +4 -0
  89. data/lib/shopify_app/session/user_session_storage_with_scopes.rb +25 -0
  90. data/lib/shopify_app/test_helpers/shopify_session_helper.rb +1 -0
  91. data/lib/shopify_app/utils.rb +14 -1
  92. data/lib/shopify_app/version.rb +1 -1
  93. data/lib/shopify_app.rb +9 -3
  94. data/package.json +5 -6
  95. data/shopify_app.gemspec +4 -4
  96. data/yarn.lock +2134 -3905
  97. metadata +51 -60
  98. data/.github/workflows/stale.yml +0 -43
  99. data/app/assets/images/storage_access.svg +0 -1
  100. data/app/assets/javascripts/shopify_app/app_bridge_3.1.1.js +0 -10
  101. data/app/assets/javascripts/shopify_app/app_bridge_redirect.js +0 -22
  102. data/app/assets/javascripts/shopify_app/app_bridge_utils_3.1.1.js +0 -1
  103. data/app/controllers/concerns/shopify_app/authenticated.rb +0 -17
  104. data/app/controllers/concerns/shopify_app/require_known_shop.rb +0 -16
  105. data/docs/shopify_app/script-tags.md +0 -28
  106. data/docs/shopify_app/session-repository.md +0 -79
  107. data/lib/generators/shopify_app/add_marketing_activity_extension/add_marketing_activity_extension_generator.rb +0 -42
  108. data/lib/generators/shopify_app/add_marketing_activity_extension/templates/marketing_activities_controller.rb +0 -63
  109. data/lib/shopify_app/controller_concerns/itp.rb +0 -50
  110. data/lib/shopify_app/jobs/scripttags_manager_job.rb +0 -16
  111. data/lib/shopify_app/managers/scripttags_manager.rb +0 -85
  112. /data/lib/generators/shopify_app/{add_gdpr_jobs → add_privacy_jobs}/templates/customers_data_request_job.rb.tt +0 -0
  113. /data/lib/generators/shopify_app/{add_gdpr_jobs → add_privacy_jobs}/templates/customers_redact_job.rb.tt +0 -0
  114. /data/lib/generators/shopify_app/{add_gdpr_jobs → add_privacy_jobs}/templates/shop_redact_job.rb.tt +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a92631c8bf253b232ab525ca71c8eb4e9dd9803d040942994d6c82aa440a3a83
4
- data.tar.gz: 27bc111e45acffb302e8c794e8ecbffe9c558ab0deb3234b9512050565d8e866
3
+ metadata.gz: d8a8d6fb5b227bbe3070fba9050497eb007e4191a782bc89b12a84546470ed65
4
+ data.tar.gz: 5f8d8e4486585b07a93ad7f6abddaebde7a263568dc78e757627476aba37d38b
5
5
  SHA512:
6
- metadata.gz: 5b1ff59a290a9ef78dde26b03ce51b01ab31569e1d3ea29daca6df81dfec1903e9f785b06db4aa5fbe7dd66a078c4647ff981f5e3a02508b7457c07e84a5cc51
7
- data.tar.gz: 25d4baeebf8988d25bf3ac545deba5746ed6ff56e33d8ea0de8413fff50ae711e4804e2a10da2b893e2a741561be20b05b58d26ba9ab458fb29f582009dbd2f3
6
+ metadata.gz: 2a0b7ad073c42b6fbe5033aa686fa365050d8d56305507746b15f938a1511e979eecd49dcaefbe2793114c6ca4c4ef4f986085b743651115dc816faab404da15
7
+ data.tar.gz: a8896ed834816ef8fd35f17db67aef3efcd401fa2a46900e2a2bce8d5b96f863db3eaa0335e73d63b6c48e6382d52d9103c46fce7a7252568e1abe7e503d2075
data/.github/CODEOWNERS CHANGED
@@ -1,2 +1,3 @@
1
1
  * @shopify/platform-dev-tools-education
2
2
  * @shopify/app-foundations
3
+ * @Shopify/client-libraries-app-templates
@@ -6,36 +6,41 @@ labels: "Type: Bug 🐛"
6
6
 
7
7
  # Issue summary
8
8
 
9
- <!--
10
-
11
- Write a short description of the issue here. Please provide any details or logs that
12
- can help us debug it.
9
+ Before opening this issue, I have:
10
+
11
+ - [ ] Upgraded to the latest version of the package
12
+ - `shopify_app` version:
13
+ - Ruby version:
14
+ - Operating system:
15
+ - [ ] Set `log_level: :debug` [in my configuration](https://github.com/Shopify/shopify-api-ruby#setup-shopify-context), if applicable
16
+ - [ ] Found a reliable way to reproduce the problem that indicates it's a problem with the package
17
+ - [ ] Looked for similar issues in this repository
18
+ - [ ] Checked that this isn't an issue with a Shopify API
19
+ - If it is, please create a post in the [Shopify community forums](https://community.shopify.com/c/partners-and-developers/ct-p/appdev) or report it to [Shopify Partner Support](https://help.shopify.com/en/support/partners/org-select)
13
20
 
14
- Increase the logs as described in the README by setting log_level to :debug, and paste the relevant portion here.
15
-
16
- Learn more: https://github.com/Shopify/shopify-api-ruby#setup-shopify-context
21
+ <!--
22
+ Write a short description of the issue here.
17
23
 
24
+ We can only fix issues for which there is a clear reproduction scenario.
25
+ The more context you can provide, the easier it becomes for us to investigate and fix the issue.
18
26
  -->
19
27
 
20
- - `shopify_api` version:
21
- - `shopify_app` version:
22
- - Ruby version:
23
- - Operating system:
24
-
25
- ```
26
- // Paste any relevant logs here
27
- ```
28
-
29
28
  ## Expected behavior
30
29
 
31
- <!-- What do you think should happen? -->
30
+ What do you think should happen?
32
31
 
33
32
  ## Actual behavior
34
33
 
35
- <!-- What actually happens? -->
34
+ What actually happens?
36
35
 
37
36
  ## Steps to reproduce the problem
38
37
 
39
38
  1.
40
39
  1.
41
40
  1.
41
+
42
+ ## Debug logs
43
+
44
+ ```
45
+ // Paste any relevant logs here
46
+ ```
@@ -12,7 +12,7 @@ jobs:
12
12
  name: Ruby ${{ matrix.version }}
13
13
  strategy:
14
14
  matrix:
15
- version: ['2.7', '3.0', '3.1', '3.2']
15
+ version: ['3.0', '3.1', '3.2', '3.3']
16
16
 
17
17
  steps:
18
18
  - uses: actions/checkout@v3
@@ -30,7 +30,7 @@ jobs:
30
30
  - name: Set up Node
31
31
  uses: actions/setup-node@v3
32
32
  with:
33
- node-version: '12'
33
+ node-version: '18'
34
34
  - name: Install Yarn Dependencies
35
35
  run: yarn
36
36
  - name: Run Yarn Tests
@@ -11,7 +11,7 @@ jobs:
11
11
  steps:
12
12
  - name: Extract tag name
13
13
  id: tag
14
- run: echo "::set-output name=value::${GITHUB_REF##*/}"
14
+ run: echo "value=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT"
15
15
  - uses: actions/checkout@v3
16
16
 
17
17
  - name: Create Release
@@ -8,10 +8,9 @@ jobs:
8
8
 
9
9
  steps:
10
10
  - uses: actions/checkout@v3
11
- - name: Set up Ruby 2.7
11
+ - name: Set up Ruby
12
12
  uses: ruby/setup-ruby@v1
13
13
  with:
14
- ruby-version: 2.7
15
14
  bundler-cache: true
16
15
  - name: Install gems
17
16
  run: |
data/.nvmrc CHANGED
@@ -1 +1 @@
1
- 12.22.8
1
+ 20.10.0
data/.rubocop.yml CHANGED
@@ -2,7 +2,6 @@ inherit_gem:
2
2
  rubocop-shopify: rubocop.yml
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 2.7
6
5
  Exclude:
7
6
  - 'test/tmp/**/*'
8
7
  - 'vendor/bundle/**/*'
data/CHANGELOG.md CHANGED
@@ -1,6 +1,121 @@
1
1
  Unreleased
2
2
  ----------
3
3
 
4
+ 22.5.0 (November 28, 2024)
5
+ ----------
6
+ - Add support for filters in webhook registration [1923](https://github.com/Shopify/shopify_app/pull/1923)
7
+ - Make `ShopifyApp.configuration.scope` default to empty list `[]` [1913](https://github.com/Shopify/shopify_app/pull/1913)
8
+
9
+ 22.4.0 (August 22, 2024)
10
+ ----------
11
+ - Add the `unified_admin_domain` configuration option for the unified admin domain.
12
+ - Add new generators for webhook subscriptions defined in the `shopify.app.toml` file [1882](https://github.com/Shopify/shopify_app/pull/1882)
13
+ - Fix test stubbing for Token Exchange auth [1897](https://github.com/Shopify/shopify_app/pull/1897)
14
+
15
+ 22.3.1 (July 26, 2024)
16
+ ----------
17
+ - Handle edge case where we attempted to redirect to login when already at the top level [#1887](https://github.com/Shopify/shopify_app/pull/1887)
18
+
19
+ 22.3.0 (July 24, 2024)
20
+ ----------
21
+ - Deprecate `ShopifyApp::JWTMiddleware`. And remove internal usage. Any existing app code relying on decoded JWT contents set from `request.env` should instead include the `WithShopifyIdToken` concern and call its respective methods. [#1861](https://github.com/Shopify/shopify_app/pull/1861) [Migration Guide](/docs/Upgrading.md#v2300---removed-shopifyappjwtmiddleware)
22
+ - Handle scenario when invalid URI is passed to `sanitize_shop_domain` [#1852](https://github.com/Shopify/shopify_app/pull/1852)
23
+ - Remove references to old JS files during asset precompile [#1865](https://github.com/Shopify/shopify_app/pull/1865)
24
+ - Remove old translation keys for `enable_cookies_*`, `top_level_interaction_*` and `request_storage_access_*` [#1865](https://github.com/Shopify/shopify_app/pull/1865)
25
+ - Add invalid id token handling for `current_shopify_domain` method [#1868](https://github.com/Shopify/shopify_app/pull/1868)
26
+ - Keep original path and params when redirecting deep links to embed [#1869](https://github.com/Shopify/shopify_app/pull/1869)
27
+ - Fix managed install path for SPIN environments [#1877](https://github.com/Shopify/shopify_app/pull/1877)
28
+ - Migrate fullpage redirect to App Bridge CDN [#1870](https://github.com/Shopify/shopify_app/pull/1870)
29
+ - Improve embedded requests detection with `Sec-Fetch-Dest` header [#1873](https://github.com/Shopify/shopify_app/pull/1873)
30
+ - Fix bug where locale is not read from session if locale param is not present in app request [#1878](https://github.com/Shopify/shopify_app/pull/1878)
31
+
32
+ 22.2.1 (May 6,2024)
33
+ ----------
34
+ * Patch - Don't delete session on 401 errors during retry in `with_token_refetch` [#1844](https://github.com/Shopify/shopify_app/pull/1844)
35
+
36
+ 22.2.0 (May 2,2024)
37
+ ----------
38
+ * Add new zero redirect authorization strategy - `Token Exchange`.
39
+ - This strategy replaces the existing OAuth flow for embedded apps and remove the redirects that were previously necessary to complete OAuth.
40
+ See ["New embedded app authorization strategy (Token Exchange)"](/README.md/#new-embedded-app-authorization-strategy-token-exchange) for how to enable this feature.
41
+ - Related PRs: [#1817](https://github.com/Shopify/shopify_app/pull/1817),
42
+ [#1818](https://github.com/Shopify/shopify_app/pull/1818),
43
+ [#1819](https://github.com/Shopify/shopify_app/pull/1819),
44
+ [#1821](https://github.com/Shopify/shopify_app/pull/1821),
45
+ [#1822](https://github.com/Shopify/shopify_app/pull/1822),
46
+ [#1823](https://github.com/Shopify/shopify_app/pull/1823),
47
+ [#1832](https://github.com/Shopify/shopify_app/pull/1832),
48
+ [#1833](https://github.com/Shopify/shopify_app/pull/1833),
49
+ [#1834](https://github.com/Shopify/shopify_app/pull/1834),
50
+ [#1836](https://github.com/Shopify/shopify_app/pull/1836),
51
+ * Bumps `shopify_api` to `14.3.0` [1832](https://github.com/Shopify/shopify_app/pull/1832)
52
+ * Support `id_token` from URL param [1832](https://github.com/Shopify/shopify_app/pull/1832)
53
+ * Extracted controller concern `WithShopifyIdToken`
54
+ * This concern provides a method `shopify_id_token` to retrieve the Shopify Id token from either the authorization header or the URL param `id_token`.
55
+ * `ShopifyApp::JWTMiddleware` supports retrieving session token from URL param `id_token`
56
+ * `ShopifyApp::JWTMiddleware` returns early if the app is not embedded to avoid unnecessary JWT verification
57
+ * `LoginProtection` now uses `WithShopifyIdToken` concern to retrieve the Shopify Id token, thus accepting the session token from the URL param `id_token`
58
+ * Marking `ShopifyApp::JWT` to be deprecated in version 23.0.0 [1832](https://github.com/Shopify/shopify_app/pull/1832), use `ShopifyAPI::Auth::JwtPayload` instead.
59
+ * Fix infinite redirect loop caused by handling errors from Billing API [1833](https://github.com/Shopify/shopify_app/pull/1833)
60
+
61
+ 22.1.0 (April 9,2024)
62
+ ----------
63
+ * Extracted class - `PostAuthenticateTasks` to handle post authenticate tasks. To learn more, see [post authenticate tasks](/docs/shopify_app/authentication.md#post-authenticate-tasks). [1819](https://github.com/Shopify/shopify_app/pull/1819)
64
+ * Bumps shopify_api dependency to 14.1.0 [1826](https://github.com/Shopify/shopify_app/pull/1826)
65
+
66
+ 22.0.1 (March 12, 2024)
67
+ ----------
68
+ * Bumps `shopify_api` to `14.0.1` [1813](https://github.com/Shopify/shopify_app/pull/1813)
69
+
70
+ 22.00.0 (March 5, 2024)
71
+ ----------
72
+
73
+ To migrate from a previous version, please see the [v22 migration guide](docs/Upgrading.md#upgrading-to-v2200).
74
+
75
+ * ⚠️ [Breaking] Bumps minimum supported Ruby version to 3.0. Bumps `shopify_api` to 14.0 [1801](https://github.com/Shopify/shopify_app/pull/1801)
76
+ * ⚠️ [Breaking] Removes deprecated controller concerns that were renamed in `v21.10.0`. [1805](https://github.com/Shopify/shopify_app/pull/1805)
77
+ * ⚠️ [Breaking] Removes deprecated `ScripttagManager`. We realize there was communication error in our logging where we logged future deprecation instead of our inteded removal. Since we have been logging that for 2 years we felt we'd move forward with the removal instead pushing this off until the next major release. [1806](https://github.com/Shopify/shopify_app/pull/1806)
78
+ * ⚠️ [Breaking] Removes ITP controller concern and `browser_sniffer` dependency.[1810](https://github.com/Shopify/shopify_app/pull/1810)
79
+ * ⚠️ [Breaking] Removes Marketing Extensions generator [1810](https://github.com/Shopify/shopify_app/pull/1810)
80
+ * ⚠️ [Breaking] Thows an error if a controller includes incompatible concerns (LoginProtection/EnsureInstalled) [1809](https://github.com/Shopify/shopify_app/pull/1809)
81
+ * ⚠️ [Breaking] No longer rescues non-shopify API errors during OAuth
82
+ callback [1807](https://github.com/Shopify/shopify_app/pull/1807)
83
+ * Make type param for webhooks route optional. This will fix a bug with CLI initiated webhooks.[1786](https://github.com/Shopify/shopify_app/pull/1786)
84
+ * Fix redirecting to login when we catch a 401 response from Shopify, so that it can also handle cases where the app is already embedded when that happens.[1787](https://github.com/Shopify/shopify_app/pull/1787)
85
+ * Always register webhooks with offline sessions.[1788](https://github.com/Shopify/shopify_app/pull/1788)
86
+
87
+ 21.10.0 (January 24, 2024)
88
+ ----------
89
+ * Fix session deletion for users with customized session storage[#1773](https://github.com/Shopify/shopify_app/pull/1773)
90
+ * Add configuration flag `check_session_expiry_date` to trigger a re-auth when the (user) session is expired. The session expiry date must be stored and retrieved for this flag to be effective. When the `UserSessionStorageWithScopes` concern is used, a DB migration can be generated with `rails generate shopify_app:user_model --skip` and should be applied before enabling that flag[#1757](https://github.com/Shopify/shopify_app/pull/1757)
91
+
92
+ 21.9.0 (January 16, 2024)
93
+ ----------
94
+ * Fix `add_webhook` generator to create the webhook jobs under the correct directory[#1748](https://github.com/Shopify/shopify_app/pull/1748)
95
+ * Add support for metafield_namespaces in webhook registration [#1745](https://github.com/Shopify/shopify_app/pull/1745)
96
+ * Bumps `shopify_api` to latest version (13.4.0), adds support for 2024-01 API version [#1776](https://github.com/Shopify/shopify_app/pull/1776)
97
+
98
+ 21.8.1 (December 6, 2023)
99
+ ----------
100
+ * Bump `shopify_api` to 13.3.1 [1763](https://github.com/Shopify/shopify-api-ruby/blob/main/CHANGELOG.md#1331)
101
+
102
+ 21.8.0 (Dec 1, 2023)
103
+ ----------
104
+ * Bump `shopify_api` to include bugfix with mandatory webhooks + fixes for CI failures that prevented earlier release
105
+ * Fixes bug with `WebhooksManager#recreate_webhooks!` where we failed to register topics in the registry[#1743](https://github.com/Shopify/shopify_app/pull/1704)
106
+ * Allow embedded apps to provide a full URL to get redirected to, rather than defaulting to Shopify Admin [#1746](https://github.com/Shopify/shopify_app/pull/1746)
107
+
108
+ 21.7.0 (Oct 12, 2023)
109
+ ----------
110
+ * Fixes typo in webhook generator [#1704](https://github.com/Shopify/shopify_app/pull/1704)
111
+ * Fix registration of event_bridge and pub_sub webhooks [#1635](https://github.com/Shopify/shopify_app/pull/1635)
112
+ * Adds support for adding any number of trial days within `EnsureBilling` by adding the `trial_days` field to `BillingConfiguration`
113
+ * Updated AppBridge to 3.7.8 [#1680](https://github.com/Shopify/shopify_app/pull/1680)
114
+ * Support falling back to 2 letter language code locales [#1711](https://github.com/Shopify/shopify_app/pull/1711)
115
+ * Fix locale leaks across requests [#1711](https://github.com/Shopify/shopify_app/pull/1711)
116
+ * Fix bug in `InMemoryUserSessionStore#store`, this can now be used out of box. [#1716](https://github.com/Shopify/shopify_app/pull/1716)
117
+ * Adds support for 2023-10 API version [#1734](https://github.com/Shopify/shopify_app/pull/1734)
118
+
4
119
  21.6.0 (July 11, 2023)
5
120
  ----------
6
121
  * Adds support for toggling test charges within `EnsureBilling` by adding `test` field to `BillingConfiguration` and pulling in environment variable [#1688](https://github.com/Shopify/shopify_app/pull/1688)
@@ -0,0 +1,46 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all
5
+ people who contribute through reporting issues, posting feature
6
+ requests, updating documentation, submitting pull requests or patches,
7
+ and other activities.
8
+
9
+ We are committed to making participation in this project a
10
+ harassment-free experience for everyone, regardless of level of
11
+ experience, gender, gender identity and expression, sexual orientation,
12
+ disability, personal appearance, body size, race, ethnicity, age,
13
+ religion, or nationality.
14
+
15
+ Examples of unacceptable behavior by participants include:
16
+
17
+ - The use of sexualized language or imagery
18
+ - Personal attacks
19
+ - Trolling or insulting/derogatory comments
20
+ - Public or private harassment
21
+ - Publishing other's private information, such as physical or electronic
22
+ addresses, without explicit permission
23
+ - Other unethical or unprofessional conduct
24
+
25
+ Project maintainers have the right and responsibility to remove, edit,
26
+ or reject comments, commits, code, wiki edits, issues, and other
27
+ contributions that are not aligned to this Code of Conduct, or to ban
28
+ temporarily or permanently any contributor for other behaviors that they
29
+ deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ By adopting this Code of Conduct, project maintainers commit themselves
32
+ to fairly and consistently applying these principles to every aspect of
33
+ managing this project. Project maintainers who do not follow or enforce
34
+ the Code of Conduct may be permanently removed from the project team.
35
+
36
+ This Code of Conduct applies both within project spaces and in public
37
+ spaces when an individual is representing the project or its community.
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may
40
+ be reported by contacting a project maintainer at <opensource@shopify.com>.
41
+ All complaints will be reviewed and investigated and will result in a response
42
+ that is deemed necessary and appropriate to the circumstances. Maintainers are
43
+ obligated to maintain confidentiality with regard to the reporter of an incident.
44
+
45
+ This Code of Conduct is adapted from the Contributor Covenant, version
46
+ 1.3.0, available from http://contributor-covenant.org/version/1/3/0/
data/CONTRIBUTING.md CHANGED
@@ -23,7 +23,7 @@ Shopify has an official message board with dedicated forums to discuss all thing
23
23
  * [Shopify Apps](https://community.shopify.com/c/Shopify-Apps/bd-p/shopify-apps)
24
24
  * [Shopify APIs & SDKs](https://community.shopify.com/c/Shopify-APIs-SDKs/bd-p/shopify-apis-and-technology)
25
25
 
26
- If you prefer to chat instead, join the [Shopify Partners Slack Community group](https://www.shopify.com/partners/community#conversation). This Slack group hosts an active community of thousands of app developers.
26
+ If you prefer to chat instead, join the [Shopify Partners Slack Community group](https://community.shopify.com/c/partners-and-developers/ct-p/appdev). This Slack group hosts an active community of thousands of app developers.
27
27
 
28
28
  By participating in the Community forum or Slack group, you agree to adhere to the forum [Code of Conduct](https://community.shopify.com/c/Announcements/Code-of-Conduct/m-p/491969#M23) outlined.
29
29
 
@@ -89,8 +89,3 @@ To run tests, you'll need to make sure that your development environment is setu
89
89
  * To run all tests: `bundle exec rake test`
90
90
  * To run a specific test file: `bundle exec rake test TEST=test/controllers/callback_controller_test.rb`
91
91
  * To run a single test: `bundle exec rake test TEST=test/controllers/callback_controller_test.rb:50` where `50` is the line number on or inside the test case.
92
-
93
- ### App Bridge client
94
-
95
- This gem ships with a UMD version of the App Bridge client. It lives inside the assets folder: `app/assets/javascripts/shopify_app/`. To update the client, simply download the UMD build from [unpkg.com](https://unpkg.com/@shopify/app-bridge) and save it into the folder.
96
- Please follow the convention of including the client version number in the filename. Finally, change the reference to the new App Bridge client inside `app/assets/javascripts/shopify_app/app_bridge_redirect.js`.
data/Gemfile.lock CHANGED
@@ -1,81 +1,80 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify_app (21.6.0)
4
+ shopify_app (22.5.0)
5
5
  activeresource
6
6
  addressable (~> 2.7)
7
- browser_sniffer (~> 2.0)
8
7
  jwt (>= 2.2.3)
9
8
  rails (> 5.2.1)
10
9
  redirect_safely (~> 1.0)
11
- shopify_api (~> 13.1)
10
+ shopify_api (>= 14.7.0, < 15.0)
12
11
  sprockets-rails (>= 2.0.0)
13
12
 
14
13
  GEM
15
14
  remote: https://rubygems.org/
16
15
  specs:
17
- actioncable (6.1.7.3)
18
- actionpack (= 6.1.7.3)
19
- activesupport (= 6.1.7.3)
16
+ actioncable (6.1.7.9)
17
+ actionpack (= 6.1.7.9)
18
+ activesupport (= 6.1.7.9)
20
19
  nio4r (~> 2.0)
21
20
  websocket-driver (>= 0.6.1)
22
- actionmailbox (6.1.7.3)
23
- actionpack (= 6.1.7.3)
24
- activejob (= 6.1.7.3)
25
- activerecord (= 6.1.7.3)
26
- activestorage (= 6.1.7.3)
27
- activesupport (= 6.1.7.3)
21
+ actionmailbox (6.1.7.9)
22
+ actionpack (= 6.1.7.9)
23
+ activejob (= 6.1.7.9)
24
+ activerecord (= 6.1.7.9)
25
+ activestorage (= 6.1.7.9)
26
+ activesupport (= 6.1.7.9)
28
27
  mail (>= 2.7.1)
29
- actionmailer (6.1.7.3)
30
- actionpack (= 6.1.7.3)
31
- actionview (= 6.1.7.3)
32
- activejob (= 6.1.7.3)
33
- activesupport (= 6.1.7.3)
28
+ actionmailer (6.1.7.9)
29
+ actionpack (= 6.1.7.9)
30
+ actionview (= 6.1.7.9)
31
+ activejob (= 6.1.7.9)
32
+ activesupport (= 6.1.7.9)
34
33
  mail (~> 2.5, >= 2.5.4)
35
34
  rails-dom-testing (~> 2.0)
36
- actionpack (6.1.7.3)
37
- actionview (= 6.1.7.3)
38
- activesupport (= 6.1.7.3)
35
+ actionpack (6.1.7.9)
36
+ actionview (= 6.1.7.9)
37
+ activesupport (= 6.1.7.9)
39
38
  rack (~> 2.0, >= 2.0.9)
40
39
  rack-test (>= 0.6.3)
41
40
  rails-dom-testing (~> 2.0)
42
41
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
43
- actiontext (6.1.7.3)
44
- actionpack (= 6.1.7.3)
45
- activerecord (= 6.1.7.3)
46
- activestorage (= 6.1.7.3)
47
- activesupport (= 6.1.7.3)
42
+ actiontext (6.1.7.9)
43
+ actionpack (= 6.1.7.9)
44
+ activerecord (= 6.1.7.9)
45
+ activestorage (= 6.1.7.9)
46
+ activesupport (= 6.1.7.9)
48
47
  nokogiri (>= 1.8.5)
49
- actionview (6.1.7.3)
50
- activesupport (= 6.1.7.3)
48
+ actionview (6.1.7.9)
49
+ activesupport (= 6.1.7.9)
51
50
  builder (~> 3.1)
52
51
  erubi (~> 1.4)
53
52
  rails-dom-testing (~> 2.0)
54
53
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
55
- activejob (6.1.7.3)
56
- activesupport (= 6.1.7.3)
54
+ activejob (6.1.7.9)
55
+ activesupport (= 6.1.7.9)
57
56
  globalid (>= 0.3.6)
58
- activemodel (6.1.7.3)
59
- activesupport (= 6.1.7.3)
57
+ activemodel (6.1.7.9)
58
+ activesupport (= 6.1.7.9)
60
59
  activemodel-serializers-xml (1.0.2)
61
60
  activemodel (> 5.x)
62
61
  activesupport (> 5.x)
63
62
  builder (~> 3.1)
64
- activerecord (6.1.7.3)
65
- activemodel (= 6.1.7.3)
66
- activesupport (= 6.1.7.3)
67
- activeresource (6.0.0)
63
+ activerecord (6.1.7.9)
64
+ activemodel (= 6.1.7.9)
65
+ activesupport (= 6.1.7.9)
66
+ activeresource (6.1.3)
68
67
  activemodel (>= 6.0)
69
68
  activemodel-serializers-xml (~> 1.0)
70
69
  activesupport (>= 6.0)
71
- activestorage (6.1.7.3)
72
- actionpack (= 6.1.7.3)
73
- activejob (= 6.1.7.3)
74
- activerecord (= 6.1.7.3)
75
- activesupport (= 6.1.7.3)
70
+ activestorage (6.1.7.9)
71
+ actionpack (= 6.1.7.9)
72
+ activejob (= 6.1.7.9)
73
+ activerecord (= 6.1.7.9)
74
+ activesupport (= 6.1.7.9)
76
75
  marcel (~> 1.0)
77
76
  mini_mime (>= 1.1.0)
78
- activesupport (6.1.7.3)
77
+ activesupport (6.1.7.9)
79
78
  concurrent-ruby (~> 1.0, >= 1.0.2)
80
79
  i18n (>= 1.6, < 2)
81
80
  minitest (>= 5.1)
@@ -86,30 +85,29 @@ GEM
86
85
  ast (2.4.2)
87
86
  binding_of_caller (1.0.0)
88
87
  debug_inspector (>= 0.0.1)
89
- browser_sniffer (2.2.0)
90
- builder (3.2.4)
88
+ builder (3.3.0)
91
89
  byebug (11.1.3)
92
90
  coderay (1.1.3)
93
- concurrent-ruby (1.2.2)
91
+ concurrent-ruby (1.3.4)
94
92
  crack (0.4.5)
95
93
  rexml
96
94
  crass (1.0.6)
97
- date (3.3.3)
95
+ date (3.3.4)
98
96
  debug_inspector (1.1.0)
99
- erubi (1.12.0)
100
- globalid (1.1.0)
101
- activesupport (>= 5.0)
97
+ erubi (1.13.0)
98
+ globalid (1.2.1)
99
+ activesupport (>= 6.1)
102
100
  hash_diff (1.1.1)
103
101
  hashdiff (1.0.1)
104
102
  httparty (0.21.0)
105
103
  mini_mime (>= 1.0.0)
106
104
  multi_xml (>= 0.5.2)
107
- i18n (1.13.0)
105
+ i18n (1.14.6)
108
106
  concurrent-ruby (~> 1.0)
109
- json (2.6.3)
107
+ json (2.7.2)
110
108
  jwt (2.7.0)
111
109
  language_server-protocol (3.17.0.3)
112
- loofah (2.21.3)
110
+ loofah (2.22.0)
113
111
  crass (~> 1.0.2)
114
112
  nokogiri (>= 1.12.0)
115
113
  mail (2.8.1)
@@ -119,32 +117,33 @@ GEM
119
117
  net-smtp
120
118
  marcel (1.0.2)
121
119
  method_source (1.0.0)
122
- mini_mime (1.1.2)
120
+ mini_mime (1.1.5)
123
121
  minitest (5.18.0)
124
122
  mocha (2.0.2)
125
123
  ruby2_keywords (>= 0.0.5)
126
124
  multi_xml (0.6.0)
127
- net-imap (0.3.4)
125
+ net-imap (0.4.17)
128
126
  date
129
127
  net-protocol
130
128
  net-pop (0.1.2)
131
129
  net-protocol
132
- net-protocol (0.2.1)
130
+ net-protocol (0.2.2)
133
131
  timeout
134
- net-smtp (0.3.3)
132
+ net-smtp (0.5.0)
135
133
  net-protocol
136
134
  nio4r (2.5.9)
137
- nokogiri (1.15.0-arm64-darwin)
135
+ nokogiri (1.16.7-arm64-darwin)
138
136
  racc (~> 1.4)
139
- nokogiri (1.15.0-x86_64-darwin)
137
+ nokogiri (1.16.7-x86_64-darwin)
140
138
  racc (~> 1.4)
141
- nokogiri (1.15.0-x86_64-linux)
139
+ nokogiri (1.16.7-x86_64-linux)
142
140
  racc (~> 1.4)
143
141
  oj (3.14.3)
144
142
  openssl (3.1.0)
145
- parallel (1.23.0)
146
- parser (3.2.2.1)
143
+ parallel (1.24.0)
144
+ parser (3.3.0.5)
147
145
  ast (~> 2.4.1)
146
+ racc
148
147
  prettier_print (1.2.1)
149
148
  pry (0.14.2)
150
149
  coderay (~> 1.1)
@@ -155,37 +154,39 @@ GEM
155
154
  binding_of_caller (~> 1.0)
156
155
  pry (~> 0.13)
157
156
  public_suffix (5.0.1)
158
- racc (1.6.2)
159
- rack (2.2.7)
157
+ racc (1.8.1)
158
+ rack (2.2.10)
160
159
  rack-test (2.1.0)
161
160
  rack (>= 1.3)
162
- rails (6.1.7.3)
163
- actioncable (= 6.1.7.3)
164
- actionmailbox (= 6.1.7.3)
165
- actionmailer (= 6.1.7.3)
166
- actionpack (= 6.1.7.3)
167
- actiontext (= 6.1.7.3)
168
- actionview (= 6.1.7.3)
169
- activejob (= 6.1.7.3)
170
- activemodel (= 6.1.7.3)
171
- activerecord (= 6.1.7.3)
172
- activestorage (= 6.1.7.3)
173
- activesupport (= 6.1.7.3)
161
+ rails (6.1.7.9)
162
+ actioncable (= 6.1.7.9)
163
+ actionmailbox (= 6.1.7.9)
164
+ actionmailer (= 6.1.7.9)
165
+ actionpack (= 6.1.7.9)
166
+ actiontext (= 6.1.7.9)
167
+ actionview (= 6.1.7.9)
168
+ activejob (= 6.1.7.9)
169
+ activemodel (= 6.1.7.9)
170
+ activerecord (= 6.1.7.9)
171
+ activestorage (= 6.1.7.9)
172
+ activesupport (= 6.1.7.9)
174
173
  bundler (>= 1.15.0)
175
- railties (= 6.1.7.3)
174
+ railties (= 6.1.7.9)
176
175
  sprockets-rails (>= 2.0.0)
177
176
  rails-controller-testing (1.0.5)
178
177
  actionpack (>= 5.0.1.rc1)
179
178
  actionview (>= 5.0.1.rc1)
180
179
  activesupport (>= 5.0.1.rc1)
181
- rails-dom-testing (2.0.3)
182
- activesupport (>= 4.2.0)
180
+ rails-dom-testing (2.2.0)
181
+ activesupport (>= 5.0.0)
182
+ minitest
183
183
  nokogiri (>= 1.6)
184
- rails-html-sanitizer (1.5.0)
185
- loofah (~> 2.19, >= 2.19.1)
186
- railties (6.1.7.3)
187
- actionpack (= 6.1.7.3)
188
- activesupport (= 6.1.7.3)
184
+ rails-html-sanitizer (1.6.0)
185
+ loofah (~> 2.21)
186
+ nokogiri (~> 1.14)
187
+ railties (6.1.7.9)
188
+ actionpack (= 6.1.7.9)
189
+ activesupport (= 6.1.7.9)
189
190
  method_source
190
191
  rake (>= 12.2)
191
192
  thor (~> 1.0)
@@ -194,20 +195,21 @@ GEM
194
195
  rb-readline (0.5.5)
195
196
  redirect_safely (1.0.0)
196
197
  activemodel
197
- regexp_parser (2.8.0)
198
- rexml (3.2.5)
199
- rubocop (1.51.0)
198
+ regexp_parser (2.9.0)
199
+ rexml (3.3.9)
200
+ rubocop (1.62.1)
200
201
  json (~> 2.3)
202
+ language_server-protocol (>= 3.17.0)
201
203
  parallel (~> 1.10)
202
- parser (>= 3.2.0.0)
204
+ parser (>= 3.3.0.2)
203
205
  rainbow (>= 2.2.2, < 4.0)
204
206
  regexp_parser (>= 1.8, < 3.0)
205
207
  rexml (>= 3.2.5, < 4.0)
206
- rubocop-ast (>= 1.28.0, < 2.0)
208
+ rubocop-ast (>= 1.31.1, < 2.0)
207
209
  ruby-progressbar (~> 1.7)
208
210
  unicode-display_width (>= 2.4.0, < 3.0)
209
- rubocop-ast (1.28.1)
210
- parser (>= 3.2.1.0)
211
+ rubocop-ast (1.31.2)
212
+ parser (>= 3.3.0.4)
211
213
  rubocop-shopify (2.13.0)
212
214
  rubocop (~> 1.50)
213
215
  ruby-lsp (0.5.1)
@@ -217,7 +219,7 @@ GEM
217
219
  ruby-progressbar (1.13.0)
218
220
  ruby2_keywords (0.0.5)
219
221
  securerandom (0.2.2)
220
- shopify_api (13.1.0)
222
+ shopify_api (14.7.0)
221
223
  activesupport
222
224
  concurrent-ruby
223
225
  hash_diff
@@ -236,16 +238,16 @@ GEM
236
238
  actionpack (>= 5.2)
237
239
  activesupport (>= 5.2)
238
240
  sprockets (>= 3.0.0)
239
- sqlite3 (1.6.3-arm64-darwin)
240
- sqlite3 (1.6.3-x86_64-darwin)
241
- sqlite3 (1.6.3-x86_64-linux)
241
+ sqlite3 (1.7.3-arm64-darwin)
242
+ sqlite3 (1.7.3-x86_64-darwin)
243
+ sqlite3 (1.7.3-x86_64-linux)
242
244
  syntax_tree (6.1.1)
243
245
  prettier_print (>= 1.2.0)
244
246
  thor (1.2.2)
245
- timeout (0.3.2)
247
+ timeout (0.4.1)
246
248
  tzinfo (2.0.6)
247
249
  concurrent-ruby (~> 1.0)
248
- unicode-display_width (2.4.2)
250
+ unicode-display_width (2.5.0)
249
251
  webmock (3.18.1)
250
252
  addressable (>= 2.8.0)
251
253
  crack (>= 0.3.2)
@@ -253,11 +255,12 @@ GEM
253
255
  websocket-driver (0.7.5)
254
256
  websocket-extensions (>= 0.1.0)
255
257
  websocket-extensions (0.1.5)
256
- zeitwerk (2.6.4)
258
+ zeitwerk (2.6.18)
257
259
 
258
260
  PLATFORMS
259
261
  arm64-darwin-21
260
262
  arm64-darwin-22
263
+ arm64-darwin-23
261
264
  x86_64-darwin-19
262
265
  x86_64-darwin-20
263
266
  x86_64-darwin-21