workos 0.10.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/.semaphore/semaphore.yml +8 -2
- data/Gemfile.lock +49 -36
- data/LICENSE +1 -1
- data/README.md +13 -230
- data/lib/workos/client.rb +21 -4
- data/lib/workos/connection.rb +12 -1
- data/lib/workos/directory.rb +53 -0
- data/lib/workos/directory_group.rb +44 -0
- data/lib/workos/directory_sync.rb +63 -7
- data/lib/workos/directory_user.rb +63 -0
- data/lib/workos/organizations.rb +150 -0
- data/lib/workos/passwordless.rb +4 -0
- data/lib/workos/portal.rb +1 -81
- data/lib/workos/profile.rb +1 -2
- data/lib/workos/profile_and_token.rb +28 -0
- data/lib/workos/sso.rb +39 -104
- data/lib/workos/types/connection_struct.rb +3 -0
- data/lib/workos/types/directory_group_struct.rb +13 -0
- data/lib/workos/types/directory_struct.rb +16 -0
- data/lib/workos/types/directory_user_struct.rb +19 -0
- data/lib/workos/types/intent_enum.rb +1 -0
- data/lib/workos/types.rb +3 -0
- data/lib/workos/version.rb +1 -1
- data/lib/workos.rb +5 -0
- data/sorbet/rbi/gems/addressable.rbi +199 -0
- data/sorbet/rbi/gems/ast.rbi +49 -0
- data/sorbet/rbi/gems/codecov.rbi +37 -0
- data/sorbet/rbi/gems/crack.rbi +62 -0
- data/sorbet/rbi/gems/docile.rbi +36 -0
- data/sorbet/rbi/gems/hashdiff.rbi +66 -0
- data/sorbet/rbi/gems/parallel.rbi +83 -0
- data/sorbet/rbi/gems/parser.rbi +1429 -0
- data/sorbet/rbi/gems/public_suffix.rbi +104 -0
- data/sorbet/rbi/gems/rainbow.rbi +118 -0
- data/sorbet/rbi/gems/rake.rbi +644 -0
- data/sorbet/rbi/gems/regexp_parser.rbi +926 -0
- data/sorbet/rbi/gems/rexml.rbi +628 -0
- data/sorbet/rbi/gems/rspec-core.rbi +1898 -0
- data/sorbet/rbi/gems/rspec-expectations.rbi +1127 -0
- data/sorbet/rbi/gems/rspec-mocks.rbi +1099 -0
- data/sorbet/rbi/gems/rspec-support.rbi +280 -0
- data/sorbet/rbi/gems/rspec.rbi +15 -0
- data/sorbet/rbi/gems/rubocop-ast.rbi +1355 -0
- data/sorbet/rbi/gems/rubocop.rbi +7253 -0
- data/sorbet/rbi/gems/ruby-progressbar.rbi +304 -0
- data/sorbet/rbi/gems/simplecov-html.rbi +35 -0
- data/sorbet/rbi/gems/simplecov.rbi +406 -0
- data/sorbet/rbi/gems/unicode-display_width.rbi +17 -0
- data/sorbet/rbi/gems/vcr.rbi +572 -0
- data/sorbet/rbi/gems/webmock.rbi +556 -0
- data/sorbet/rbi/gems/yard.rbi +1165 -0
- data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +645 -0
- data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +1891 -0
- data/sorbet/rbi/sorbet-typed/lib/rubocop/~>0.85/rubocop.rbi +2072 -0
- data/sorbet/rbi/sorbet-typed/lib/yard/all/yard.rbi +1214 -0
- data/sorbet/rbi/todo.rbi +1 -3
- data/spec/lib/workos/audit_trail_spec.rb +0 -8
- data/spec/lib/workos/directory_sync_spec.rb +347 -40
- data/spec/lib/workos/organizations_spec.rb +164 -0
- data/spec/lib/workos/passwordless_spec.rb +0 -8
- data/spec/lib/workos/portal_spec.rb +17 -123
- data/spec/lib/workos/sso_spec.rb +144 -176
- data/spec/spec_helper.rb +2 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections.yml → directory_sync/list_directories/with_after.yml} +7 -7
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_limit_param.yml → directory_sync/list_directories/with_before.yml} +8 -8
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_connection_type_param.yml → directory_sync/list_directories/with_domain.yml} +11 -10
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_directories.yml → list_directories/with_no_options.yml} +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_after.yml +76 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_before.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_directory.yml +78 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_groups.yml → list_groups/with_no_options.yml} +16 -6
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_user.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +86 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +75 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +93 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +76 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +75 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_users.yml → list_users/with_no_options.yml} +16 -6
- data/spec/support/fixtures/vcr_cassettes/organization/get.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/organization/update.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/portal/generate_link_dsync.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/portal/{generate_link.yml → generate_link_sso.yml} +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_domain_param.yml → list_connections/with_domain.yml} +6 -6
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_before_param.yml → list_connections/with_organization_id.yml} +7 -8
- data/workos.gemspec +2 -0
- metadata +113 -44
- data/sorbet/rbi/hidden-definitions/errors.txt +0 -24896
- data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -38411
- data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8684
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +0 -4222
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories_with_domain_param.yml +0 -63
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups_with_directory_param.yml +0 -62
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users_with_directory_param.yml +0 -62
- data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_invalid_source.yml +0 -58
- data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_valid_source.yml +0 -63
- 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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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,6 +82,7 @@ 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}"
|
|
@@ -93,40 +92,16 @@ module WorkOS
|
|
|
93
92
|
#
|
|
94
93
|
# @param [String] code The authorization code provided in the callback URL
|
|
95
94
|
# @param [String] client_id The WorkOS client ID for the environment
|
|
96
|
-
# where you've
|
|
97
|
-
# @param [String] project_id The WorkOS project ID for the project.
|
|
98
|
-
# The project_id is deprecated in Dashboard2.
|
|
95
|
+
# where you've configured your SSO connection
|
|
99
96
|
#
|
|
100
|
-
# @
|
|
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
|
-
# >
|
|
114
|
-
#
|
|
115
|
-
# @return [WorkOS::Profile]
|
|
97
|
+
# @return [WorkOS::ProfileAndToken]
|
|
116
98
|
sig do
|
|
117
99
|
params(
|
|
118
100
|
code: String,
|
|
119
|
-
project_id: T.nilable(String),
|
|
120
101
|
client_id: T.nilable(String),
|
|
121
|
-
).returns(WorkOS::
|
|
102
|
+
).returns(WorkOS::ProfileAndToken)
|
|
122
103
|
end
|
|
123
|
-
def
|
|
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
|
-
|
|
104
|
+
def profile_and_token(code:, client_id: nil)
|
|
130
105
|
body = {
|
|
131
106
|
client_id: client_id,
|
|
132
107
|
client_secret: WorkOS.key!,
|
|
@@ -135,65 +110,9 @@ module WorkOS
|
|
|
135
110
|
}
|
|
136
111
|
|
|
137
112
|
response = client.request(post_request(path: '/sso/token', body: body))
|
|
138
|
-
|
|
113
|
+
check_and_raise_profile_and_token_error(response: response)
|
|
139
114
|
|
|
140
|
-
WorkOS::
|
|
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)
|
|
195
|
-
|
|
196
|
-
WorkOS::Connection.new(response.body)
|
|
115
|
+
WorkOS::ProfileAndToken.new(response.body)
|
|
197
116
|
end
|
|
198
117
|
|
|
199
118
|
# Retrieve connections.
|
|
@@ -203,6 +122,8 @@ module WorkOS
|
|
|
203
122
|
# provider descriptor.
|
|
204
123
|
# @option options [String] domain The domain of the connection to be
|
|
205
124
|
# retrieved.
|
|
125
|
+
# @option options [String] organization_id The id of the organization
|
|
126
|
+
# of the connections to be retrieved.
|
|
206
127
|
# @option options [String] limit Maximum number of records to return.
|
|
207
128
|
# @option options [String] before Pagination cursor to receive records
|
|
208
129
|
# before a provided Connection ID.
|
|
@@ -213,7 +134,7 @@ module WorkOS
|
|
|
213
134
|
sig do
|
|
214
135
|
params(
|
|
215
136
|
options: T::Hash[Symbol, String],
|
|
216
|
-
).returns(
|
|
137
|
+
).returns(WorkOS::Types::ListStruct)
|
|
217
138
|
end
|
|
218
139
|
def list_connections(options = {})
|
|
219
140
|
response = execute_request(
|
|
@@ -224,7 +145,15 @@ module WorkOS
|
|
|
224
145
|
),
|
|
225
146
|
)
|
|
226
147
|
|
|
227
|
-
JSON.parse(response.body)
|
|
148
|
+
parsed_response = JSON.parse(response.body)
|
|
149
|
+
connections = parsed_response['data'].map do |connection|
|
|
150
|
+
::WorkOS::Connection.new(connection.to_json)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
WorkOS::Types::ListStruct.new(
|
|
154
|
+
data: connections,
|
|
155
|
+
list_metadata: parsed_response['listMetadata'],
|
|
156
|
+
)
|
|
228
157
|
end
|
|
229
158
|
|
|
230
159
|
# Get a Connection
|
|
@@ -282,11 +211,17 @@ module WorkOS
|
|
|
282
211
|
params(
|
|
283
212
|
domain: T.nilable(String),
|
|
284
213
|
provider: T.nilable(String),
|
|
214
|
+
connection: T.nilable(String),
|
|
285
215
|
).void
|
|
286
216
|
end
|
|
287
|
-
def
|
|
288
|
-
|
|
289
|
-
|
|
217
|
+
def validate_authorization_url_arguments(
|
|
218
|
+
domain:,
|
|
219
|
+
provider:,
|
|
220
|
+
connection:
|
|
221
|
+
)
|
|
222
|
+
if [domain, provider, connection].all?(&:nil?)
|
|
223
|
+
raise ArgumentError, 'Either connection, domain, or ' \
|
|
224
|
+
'provider is required.'
|
|
290
225
|
end
|
|
291
226
|
|
|
292
227
|
return unless provider && !PROVIDERS.include?(provider)
|
|
@@ -296,10 +231,10 @@ module WorkOS
|
|
|
296
231
|
end
|
|
297
232
|
|
|
298
233
|
sig { params(response: Net::HTTPResponse).void }
|
|
299
|
-
def
|
|
234
|
+
def check_and_raise_profile_and_token_error(response:)
|
|
300
235
|
begin
|
|
301
236
|
body = JSON.parse(response.body)
|
|
302
|
-
return if body['profile']
|
|
237
|
+
return if body['access_token'] && body['profile']
|
|
303
238
|
|
|
304
239
|
message = body['message']
|
|
305
240
|
request_id = response['x-request-id']
|
|
@@ -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
|
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
|
data/lib/workos/version.rb
CHANGED
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
|
|
@@ -0,0 +1,62 @@
|
|
|
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/crack/all/crack.rbi
|
|
9
|
+
#
|
|
10
|
+
# crack-0.4.5
|
|
11
|
+
|
|
12
|
+
module Crack
|
|
13
|
+
end
|
|
14
|
+
module Crack::Util
|
|
15
|
+
def snake_case(str); end
|
|
16
|
+
def to_xml_attributes(hash); end
|
|
17
|
+
extend Crack::Util
|
|
18
|
+
end
|
|
19
|
+
class Crack::JSON
|
|
20
|
+
def self.convert_json_to_yaml(json); end
|
|
21
|
+
def self.format_dates(output, date_starts, date_ends); end
|
|
22
|
+
def self.parse(json); end
|
|
23
|
+
def self.parser_exceptions; end
|
|
24
|
+
def self.unescape(str); end
|
|
25
|
+
end
|
|
26
|
+
class REXMLUtiliyNodeString < String
|
|
27
|
+
def attributes; end
|
|
28
|
+
def attributes=(arg0); end
|
|
29
|
+
end
|
|
30
|
+
class REXMLUtilityNode
|
|
31
|
+
def add_node(node); end
|
|
32
|
+
def attributes; end
|
|
33
|
+
def attributes=(arg0); end
|
|
34
|
+
def children; end
|
|
35
|
+
def children=(arg0); end
|
|
36
|
+
def initialize(name, normalized_attributes = nil); end
|
|
37
|
+
def inner_html; end
|
|
38
|
+
def name; end
|
|
39
|
+
def name=(arg0); end
|
|
40
|
+
def self.available_typecasts; end
|
|
41
|
+
def self.available_typecasts=(obj); end
|
|
42
|
+
def self.typecasts; end
|
|
43
|
+
def self.typecasts=(obj); end
|
|
44
|
+
def to_hash; end
|
|
45
|
+
def to_html; end
|
|
46
|
+
def to_s; end
|
|
47
|
+
def type; end
|
|
48
|
+
def type=(arg0); end
|
|
49
|
+
def typecast_value(value); end
|
|
50
|
+
def undasherize_keys(params); end
|
|
51
|
+
def unnormalize_xml_entities(value); end
|
|
52
|
+
end
|
|
53
|
+
class Crack::REXMLParser
|
|
54
|
+
def self.parse(xml); end
|
|
55
|
+
end
|
|
56
|
+
class Crack::XML
|
|
57
|
+
def self.parse(xml); end
|
|
58
|
+
def self.parser; end
|
|
59
|
+
def self.parser=(parser); end
|
|
60
|
+
end
|
|
61
|
+
class Crack::ParseError < StandardError
|
|
62
|
+
end
|