workos 0.10.0 → 1.1.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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -1
  3. data/.ruby-version +1 -1
  4. data/.semaphore/semaphore.yml +10 -4
  5. data/Gemfile.lock +49 -36
  6. data/LICENSE +1 -1
  7. data/README.md +13 -230
  8. data/lib/workos/client.rb +24 -6
  9. data/lib/workos/connection.rb +12 -1
  10. data/lib/workos/directory.rb +53 -0
  11. data/lib/workos/directory_group.rb +44 -0
  12. data/lib/workos/directory_sync.rb +63 -7
  13. data/lib/workos/directory_user.rb +63 -0
  14. data/lib/workos/organizations.rb +150 -0
  15. data/lib/workos/passwordless.rb +4 -0
  16. data/lib/workos/portal.rb +1 -81
  17. data/lib/workos/profile.rb +9 -12
  18. data/lib/workos/profile_and_token.rb +28 -0
  19. data/lib/workos/sso.rb +56 -104
  20. data/lib/workos/types/connection_struct.rb +3 -0
  21. data/lib/workos/types/directory_group_struct.rb +13 -0
  22. data/lib/workos/types/directory_struct.rb +16 -0
  23. data/lib/workos/types/directory_user_struct.rb +19 -0
  24. data/lib/workos/types/intent_enum.rb +1 -0
  25. data/lib/workos/types.rb +3 -0
  26. data/lib/workos/version.rb +1 -1
  27. data/lib/workos.rb +5 -0
  28. data/sorbet/rbi/gems/addressable.rbi +199 -0
  29. data/sorbet/rbi/gems/ast.rbi +49 -0
  30. data/sorbet/rbi/gems/codecov.rbi +37 -0
  31. data/sorbet/rbi/gems/crack.rbi +62 -0
  32. data/sorbet/rbi/gems/docile.rbi +36 -0
  33. data/sorbet/rbi/gems/hashdiff.rbi +66 -0
  34. data/sorbet/rbi/gems/parallel.rbi +83 -0
  35. data/sorbet/rbi/gems/parser.rbi +1429 -0
  36. data/sorbet/rbi/gems/public_suffix.rbi +104 -0
  37. data/sorbet/rbi/gems/rainbow.rbi +118 -0
  38. data/sorbet/rbi/gems/rake.rbi +644 -0
  39. data/sorbet/rbi/gems/regexp_parser.rbi +926 -0
  40. data/sorbet/rbi/gems/rexml.rbi +628 -0
  41. data/sorbet/rbi/gems/rspec-core.rbi +1898 -0
  42. data/sorbet/rbi/gems/rspec-expectations.rbi +1127 -0
  43. data/sorbet/rbi/gems/rspec-mocks.rbi +1099 -0
  44. data/sorbet/rbi/gems/rspec-support.rbi +280 -0
  45. data/sorbet/rbi/gems/rspec.rbi +15 -0
  46. data/sorbet/rbi/gems/rubocop-ast.rbi +1355 -0
  47. data/sorbet/rbi/gems/rubocop.rbi +7253 -0
  48. data/sorbet/rbi/gems/ruby-progressbar.rbi +304 -0
  49. data/sorbet/rbi/gems/simplecov-html.rbi +35 -0
  50. data/sorbet/rbi/gems/simplecov.rbi +406 -0
  51. data/sorbet/rbi/gems/unicode-display_width.rbi +17 -0
  52. data/sorbet/rbi/gems/vcr.rbi +572 -0
  53. data/sorbet/rbi/gems/webmock.rbi +556 -0
  54. data/sorbet/rbi/gems/yard.rbi +1165 -0
  55. data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +645 -0
  56. data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +1891 -0
  57. data/sorbet/rbi/sorbet-typed/lib/rubocop/~>0.85/rubocop.rbi +2072 -0
  58. data/sorbet/rbi/sorbet-typed/lib/yard/all/yard.rbi +1214 -0
  59. data/sorbet/rbi/todo.rbi +1 -3
  60. data/spec/lib/workos/audit_trail_spec.rb +0 -8
  61. data/spec/lib/workos/directory_sync_spec.rb +347 -40
  62. data/spec/lib/workos/organizations_spec.rb +164 -0
  63. data/spec/lib/workos/passwordless_spec.rb +0 -8
  64. data/spec/lib/workos/portal_spec.rb +17 -123
  65. data/spec/lib/workos/sso_spec.rb +172 -173
  66. data/spec/spec_helper.rb +2 -1
  67. data/spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml +72 -0
  68. data/spec/support/fixtures/vcr_cassettes/{sso/list_connections.yml → directory_sync/list_directories/with_after.yml} +7 -7
  69. data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_limit_param.yml → directory_sync/list_directories/with_before.yml} +8 -8
  70. data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_connection_type_param.yml → directory_sync/list_directories/with_domain.yml} +11 -10
  71. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +74 -0
  72. data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_directories.yml → list_directories/with_no_options.yml} +1 -1
  73. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +73 -0
  74. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_after.yml +76 -0
  75. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_before.yml +74 -0
  76. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_directory.yml +78 -0
  77. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_limit.yml +74 -0
  78. data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_groups.yml → list_groups/with_no_options.yml} +16 -6
  79. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_user.yml +72 -0
  80. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +86 -0
  81. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +75 -0
  82. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +93 -0
  83. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +76 -0
  84. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +75 -0
  85. data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_users.yml → list_users/with_no_options.yml} +16 -6
  86. data/spec/support/fixtures/vcr_cassettes/organization/get.yml +73 -0
  87. data/spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml +72 -0
  88. data/spec/support/fixtures/vcr_cassettes/organization/update.yml +73 -0
  89. data/spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml +73 -0
  90. data/spec/support/fixtures/vcr_cassettes/portal/generate_link_dsync.yml +72 -0
  91. data/spec/support/fixtures/vcr_cassettes/portal/{generate_link.yml → generate_link_sso.yml} +1 -1
  92. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +73 -0
  93. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +73 -0
  94. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +73 -0
  95. data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_domain_param.yml → list_connections/with_domain.yml} +6 -6
  96. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +74 -0
  97. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +73 -0
  98. data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_before_param.yml → list_connections/with_organization_id.yml} +7 -8
  99. data/spec/support/fixtures/vcr_cassettes/sso/profile.yml +74 -0
  100. data/workos.gemspec +2 -0
  101. metadata +114 -43
  102. data/sorbet/rbi/hidden-definitions/errors.txt +0 -24896
  103. data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -38411
  104. data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8684
  105. data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +0 -4222
  106. data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  107. data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  108. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories_with_domain_param.yml +0 -63
  109. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups_with_directory_param.yml +0 -62
  110. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users_with_directory_param.yml +0 -62
  111. data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_invalid_source.yml +0 -58
  112. data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_valid_source.yml +0 -63
  113. data/spec/support/fixtures/vcr_cassettes/sso/list_connections_with_after_param.yml +0 -72
