kinde_sdk 1.6.5 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/kinde_sdk/auth_controller.rb +96 -13
  3. data/kinde_api/lib/kinde_api/api/frontend/billing_api.rb +148 -0
  4. data/kinde_api/lib/kinde_api/api/frontend/feature_flags_api.rb +85 -0
  5. data/kinde_api/lib/kinde_api/api/frontend/o_auth_api.rb +241 -0
  6. data/kinde_api/lib/kinde_api/api/frontend/permissions_api.rb +85 -0
  7. data/kinde_api/lib/kinde_api/api/frontend/properties_api.rb +85 -0
  8. data/kinde_api/lib/kinde_api/api/frontend/roles_api.rb +85 -0
  9. data/kinde_api/lib/kinde_api/api/frontend/self_serve_portal_api.rb +89 -0
  10. data/kinde_api/lib/kinde_api/models/frontend/error.rb +230 -0
  11. data/kinde_api/lib/kinde_api/models/frontend/error_response.rb +221 -0
  12. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response.rb +228 -0
  13. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data.rb +229 -0
  14. data/kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data_entitlement.rb +295 -0
  15. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response.rb +228 -0
  16. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data.rb +244 -0
  17. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_entitlements_inner.rb +294 -0
  18. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_plans_inner.rb +240 -0
  19. data/kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_metadata.rb +230 -0
  20. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response.rb +219 -0
  21. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data.rb +222 -0
  22. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner.rb +259 -0
  23. data/kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner_value.rb +108 -0
  24. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response.rb +228 -0
  25. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data.rb +232 -0
  26. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data_permissions_inner.rb +240 -0
  27. data/kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_metadata.rb +230 -0
  28. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response.rb +228 -0
  29. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data.rb +222 -0
  30. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner.rb +249 -0
  31. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner_value.rb +107 -0
  32. data/kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_metadata.rb +230 -0
  33. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response.rb +228 -0
  34. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data.rb +232 -0
  35. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data_roles_inner.rb +240 -0
  36. data/kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_metadata.rb +230 -0
  37. data/kinde_api/lib/kinde_api/models/frontend/portal_link.rb +220 -0
  38. data/kinde_api/lib/kinde_api/models/frontend/token_error_response.rb +230 -0
  39. data/kinde_api/lib/kinde_api/models/frontend/token_introspect.rb +262 -0
  40. data/kinde_api/lib/kinde_api/models/frontend/user_profile_v2.rb +323 -0
  41. data/kinde_api/lib/kinde_api.rb +28 -0
  42. data/lib/kinde_sdk/client/entitlements.rb +86 -0
  43. data/lib/kinde_sdk/client/feature_flags.rb +246 -10
  44. data/lib/kinde_sdk/client/permissions.rb +197 -6
  45. data/lib/kinde_sdk/client/roles.rb +218 -0
  46. data/lib/kinde_sdk/client.rb +268 -3
  47. data/lib/kinde_sdk/configuration.rb +2 -0
  48. data/lib/kinde_sdk/errors.rb +7 -0
  49. data/lib/kinde_sdk/internal/frontend_client.rb +111 -0
  50. data/lib/kinde_sdk/version.rb +1 -1
  51. data/lib/kinde_sdk.rb +9 -2
  52. data/spec/examples.txt +27 -22
  53. data/spec/kinde_sdk_spec.rb +94 -0
  54. metadata +54 -12
data/lib/kinde_sdk.rb CHANGED
@@ -6,6 +6,7 @@ require "kinde_sdk/client/feature_flags"
6
6
  require "kinde_sdk/client/permissions"
7
7
  require "kinde_sdk/client"
8
8
  require "kinde_sdk/current"
9
+ require "kinde_sdk/errors"
9
10
  require 'securerandom'
10
11
  require 'oauth2'
11
12
  require 'pkce_challenge'
@@ -16,7 +17,12 @@ require 'jwt'
16
17
  require 'openssl'
17
18
  require 'base64'
18
19
 
20
+
21
+
19
22
  module KindeSdk
23
+
24
+
25
+
20
26
  class << self
21
27
  attr_accessor :config
22
28
 
