shopify_app 17.0.2 → 17.1.1
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 +4 -4
- data/.github/ISSUE_TEMPLATE/bug-report.md +63 -0
- data/.github/ISSUE_TEMPLATE/config.yml +1 -0
- data/.github/ISSUE_TEMPLATE/feature-request.md +33 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +17 -1
- data/.github/workflows/build.yml +4 -1
- data/CHANGELOG.md +21 -0
- data/CONTRIBUTING.md +76 -0
- data/Gemfile.lock +62 -62
- data/README.md +72 -593
- data/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb +4 -0
- data/app/controllers/concerns/shopify_app/shop_access_scopes_verification.rb +32 -0
- data/app/controllers/shopify_app/callback_controller.rb +24 -2
- data/app/controllers/shopify_app/sessions_controller.rb +13 -4
- data/docs/Quickstart.md +15 -77
- data/docs/Troubleshooting.md +96 -4
- data/docs/Upgrading.md +110 -0
- data/docs/shopify_app/authentication.md +124 -0
- data/docs/shopify_app/engine.md +82 -0
- data/docs/shopify_app/generators.md +127 -0
- data/docs/shopify_app/handling-access-scopes-changes.md +8 -0
- data/docs/shopify_app/script-tags.md +28 -0
- data/docs/shopify_app/session-repository.md +88 -0
- data/docs/shopify_app/testing.md +38 -0
- data/docs/shopify_app/webhooks.md +72 -0
- data/lib/generators/shopify_app/home_controller/templates/home_controller.rb +2 -0
- data/lib/generators/shopify_app/home_controller/templates/unauthenticated_home_controller.rb +1 -0
- data/lib/generators/shopify_app/install/install_generator.rb +30 -1
- data/lib/generators/shopify_app/install/templates/omniauth.rb +1 -0
- data/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +20 -14
- data/lib/generators/shopify_app/install/templates/shopify_provider.rb.tt +8 -0
- data/lib/generators/shopify_app/shop_model/shop_model_generator.rb +27 -0
- data/lib/generators/shopify_app/shop_model/templates/db/migrate/add_shop_access_scopes_column.erb +5 -0
- data/lib/generators/shopify_app/shop_model/templates/shop.rb +1 -1
- data/lib/generators/shopify_app/shopify_app_generator.rb +1 -1
- data/lib/generators/shopify_app/user_model/templates/db/migrate/add_user_access_scopes_column.erb +5 -0
- data/lib/generators/shopify_app/user_model/templates/user.rb +1 -1
- data/lib/generators/shopify_app/user_model/user_model_generator.rb +27 -0
- data/lib/shopify_app.rb +10 -0
- data/lib/shopify_app/access_scopes/noop_strategy.rb +13 -0
- data/lib/shopify_app/access_scopes/shop_strategy.rb +24 -0
- data/lib/shopify_app/access_scopes/user_strategy.rb +41 -0
- data/lib/shopify_app/configuration.rb +22 -0
- data/lib/shopify_app/omniauth/omniauth_configuration.rb +64 -0
- data/lib/shopify_app/session/in_memory_shop_session_store.rb +9 -7
- data/lib/shopify_app/session/in_memory_user_session_store.rb +9 -7
- data/lib/shopify_app/session/shop_session_storage_with_scopes.rb +58 -0
- data/lib/shopify_app/session/user_session_storage_with_scopes.rb +58 -0
- data/lib/shopify_app/utils.rb +12 -0
- data/lib/shopify_app/version.rb +1 -1
- data/package.json +1 -1
- data/shopify_app.gemspec +1 -1
- data/yarn.lock +70 -101
- metadata +27 -8
- data/.github/ISSUE_TEMPLATE.md +0 -19
- data/docs/install-on-dev-shop.png +0 -0
- data/docs/test-your-app.png +0 -0
- data/lib/generators/shopify_app/install/templates/shopify_provider.rb +0 -20
@@ -9,6 +9,8 @@ module ShopifyApp
|
|
9
9
|
attr_accessor :secret
|
10
10
|
attr_accessor :old_secret
|
11
11
|
attr_accessor :scope
|
12
|
+
attr_writer :shop_access_scopes
|
13
|
+
attr_writer :user_access_scopes
|
12
14
|
attr_accessor :embedded_app
|
13
15
|
alias_method :embedded_app?, :embedded_app
|
14
16
|
attr_accessor :webhooks
|
@@ -16,6 +18,8 @@ module ShopifyApp
|
|
16
18
|
attr_accessor :after_authenticate_job
|
17
19
|
attr_accessor :api_version
|
18
20
|
|
21
|
+
attr_accessor :reauth_on_access_scope_changes
|
22
|
+
|
19
23
|
# customise urls
|
20
24
|
attr_accessor :root_url
|
21
25
|
attr_writer :login_url
|
@@ -70,6 +74,16 @@ module ShopifyApp
|
|
70
74
|
ShopifyApp::SessionRepository.shop_storage
|
71
75
|
end
|
72
76
|
|
77
|
+
def shop_access_scopes_strategy
|
78
|
+
return ShopifyApp::AccessScopes::NoopStrategy unless reauth_on_access_scope_changes
|
79
|
+
ShopifyApp::AccessScopes::ShopStrategy
|
80
|
+
end
|
81
|
+
|
82
|
+
def user_access_scopes_strategy
|
83
|
+
return ShopifyApp::AccessScopes::NoopStrategy unless reauth_on_access_scope_changes
|
84
|
+
ShopifyApp::AccessScopes::UserStrategy
|
85
|
+
end
|
86
|
+
|
73
87
|
def has_webhooks?
|
74
88
|
webhooks.present?
|
75
89
|
end
|
@@ -81,6 +95,14 @@ module ShopifyApp
|
|
81
95
|
def enable_same_site_none
|
82
96
|
!Rails.env.test? && (@enable_same_site_none.nil? ? embedded_app? : @enable_same_site_none)
|
83
97
|
end
|
98
|
+
|
99
|
+
def shop_access_scopes
|
100
|
+
@shop_access_scopes || scope
|
101
|
+
end
|
102
|
+
|
103
|
+
def user_access_scopes
|
104
|
+
@user_access_scopes || scope
|
105
|
+
end
|
84
106
|
end
|
85
107
|
|
86
108
|
def self.configuration
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ShopifyApp
|
4
|
+
class OmniAuthConfiguration
|
5
|
+
attr_reader :strategy, :request
|
6
|
+
attr_writer :client_options_site, :scopes, :per_user_permissions
|
7
|
+
|
8
|
+
def initialize(strategy, request)
|
9
|
+
@strategy = strategy
|
10
|
+
@request = request
|
11
|
+
end
|
12
|
+
|
13
|
+
def build_options
|
14
|
+
strategy.options[:client_options][:site] = client_options_site
|
15
|
+
strategy.options[:scope] = scopes
|
16
|
+
strategy.options[:old_client_secret] = ShopifyApp.configuration.old_secret
|
17
|
+
strategy.options[:per_user_permissions] = request_online_tokens?
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def request_online_tokens?
|
23
|
+
return @per_user_permissions unless @per_user_permissions.nil?
|
24
|
+
default_request_online_tokens?
|
25
|
+
end
|
26
|
+
|
27
|
+
def scopes
|
28
|
+
@scopes || default_scopes
|
29
|
+
end
|
30
|
+
|
31
|
+
def client_options_site
|
32
|
+
@client_options_site || default_client_options_site
|
33
|
+
end
|
34
|
+
|
35
|
+
def default_scopes
|
36
|
+
if request_online_tokens?
|
37
|
+
ShopifyApp.configuration.user_access_scopes
|
38
|
+
else
|
39
|
+
ShopifyApp.configuration.shop_access_scopes
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def default_client_options_site
|
44
|
+
return '' unless shop_domain.present?
|
45
|
+
"https://#{shopify_auth_params[:shop]}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def default_request_online_tokens?
|
49
|
+
strategy.session[:user_tokens] && !update_shop_scopes?
|
50
|
+
end
|
51
|
+
|
52
|
+
def update_shop_scopes?
|
53
|
+
ShopifyApp.configuration.shop_access_scopes_strategy.update_access_scopes?(shop_domain)
|
54
|
+
end
|
55
|
+
|
56
|
+
def shop_domain
|
57
|
+
request.params['shop'] || (shopify_auth_params && shopify_auth_params['shop'])
|
58
|
+
end
|
59
|
+
|
60
|
+
def shopify_auth_params
|
61
|
+
strategy.session['shopify.omniauth_params']&.with_indifferent_access
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module ShopifyApp
|
3
3
|
class InMemoryShopSessionStore < InMemorySessionStore
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
class << self
|
5
|
+
def store(session, *args)
|
6
|
+
id = super
|
7
|
+
repo[session.domain] = session
|
8
|
+
id
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def retrieve_by_shopify_domain(shopify_domain)
|
12
|
+
repo[shopify_domain]
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module ShopifyApp
|
3
3
|
class InMemoryUserSessionStore < InMemorySessionStore
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
class << self
|
5
|
+
def store(session, user)
|
6
|
+
id = super
|
7
|
+
repo[user.shopify_user_id] = session
|
8
|
+
id
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def retrieve_by_shopify_user_id(user_id)
|
12
|
+
repo[user_id]
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ShopifyApp
|
4
|
+
module ShopSessionStorageWithScopes
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
include ::ShopifyApp::SessionStorage
|
7
|
+
|
8
|
+
included do
|
9
|
+
validates :shopify_domain, presence: true, uniqueness: { case_sensitive: false }
|
10
|
+
end
|
11
|
+
|
12
|
+
class_methods do
|
13
|
+
def store(auth_session, *_args)
|
14
|
+
shop = find_or_initialize_by(shopify_domain: auth_session.domain)
|
15
|
+
shop.shopify_token = auth_session.token
|
16
|
+
shop.access_scopes = auth_session.access_scopes
|
17
|
+
|
18
|
+
shop.save!
|
19
|
+
shop.id
|
20
|
+
end
|
21
|
+
|
22
|
+
def retrieve(id)
|
23
|
+
shop = find_by(id: id)
|
24
|
+
construct_session(shop)
|
25
|
+
end
|
26
|
+
|
27
|
+
def retrieve_by_shopify_domain(domain)
|
28
|
+
shop = find_by(shopify_domain: domain)
|
29
|
+
construct_session(shop)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def construct_session(shop)
|
35
|
+
return unless shop
|
36
|
+
|
37
|
+
ShopifyAPI::Session.new(
|
38
|
+
domain: shop.shopify_domain,
|
39
|
+
token: shop.shopify_token,
|
40
|
+
api_version: shop.api_version,
|
41
|
+
access_scopes: shop.access_scopes
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def access_scopes=(scopes)
|
47
|
+
super(scopes)
|
48
|
+
rescue NotImplementedError, NoMethodError
|
49
|
+
raise NotImplementedError, "#access_scopes= must be defined to handle storing access scopes: #{scopes}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def access_scopes
|
53
|
+
super
|
54
|
+
rescue NotImplementedError, NoMethodError
|
55
|
+
raise NotImplementedError, "#access_scopes= must be defined to hook into stored access scopes"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module ShopifyApp
|
3
|
+
module UserSessionStorageWithScopes
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
include ::ShopifyApp::SessionStorage
|
6
|
+
|
7
|
+
included do
|
8
|
+
validates :shopify_domain, presence: true
|
9
|
+
end
|
10
|
+
|
11
|
+
class_methods do
|
12
|
+
def store(auth_session, user)
|
13
|
+
user = find_or_initialize_by(shopify_user_id: user[:id])
|
14
|
+
user.shopify_token = auth_session.token
|
15
|
+
user.shopify_domain = auth_session.domain
|
16
|
+
user.access_scopes = auth_session.access_scopes
|
17
|
+
|
18
|
+
user.save!
|
19
|
+
user.id
|
20
|
+
end
|
21
|
+
|
22
|
+
def retrieve(id)
|
23
|
+
user = find_by(id: id)
|
24
|
+
construct_session(user)
|
25
|
+
end
|
26
|
+
|
27
|
+
def retrieve_by_shopify_user_id(user_id)
|
28
|
+
user = find_by(shopify_user_id: user_id)
|
29
|
+
construct_session(user)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def construct_session(user)
|
35
|
+
return unless user
|
36
|
+
|
37
|
+
ShopifyAPI::Session.new(
|
38
|
+
domain: user.shopify_domain,
|
39
|
+
token: user.shopify_token,
|
40
|
+
api_version: user.api_version,
|
41
|
+
access_scopes: user.access_scopes
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def access_scopes=(scopes)
|
47
|
+
super(scopes)
|
48
|
+
rescue NotImplementedError, NoMethodError
|
49
|
+
raise NotImplementedError, "#access_scopes= must be defined to handle storing access scopes: #{scopes}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def access_scopes
|
53
|
+
super
|
54
|
+
rescue NotImplementedError, NoMethodError
|
55
|
+
raise NotImplementedError, "#access_scopes= must be defined to hook into stored access scopes"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/shopify_app/utils.rb
CHANGED
@@ -20,5 +20,17 @@ module ShopifyApp
|
|
20
20
|
rescue ActiveResource::ConnectionError
|
21
21
|
logger.error("[ShopifyAPI::ApiVersion] Unable to fetch api_versions from Shopify")
|
22
22
|
end
|
23
|
+
|
24
|
+
def self.shop_login_url(shop:, return_to:)
|
25
|
+
return ShopifyApp.configuration.login_url unless shop
|
26
|
+
url = URI(ShopifyApp.configuration.login_url)
|
27
|
+
|
28
|
+
url.query = URI.encode_www_form(
|
29
|
+
shop: shop,
|
30
|
+
return_to: return_to,
|
31
|
+
)
|
32
|
+
|
33
|
+
url.to_s
|
34
|
+
end
|
23
35
|
end
|
24
36
|
end
|
data/lib/shopify_app/version.rb
CHANGED
data/package.json
CHANGED
data/shopify_app.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
|
16
16
|
s.add_runtime_dependency('browser_sniffer', '~> 1.2.2')
|
17
17
|
s.add_runtime_dependency('rails', '> 5.2.1', '< 6.1')
|
18
|
-
s.add_runtime_dependency('shopify_api', '~> 9.
|
18
|
+
s.add_runtime_dependency('shopify_api', '~> 9.4')
|
19
19
|
s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 2.2.2')
|
20
20
|
s.add_runtime_dependency('jwt', '~> 2.2.1')
|
21
21
|
s.add_runtime_dependency('redirect_safely', '~> 1.0')
|
data/yarn.lock
CHANGED
@@ -1347,11 +1347,6 @@ async-each@^1.0.1:
|
|
1347
1347
|
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
|
1348
1348
|
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
|
1349
1349
|
|
1350
|
-
async-limiter@~1.0.0:
|
1351
|
-
version "1.0.1"
|
1352
|
-
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
1353
|
-
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
1354
|
-
|
1355
1350
|
atob@^2.1.2:
|
1356
1351
|
version "2.1.2"
|
1357
1352
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
@@ -1419,10 +1414,10 @@ balanced-match@^1.0.0:
|
|
1419
1414
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
1420
1415
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
1421
1416
|
|
1422
|
-
base64-arraybuffer@0.1.
|
1423
|
-
version "0.1.
|
1424
|
-
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.
|
1425
|
-
integrity sha1-
|
1417
|
+
base64-arraybuffer@0.1.4:
|
1418
|
+
version "0.1.4"
|
1419
|
+
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812"
|
1420
|
+
integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=
|
1426
1421
|
|
1427
1422
|
base64-js@^1.0.2:
|
1428
1423
|
version "1.3.1"
|
@@ -1447,13 +1442,6 @@ base@^0.11.1:
|
|
1447
1442
|
mixin-deep "^1.2.0"
|
1448
1443
|
pascalcase "^0.1.1"
|
1449
1444
|
|
1450
|
-
better-assert@~1.0.0:
|
1451
|
-
version "1.0.2"
|
1452
|
-
resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
|
1453
|
-
integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=
|
1454
|
-
dependencies:
|
1455
|
-
callsite "1.0.0"
|
1456
|
-
|
1457
1445
|
big.js@^5.2.2:
|
1458
1446
|
version "5.2.2"
|
1459
1447
|
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
@@ -1689,11 +1677,6 @@ cache-base@^1.0.1:
|
|
1689
1677
|
union-value "^1.0.0"
|
1690
1678
|
unset-value "^1.0.0"
|
1691
1679
|
|
1692
|
-
callsite@1.0.0:
|
1693
|
-
version "1.0.0"
|
1694
|
-
resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
|
1695
|
-
integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
|
1696
|
-
|
1697
1680
|
camelcase@^5.0.0, camelcase@^5.3.1:
|
1698
1681
|
version "5.3.1"
|
1699
1682
|
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
@@ -1954,10 +1937,10 @@ convert-source-map@^1.7.0:
|
|
1954
1937
|
dependencies:
|
1955
1938
|
safe-buffer "~5.1.1"
|
1956
1939
|
|
1957
|
-
cookie
|
1958
|
-
version "0.
|
1959
|
-
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.
|
1960
|
-
integrity
|
1940
|
+
cookie@~0.4.1:
|
1941
|
+
version "0.4.1"
|
1942
|
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
|
1943
|
+
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
|
1961
1944
|
|
1962
1945
|
copy-concurrently@^1.0.0:
|
1963
1946
|
version "1.0.5"
|
@@ -2236,45 +2219,45 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
|
|
2236
2219
|
dependencies:
|
2237
2220
|
once "^1.4.0"
|
2238
2221
|
|
2239
|
-
engine.io-client@~3.
|
2240
|
-
version "3.
|
2241
|
-
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.
|
2242
|
-
integrity sha512-
|
2222
|
+
engine.io-client@~3.5.0:
|
2223
|
+
version "3.5.0"
|
2224
|
+
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.5.0.tgz#fc1b4d9616288ce4f2daf06dcf612413dec941c7"
|
2225
|
+
integrity sha512-12wPRfMrugVw/DNyJk34GQ5vIVArEcVMXWugQGGuw2XxUSztFNmJggZmv8IZlLyEdnpO1QB9LkcjeWewO2vxtA==
|
2243
2226
|
dependencies:
|
2244
2227
|
component-emitter "~1.3.0"
|
2245
2228
|
component-inherit "0.0.3"
|
2246
|
-
debug "~
|
2229
|
+
debug "~3.1.0"
|
2247
2230
|
engine.io-parser "~2.2.0"
|
2248
2231
|
has-cors "1.1.0"
|
2249
2232
|
indexof "0.0.1"
|
2250
|
-
parseqs "0.0.
|
2251
|
-
parseuri "0.0.
|
2252
|
-
ws "~
|
2233
|
+
parseqs "0.0.6"
|
2234
|
+
parseuri "0.0.6"
|
2235
|
+
ws "~7.4.2"
|
2253
2236
|
xmlhttprequest-ssl "~1.5.4"
|
2254
2237
|
yeast "0.1.2"
|
2255
2238
|
|
2256
2239
|
engine.io-parser@~2.2.0:
|
2257
|
-
version "2.2.
|
2258
|
-
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.
|
2259
|
-
integrity sha512-
|
2240
|
+
version "2.2.1"
|
2241
|
+
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7"
|
2242
|
+
integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==
|
2260
2243
|
dependencies:
|
2261
2244
|
after "0.8.2"
|
2262
2245
|
arraybuffer.slice "~0.0.7"
|
2263
|
-
base64-arraybuffer "0.1.
|
2246
|
+
base64-arraybuffer "0.1.4"
|
2264
2247
|
blob "0.0.5"
|
2265
2248
|
has-binary2 "~1.0.2"
|
2266
2249
|
|
2267
|
-
engine.io@~3.
|
2268
|
-
version "3.
|
2269
|
-
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.
|
2270
|
-
integrity sha512-
|
2250
|
+
engine.io@~3.5.0:
|
2251
|
+
version "3.5.0"
|
2252
|
+
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.5.0.tgz#9d6b985c8a39b1fe87cd91eb014de0552259821b"
|
2253
|
+
integrity sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==
|
2271
2254
|
dependencies:
|
2272
2255
|
accepts "~1.3.4"
|
2273
2256
|
base64id "2.0.0"
|
2274
|
-
cookie "0.
|
2257
|
+
cookie "~0.4.1"
|
2275
2258
|
debug "~4.1.0"
|
2276
2259
|
engine.io-parser "~2.2.0"
|
2277
|
-
ws "
|
2260
|
+
ws "~7.4.2"
|
2278
2261
|
|
2279
2262
|
enhanced-resolve@^4.3.0:
|
2280
2263
|
version "4.3.0"
|
@@ -3480,17 +3463,17 @@ miller-rabin@^4.0.0:
|
|
3480
3463
|
bn.js "^4.0.0"
|
3481
3464
|
brorand "^1.0.1"
|
3482
3465
|
|
3483
|
-
mime-db@1.
|
3484
|
-
version "1.
|
3485
|
-
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.
|
3486
|
-
integrity sha512
|
3466
|
+
mime-db@1.45.0:
|
3467
|
+
version "1.45.0"
|
3468
|
+
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
|
3469
|
+
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
|
3487
3470
|
|
3488
3471
|
mime-types@~2.1.24:
|
3489
|
-
version "2.1.
|
3490
|
-
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.
|
3491
|
-
integrity sha512-
|
3472
|
+
version "2.1.28"
|
3473
|
+
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
|
3474
|
+
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
|
3492
3475
|
dependencies:
|
3493
|
-
mime-db "1.
|
3476
|
+
mime-db "1.45.0"
|
3494
3477
|
|
3495
3478
|
mime@^2.4.4, mime@^2.4.5:
|
3496
3479
|
version "2.4.6"
|
@@ -3610,11 +3593,16 @@ ms@2.0.0:
|
|
3610
3593
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
3611
3594
|
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
3612
3595
|
|
3613
|
-
ms@2.1.2
|
3596
|
+
ms@2.1.2:
|
3614
3597
|
version "2.1.2"
|
3615
3598
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
3616
3599
|
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
3617
3600
|
|
3601
|
+
ms@^2.1.1:
|
3602
|
+
version "2.1.3"
|
3603
|
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
3604
|
+
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
3605
|
+
|
3618
3606
|
nan@^2.12.1:
|
3619
3607
|
version "2.14.1"
|
3620
3608
|
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
|
@@ -3709,11 +3697,6 @@ object-assign@^4.1.1:
|
|
3709
3697
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
3710
3698
|
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
3711
3699
|
|
3712
|
-
object-component@0.0.3:
|
3713
|
-
version "0.0.3"
|
3714
|
-
resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
|
3715
|
-
integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
|
3716
|
-
|
3717
3700
|
object-copy@^0.1.0:
|
3718
3701
|
version "0.1.0"
|
3719
3702
|
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
|
@@ -3841,19 +3824,15 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
|
|
3841
3824
|
pbkdf2 "^3.0.3"
|
3842
3825
|
safe-buffer "^5.1.1"
|
3843
3826
|
|
3844
|
-
parseqs@0.0.
|
3845
|
-
version "0.0.
|
3846
|
-
resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.
|
3847
|
-
integrity
|
3848
|
-
dependencies:
|
3849
|
-
better-assert "~1.0.0"
|
3827
|
+
parseqs@0.0.6:
|
3828
|
+
version "0.0.6"
|
3829
|
+
resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5"
|
3830
|
+
integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==
|
3850
3831
|
|
3851
|
-
parseuri@0.0.
|
3852
|
-
version "0.0.
|
3853
|
-
resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.
|
3854
|
-
integrity
|
3855
|
-
dependencies:
|
3856
|
-
better-assert "~1.0.0"
|
3832
|
+
parseuri@0.0.6:
|
3833
|
+
version "0.0.6"
|
3834
|
+
resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
|
3835
|
+
integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==
|
3857
3836
|
|
3858
3837
|
parseurl@~1.3.3:
|
3859
3838
|
version "1.3.3"
|
@@ -4436,32 +4415,29 @@ socket.io-adapter@~1.1.0:
|
|
4436
4415
|
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9"
|
4437
4416
|
integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==
|
4438
4417
|
|
4439
|
-
socket.io-client@2.
|
4440
|
-
version "2.
|
4441
|
-
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.
|
4442
|
-
integrity sha512-
|
4418
|
+
socket.io-client@2.4.0:
|
4419
|
+
version "2.4.0"
|
4420
|
+
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35"
|
4421
|
+
integrity sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==
|
4443
4422
|
dependencies:
|
4444
4423
|
backo2 "1.0.2"
|
4445
|
-
base64-arraybuffer "0.1.5"
|
4446
4424
|
component-bind "1.0.0"
|
4447
|
-
component-emitter "1.
|
4448
|
-
debug "~
|
4449
|
-
engine.io-client "~3.
|
4425
|
+
component-emitter "~1.3.0"
|
4426
|
+
debug "~3.1.0"
|
4427
|
+
engine.io-client "~3.5.0"
|
4450
4428
|
has-binary2 "~1.0.2"
|
4451
|
-
has-cors "1.1.0"
|
4452
4429
|
indexof "0.0.1"
|
4453
|
-
|
4454
|
-
|
4455
|
-
parseuri "0.0.5"
|
4430
|
+
parseqs "0.0.6"
|
4431
|
+
parseuri "0.0.6"
|
4456
4432
|
socket.io-parser "~3.3.0"
|
4457
4433
|
to-array "0.1.4"
|
4458
4434
|
|
4459
4435
|
socket.io-parser@~3.3.0:
|
4460
|
-
version "3.3.
|
4461
|
-
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.
|
4462
|
-
integrity sha512-
|
4436
|
+
version "3.3.2"
|
4437
|
+
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.2.tgz#ef872009d0adcf704f2fbe830191a14752ad50b6"
|
4438
|
+
integrity sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==
|
4463
4439
|
dependencies:
|
4464
|
-
component-emitter "1.
|
4440
|
+
component-emitter "~1.3.0"
|
4465
4441
|
debug "~3.1.0"
|
4466
4442
|
isarray "2.0.1"
|
4467
4443
|
|
@@ -4475,15 +4451,15 @@ socket.io-parser@~3.4.0:
|
|
4475
4451
|
isarray "2.0.1"
|
4476
4452
|
|
4477
4453
|
socket.io@^2.3.0:
|
4478
|
-
version "2.
|
4479
|
-
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.
|
4480
|
-
integrity sha512-
|
4454
|
+
version "2.4.1"
|
4455
|
+
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.4.1.tgz#95ad861c9a52369d7f1a68acf0d4a1b16da451d2"
|
4456
|
+
integrity sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w==
|
4481
4457
|
dependencies:
|
4482
4458
|
debug "~4.1.0"
|
4483
|
-
engine.io "~3.
|
4459
|
+
engine.io "~3.5.0"
|
4484
4460
|
has-binary2 "~1.0.2"
|
4485
4461
|
socket.io-adapter "~1.1.0"
|
4486
|
-
socket.io-client "2.
|
4462
|
+
socket.io-client "2.4.0"
|
4487
4463
|
socket.io-parser "~3.4.0"
|
4488
4464
|
|
4489
4465
|
source-list-map@^2.0.0:
|
@@ -5123,17 +5099,10 @@ wrappy@1:
|
|
5123
5099
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
5124
5100
|
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
5125
5101
|
|
5126
|
-
ws
|
5127
|
-
version "7.
|
5128
|
-
resolved "https://registry.yarnpkg.com/ws/-/ws-7.
|
5129
|
-
integrity sha512-
|
5130
|
-
|
5131
|
-
ws@~6.1.0:
|
5132
|
-
version "6.1.4"
|
5133
|
-
resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
|
5134
|
-
integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==
|
5135
|
-
dependencies:
|
5136
|
-
async-limiter "~1.0.0"
|
5102
|
+
ws@~7.4.2:
|
5103
|
+
version "7.4.2"
|
5104
|
+
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
|
5105
|
+
integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
|
5137
5106
|
|
5138
5107
|
xmlhttprequest-ssl@~1.5.4:
|
5139
5108
|
version "1.5.5"
|