data/lib/workos/sso.rb CHANGED
@@ -26,10 +26,10 @@ module WorkOS
26
26
  # required
27
27
  # @param [String] provider A provider name for an Identity Provider
28
28
  # configured on your WorkOS dashboard. Only 'Google' is supported.
29
+ # @param [String] connection The ID for a Connection configured on
30
+ # WorkOS.
29
31
  # @param [String] client_id The WorkOS client ID for the environment
30
32
  # where you've configured your SSO connection.
31
- # @param [String] project_id The WorkOS project ID for the project.
32
- # The project_id is deprecated in Dashboard2.
33
33
  # @param [String] redirect_uri The URI where users are directed
34
34
  # after completing the authentication step. Must match a
35
35
  # configured redirect URI on your WorkOS dashboard.
@@ -54,28 +54,26 @@ module WorkOS
54
54
  sig do
55
55
  params(
56
56
  redirect_uri: String,
57
- project_id: T.nilable(String),
58
57
  client_id: T.nilable(String),
59
58
  domain: T.nilable(String),
60
59
  provider: T.nilable(String),
60
+ connection: T.nilable(String),
61
61
  state: T.nilable(String),
62
62
  ).returns(String)
63
63
  end
64
64
  def authorization_url(
65
65
  redirect_uri:,
66
- project_id: nil,
67
66
  client_id: nil,
68
67
  domain: nil,
69
68
  provider: nil,
69
+ connection: nil,
70
70
  state: ''
71
71
  )
