shopify_app 17.0.2 → 17.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|