@@ -47,6 +53,7 @@ module KindeSdk
47
53
  redirect_uri: redirect_uri,
48
54
  state: SecureRandom.hex,
49
55
  scope: @config.scope,
56
+ supports_reauth: "true"
50
57
  }.merge(**kwargs)
51
58
  return { url: @config.oauth_client(
52
59
  client_id: client_id,
@@ -110,9 +117,9 @@ module KindeSdk
110
117
  # "token_type"=>"bearer"}
111
118
  #
112
119
  # @return [KindeSdk::Client]
113
- def client(tokens_hash, auto_refresh_tokens = @config.auto_refresh_tokens)
120
+ def client(tokens_hash, auto_refresh_tokens = @config.auto_refresh_tokens, force_api = @config.force_api)
114
121
  sdk_api_client = api_client(tokens_hash[:access_token] || tokens_hash["access_token"])
115
- KindeSdk::Client.new(sdk_api_client, tokens_hash, auto_refresh_tokens)
122
+ KindeSdk::Client.new(sdk_api_client, tokens_hash, auto_refresh_tokens, force_api)
116
123
  end
117
124
 
118
125
  def logout_url(logout_url: @config.logout_url, domain: @config.domain)
data/spec/examples.txt CHANGED
@@ -1,24 +1,29 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------- | ------ | --------------- |
3
- ./spec/kinde_sdk_spec.rb[1:1:1] | passed | 0.08981 seconds |
4
- ./spec/kinde_sdk_spec.rb[1:1:2] | passed | 0.16283 seconds |
5
- ./spec/kinde_sdk_spec.rb[1:2:1] | passed | 0.04053 seconds |
6
- ./spec/kinde_sdk_spec.rb[1:2:2:1] | passed | 0.00692 seconds |
7
- ./spec/kinde_sdk_spec.rb[1:3:1] | passed | 0.20177 seconds |
8
- ./spec/kinde_sdk_spec.rb[1:4:1] | passed | 0.10943 seconds |
9
- ./spec/kinde_sdk_spec.rb[1:4:2:1] | passed | 0.0565 seconds |
10
- ./spec/kinde_sdk_spec.rb[1:5:1] | passed | 0.03191 seconds |
11
- ./spec/kinde_sdk_spec.rb[1:5:2:1] | passed | 0.18111 seconds |
12
- ./spec/kinde_sdk_spec.rb[1:6:1:1] | passed | 0.04266 seconds |
13
- ./spec/kinde_sdk_spec.rb[1:6:1:2] | passed | 0.1197 seconds |
14
- ./spec/kinde_sdk_spec.rb[1:6:1:3] | passed | 0.08009 seconds |
15
- ./spec/kinde_sdk_spec.rb[1:6:2:1] | passed | 0.02948 seconds |
16
- ./spec/kinde_sdk_spec.rb[1:6:2:2:1:1] | passed | 0.04764 seconds |
17
- ./spec/kinde_sdk_spec.rb[1:6:2:2:2:1] | passed | 0.03494 seconds |
18
- ./spec/kinde_sdk_spec.rb[1:6:3:1] | passed | 0.1131 seconds |
19
- ./spec/kinde_sdk_spec.rb[1:6:3:2] | passed | 0.14076 seconds |
20
- ./spec/kinde_sdk_spec.rb[1:6:3:3] | passed | 0.03831 seconds |
21
- ./spec/kinde_sdk_spec.rb[1:6:3:4] | passed | 0.05261 seconds |
22
- ./spec/kinde_sdk_spec.rb[1:6:3:5] | passed | 0.04123 seconds |
23
- ./spec/kinde_sdk_spec.rb[1:6:3:6] | passed | 0.06887 seconds |
24
- ./spec/kinde_sdk_spec.rb[1:6:4:1:1] | passed | 0.07917 seconds |
3
+ ./spec/kinde_sdk_spec.rb[1:1:1] | passed | 0.04758 seconds |
4
+ ./spec/kinde_sdk_spec.rb[1:1:2] | passed | 0.03488 seconds |
5
+ ./spec/kinde_sdk_spec.rb[1:2:1] | passed | 0.0979 seconds |
6
+ ./spec/kinde_sdk_spec.rb[1:2:2:1] | passed | 0.08776 seconds |
7
+ ./spec/kinde_sdk_spec.rb[1:3:1] | passed | 0.05409 seconds |
8
+ ./spec/kinde_sdk_spec.rb[1:4:1] | passed | 0.05912 seconds |
9
+ ./spec/kinde_sdk_spec.rb[1:4:2:1] | passed | 0.07198 seconds |
10
+ ./spec/kinde_sdk_spec.rb[1:5:1] | passed | 0.05599 seconds |
11
+ ./spec/kinde_sdk_spec.rb[1:5:2:1] | passed | 0.04142 seconds |
12
+ ./spec/kinde_sdk_spec.rb[1:6:1:1] | passed | 0.03109 seconds |
13
+ ./spec/kinde_sdk_spec.rb[1:6:1:2] | passed | 0.04813 seconds |
14
+ ./spec/kinde_sdk_spec.rb[1:6:1:3] | passed | 0.05677 seconds |
15
+ ./spec/kinde_sdk_spec.rb[1:6:2:1] | passed | 0.15193 seconds |
16
+ ./spec/kinde_sdk_spec.rb[1:6:2:2:1:1] | passed | 0.01475 seconds |
17
+ ./spec/kinde_sdk_spec.rb[1:6:2:2:2:1] | passed | 0.04081 seconds |
18
+ ./spec/kinde_sdk_spec.rb[1:6:3:1] | passed | 0.03504 seconds |
19
+ ./spec/kinde_sdk_spec.rb[1:6:3:2] | passed | 0.02938 seconds |
20
+ ./spec/kinde_sdk_spec.rb[1:6:3:3] | passed | 0.09472 seconds |
21
+ ./spec/kinde_sdk_spec.rb[1:6:3:4] | passed | 0.09361 seconds |
22
+ ./spec/kinde_sdk_spec.rb[1:6:3:5] | passed | 0.11623 seconds |
23
+ ./spec/kinde_sdk_spec.rb[1:6:3:6] | passed | 0.04303 seconds |
24
+ ./spec/kinde_sdk_spec.rb[1:6:4:1:1] | passed | 0.09948 seconds |
25
+ ./spec/kinde_sdk_spec.rb[1:7] | passed | 0.05798 seconds |
26
+ ./spec/kinde_sdk_spec.rb[1:8:1] | passed | 0.11195 seconds |
27
+ ./spec/kinde_sdk_spec.rb[1:8:2] | passed | 0.05606 seconds |
28
+ ./spec/kinde_sdk_spec.rb[1:8:3] | passed | 0.0705 seconds |
29
+ ./spec/kinde_sdk_spec.rb[1:8:4] | passed | 0.08605 seconds |
@@ -351,6 +351,100 @@ RSpec.describe KindeSdk do
351
351
  end
352
352
  end
353
353
  end
354
+
355
+ it "has a version number" do
356
+ expect(KindeSdk::VERSION).not_to be nil
357
+ end
358
+
359
+ describe 'backward compatibility' do
360
+ let(:mock_user_profile_v2) do
361
+ double('UserProfileV2',
362
+ id: 'test_id',
363
+ sub: 'test_sub',
364
+ email: 'test@example.com',
365
+ provided_id: 'external_id',
366
+ family_name: 'Doe',
367
+ given_name: 'John',
368
+ picture: 'https://example.com/picture.jpg'
369
+ )
370
+ end
371
+
372
+ # Use a real Ruby class for the OAuthApi mock to allow dynamic method addition
373
+ let(:mock_oauth_api_class) do
374
+ Class.new do
375
+ attr_accessor :user_profile_v2
376
+ def initialize(user_profile_v2)
377
+ @user_profile_v2 = user_profile_v2
378
+ end
379
+ def get_user_profile_v2(*)
380
+ @user_profile_v2
381
+ end
382
+ def token_introspection(*); end
383
+ def token_revocation(*); end
384
+ end
385
+ end
386
+
387
+ let(:mock_oauth_api) { mock_oauth_api_class.new(mock_user_profile_v2) }
388
+ let(:mock_kinde_api_client) { double('KindeApiClient') }
389
+ let(:tokens_hash) { { access_token: 'test_token' } }
390
+
391
+ before do
392
+ allow(KindeApi::OAuthApi).to receive(:new) { mock_oauth_api_class.new(mock_user_profile_v2) }
393
+ end
394
+
395
+ it 'supports both get_user and get_user_profile_v2 methods' do
396
+ client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
397
+ user_profile = client.oauth.get_user
398
+ expect(user_profile).to be_a(Hash)
399
+ expect(user_profile[:id]).to eq('test_id')
400
+ expect(user_profile[:preferred_email]).to eq('test@example.com')
401
+ expect(user_profile[:first_name]).to eq('John')
402
+ expect(user_profile[:last_name]).to eq('Doe')
403
+ expect(user_profile[:picture]).to eq('https://example.com/picture.jpg')
404
+
405
+ user_profile_v2 = client.oauth.get_user_profile_v2
406
+ expect(user_profile_v2.id).to eq('test_id')
407
+ expect(user_profile_v2.email).to eq('test@example.com')
408
+ expect(user_profile_v2.given_name).to eq('John')
409
+ expect(user_profile_v2.family_name).to eq('Doe')
410
+ expect(user_profile_v2.picture).to eq('https://example.com/picture.jpg')
411
+ end
412
+
413
+ it 'handles missing id field by using sub field' do
414
+ mock_user_profile_v2_no_id = double('UserProfileV2',
415
+ id: nil,
416
+ sub: 'test_sub',
417
+ email: 'test@example.com',
418
+ provided_id: 'external_id',
419
+ family_name: 'Doe',
420
+ given_name: 'John',
421
+ picture: 'https://example.com/picture.jpg'
422
+ )
423
+ allow(KindeApi::OAuthApi).to receive(:new).and_return(
424
+ mock_oauth_api_class.new(mock_user_profile_v2_no_id)
425
+ )
426
+ client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
427
+ user_profile = client.oauth.get_user
428
+ expect(user_profile[:id]).to eq('test_sub')
429
+ end
430
+
431
+ it 'only adds get_user method once per oauth instance' do
432
+ client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
433
+ oauth1 = client.oauth
434
+ oauth2 = client.oauth
435
+ expect(oauth1.respond_to?(:get_user)).to be true
436
+ expect(oauth2.respond_to?(:get_user)).to be true
437
+ end
438
+
439
+ it 'preserves all original oauth methods' do
440
+ client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
441
+ oauth = client.oauth
442
+ expect(oauth.respond_to?(:get_user_profile_v2)).to be true
443
+ expect(oauth.respond_to?(:token_introspection)).to be true
444
+ expect(oauth.respond_to?(:token_revocation)).to be true
445
+ expect(oauth.respond_to?(:get_user)).to be true
446
+ end
447
+ end
354
448
  end
355
449
 
356
450
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kinde_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.5
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kinde Australia Pty Ltd
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-06-19 00:00:00.000000000 Z
10
+ date: 2025-09-09 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: typhoeus
@@ -72,33 +72,33 @@ dependencies:
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  - !ruby/object:Gem::Dependency
75
- name: rails
75
+ name: httparty
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: 7.0.4
80
+ version: 0.23.1
81
81
  type: :runtime
82
82
  prerelease: false
83
83
  version_requirements: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: 7.0.4
87
+ version: 0.23.1
88
88
  - !ruby/object:Gem::Dependency
89
- name: httparty
89
+ name: rails
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - "~>"
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
- version: 0.23.1
94
+ version: 7.0.4
95
95
  type: :runtime
96
96
  prerelease: false
97
97
  version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - "~>"
99
+ - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: 0.23.1
101
+ version: 7.0.4
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: jwt
104
104
  requirement: !ruby/object:Gem::Requirement
@@ -405,6 +405,13 @@ files:
405
405
  - kinde_api/lib/kinde_api/api/environment_variables_api.rb
406
406
  - kinde_api/lib/kinde_api/api/environments_api.rb
407
407
  - kinde_api/lib/kinde_api/api/feature_flags_api.rb
408
+ - kinde_api/lib/kinde_api/api/frontend/billing_api.rb
409
+ - kinde_api/lib/kinde_api/api/frontend/feature_flags_api.rb
410
+ - kinde_api/lib/kinde_api/api/frontend/o_auth_api.rb
411
+ - kinde_api/lib/kinde_api/api/frontend/permissions_api.rb
412
+ - kinde_api/lib/kinde_api/api/frontend/properties_api.rb
413
+ - kinde_api/lib/kinde_api/api/frontend/roles_api.rb
414
+ - kinde_api/lib/kinde_api/api/frontend/self_serve_portal_api.rb
408
415
  - kinde_api/lib/kinde_api/api/identities_api.rb
409
416
  - kinde_api/lib/kinde_api/api/industries_api.rb
410
417
  - kinde_api/lib/kinde_api/api/mfa_api.rb
@@ -497,6 +504,37 @@ files:
497
504
  - kinde_api/lib/kinde_api/models/error.rb
498
505
  - kinde_api/lib/kinde_api/models/error_response.rb
499
506
  - kinde_api/lib/kinde_api/models/event_type.rb
507
+ - kinde_api/lib/kinde_api/models/frontend/error.rb
508
+ - kinde_api/lib/kinde_api/models/frontend/error_response.rb
509
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlement_response.rb
510
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data.rb
511
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlement_response_data_entitlement.rb
512
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlements_response.rb
513
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data.rb
514
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_entitlements_inner.rb
515
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_data_plans_inner.rb
516
+ - kinde_api/lib/kinde_api/models/frontend/get_entitlements_response_metadata.rb
517
+ - kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response.rb
518
+ - kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data.rb
519
+ - kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner.rb
520
+ - kinde_api/lib/kinde_api/models/frontend/get_feature_flags_response_data_feature_flags_inner_value.rb
521
+ - kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response.rb
522
+ - kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data.rb
523
+ - kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_data_permissions_inner.rb
524
+ - kinde_api/lib/kinde_api/models/frontend/get_user_permissions_response_metadata.rb
525
+ - kinde_api/lib/kinde_api/models/frontend/get_user_properties_response.rb
526
+ - kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data.rb
527
+ - kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner.rb
528
+ - kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_data_properties_inner_value.rb
529
+ - kinde_api/lib/kinde_api/models/frontend/get_user_properties_response_metadata.rb
530
+ - kinde_api/lib/kinde_api/models/frontend/get_user_roles_response.rb
531
+ - kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data.rb
532
+ - kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_data_roles_inner.rb
533
+ - kinde_api/lib/kinde_api/models/frontend/get_user_roles_response_metadata.rb
534
+ - kinde_api/lib/kinde_api/models/frontend/portal_link.rb
535
+ - kinde_api/lib/kinde_api/models/frontend/token_error_response.rb
536
+ - kinde_api/lib/kinde_api/models/frontend/token_introspect.rb
537
+ - kinde_api/lib/kinde_api/models/frontend/user_profile_v2.rb
500
538
  - kinde_api/lib/kinde_api/models/get_api_response.rb
501
539
  - kinde_api/lib/kinde_api/models/get_api_response_api.rb
502
540
  - kinde_api/lib/kinde_api/models/get_api_response_api_applications_inner.rb
@@ -888,11 +926,15 @@ files:
888
926
  - kinde_api/spec/spec_helper.rb
889
927
  - lib/kinde_sdk.rb
890
928
  - lib/kinde_sdk/client.rb
929
+ - lib/kinde_sdk/client/entitlements.rb
891
930
  - lib/kinde_sdk/client/feature_flags.rb
892
931
  - lib/kinde_sdk/client/permissions.rb
932
+ - lib/kinde_sdk/client/roles.rb
893
933
  - lib/kinde_sdk/configuration.rb
894
934
  - lib/kinde_sdk/current.rb
895
935
  - lib/kinde_sdk/engine.rb
936
+ - lib/kinde_sdk/errors.rb
937
+ - lib/kinde_sdk/internal/frontend_client.rb
896
938
  - lib/kinde_sdk/middleware.rb
897
939
  - lib/kinde_sdk/token_manager.rb
898
940
  - lib/kinde_sdk/token_store.rb