72
- if project_id
73
- warn '[DEPRECATION] `project_id` is deprecated.
74
- Please use `client_id` instead.'
75
- client_id = project_id
76
- end
77
-
78
- validate_domain_and_provider(provider: provider, domain: domain)
72
+ validate_authorization_url_arguments(
73
+ provider: provider,
74
+ domain: domain,
75
+ connection: connection,
76
+ )
79
77
 
80
78
  query = URI.encode_www_form({
81
79
  client_id: client_id,
@@ -84,49 +82,43 @@ module WorkOS
84
82
  state: state,
85
83
  domain: domain,
86
84
  provider: provider,
85
+ connection: connection,
87
86
  }.compact)
88
87
 
89
88
  "https://#{WorkOS::API_HOSTNAME}/sso/authorize?#{query}"
90
89
  end
91
90
 
91
+ sig do
92
+ params(
93
+ access_token: String,
94
+ ).returns(WorkOS::Profile)
95
+ end
96
+ def get_profile(access_token:)
97
+ response = execute_request(
98
+ request: get_request(
99
+ path: '/sso/profile',
100
+ auth: true,
101
+ access_token: access_token,
102
+ ),
103
+ )
104
+
105
+ WorkOS::Profile.new(response.body)
106
+ end
107
+
92
108
  # Fetch the profile details for the authenticated SSO user.
93
109
  #
94
110
  # @param [String] code The authorization code provided in the callback URL
95
111
  # @param [String] client_id The WorkOS client ID for the environment
96
- # where you've configured your SSO connection
97
- # @param [String] project_id The WorkOS project ID for the project.
98
- # The project_id is deprecated in Dashboard2.
99
- #
100
- # @example
101
- # WorkOS::SSO.profile(
102
- # code: 'acme.com',
103
- # client_id: 'project_01DG5TGK363GRVXP3ZS40WNGEZ'
104
- # )
105
- # => #<WorkOS::Profile:0x00007fb6e4193d20
106
- # @id="prof_01DRA1XNSJDZ19A31F183ECQW5",
107
- # @email="demo@workos-okta.com",
108
- # @first_name="WorkOS",
109
- # @connection_type="OktaSAML",
110
- # @last_name="Demo",
111
- # @idp_id="00u1klkowm8EGah2H357",
112
- # @access_token="01DVX6QBS3EG6FHY2ESAA5Q65X"
113
- # >
112
+ # where you've configured your SSO connection
114
113
  #
115
- # @return [WorkOS::Profile]
114
+ # @return [WorkOS::ProfileAndToken]
116
115
  sig do
117
116
  params(
118
117
  code: String,
119
- project_id: T.nilable(String),
120
118
  client_id: T.nilable(String),
121
- ).returns(WorkOS::Profile)
119
+ ).returns(WorkOS::ProfileAndToken)
122
120
  end
123
- def profile(code:, project_id: nil, client_id: nil)
124
- if project_id
125
- warn '[DEPRECATION] `project_id` is deprecated.
126
- Please use `client_id` instead.'
127
- client_id = project_id
128
- end
129
-
121
+ def profile_and_token(code:, client_id: nil)
130
122
  body = {
131
123
  client_id: client_id,
132
124
  client_secret: WorkOS.key!,
@@ -135,65 +127,9 @@ module WorkOS
135
127
  }
136
128
 
137
129
  response = client.request(post_request(path: '/sso/token', body: body))
