shopify_app 21.4.0 → 21.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +3 -3
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/remove-labels-on-activity.yml +1 -1
- data/.github/workflows/rubocop.yml +1 -1
- data/.github/workflows/stale.yml +22 -11
- data/.ruby-version +1 -1
- data/CHANGELOG.md +13 -0
- data/CONTRIBUTING.md +17 -2
- data/Gemfile.lock +113 -108
- data/app/controllers/concerns/shopify_app/authenticated.rb +5 -2
- data/app/controllers/concerns/shopify_app/require_known_shop.rb +5 -2
- data/docs/shopify_app/session-repository.md +1 -1
- data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +5 -2
- data/lib/generators/shopify_app/add_after_authenticate_job/templates/after_authenticate_job.rb +1 -1
- data/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +2 -2
- data/lib/generators/shopify_app/install/install_generator.rb +2 -2
- data/lib/generators/shopify_app/shop_model/templates/db/migrate/add_shop_access_scopes_column.erb +1 -1
- data/lib/generators/shopify_app/user_model/templates/db/migrate/add_user_access_scopes_column.erb +1 -1
- data/lib/shopify_app/access_scopes/user_strategy.rb +4 -2
- data/lib/shopify_app/controller_concerns/ensure_billing.rb +6 -4
- data/lib/shopify_app/controller_concerns/login_protection.rb +7 -3
- data/lib/shopify_app/engine.rb +8 -3
- data/lib/shopify_app/managers/webhooks_manager.rb +5 -5
- data/lib/shopify_app/session/session_repository.rb +4 -4
- data/lib/shopify_app/session/session_storage.rb +2 -2
- data/lib/shopify_app/utils.rb +11 -1
- data/lib/shopify_app/version.rb +1 -1
- data/package.json +1 -1
- data/service.yml +0 -2
- data/shopify_app.gemspec +1 -1
- data/translation.yml +1 -0
- data/yarn.lock +15 -15
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '029b36852c1c017c7e96570b5e90aca34f2471bd9b56699c1bc1d4ef6f6996a8'
|
4
|
+
data.tar.gz: '01239772e056908581b57f0cc93dc3b867fa14447887865c19b09e7b6fae08bf'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10cdbfa6bef394875c1d5bd518f62862c289bce52f835af22dae3c3c3f64d91629008e012cf10e7e1dd83fff70664fd01cc070dd90672e99f88bde9e529aba03
|
7
|
+
data.tar.gz: e38068aca0100e029f26695c5558c698ebff02fb7a4189b217a7b8e38902d4a8d38564f4a8eabba4d959bf55677e54822444937d43da2251e88f9334c3dc2a85
|
data/.github/workflows/build.yml
CHANGED
@@ -12,12 +12,12 @@ jobs:
|
|
12
12
|
name: Ruby ${{ matrix.version }}
|
13
13
|
strategy:
|
14
14
|
matrix:
|
15
|
-
version: ['2.7', '3.0']
|
15
|
+
version: ['2.7', '3.0', '3.1', '3.2']
|
16
16
|
|
17
17
|
steps:
|
18
|
-
- uses: actions/checkout@
|
18
|
+
- uses: actions/checkout@v3
|
19
19
|
- name: Cache node modules
|
20
|
-
uses: actions/cache@
|
20
|
+
uses: actions/cache@v3
|
21
21
|
with:
|
22
22
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
23
23
|
path: ~/.npm
|
@@ -7,7 +7,7 @@ jobs:
|
|
7
7
|
remove-labels-on-activity:
|
8
8
|
runs-on: ubuntu-latest
|
9
9
|
steps:
|
10
|
-
- uses: actions/checkout@
|
10
|
+
- uses: actions/checkout@v3
|
11
11
|
- uses: actions-ecosystem/action-remove-labels@v1
|
12
12
|
if: contains(github.event.issue.labels.*.name, 'Waiting for Response')
|
13
13
|
with:
|
data/.github/workflows/stale.yml
CHANGED
@@ -1,32 +1,43 @@
|
|
1
|
-
name: Close inactive issues
|
1
|
+
name: Close inactive issues / prs
|
2
2
|
on:
|
3
3
|
schedule:
|
4
4
|
- cron: "30 1 * * *"
|
5
5
|
|
6
6
|
jobs:
|
7
|
-
|
7
|
+
stale:
|
8
8
|
runs-on: ubuntu-latest
|
9
9
|
permissions:
|
10
10
|
issues: write
|
11
11
|
pull-requests: write
|
12
12
|
steps:
|
13
|
-
- uses: actions/stale@
|
13
|
+
- uses: actions/stale@v7
|
14
14
|
with:
|
15
|
-
days-before-issue-stale:
|
15
|
+
days-before-issue-stale: 60
|
16
16
|
days-before-issue-close: 14
|
17
|
+
days-before-pr-stale: 60
|
18
|
+
days-before-pr-close: 14
|
19
|
+
operations-per-run: 1000
|
17
20
|
stale-issue-label: "Stale"
|
21
|
+
stale-pr-label: "Stale"
|
18
22
|
stale-issue-message: >
|
19
|
-
This issue is stale because it has been open for
|
23
|
+
This issue is stale because it has been open for 60 days with no activity. It will be closed if no further action occurs in 14 days.
|
20
24
|
close-issue-message: |
|
21
|
-
We are closing this issue because it has been inactive for a few months.
|
22
|
-
This probably means that it is not reproducible or it has been fixed in a newer version.
|
25
|
+
We are closing this issue because it has been inactive for a few months.
|
26
|
+
This probably means that it is not reproducible or it has been fixed in a newer version.
|
23
27
|
If it’s an enhancement and hasn’t been taken on since it was submitted, then it seems other issues have taken priority.
|
24
28
|
|
25
29
|
If you still encounter this issue with the latest stable version, please reopen using the issue template. You can also contribute directly by submitting a pull request– see the [CONTRIBUTING.md](https://github.com/Shopify/shopify_app/blob/main/CONTRIBUTING.md) file for guidelines
|
26
30
|
|
27
31
|
Thank you!
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
stale-pr-message: >
|
33
|
+
This pull request is stale because it has been open for 60 days with no activity. It will be closed if no further action occurs in 14 days.
|
34
|
+
close-pr-message: |
|
35
|
+
We are closing this pull request because it has been inactive for a few months.
|
36
|
+
This probably means that it is not reproducible or it has been fixed in a newer version.
|
37
|
+
If it’s an enhancement and hasn’t been taken on since it was submitted, then it seems other issues have taken priority.
|
38
|
+
|
39
|
+
If you still encounter this pull request with the latest stable version, please reopen using the pull request template. You can also contribute directly by submitting a pull request– see the [CONTRIBUTING.md](https://github.com/Shopify/shopify_app/blob/main/CONTRIBUTING.md) file for guidelines
|
40
|
+
|
41
|
+
Thank you!
|
42
|
+
repo-token: ${{ github.token }}
|
32
43
|
close-issue-reason: "not_planned"
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
Unreleased
|
2
2
|
----------
|
3
3
|
|
4
|
+
21.5.0 (May 18, 2023)
|
5
|
+
----------
|
6
|
+
* Support Unified Admin [#1658](https://github.com/Shopify/shopify_app/pull/1658)
|
7
|
+
* Set `access_scopes` column to string by default [#1636](https://github.com/Shopify/shopify_app/pull/1636)
|
8
|
+
* Fixes a bug with `EnsureBilling` causing infinite redirect in embedded apps [#1578](https://github.com/Shopify/shopify_app/pull/1578)
|
9
|
+
* Modifies SessionStorage#with_shopify_session to call a block with a supplied session instance [#1488](https://github.com/Shopify/shopify_app/pull/1488)
|
10
|
+
* Refactors `ShopifyApp::WebhhooksManager#recreate_webhooks!` to have a uniform webhook inventory that doesn't clash with the API library. Updates webhook generator to use supplied session. [#1686](https://github.com/Shopify/shopify_app/pull/1686)
|
11
|
+
* No longer use session repository from API library[#1689](https://github.com/Shopify/shopify_app/pull/1689)
|
12
|
+
|
13
|
+
21.4.1 (Feb 21, 2023)
|
14
|
+
----------
|
15
|
+
* Fixed bug where authentication redirect could still happen even though `reauth_on_access_scope_changes` is set to `false` [#1639](https://github.com/Shopify/shopify_app/pull/1639)
|
16
|
+
|
4
17
|
21.4.0 (Jan 5, 2023)
|
5
18
|
----------
|
6
19
|
* Updated shopify_api to 12.4.0 [#1633](https://github.com/Shopify/shopify_app/pull/1633)
|
data/CONTRIBUTING.md
CHANGED
@@ -61,7 +61,7 @@ If you have a suggestion for the Shopify App gem or a feature request, provide t
|
|
61
61
|
|
62
62
|
The process described here has several goals:
|
63
63
|
|
64
|
-
* Maintain the Shopify App gem's quality
|
64
|
+
* Maintain the Shopify App gem's quality (does the change you're making have a test?)
|
65
65
|
* Fix problems that are important to app developers
|
66
66
|
* Enable a sustainable system for the Shopify App gem's maintainers to review contributions
|
67
67
|
|
@@ -74,7 +74,22 @@ Please follow these steps to have your contribution considered by the maintainer
|
|
74
74
|
|
75
75
|
While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted.
|
76
76
|
</details>
|
77
|
-
|
77
|
+
|
78
|
+
### Running tests
|
79
|
+
|
80
|
+
#### Test Environment Requirements
|
81
|
+
|
82
|
+
To run tests, you'll need to make sure that your development environment is setup correctly. You'll need:
|
83
|
+
|
84
|
+
* Ruby 3+ is installed on your system
|
85
|
+
* Install dependencies with `bundle install`
|
86
|
+
|
87
|
+
#### Executing Tests
|
88
|
+
|
89
|
+
* To run all tests: `bundle exec rake test`
|
90
|
+
* To run a specific test file: `bundle exec rake test TEST=test/controllers/callback_controller_test.rb`
|
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
|
+
|
78
93
|
### App Bridge client
|
79
94
|
|
80
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.
|
data/Gemfile.lock
CHANGED
@@ -1,87 +1,87 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify_app (21.
|
4
|
+
shopify_app (21.5.0)
|
5
5
|
activeresource
|
6
6
|
addressable (~> 2.7)
|
7
7
|
browser_sniffer (~> 2.0)
|
8
8
|
jwt (>= 2.2.3)
|
9
9
|
rails (> 5.2.1)
|
10
10
|
redirect_safely (~> 1.0)
|
11
|
-
shopify_api (~>
|
11
|
+
shopify_api (~> 13.0)
|
12
12
|
sprockets-rails (>= 2.0.0)
|
13
13
|
|
14
14
|
GEM
|
15
15
|
remote: https://rubygems.org/
|
16
16
|
specs:
|
17
|
-
actioncable (6.1.7)
|
18
|
-
actionpack (= 6.1.7)
|
19
|
-
activesupport (= 6.1.7)
|
17
|
+
actioncable (6.1.7.3)
|
18
|
+
actionpack (= 6.1.7.3)
|
19
|
+
activesupport (= 6.1.7.3)
|
20
20
|
nio4r (~> 2.0)
|
21
21
|
websocket-driver (>= 0.6.1)
|
22
|
-
actionmailbox (6.1.7)
|
23
|
-
actionpack (= 6.1.7)
|
24
|
-
activejob (= 6.1.7)
|
25
|
-
activerecord (= 6.1.7)
|
26
|
-
activestorage (= 6.1.7)
|
27
|
-
activesupport (= 6.1.7)
|
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)
|
28
28
|
mail (>= 2.7.1)
|
29
|
-
actionmailer (6.1.7)
|
30
|
-
actionpack (= 6.1.7)
|
31
|
-
actionview (= 6.1.7)
|
32
|
-
activejob (= 6.1.7)
|
33
|
-
activesupport (= 6.1.7)
|
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)
|
34
34
|
mail (~> 2.5, >= 2.5.4)
|
35
35
|
rails-dom-testing (~> 2.0)
|
36
|
-
actionpack (6.1.7)
|
37
|
-
actionview (= 6.1.7)
|
38
|
-
activesupport (= 6.1.7)
|
36
|
+
actionpack (6.1.7.3)
|
37
|
+
actionview (= 6.1.7.3)
|
38
|
+
activesupport (= 6.1.7.3)
|
39
39
|
rack (~> 2.0, >= 2.0.9)
|
40
40
|
rack-test (>= 0.6.3)
|
41
41
|
rails-dom-testing (~> 2.0)
|
42
42
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
43
|
-
actiontext (6.1.7)
|
44
|
-
actionpack (= 6.1.7)
|
45
|
-
activerecord (= 6.1.7)
|
46
|
-
activestorage (= 6.1.7)
|
47
|
-
activesupport (= 6.1.7)
|
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)
|
48
48
|
nokogiri (>= 1.8.5)
|
49
|
-
actionview (6.1.7)
|
50
|
-
activesupport (= 6.1.7)
|
49
|
+
actionview (6.1.7.3)
|
50
|
+
activesupport (= 6.1.7.3)
|
51
51
|
builder (~> 3.1)
|
52
52
|
erubi (~> 1.4)
|
53
53
|
rails-dom-testing (~> 2.0)
|
54
54
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
55
|
-
activejob (6.1.7)
|
56
|
-
activesupport (= 6.1.7)
|
55
|
+
activejob (6.1.7.3)
|
56
|
+
activesupport (= 6.1.7.3)
|
57
57
|
globalid (>= 0.3.6)
|
58
|
-
activemodel (6.1.7)
|
59
|
-
activesupport (= 6.1.7)
|
58
|
+
activemodel (6.1.7.3)
|
59
|
+
activesupport (= 6.1.7.3)
|
60
60
|
activemodel-serializers-xml (1.0.2)
|
61
61
|
activemodel (> 5.x)
|
62
62
|
activesupport (> 5.x)
|
63
63
|
builder (~> 3.1)
|
64
|
-
activerecord (6.1.7)
|
65
|
-
activemodel (= 6.1.7)
|
66
|
-
activesupport (= 6.1.7)
|
64
|
+
activerecord (6.1.7.3)
|
65
|
+
activemodel (= 6.1.7.3)
|
66
|
+
activesupport (= 6.1.7.3)
|
67
67
|
activeresource (6.0.0)
|
68
68
|
activemodel (>= 6.0)
|
69
69
|
activemodel-serializers-xml (~> 1.0)
|
70
70
|
activesupport (>= 6.0)
|
71
|
-
activestorage (6.1.7)
|
72
|
-
actionpack (= 6.1.7)
|
73
|
-
activejob (= 6.1.7)
|
74
|
-
activerecord (= 6.1.7)
|
75
|
-
activesupport (= 6.1.7)
|
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)
|
76
76
|
marcel (~> 1.0)
|
77
77
|
mini_mime (>= 1.1.0)
|
78
|
-
activesupport (6.1.7)
|
78
|
+
activesupport (6.1.7.3)
|
79
79
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
80
80
|
i18n (>= 1.6, < 2)
|
81
81
|
minitest (>= 5.1)
|
82
82
|
tzinfo (~> 2.0)
|
83
83
|
zeitwerk (~> 2.3)
|
84
|
-
addressable (2.8.
|
84
|
+
addressable (2.8.4)
|
85
85
|
public_suffix (>= 2.0.2, < 6.0)
|
86
86
|
ast (2.4.2)
|
87
87
|
binding_of_caller (1.0.0)
|
@@ -90,28 +90,29 @@ GEM
|
|
90
90
|
builder (3.2.4)
|
91
91
|
byebug (11.1.3)
|
92
92
|
coderay (1.1.3)
|
93
|
-
concurrent-ruby (1.
|
93
|
+
concurrent-ruby (1.2.2)
|
94
94
|
crack (0.4.5)
|
95
95
|
rexml
|
96
96
|
crass (1.0.6)
|
97
|
+
date (3.3.3)
|
97
98
|
debug_inspector (1.1.0)
|
98
|
-
erubi (1.
|
99
|
-
globalid (1.
|
99
|
+
erubi (1.12.0)
|
100
|
+
globalid (1.1.0)
|
100
101
|
activesupport (>= 5.0)
|
101
102
|
hash_diff (1.1.1)
|
102
103
|
hashdiff (1.0.1)
|
103
104
|
httparty (0.21.0)
|
104
105
|
mini_mime (>= 1.0.0)
|
105
106
|
multi_xml (>= 0.5.2)
|
106
|
-
i18n (1.
|
107
|
+
i18n (1.13.0)
|
107
108
|
concurrent-ruby (~> 1.0)
|
108
109
|
json (2.6.3)
|
109
|
-
jwt (2.
|
110
|
-
language_server-protocol (3.17.0.
|
111
|
-
loofah (2.
|
110
|
+
jwt (2.7.0)
|
111
|
+
language_server-protocol (3.17.0.3)
|
112
|
+
loofah (2.21.3)
|
112
113
|
crass (~> 1.0.2)
|
113
|
-
nokogiri (>= 1.
|
114
|
-
mail (2.8.
|
114
|
+
nokogiri (>= 1.12.0)
|
115
|
+
mail (2.8.1)
|
115
116
|
mini_mime (>= 0.1.1)
|
116
117
|
net-imap
|
117
118
|
net-pop
|
@@ -119,32 +120,33 @@ GEM
|
|
119
120
|
marcel (1.0.2)
|
120
121
|
method_source (1.0.0)
|
121
122
|
mini_mime (1.1.2)
|
122
|
-
minitest (5.
|
123
|
+
minitest (5.18.0)
|
123
124
|
mocha (2.0.2)
|
124
125
|
ruby2_keywords (>= 0.0.5)
|
125
126
|
multi_xml (0.6.0)
|
126
|
-
net-imap (0.3.
|
127
|
+
net-imap (0.3.4)
|
128
|
+
date
|
127
129
|
net-protocol
|
128
130
|
net-pop (0.1.2)
|
129
131
|
net-protocol
|
130
|
-
net-protocol (0.2.
|
132
|
+
net-protocol (0.2.1)
|
131
133
|
timeout
|
132
134
|
net-smtp (0.3.3)
|
133
135
|
net-protocol
|
134
|
-
nio4r (2.5.
|
135
|
-
nokogiri (1.
|
136
|
+
nio4r (2.5.9)
|
137
|
+
nokogiri (1.15.0-arm64-darwin)
|
136
138
|
racc (~> 1.4)
|
137
|
-
nokogiri (1.
|
139
|
+
nokogiri (1.15.0-x86_64-darwin)
|
138
140
|
racc (~> 1.4)
|
139
|
-
nokogiri (1.
|
141
|
+
nokogiri (1.15.0-x86_64-linux)
|
140
142
|
racc (~> 1.4)
|
141
|
-
oj (3.
|
143
|
+
oj (3.14.3)
|
142
144
|
openssl (3.1.0)
|
143
|
-
parallel (1.
|
144
|
-
parser (3.
|
145
|
+
parallel (1.23.0)
|
146
|
+
parser (3.2.2.1)
|
145
147
|
ast (~> 2.4.1)
|
146
|
-
prettier_print (1.1
|
147
|
-
pry (0.14.
|
148
|
+
prettier_print (1.2.1)
|
149
|
+
pry (0.14.2)
|
148
150
|
coderay (~> 1.1)
|
149
151
|
method_source (~> 1.0)
|
150
152
|
pry-nav (1.0.0)
|
@@ -153,24 +155,24 @@ GEM
|
|
153
155
|
binding_of_caller (~> 1.0)
|
154
156
|
pry (~> 0.13)
|
155
157
|
public_suffix (5.0.1)
|
156
|
-
racc (1.6.
|
157
|
-
rack (2.2.
|
158
|
-
rack-test (2.0
|
158
|
+
racc (1.6.2)
|
159
|
+
rack (2.2.7)
|
160
|
+
rack-test (2.1.0)
|
159
161
|
rack (>= 1.3)
|
160
|
-
rails (6.1.7)
|
161
|
-
actioncable (= 6.1.7)
|
162
|
-
actionmailbox (= 6.1.7)
|
163
|
-
actionmailer (= 6.1.7)
|
164
|
-
actionpack (= 6.1.7)
|
165
|
-
actiontext (= 6.1.7)
|
166
|
-
actionview (= 6.1.7)
|
167
|
-
activejob (= 6.1.7)
|
168
|
-
activemodel (= 6.1.7)
|
169
|
-
activerecord (= 6.1.7)
|
170
|
-
activestorage (= 6.1.7)
|
171
|
-
activesupport (= 6.1.7)
|
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)
|
172
174
|
bundler (>= 1.15.0)
|
173
|
-
railties (= 6.1.7)
|
175
|
+
railties (= 6.1.7.3)
|
174
176
|
sprockets-rails (>= 2.0.0)
|
175
177
|
rails-controller-testing (1.0.5)
|
176
178
|
actionpack (>= 5.0.1.rc1)
|
@@ -179,11 +181,11 @@ GEM
|
|
179
181
|
rails-dom-testing (2.0.3)
|
180
182
|
activesupport (>= 4.2.0)
|
181
183
|
nokogiri (>= 1.6)
|
182
|
-
rails-html-sanitizer (1.
|
183
|
-
loofah (~> 2.
|
184
|
-
railties (6.1.7)
|
185
|
-
actionpack (= 6.1.7)
|
186
|
-
activesupport (= 6.1.7)
|
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)
|
187
189
|
method_source
|
188
190
|
rake (>= 12.2)
|
189
191
|
thor (~> 1.0)
|
@@ -192,30 +194,30 @@ GEM
|
|
192
194
|
rb-readline (0.5.5)
|
193
195
|
redirect_safely (1.0.0)
|
194
196
|
activemodel
|
195
|
-
regexp_parser (2.
|
197
|
+
regexp_parser (2.8.0)
|
196
198
|
rexml (3.2.5)
|
197
|
-
rubocop (1.
|
199
|
+
rubocop (1.51.0)
|
198
200
|
json (~> 2.3)
|
199
201
|
parallel (~> 1.10)
|
200
|
-
parser (>= 3.
|
202
|
+
parser (>= 3.2.0.0)
|
201
203
|
rainbow (>= 2.2.2, < 4.0)
|
202
204
|
regexp_parser (>= 1.8, < 3.0)
|
203
205
|
rexml (>= 3.2.5, < 4.0)
|
204
|
-
rubocop-ast (>= 1.
|
206
|
+
rubocop-ast (>= 1.28.0, < 2.0)
|
205
207
|
ruby-progressbar (~> 1.7)
|
206
|
-
unicode-display_width (>=
|
207
|
-
rubocop-ast (1.
|
208
|
-
parser (>= 3.
|
209
|
-
rubocop-shopify (2.
|
210
|
-
rubocop (~> 1.
|
211
|
-
ruby-lsp (0.
|
208
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
209
|
+
rubocop-ast (1.28.1)
|
210
|
+
parser (>= 3.2.1.0)
|
211
|
+
rubocop-shopify (2.13.0)
|
212
|
+
rubocop (~> 1.50)
|
213
|
+
ruby-lsp (0.5.1)
|
212
214
|
language_server-protocol (~> 3.17.0)
|
213
215
|
sorbet-runtime
|
214
|
-
syntax_tree (>=
|
215
|
-
ruby-progressbar (1.
|
216
|
+
syntax_tree (>= 6.1.1, < 7)
|
217
|
+
ruby-progressbar (1.13.0)
|
216
218
|
ruby2_keywords (0.0.5)
|
217
219
|
securerandom (0.2.2)
|
218
|
-
shopify_api (
|
220
|
+
shopify_api (13.0.0)
|
219
221
|
activesupport
|
220
222
|
concurrent-ruby
|
221
223
|
hash_diff
|
@@ -226,24 +228,24 @@ GEM
|
|
226
228
|
securerandom
|
227
229
|
sorbet-runtime
|
228
230
|
zeitwerk (~> 2.5, < 2.6.5)
|
229
|
-
sorbet-runtime (0.5.
|
230
|
-
sprockets (4.
|
231
|
+
sorbet-runtime (0.5.10835)
|
232
|
+
sprockets (4.2.0)
|
231
233
|
concurrent-ruby (~> 1.0)
|
232
|
-
rack (
|
234
|
+
rack (>= 2.2.4, < 4)
|
233
235
|
sprockets-rails (3.4.2)
|
234
236
|
actionpack (>= 5.2)
|
235
237
|
activesupport (>= 5.2)
|
236
238
|
sprockets (>= 3.0.0)
|
237
|
-
sqlite3 (1.
|
238
|
-
sqlite3 (1.
|
239
|
-
sqlite3 (1.
|
240
|
-
syntax_tree (
|
241
|
-
prettier_print (>= 1.0
|
242
|
-
thor (1.2.
|
243
|
-
timeout (0.3.
|
244
|
-
tzinfo (2.0.
|
239
|
+
sqlite3 (1.6.3-arm64-darwin)
|
240
|
+
sqlite3 (1.6.3-x86_64-darwin)
|
241
|
+
sqlite3 (1.6.3-x86_64-linux)
|
242
|
+
syntax_tree (6.1.1)
|
243
|
+
prettier_print (>= 1.2.0)
|
244
|
+
thor (1.2.2)
|
245
|
+
timeout (0.3.2)
|
246
|
+
tzinfo (2.0.6)
|
245
247
|
concurrent-ruby (~> 1.0)
|
246
|
-
unicode-display_width (2.
|
248
|
+
unicode-display_width (2.4.2)
|
247
249
|
webmock (3.18.1)
|
248
250
|
addressable (>= 2.8.0)
|
249
251
|
crack (>= 0.3.2)
|
@@ -255,7 +257,10 @@ GEM
|
|
255
257
|
|
256
258
|
PLATFORMS
|
257
259
|
arm64-darwin-21
|
260
|
+
arm64-darwin-22
|
258
261
|
x86_64-darwin-19
|
262
|
+
x86_64-darwin-20
|
263
|
+
x86_64-darwin-21
|
259
264
|
x86_64-linux
|
260
265
|
|
261
266
|
DEPENDENCIES
|
@@ -276,4 +281,4 @@ DEPENDENCIES
|
|
276
281
|
webmock
|
277
282
|
|
278
283
|
BUNDLED WITH
|
279
|
-
2.
|
284
|
+
2.4.10
|
@@ -5,8 +5,11 @@ module ShopifyApp
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
ShopifyApp::Logger.deprecated(
|
9
|
-
"
|
8
|
+
ShopifyApp::Logger.deprecated(
|
9
|
+
"Authenticated has been replaced by EnsureHasSession."\
|
10
|
+
" Please use the EnsureHasSession controller concern for the same behavior",
|
11
|
+
"22.0.0",
|
12
|
+
)
|
10
13
|
end
|
11
14
|
|
12
15
|
include ShopifyApp::EnsureHasSession
|
@@ -6,8 +6,11 @@ module ShopifyApp
|
|
6
6
|
include ShopifyApp::EnsureInstalled
|
7
7
|
|
8
8
|
included do
|
9
|
-
ShopifyApp::Logger.deprecated(
|
10
|
-
"
|
9
|
+
ShopifyApp::Logger.deprecated(
|
10
|
+
"RequireKnownShop has been replaced by EnsureInstalled."\
|
11
|
+
" Please use the EnsureInstalled controller concern for the same behavior",
|
12
|
+
"22.0.0",
|
13
|
+
)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
@@ -35,7 +35,7 @@ This will generate a shop model and user model, which will be the storage for th
|
|
35
35
|
|
36
36
|
The current Shopify user will be stored in the rails session at `session[:shopify_user]`
|
37
37
|
|
38
|
-
Read more about Online vs. Offline access [here](https://
|
38
|
+
Read more about Online vs. Offline access [here](https://shopify.dev/apps/auth/oauth/access-modes).
|
39
39
|
|
40
40
|
## Access scopes
|
41
41
|
|
data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb
CHANGED
@@ -25,8 +25,11 @@ module ShopifyApp
|
|
25
25
|
)
|
26
26
|
|
27
27
|
unless initializer.include?(after_authenticate_job_config)
|
28
|
-
shell.say(
|
29
|
-
"
|
28
|
+
shell.say(
|
29
|
+
"Error adding after_authenticate_job to config. Add this line manually: "\
|
30
|
+
"#{after_authenticate_job_config}",
|
31
|
+
:red,
|
32
|
+
)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
@@ -12,11 +12,11 @@ class <%= @job_class_name %> < ActiveJob::Base
|
|
12
12
|
|
13
13
|
if shop.nil?
|
14
14
|
logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'")
|
15
|
-
|
15
|
+
|
16
16
|
raise ActiveRecord::RecordNotFound, "Shop Not Found"
|
17
17
|
end
|
18
18
|
|
19
|
-
shop.with_shopify_session do
|
19
|
+
shop.with_shopify_session do |session|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -13,8 +13,8 @@ module ShopifyApp
|
|
13
13
|
class_option :embedded, type: :string, default: "true"
|
14
14
|
class_option :api_version, type: :string, default: nil
|
15
15
|
|
16
|
-
NGROK_HOST = "
|
17
|
-
CLOUDFLARE_HOST = "
|
16
|
+
NGROK_HOST = "/[-\\w]+\\.ngrok\\.io/"
|
17
|
+
CLOUDFLARE_HOST = "/[-\\w]+\\.trycloudflare\\.com/"
|
18
18
|
|
19
19
|
def create_shopify_app_initializer
|
20
20
|
@application_name = format_array_argument(options["application_name"])
|
@@ -8,8 +8,10 @@ module ShopifyApp
|
|
8
8
|
return update_access_scopes_for_user_id?(user_id) if user_id
|
9
9
|
return update_access_scopes_for_shopify_user_id?(shopify_user_id) if shopify_user_id
|
10
10
|
|
11
|
-
raise(
|
12
|
-
|
11
|
+
raise(
|
12
|
+
::ShopifyApp::InvalidInput,
|
13
|
+
"#update_access_scopes? requires user_id or shopify_user_id parameter inputs",
|
14
|
+
)
|
13
15
|
end
|
14
16
|
|
15
17
|
def covers_scopes?(current_shopify_session)
|
@@ -30,6 +30,8 @@ module ShopifyApp
|
|
30
30
|
add_top_level_redirection_headers(url: confirmation_url, ignore_response_code: true)
|
31
31
|
ShopifyApp::Logger.debug("Responding with 401 unauthorized")
|
32
32
|
head(:unauthorized)
|
33
|
+
elsif ShopifyApp.configuration.embedded_app?
|
34
|
+
fullpage_redirect_to(confirmation_url)
|
33
35
|
else
|
34
36
|
redirect_to(confirmation_url, allow_other_host: true)
|
35
37
|
end
|
@@ -174,7 +176,7 @@ module ShopifyApp
|
|
174
176
|
response
|
175
177
|
end
|
176
178
|
|
177
|
-
RECURRING_PURCHASES_QUERY = <<~
|
179
|
+
RECURRING_PURCHASES_QUERY = <<~QUERY
|
178
180
|
query appSubscription {
|
179
181
|
currentAppInstallation {
|
180
182
|
activeSubscriptions {
|
@@ -184,7 +186,7 @@ module ShopifyApp
|
|
184
186
|
}
|
185
187
|
QUERY
|
186
188
|
|
187
|
-
ONE_TIME_PURCHASES_QUERY = <<~
|
189
|
+
ONE_TIME_PURCHASES_QUERY = <<~QUERY
|
188
190
|
query appPurchases($endCursor: String) {
|
189
191
|
currentAppInstallation {
|
190
192
|
oneTimePurchases(first: 250, sortKey: CREATED_AT, after: $endCursor) {
|
@@ -201,7 +203,7 @@ module ShopifyApp
|
|
201
203
|
}
|
202
204
|
QUERY
|
203
205
|
|
204
|
-
RECURRING_PURCHASE_MUTATION = <<~
|
206
|
+
RECURRING_PURCHASE_MUTATION = <<~QUERY
|
205
207
|
mutation createPaymentMutation(
|
206
208
|
$name: String!
|
207
209
|
$lineItems: [AppSubscriptionLineItemInput!]!
|
@@ -222,7 +224,7 @@ module ShopifyApp
|
|
222
224
|
}
|
223
225
|
QUERY
|
224
226
|
|
225
|
-
ONE_TIME_PURCHASE_MUTATION = <<~
|
227
|
+
ONE_TIME_PURCHASE_MUTATION = <<~QUERY
|
226
228
|
mutation createPaymentMutation(
|
227
229
|
$name: String!
|
228
230
|
$price: MoneyInput!
|
@@ -30,7 +30,8 @@ module ShopifyApp
|
|
30
30
|
return redirect_to_login
|
31
31
|
end
|
32
32
|
|
33
|
-
|
33
|
+
if ShopifyApp.configuration.reauth_on_access_scope_changes &&
|
34
|
+
!ShopifyApp.configuration.user_access_scopes_strategy.covers_scopes?(current_shopify_session)
|
34
35
|
clear_shopify_session
|
35
36
|
return redirect_to_login
|
36
37
|
end
|
@@ -204,8 +205,11 @@ module ShopifyApp
|
|
204
205
|
if ShopifyApp.configuration.embedded_app?
|
205
206
|
raise ::ShopifyApp::ShopifyDomainNotFound if current_shopify_domain.nil?
|
206
207
|
|
207
|
-
render(
|
208
|
-
|
208
|
+
render(
|
209
|
+
"shopify_app/shared/redirect",
|
210
|
+
layout: false,
|
211
|
+
locals: { url: url, current_shopify_domain: current_shopify_domain },
|
212
|
+
)
|
209
213
|
else
|
210
214
|
redirect_to(url)
|
211
215
|
end
|
data/lib/shopify_app/engine.rb
CHANGED
@@ -17,9 +17,14 @@ module ShopifyApp
|
|
17
17
|
isolate_namespace ShopifyApp
|
18
18
|
|
19
19
|
initializer "shopify_app.assets.precompile" do |app|
|
20
|
-
app.config.assets.precompile += [
|
21
|
-
|
22
|
-
|
20
|
+
app.config.assets.precompile += [
|
21
|
+
"shopify_app/redirect.js",
|
22
|
+
"shopify_app/post_redirect.js",
|
23
|
+
"shopify_app/top_level.js",
|
24
|
+
"shopify_app/enable_cookies.js",
|
25
|
+
"shopify_app/request_storage_access.js",
|
26
|
+
"storage_access.svg",
|
27
|
+
]
|
23
28
|
end
|
24
29
|
|
25
30
|
initializer "shopify_app.middleware" do |app|
|
@@ -24,10 +24,8 @@ module ShopifyApp
|
|
24
24
|
destroy_webhooks(session: session)
|
25
25
|
return unless ShopifyApp.configuration.has_webhooks?
|
26
26
|
|
27
|
-
add_registrations
|
28
|
-
|
29
27
|
ShopifyApp::Logger.debug("Recreating webhooks")
|
30
|
-
|
28
|
+
add_registrations
|
31
29
|
end
|
32
30
|
|
33
31
|
def destroy_webhooks(session:)
|
@@ -80,8 +78,10 @@ module ShopifyApp
|
|
80
78
|
def webhook_job_klass_name(path)
|
81
79
|
job_file_name = Pathname(path.to_s).basename
|
82
80
|
|
83
|
-
[
|
84
|
-
|
81
|
+
[
|
82
|
+
ShopifyApp.configuration.webhook_jobs_namespace,
|
83
|
+
"#{job_file_name}_job",
|
84
|
+
].compact.join("/").classify
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
module ShopifyApp
|
4
4
|
class SessionRepository
|
5
|
-
extend ShopifyAPI::Auth::SessionStorage
|
6
|
-
|
7
5
|
class << self
|
8
6
|
attr_writer :shop_storage
|
9
7
|
|
@@ -34,8 +32,10 @@ module ShopifyApp
|
|
34
32
|
end
|
35
33
|
|
36
34
|
def shop_storage
|
37
|
-
load_shop_storage || raise(
|
38
|
-
|
35
|
+
load_shop_storage || raise(
|
36
|
+
::ShopifyApp::ConfigurationError,
|
37
|
+
"ShopifySessionRepository.shop_storage is not configured!",
|
38
|
+
)
|
39
39
|
end
|
40
40
|
|
41
41
|
def user_storage
|
@@ -10,8 +10,8 @@ module ShopifyApp
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def with_shopify_session(&block)
|
13
|
-
ShopifyAPI::Auth::Session.temp(shop: shopify_domain, access_token: shopify_token) do
|
14
|
-
|
13
|
+
ShopifyAPI::Auth::Session.temp(shop: shopify_domain, access_token: shopify_token) do |session|
|
14
|
+
block.call(session)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/shopify_app/utils.rb
CHANGED
@@ -18,10 +18,10 @@ module ShopifyApp
|
|
18
18
|
no_shop_name_in_subdomain = uri.host == trusted_domain
|
19
19
|
from_trusted_domain = trusted_domain == uri.domain
|
20
20
|
|
21
|
+
return myshopify_domain_from_unified_admin(uri) if unified_admin?(uri) && from_trusted_domain
|
21
22
|
return nil if no_shop_name_in_subdomain || uri.host&.empty?
|
22
23
|
return uri.host if from_trusted_domain
|
23
24
|
end
|
24
|
-
|
25
25
|
nil
|
26
26
|
end
|
27
27
|
|
@@ -65,6 +65,16 @@ module ShopifyApp
|
|
65
65
|
rescue Addressable::URI::InvalidURIError
|
66
66
|
nil
|
67
67
|
end
|
68
|
+
|
69
|
+
def unified_admin?(uri)
|
70
|
+
uri.host.split(".").first == "admin"
|
71
|
+
end
|
72
|
+
|
73
|
+
def myshopify_domain_from_unified_admin(uri)
|
74
|
+
shop = uri.path.split("/").last
|
75
|
+
|
76
|
+
"#{shop}.myshopify.com"
|
77
|
+
end
|
68
78
|
end
|
69
79
|
end
|
70
80
|
end
|
data/lib/shopify_app/version.rb
CHANGED
data/package.json
CHANGED
data/service.yml
CHANGED
data/shopify_app.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_runtime_dependency("jwt", ">= 2.2.3")
|
21
21
|
s.add_runtime_dependency("rails", "> 5.2.1")
|
22
22
|
s.add_runtime_dependency("redirect_safely", "~> 1.0")
|
23
|
-
s.add_runtime_dependency("shopify_api", "~>
|
23
|
+
s.add_runtime_dependency("shopify_api", "~> 13.0")
|
24
24
|
s.add_runtime_dependency("sprockets-rails", ">= 2.0.0")
|
25
25
|
|
26
26
|
s.add_development_dependency("byebug")
|
data/translation.yml
CHANGED
data/yarn.lock
CHANGED
@@ -2070,9 +2070,9 @@ decamelize@^1.2.0:
|
|
2070
2070
|
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
2071
2071
|
|
2072
2072
|
decode-uri-component@^0.2.0:
|
2073
|
-
version "0.2.
|
2074
|
-
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.
|
2075
|
-
integrity
|
2073
|
+
version "0.2.2"
|
2074
|
+
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
|
2075
|
+
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
|
2076
2076
|
|
2077
2077
|
deep-eql@^3.0.1:
|
2078
2078
|
version "3.0.1"
|
@@ -3171,9 +3171,9 @@ json-schema-traverse@^0.4.1:
|
|
3171
3171
|
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
|
3172
3172
|
|
3173
3173
|
json5@^1.0.1:
|
3174
|
-
version "1.0.
|
3175
|
-
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.
|
3176
|
-
integrity sha512-
|
3174
|
+
version "1.0.2"
|
3175
|
+
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
|
3176
|
+
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
|
3177
3177
|
dependencies:
|
3178
3178
|
minimist "^1.2.0"
|
3179
3179
|
|
@@ -3317,9 +3317,9 @@ loader-runner@^2.4.0:
|
|
3317
3317
|
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
|
3318
3318
|
|
3319
3319
|
loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
|
3320
|
-
version "1.4.
|
3321
|
-
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.
|
3322
|
-
integrity sha512-
|
3320
|
+
version "1.4.2"
|
3321
|
+
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3"
|
3322
|
+
integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
|
3323
3323
|
dependencies:
|
3324
3324
|
big.js "^5.2.2"
|
3325
3325
|
emojis-list "^3.0.0"
|
@@ -3515,9 +3515,9 @@ minimatch@3.0.4, minimatch@^3.0.4:
|
|
3515
3515
|
brace-expansion "^1.1.7"
|
3516
3516
|
|
3517
3517
|
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
|
3518
|
-
version "1.2.
|
3519
|
-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.
|
3520
|
-
integrity sha512-
|
3518
|
+
version "1.2.8"
|
3519
|
+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
3520
|
+
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
3521
3521
|
|
3522
3522
|
mississippi@^3.0.0:
|
3523
3523
|
version "3.0.0"
|
@@ -4730,9 +4730,9 @@ terser-webpack-plugin@^1.4.3:
|
|
4730
4730
|
worker-farm "^1.7.0"
|
4731
4731
|
|
4732
4732
|
terser@^4.1.2:
|
4733
|
-
version "4.8.
|
4734
|
-
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.
|
4735
|
-
integrity sha512-
|
4733
|
+
version "4.8.1"
|
4734
|
+
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f"
|
4735
|
+
integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==
|
4736
4736
|
dependencies:
|
4737
4737
|
commander "^2.20.0"
|
4738
4738
|
source-map "~0.6.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 21.
|
4
|
+
version: 21.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: 2023-
|
11
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '13.0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '13.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: sprockets-rails
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -490,7 +490,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
490
490
|
- !ruby/object:Gem::Version
|
491
491
|
version: '0'
|
492
492
|
requirements: []
|
493
|
-
rubygems_version: 3.
|
493
|
+
rubygems_version: 3.4.13
|
494
494
|
signing_key:
|
495
495
|
specification_version: 4
|
496
496
|
summary: This gem is used to get quickly started with the Shopify API
|