138
- check_and_raise_profile_error(response: response)
139
-
140
- WorkOS::Profile.new(response.body)
141
- end
142
-
143
- # Promote a DraftConnection created via the WorkOS.js embed such that the
144
- # Enterprise users can begin signing into your application.
145
- #
146
- # @param [String] token The Draft Connection token that's been provided to
147
- # you by the WorkOS.js
148
- #
149
- # @example
150
- # WorkOS::SSO.promote_draft_connection(
151
- # token: 'draft_conn_429u59js',
152
- # )
153
- # => true
154
- #
155
- # @return [Bool] - returns `true` if successful, `false` otherwise.
156
- # @see https://github.com/workos-inc/ruby-idp-link-example
157
- sig { params(token: String).returns(T::Boolean) }
158
- def promote_draft_connection(token:)
159
- request = post_request(
160
- auth: true,
161
- path: "/draft_connections/#{token}/activate",
162
- )
163
-
164
- response = client.request(request)
165
-
166
- response.is_a? Net::HTTPSuccess
167
- end
168
-
169
- # Create a Connection
170
- #
171
- # @param [String] source The Draft Connection token that's been provided
172
- # to you by WorkOS.js
173
- #
174
- # @example
175
- # WorkOS::SSO.create_connection(source: 'draft_conn_429u59js')
176
- # => #<WorkOS::Connection:0x00007fb6e4193d20
177
- # @id="conn_02DRA1XNSJDZ19A31F183ECQW9",
178
- # @name="Foo Corp",
179
- # @connection_type="OktaSAML",
180
- # @domains=
181
- # [{:object=>"connection_domain",
182
- # :id=>"domain_01E6PK9N3XMD8RHWF7S66380AR",
183
- # :domain=>"example.com"}]>
184
- #
185
- # @return [WorkOS::Connection]
186
- sig { params(source: String).returns(WorkOS::Connection) }
187
- def create_connection(source:)
188
- request = post_request(
189
- auth: true,
190
- path: '/connections',
191
- body: { source: source },
192
- )
193
-
194
- response = execute_request(request: request)
130
+ check_and_raise_profile_and_token_error(response: response)
195
131
 
196
- WorkOS::Connection.new(response.body)
132
+ WorkOS::ProfileAndToken.new(response.body)
197
133
  end
198
134
 
199
135
  # Retrieve connections.
@@ -203,6 +139,8 @@ module WorkOS
203
139
  # provider descriptor.
204
140
  # @option options [String] domain The domain of the connection to be
205
141
  # retrieved.
142
+ # @option options [String] organization_id The id of the organization
143
+ # of the connections to be retrieved.
206
144
  # @option options [String] limit Maximum number of records to return.
207
145
  # @option options [String] before Pagination cursor to receive records
208
146
  # before a provided Connection ID.
@@ -213,7 +151,7 @@ module WorkOS
213
151
  sig do
214
152
  params(
215
153
  options: T::Hash[Symbol, String],
216
- ).returns(T::Array[T::Hash[String, T.nilable(String)]])
154
+ ).returns(WorkOS::Types::ListStruct)
217
155
  end
218
156
  def list_connections(options = {})
219
157
  response = execute_request(
@@ -224,7 +162,15 @@ module WorkOS
224
162
  ),
225
163
  )
226
164
 
227
- JSON.parse(response.body)['data']
165
+ parsed_response = JSON.parse(response.body)
166
+ connections = parsed_response['data'].map do |connection|
167
+ ::WorkOS::Connection.new(connection.to_json)
168
+ end
169
+
170
+ WorkOS::Types::ListStruct.new(
171
+ data: connections,
172
+ list_metadata: parsed_response['listMetadata'],
173
+ )
228
174
  end
229
175
 
230
176
  # Get a Connection
@@ -282,11 +228,17 @@ module WorkOS
282
228
  params(
283
229
  domain: T.nilable(String),
284
230
  provider: T.nilable(String),
231
+ connection: T.nilable(String),
285
232
  ).void
286
233
  end
287
- def validate_domain_and_provider(domain:, provider:)
288
- if [domain, provider].all?(&:nil?)
289
- raise ArgumentError, 'Either domain or provider is required.'
234
+ def validate_authorization_url_arguments(
235
+ domain:,
236
+ provider:,
237
+ connection:
238
+ )
239
+ if [domain, provider, connection].all?(&:nil?)
240
+ raise ArgumentError, 'Either connection, domain, or ' \
241
+ 'provider is required.'
290
242
  end
291
243
 
292
244
  return unless provider && !PROVIDERS.include?(provider)
@@ -296,10 +248,10 @@ module WorkOS
296
248
  end
297
249
 
298
250
  sig { params(response: Net::HTTPResponse).void }
299
- def check_and_raise_profile_error(response:)
251
+ def check_and_raise_profile_and_token_error(response:)
300
252
  begin
301
253
  body = JSON.parse(response.body)
302
- return if body['profile']
254
+ return if body['access_token'] && body['profile']
303
255
 
304
256
  message = body['message']
305
257
  request_id = response['x-request-id']
@@ -10,6 +10,9 @@ module WorkOS
10
10
  const :name, String
11
11
  const :connection_type, String
12
12
  const :domains, T::Array[T.untyped]
13
+ const :organization_id, String
14
+ const :state, String
15
+ const :status, String
13
16
  end
14
17
  end
15
18
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # typed: strict
3
+
4
+ module WorkOS
5
+ module Types
6
+ # This DirectoryGroupStruct acts as a typed interface
7
+ # for the DirectoryGroup class
8
+ class DirectoryGroupStruct < T::Struct
9
+ const :id, String
10
+ const :name, String
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ # typed: strict
3
+
4
+ module WorkOS
5
+ module Types
6
+ # This DirectoryStruct acts as a typed interface
7
+ # for the Directory class
8
+ class DirectoryStruct < T::Struct
9
+ const :id, String
10
+ const :name, String
11
+ const :domain, String
12
+ const :type, String
13
+ const :state, String
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # typed: strict
3
+
4
+ module WorkOS
5
+ module Types
6
+ # The DirectoryUserStruct acts as a typed interface
7
+ # for the DirectoryUser class
8
+ class DirectoryUserStruct < T::Struct
9
+ const :id, String
10
+ const :idp_id, String
11
+ const :emails, T::Array[T.untyped]
12
+ const :first_name, T.nilable(String)
13
+ const :last_name, T.nilable(String)
14
+ const :username, T.nilable(String)
15
+ const :state, T.nilable(String)
16
+ const :raw_attributes, T::Hash[Symbol, Object]
17
+ end
18
+ end
19
+ end
@@ -8,6 +8,7 @@ module WorkOS
8
8
  class Intent < T::Enum
9
9
  enums do
10
10
  SSO = new('sso')
11
+ DSYNC = new('dsync')
11
12
  end
12
13
  end
13
14
  end
data/lib/workos/types.rb CHANGED
@@ -6,11 +6,14 @@ module WorkOS
6
6
  # so we're using Sorbet throughout this Ruby gem.
7
7
  module Types
8
8
  require_relative 'types/connection_struct'
9
+ require_relative 'types/directory_struct'
10
+ require_relative 'types/directory_group_struct'
9
11
  require_relative 'types/intent_enum'
10
12
  require_relative 'types/list_struct'
11
13
  require_relative 'types/organization_struct'
12
14
  require_relative 'types/passwordless_session_struct'
13
15
  require_relative 'types/profile_struct'
14
16
  require_relative 'types/provider_enum'
17
+ require_relative 'types/directory_user_struct'
15
18
  end
16
19
  end
@@ -2,5 +2,5 @@
2
2
  # typed: strong
3
3
 
4
4
  module WorkOS
5
- VERSION = '0.10.0'
5
+ VERSION = '1.1.0'
6
6
  end
data/lib/workos.rb CHANGED
@@ -32,11 +32,16 @@ module WorkOS
32
32
  autoload :AuditTrail, 'workos/audit_trail'
33
33
  autoload :Connection, 'workos/connection'
34
34
  autoload :DirectorySync, 'workos/directory_sync'
35
+ autoload :Directory, 'workos/directory'
36
+ autoload :DirectoryGroup, 'workos/directory_group'
35
37
  autoload :Organization, 'workos/organization'
38
+ autoload :Organizations, 'workos/organizations'
36
39
  autoload :Passwordless, 'workos/passwordless'
37
40
  autoload :Portal, 'workos/portal'
38
41
  autoload :Profile, 'workos/profile'
42
+ autoload :ProfileAndToken, 'workos/profile_and_token'
39
43
  autoload :SSO, 'workos/sso'
44
+ autoload :DirectoryUser, 'workos/directory_user'
40
45
 
41
46
  # Errors
42
47
  autoload :APIError, 'workos/errors'
@@ -0,0 +1,199 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi gems
3
+
4
+ # typed: strict
5
+ #
6
+ # If you would like to make changes to this file, great! Please create the gem's shim here:
7
+ #
8
+ # https://github.com/sorbet/sorbet-typed/new/master?filename=lib/addressable/all/addressable.rbi
9
+ #
10
+ # addressable-2.7.0
11
+
12
+ module Addressable
13
+ end
14
+ module Addressable::VERSION
15
+ end
16
+ module Addressable::IDNA
17
+ def self.lookup_unicode_combining_class(codepoint); end
18
+ def self.lookup_unicode_compatibility(codepoint); end
19
+ def self.lookup_unicode_composition(unpacked); end
20
+ def self.lookup_unicode_lowercase(codepoint); end
21
+ def self.punycode_adapt(delta, numpoints, firsttime); end
22
+ def self.punycode_basic?(codepoint); end
23
+ def self.punycode_decode(punycode); end
24
+ def self.punycode_decode_digit(codepoint); end
25
+ def self.punycode_delimiter?(codepoint); end
26
+ def self.punycode_encode(unicode); end
27
+ def self.punycode_encode_digit(d); end
28
+ def self.to_ascii(input); end
29
+ def self.to_unicode(input); end
30
+ def self.unicode_compose(unpacked); end
31
+ def self.unicode_compose_pair(ch_one, ch_two); end
32
+ def self.unicode_decompose(unpacked); end
33
+ def self.unicode_decompose_hangul(codepoint); end
34
+ def self.unicode_downcase(input); end
35
+ def self.unicode_normalize_kc(input); end
36
+ def self.unicode_sort_canonical(unpacked); end
37
+ end
38
+ class Addressable::IDNA::PunycodeBadInput < StandardError
39
+ end
40
+ class Addressable::IDNA::PunycodeBigOutput < StandardError
41
+ end
42
+ class Addressable::IDNA::PunycodeOverflow < StandardError
43
+ end
44
+ class Addressable::URI
45
+ def +(uri); end
46
+ def ==(uri); end
47
+ def ===(uri); end
48
+ def absolute?; end
49
+ def authority; end
50
+ def authority=(new_authority); end
51
+ def basename; end
52
+ def default_port; end
53
+ def defer_validation; end
54
+ def display_uri; end
55
+ def domain; end
56
+ def dup; end
57
+ def empty?; end
58
+ def eql?(uri); end
59
+ def extname; end
60
+ def fragment; end
61
+ def fragment=(new_fragment); end
62
+ def freeze; end
63
+ def hash; end
64
+ def host; end
65
+ def host=(new_host); end
66
+ def hostname; end
67
+ def hostname=(new_hostname); end
68
+ def inferred_port; end
69
+ def initialize(options = nil); end
70
+ def inspect; end
71
+ def ip_based?; end
72
+ def join!(uri); end
73
+ def join(uri); end
74
+ def merge!(uri); end
75
+ def merge(hash); end
76
+ def normalize!; end
77
+ def normalize; end
78
+ def normalized_authority; end
79
+ def normalized_fragment; end
80
+ def normalized_host; end
81
+ def normalized_password; end
82
+ def normalized_path; end
83
+ def normalized_port; end
84
+ def normalized_query(*flags); end
85
+ def normalized_scheme; end
86
+ def normalized_site; end
87
+ def normalized_user; end
88
+ def normalized_userinfo; end
89
+ def omit!(*components); end
90
+ def omit(*components); end
91
+ def origin; end
92
+ def origin=(new_origin); end
93
+ def password; end
94
+ def password=(new_password); end
95
+ def path; end
96
+ def path=(new_path); end
97
+ def port; end
98
+ def port=(new_port); end
99
+ def query; end
100
+ def query=(new_query); end
101
+ def query_values(return_type = nil); end
102
+ def query_values=(new_query_values); end
103
+ def relative?; end
104
+ def remove_composite_values; end
105
+ def replace_self(uri); end
106
+ def request_uri; end
107
+ def request_uri=(new_request_uri); end
108
+ def route_from(uri); end
109
+ def route_to(uri); end
110
+ def scheme; end
111
+ def scheme=(new_scheme); end
112
+ def self.convert_path(path); end
113
+ def self.encode(uri, return_type = nil); end
114
+ def self.encode_component(component, character_class = nil, upcase_encoded = nil); end
115
+ def self.escape(uri, return_type = nil); end
116
+ def self.form_encode(form_values, sort = nil); end
117
+ def self.form_unencode(encoded_value); end
118
+ def self.heuristic_parse(uri, hints = nil); end
119
+ def self.ip_based_schemes; end
120
+ def self.join(*uris); end
121
+ def self.normalize_component(component, character_class = nil, leave_encoded = nil); end
122
+ def self.normalize_path(path); end
123
+ def self.normalized_encode(uri, return_type = nil); end
124
+ def self.parse(uri); end
125
+ def self.port_mapping; end
126
+ def self.unencode(uri, return_type = nil, leave_encoded = nil); end
127
+ def self.unencode_component(uri, return_type = nil, leave_encoded = nil); end
128
+ def self.unescape(uri, return_type = nil, leave_encoded = nil); end
129
+ def self.unescape_component(uri, return_type = nil, leave_encoded = nil); end
130
+ def site; end
131
+ def site=(new_site); end
132
+ def split_path(path); end
133
+ def tld; end
134
+ def tld=(new_tld); end
135
+ def to_hash; end
136
+ def to_s; end
137
+ def to_str; end
138
+ def user; end
139
+ def user=(new_user); end
140
+ def userinfo; end
141
+ def userinfo=(new_userinfo); end
142
+ def validate; end
143
+ end
144
+ class Addressable::URI::InvalidURIError < StandardError
145
+ end
146
+ module Addressable::URI::CharacterClasses
147
+ end
148
+ class Addressable::Template
149
+ def ==(template); end
150
+ def eql?(template); end
151
+ def expand(mapping, processor = nil, normalize_values = nil); end
152
+ def extract(uri, processor = nil); end
153
+ def freeze; end
154
+ def generate(params = nil, recall = nil, options = nil); end
155
+ def initialize(pattern); end
156
+ def inspect; end
157
+ def join_values(operator, return_value); end
158
+ def keys; end
159
+ def match(uri, processor = nil); end
160
+ def named_captures; end
161
+ def names; end
162
+ def normalize_keys(mapping); end
163
+ def normalize_value(value); end
164
+ def ordered_variable_defaults; end
165
+ def parse_template_pattern(pattern, processor = nil); end
166
+ def partial_expand(mapping, processor = nil, normalize_values = nil); end
167
+ def pattern; end
168
+ def source; end
169
+ def to_regexp; end
170
+ def transform_capture(mapping, capture, processor = nil, normalize_values = nil); end
171
+ def transform_partial_capture(mapping, capture, processor = nil, normalize_values = nil); end
172
+ def variable_defaults; end
173
+ def variables; end
174
+ end
175
+ class Addressable::Template::InvalidTemplateValueError < StandardError
176
+ end
177
+ class Addressable::Template::InvalidTemplateOperatorError < StandardError
178
+ end
179
+ class Addressable::Template::TemplateOperatorAbortedError < StandardError
180
+ end
181
+ class Addressable::Template::MatchData
182
+ def [](key, len = nil); end
183
+ def captures; end
184
+ def initialize(uri, template, mapping); end
185
+ def inspect; end
186
+ def keys; end
187
+ def mapping; end
188
+ def names; end
189
+ def post_match; end
190
+ def pre_match; end
191
+ def string; end
192
+ def template; end
193
+ def to_a; end
194
+ def to_s; end
195
+ def uri; end
196
+ def values; end
197
+ def values_at(*indexes); end
198
+ def variables; end
199
+ end
@@ -0,0 +1,49 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi gems
3
+
4
+ # typed: strict
5
+ #
6
+ # If you would like to make changes to this file, great! Please create the gem's shim here:
7
+ #
8
+ # https://github.com/sorbet/sorbet-typed/new/master?filename=lib/ast/all/ast.rbi
9
+ #
10
+ # ast-2.4.2
11
+
12
+ module AST
13
+ end
14
+ class AST::Node
15
+ def +(array); end
16
+ def <<(element); end
17
+ def ==(other); end
18
+ def append(element); end
19
+ def assign_properties(properties); end
20
+ def children; end
21
+ def clone; end
22
+ def concat(array); end
23
+ def deconstruct; end
24
+ def dup; end
25
+ def eql?(other); end
26
+ def fancy_type; end
27
+ def hash; end
28
+ def initialize(type, children = nil, properties = nil); end
29
+ def inspect(indent = nil); end
30
+ def original_dup; end
31
+ def to_a; end
32
+ def to_ast; end
33
+ def to_s(indent = nil); end
34
+ def to_sexp(indent = nil); end
35
+ def to_sexp_array; end
36
+ def type; end
37
+ def updated(type = nil, children = nil, properties = nil); end
38
+ end
39
+ class AST::Processor
40
+ include AST::Processor::Mixin
41
+ end
42
+ module AST::Processor::Mixin
43
+ def handler_missing(node); end
44
+ def process(node); end
45
+ def process_all(nodes); end
46
+ end
47
+ module AST::Sexp
48
+ def s(type, *children); end
49
+ end
@@ -0,0 +1,37 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi gems
3
+
4
+ # typed: strict
5
+ #
6
+ # If you would like to make changes to this file, great! Please create the gem's shim here:
7
+ #
8
+ # https://github.com/sorbet/sorbet-typed/new/master?filename=lib/codecov/all/codecov.rbi
9
+ #
10
+ # codecov-0.2.15
11
+
12
+ module Codecov
13
+ end
14
+ class SimpleCov::Formatter::Codecov
15
+ def black(str); end
16
+ def build_params(ci); end
17
+ def create_report(report); end
18
+ def detect_ci; end
19
+ def display_header; end
20
+ def file_network; end
21
+ def file_to_codecov(file); end
22
+ def format(result, disable_net_blockers = nil); end
23
+ def green(str); end
24
+ def gzip_report(report); end
25
+ def handle_report_response(report); end
26
+ def net_blockers(switch); end
27
+ def red(str); end
28
+ def result_to_codecov(result); end
29
+ def result_to_codecov_coverage(result); end
30
+ def result_to_codecov_messages(result); end
31
+ def result_to_codecov_report(result); end
32
+ def retry_request(req, https); end
33
+ def shortened_filename(file); end
34
+ def upload_to_codecov(ci, report); end
35
+ def upload_to_v2(url, report, query, query_without_token); end
36
+ def upload_to_v4(url, report, query, query_without_token); end
37
+ end