userplex 0.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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +14 -0
  4. data/README.md +217 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/userplex/client.rb +80 -0
  7. data/lib/userplex/errors.rb +228 -0
  8. data/lib/userplex/file_part.rb +58 -0
  9. data/lib/userplex/internal/transport/base_client.rb +567 -0
  10. data/lib/userplex/internal/transport/pooled_net_requester.rb +198 -0
  11. data/lib/userplex/internal/type/array_of.rb +168 -0
  12. data/lib/userplex/internal/type/base_model.rb +530 -0
  13. data/lib/userplex/internal/type/base_page.rb +55 -0
  14. data/lib/userplex/internal/type/boolean.rb +77 -0
  15. data/lib/userplex/internal/type/converter.rb +327 -0
  16. data/lib/userplex/internal/type/enum.rb +131 -0
  17. data/lib/userplex/internal/type/file_input.rb +111 -0
  18. data/lib/userplex/internal/type/hash_of.rb +188 -0
  19. data/lib/userplex/internal/type/request_parameters.rb +42 -0
  20. data/lib/userplex/internal/type/union.rb +237 -0
  21. data/lib/userplex/internal/type/unknown.rb +81 -0
  22. data/lib/userplex/internal/util.rb +915 -0
  23. data/lib/userplex/internal.rb +20 -0
  24. data/lib/userplex/models/event_track_params.rb +46 -0
  25. data/lib/userplex/models/event_track_response.rb +33 -0
  26. data/lib/userplex/models/user_identify_params.rb +46 -0
  27. data/lib/userplex/models/user_identify_response.rb +25 -0
  28. data/lib/userplex/models.rb +45 -0
  29. data/lib/userplex/request_options.rb +77 -0
  30. data/lib/userplex/resources/events.rb +43 -0
  31. data/lib/userplex/resources/users.rb +43 -0
  32. data/lib/userplex/version.rb +5 -0
  33. data/lib/userplex.rb +59 -0
  34. data/manifest.yaml +15 -0
  35. data/rbi/userplex/client.rbi +54 -0
  36. data/rbi/userplex/errors.rbi +205 -0
  37. data/rbi/userplex/file_part.rbi +37 -0
  38. data/rbi/userplex/internal/transport/base_client.rbi +292 -0
  39. data/rbi/userplex/internal/transport/pooled_net_requester.rbi +79 -0
  40. data/rbi/userplex/internal/type/array_of.rbi +104 -0
  41. data/rbi/userplex/internal/type/base_model.rbi +302 -0
  42. data/rbi/userplex/internal/type/base_page.rbi +42 -0
  43. data/rbi/userplex/internal/type/boolean.rbi +58 -0
  44. data/rbi/userplex/internal/type/converter.rbi +216 -0
  45. data/rbi/userplex/internal/type/enum.rbi +82 -0
  46. data/rbi/userplex/internal/type/file_input.rbi +59 -0
  47. data/rbi/userplex/internal/type/hash_of.rbi +104 -0
  48. data/rbi/userplex/internal/type/request_parameters.rbi +29 -0
  49. data/rbi/userplex/internal/type/union.rbi +128 -0
  50. data/rbi/userplex/internal/type/unknown.rbi +58 -0
  51. data/rbi/userplex/internal/util.rbi +487 -0
  52. data/rbi/userplex/internal.rbi +16 -0
  53. data/rbi/userplex/models/event_track_params.rbi +73 -0
  54. data/rbi/userplex/models/event_track_response.rbi +52 -0
  55. data/rbi/userplex/models/user_identify_params.rbi +70 -0
  56. data/rbi/userplex/models/user_identify_response.rbi +38 -0
  57. data/rbi/userplex/models.rbi +7 -0
  58. data/rbi/userplex/request_options.rbi +59 -0
  59. data/rbi/userplex/resources/events.rbi +36 -0
  60. data/rbi/userplex/resources/users.rbi +36 -0
  61. data/rbi/userplex/version.rbi +5 -0
  62. data/sig/userplex/client.rbs +28 -0
  63. data/sig/userplex/errors.rbs +117 -0
  64. data/sig/userplex/file_part.rbs +21 -0
  65. data/sig/userplex/internal/transport/base_client.rbs +131 -0
  66. data/sig/userplex/internal/transport/pooled_net_requester.rbs +45 -0
  67. data/sig/userplex/internal/type/array_of.rbs +48 -0
  68. data/sig/userplex/internal/type/base_model.rbs +102 -0
  69. data/sig/userplex/internal/type/base_page.rbs +24 -0
  70. data/sig/userplex/internal/type/boolean.rbs +26 -0
  71. data/sig/userplex/internal/type/converter.rbs +79 -0
  72. data/sig/userplex/internal/type/enum.rbs +32 -0
  73. data/sig/userplex/internal/type/file_input.rbs +25 -0
  74. data/sig/userplex/internal/type/hash_of.rbs +48 -0
  75. data/sig/userplex/internal/type/request_parameters.rbs +17 -0
  76. data/sig/userplex/internal/type/union.rbs +52 -0
  77. data/sig/userplex/internal/type/unknown.rbs +26 -0
  78. data/sig/userplex/internal/util.rbs +185 -0
  79. data/sig/userplex/internal.rbs +9 -0
  80. data/sig/userplex/models/event_track_params.rbs +45 -0
  81. data/sig/userplex/models/event_track_response.rbs +22 -0
  82. data/sig/userplex/models/user_identify_params.rbs +43 -0
  83. data/sig/userplex/models/user_identify_response.rbs +15 -0
  84. data/sig/userplex/models.rbs +5 -0
  85. data/sig/userplex/request_options.rbs +34 -0
  86. data/sig/userplex/resources/events.rbs +15 -0
  87. data/sig/userplex/resources/users.rbs +15 -0
  88. data/sig/userplex/version.rbs +3 -0
  89. metadata +146 -0
@@ -0,0 +1,38 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ module Models
5
+ class UserIdentifyResponse < Userplex::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Userplex::Models::UserIdentifyResponse,
10
+ Userplex::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Whether the operation was successful
15
+ sig { returns(T::Boolean) }
16
+ attr_accessor :success
17
+
18
+ # The identified user ID
19
+ sig { returns(String) }
20
+ attr_accessor :user_id
21
+
22
+ sig do
23
+ params(success: T::Boolean, user_id: String).returns(T.attached_class)
24
+ end
25
+ def self.new(
26
+ # Whether the operation was successful
27
+ success:,
28
+ # The identified user ID
29
+ user_id:
30
+ )
31
+ end
32
+
33
+ sig { override.returns({ success: T::Boolean, user_id: String }) }
34
+ def to_hash
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,7 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ EventTrackParams = Userplex::Models::EventTrackParams
5
+
6
+ UserIdentifyParams = Userplex::Models::UserIdentifyParams
7
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < Userplex::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(Userplex::RequestOptions, Userplex::Internal::AnyHash)
13
+ end
14
+
15
+ # @api private
16
+ sig { params(opts: Userplex::RequestOptions::OrHash).void }
17
+ def self.validate!(opts)
18
+ end
19
+
20
+ # Idempotency key to send with request and all associated retries. Will only be
21
+ # sent for write requests.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :idempotency_key
24
+
25
+ # Extra query params to send with the request. These are `.merge`’d into any
26
+ # `query` given at the client level.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
30
+ )
31
+ end
32
+ attr_accessor :extra_query
33
+
34
+ # Extra headers to send with the request. These are `.merged`’d into any
35
+ # `extra_headers` given at the client level.
36
+ sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
37
+ attr_accessor :extra_headers
38
+
39
+ # Extra data to send with the request. These are deep merged into any data
40
+ # generated as part of the normal request.
41
+ sig { returns(T.nilable(T.anything)) }
42
+ attr_accessor :extra_body
43
+
44
+ # Maximum number of retries to attempt after a failed initial request.
45
+ sig { returns(T.nilable(Integer)) }
46
+ attr_accessor :max_retries
47
+
48
+ # Request timeout in seconds.
49
+ sig { returns(T.nilable(Float)) }
50
+ attr_accessor :timeout
51
+
52
+ # Returns a new instance of RequestOptions.
53
+ sig do
54
+ params(values: Userplex::Internal::AnyHash).returns(T.attached_class)
55
+ end
56
+ def self.new(values = {})
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,36 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ module Resources
5
+ class Events
6
+ # Creates or uses an existing event and records an event occurrence for an end
7
+ # user. Requires a valid API key for authentication.
8
+ sig do
9
+ params(
10
+ event: String,
11
+ user_id: String,
12
+ properties: T::Hash[Symbol, T.nilable(T.anything)],
13
+ timestamp: Time,
14
+ request_options: Userplex::RequestOptions::OrHash
15
+ ).returns(Userplex::Models::EventTrackResponse)
16
+ end
17
+ def track(
18
+ # Event name
19
+ event:,
20
+ # External user ID
21
+ user_id:,
22
+ # Event metadata
23
+ properties: nil,
24
+ # Event timestamp (ISO 8601)
25
+ timestamp: nil,
26
+ request_options: {}
27
+ )
28
+ end
29
+
30
+ # @api private
31
+ sig { params(client: Userplex::Client).returns(T.attached_class) }
32
+ def self.new(client:)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ module Resources
5
+ class Users
6
+ # Creates or updates an end user in InstantDB with the provided information.
7
+ # Requires a valid API key for authentication.
8
+ sig do
9
+ params(
10
+ email: String,
11
+ name: String,
12
+ user_id: String,
13
+ properties: T::Hash[Symbol, T.nilable(T.anything)],
14
+ request_options: Userplex::RequestOptions::OrHash
15
+ ).returns(Userplex::Models::UserIdentifyResponse)
16
+ end
17
+ def identify(
18
+ # User email address
19
+ email:,
20
+ # User full name
21
+ name:,
22
+ # Unique identifier for the user
23
+ user_id:,
24
+ # Additional user properties
25
+ properties: nil,
26
+ request_options: {}
27
+ )
28
+ end
29
+
30
+ # @api private
31
+ sig { params(client: Userplex::Client).returns(T.attached_class) }
32
+ def self.new(client:)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,5 @@
1
+ # typed: strong
2
+
3
+ module Userplex
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+ end
@@ -0,0 +1,28 @@
1
+ module Userplex
2
+ class Client < Userplex::Internal::Transport::BaseClient
3
+ DEFAULT_MAX_RETRIES: 2
4
+
5
+ DEFAULT_TIMEOUT_IN_SECONDS: Float
6
+
7
+ DEFAULT_INITIAL_RETRY_DELAY: Float
8
+
9
+ DEFAULT_MAX_RETRY_DELAY: Float
10
+
11
+ attr_reader api_key: String
12
+
13
+ attr_reader users: Userplex::Resources::Users
14
+
15
+ attr_reader events: Userplex::Resources::Events
16
+
17
+ private def auth_headers: -> ::Hash[String, String]
18
+
19
+ def initialize: (
20
+ ?api_key: String?,
21
+ ?base_url: String?,
22
+ ?max_retries: Integer,
23
+ ?timeout: Float,
24
+ ?initial_retry_delay: Float,
25
+ ?max_retry_delay: Float
26
+ ) -> void
27
+ end
28
+ end
@@ -0,0 +1,117 @@
1
+ module Userplex
2
+ module Errors
3
+ class Error < StandardError
4
+ attr_accessor cause: StandardError?
5
+ end
6
+
7
+ class ConversionError < Userplex::Errors::Error
8
+ def cause: -> StandardError?
9
+
10
+ def initialize: (
11
+ on: Class,
12
+ method: Symbol,
13
+ target: top,
14
+ value: top,
15
+ ?cause: StandardError?
16
+ ) -> void
17
+ end
18
+
19
+ class APIError < Userplex::Errors::Error
20
+ attr_accessor url: URI::Generic
21
+
22
+ attr_accessor status: Integer?
23
+
24
+ attr_accessor headers: ::Hash[String, String]?
25
+
26
+ attr_accessor body: top?
27
+
28
+ def initialize: (
29
+ url: URI::Generic,
30
+ ?status: Integer?,
31
+ ?headers: ::Hash[String, String]?,
32
+ ?body: Object?,
33
+ ?request: nil,
34
+ ?response: nil,
35
+ ?message: String?
36
+ ) -> void
37
+ end
38
+
39
+ class APIConnectionError < Userplex::Errors::APIError
40
+ def initialize: (
41
+ url: URI::Generic,
42
+ ?status: nil,
43
+ ?headers: ::Hash[String, String]?,
44
+ ?body: nil,
45
+ ?request: nil,
46
+ ?response: nil,
47
+ ?message: String?
48
+ ) -> void
49
+ end
50
+
51
+ class APITimeoutError < Userplex::Errors::APIConnectionError
52
+ def initialize: (
53
+ url: URI::Generic,
54
+ ?status: nil,
55
+ ?headers: ::Hash[String, String]?,
56
+ ?body: nil,
57
+ ?request: nil,
58
+ ?response: nil,
59
+ ?message: String?
60
+ ) -> void
61
+ end
62
+
63
+ class APIStatusError < Userplex::Errors::APIError
64
+ def self.for: (
65
+ url: URI::Generic,
66
+ status: Integer,
67
+ headers: ::Hash[String, String]?,
68
+ body: Object?,
69
+ request: nil,
70
+ response: nil,
71
+ ?message: String?
72
+ ) -> instance
73
+
74
+ def initialize: (
75
+ url: URI::Generic,
76
+ status: Integer,
77
+ headers: ::Hash[String, String]?,
78
+ body: Object?,
79
+ request: nil,
80
+ response: nil,
81
+ ?message: String?
82
+ ) -> void
83
+ end
84
+
85
+ class BadRequestError < Userplex::Errors::APIStatusError
86
+ HTTP_STATUS: 400
87
+ end
88
+
89
+ class AuthenticationError < Userplex::Errors::APIStatusError
90
+ HTTP_STATUS: 401
91
+ end
92
+
93
+ class PermissionDeniedError < Userplex::Errors::APIStatusError
94
+ HTTP_STATUS: 403
95
+ end
96
+
97
+ class NotFoundError < Userplex::Errors::APIStatusError
98
+ HTTP_STATUS: 404
99
+ end
100
+
101
+ class ConflictError < Userplex::Errors::APIStatusError
102
+ HTTP_STATUS: 409
103
+ end
104
+
105
+ class UnprocessableEntityError < Userplex::Errors::APIStatusError
106
+ HTTP_STATUS: 422
107
+ end
108
+
109
+ class RateLimitError < Userplex::Errors::APIStatusError
110
+ HTTP_STATUS: 429
111
+ end
112
+
113
+ class InternalServerError < Userplex::Errors::APIStatusError
114
+ HTTP_STATUS: Range[Integer]
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,21 @@
1
+ module Userplex
2
+ class FilePart
3
+ attr_reader content: Pathname | StringIO | IO | String
4
+
5
+ attr_reader content_type: String?
6
+
7
+ attr_reader filename: String?
8
+
9
+ private def read: -> String
10
+
11
+ def to_json: (*top a) -> String
12
+
13
+ def to_yaml: (*top a) -> String
14
+
15
+ def initialize: (
16
+ Pathname | StringIO | IO | String content,
17
+ ?filename: (Pathname | String)?,
18
+ ?content_type: String?
19
+ ) -> void
20
+ end
21
+ end
@@ -0,0 +1,131 @@
1
+ module Userplex
2
+ module Internal
3
+ module Transport
4
+ class BaseClient
5
+ extend Userplex::Internal::Util::SorbetRuntimeSupport
6
+
7
+ type request_components =
8
+ {
9
+ method: Symbol,
10
+ path: String | ::Array[String],
11
+ query: ::Hash[String, (::Array[String] | String)?]?,
12
+ headers: ::Hash[String, (String
13
+ | Integer
14
+ | ::Array[(String | Integer)?])?]?,
15
+ body: top?,
16
+ unwrap: (Symbol
17
+ | Integer
18
+ | ::Array[(Symbol | Integer)]
19
+ | (^(top arg0) -> top))?,
20
+ page: Class?,
21
+ stream: Class?,
22
+ model: Userplex::Internal::Type::Converter::input?,
23
+ options: Userplex::request_opts?
24
+ }
25
+ type request_input =
26
+ {
27
+ method: Symbol,
28
+ url: URI::Generic,
29
+ headers: ::Hash[String, String],
30
+ body: top,
31
+ max_retries: Integer,
32
+ timeout: Float
33
+ }
34
+
35
+ MAX_REDIRECTS: 20
36
+
37
+ PLATFORM_HEADERS: ::Hash[String, String]
38
+
39
+ def self.validate!: (
40
+ Userplex::Internal::Transport::BaseClient::request_components req
41
+ ) -> void
42
+
43
+ def self.should_retry?: (
44
+ Integer status,
45
+ headers: ::Hash[String, String]
46
+ ) -> bool
47
+
48
+ def self.follow_redirect: (
49
+ Userplex::Internal::Transport::BaseClient::request_input request,
50
+ status: Integer,
51
+ response_headers: ::Hash[String, String]
52
+ ) -> Userplex::Internal::Transport::BaseClient::request_input
53
+
54
+ def self.reap_connection!: (
55
+ Integer | Userplex::Errors::APIConnectionError status,
56
+ stream: Enumerable[String]?
57
+ ) -> void
58
+
59
+ attr_reader base_url: URI::Generic
60
+
61
+ attr_reader timeout: Float
62
+
63
+ attr_reader max_retries: Integer
64
+
65
+ attr_reader initial_retry_delay: Float
66
+
67
+ attr_reader max_retry_delay: Float
68
+
69
+ attr_reader headers: ::Hash[String, String]
70
+
71
+ attr_reader idempotency_header: String?
72
+
73
+ # @api private
74
+ attr_reader requester: Userplex::Internal::Transport::PooledNetRequester
75
+
76
+ def initialize: (
77
+ base_url: String,
78
+ ?timeout: Float,
79
+ ?max_retries: Integer,
80
+ ?initial_retry_delay: Float,
81
+ ?max_retry_delay: Float,
82
+ ?headers: ::Hash[String, (String
83
+ | Integer
84
+ | ::Array[(String | Integer)?])?],
85
+ ?idempotency_header: String?
86
+ ) -> void
87
+
88
+ private def auth_headers: -> ::Hash[String, String]
89
+
90
+ private def generate_idempotency_key: -> String
91
+
92
+ private def build_request: (
93
+ Userplex::Internal::Transport::BaseClient::request_components req,
94
+ Userplex::request_options opts
95
+ ) -> Userplex::Internal::Transport::BaseClient::request_input
96
+
97
+ private def retry_delay: (
98
+ ::Hash[String, String] headers,
99
+ retry_count: Integer
100
+ ) -> Float
101
+
102
+ def send_request: (
103
+ Userplex::Internal::Transport::BaseClient::request_input request,
104
+ redirect_count: Integer,
105
+ retry_count: Integer,
106
+ send_retry_header: bool
107
+ ) -> [Integer, top, Enumerable[String]]
108
+
109
+ def request: (
110
+ Symbol method,
111
+ String | ::Array[String] path,
112
+ ?query: ::Hash[String, (::Array[String] | String)?]?,
113
+ ?headers: ::Hash[String, (String
114
+ | Integer
115
+ | ::Array[(String | Integer)?])?]?,
116
+ ?body: top?,
117
+ ?unwrap: (Symbol
118
+ | Integer
119
+ | ::Array[(Symbol | Integer)]
120
+ | (^(top arg0) -> top))?,
121
+ ?page: Class?,
122
+ ?stream: Class?,
123
+ ?model: Userplex::Internal::Type::Converter::input?,
124
+ ?options: Userplex::request_opts?
125
+ ) -> top
126
+
127
+ def inspect: -> String
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,45 @@
1
+ module Userplex
2
+ module Internal
3
+ module Transport
4
+ class PooledNetRequester
5
+ extend Userplex::Internal::Util::SorbetRuntimeSupport
6
+
7
+ type request =
8
+ {
9
+ method: Symbol,
10
+ url: URI::Generic,
11
+ headers: ::Hash[String, String],
12
+ body: top,
13
+ deadline: Float
14
+ }
15
+
16
+ KEEP_ALIVE_TIMEOUT: 30
17
+
18
+ DEFAULT_MAX_CONNECTIONS: Integer
19
+
20
+ def self.connect: (URI::Generic url) -> top
21
+
22
+ def self.calibrate_socket_timeout: (top conn, Float deadline) -> void
23
+
24
+ def self.build_request: (
25
+ Userplex::Internal::Transport::PooledNetRequester::request request
26
+ ) {
27
+ (String arg0) -> void
28
+ } -> [top, (^-> void)]
29
+
30
+ private def with_pool: (
31
+ URI::Generic url,
32
+ deadline: Float
33
+ ) {
34
+ (top arg0) -> void
35
+ } -> void
36
+
37
+ def execute: (
38
+ Userplex::Internal::Transport::PooledNetRequester::request request
39
+ ) -> [Integer, top, Enumerable[String]]
40
+
41
+ def initialize: (?size: Integer) -> void
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,48 @@
1
+ module Userplex
2
+ module Internal
3
+ module Type
4
+ class ArrayOf[Elem]
5
+ include Userplex::Internal::Type::Converter
6
+ include Userplex::Internal::Util::SorbetRuntimeSupport
7
+
8
+ def self.[]: (
9
+ ::Hash[Symbol, top]
10
+ | ^-> Userplex::Internal::Type::Converter::input
11
+ | Userplex::Internal::Type::Converter::input type_info,
12
+ ?::Hash[Symbol, top] spec
13
+ ) -> instance
14
+
15
+ def ===: (top other) -> bool
16
+
17
+ def ==: (top other) -> bool
18
+
19
+ def hash: -> Integer
20
+
21
+ def coerce: (
22
+ ::Array[top] | top value,
23
+ state: Userplex::Internal::Type::Converter::coerce_state
24
+ ) -> (::Array[top] | top)
25
+
26
+ def dump: (
27
+ ::Array[top] | top value,
28
+ state: Userplex::Internal::Type::Converter::dump_state
29
+ ) -> (::Array[top] | top)
30
+
31
+ def to_sorbet_type: -> top
32
+
33
+ def item_type: -> Elem
34
+
35
+ def nilable?: -> bool
36
+
37
+ def initialize: (
38
+ ::Hash[Symbol, top]
39
+ | ^-> Userplex::Internal::Type::Converter::input
40
+ | Userplex::Internal::Type::Converter::input type_info,
41
+ ?::Hash[Symbol, top] spec
42
+ ) -> void
43
+
44
+ def inspect: (?depth: Integer) -> String
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,102 @@
1
+ module Userplex
2
+ module Internal
3
+ module Type
4
+ class BaseModel
5
+ extend Userplex::Internal::Type::Converter
6
+ extend Userplex::Internal::Util::SorbetRuntimeSupport
7
+
8
+ type known_field =
9
+ { mode: (:coerce | :dump)?, required: bool, nilable: bool }
10
+
11
+ def self.inherited: (self child) -> void
12
+
13
+ def self.known_fields: -> ::Hash[Symbol, (Userplex::Internal::Type::BaseModel::known_field
14
+ & { type_fn: (^-> Userplex::Internal::Type::Converter::input) })]
15
+
16
+ def self.fields: -> ::Hash[Symbol, (Userplex::Internal::Type::BaseModel::known_field
17
+ & { type: Userplex::Internal::Type::Converter::input })]
18
+
19
+ private def self.add_field: (
20
+ Symbol name_sym,
21
+ required: bool,
22
+ type_info: {
23
+ const: (nil | bool | Integer | Float | Symbol)?,
24
+ enum: ^-> Userplex::Internal::Type::Converter::input?,
25
+ union: ^-> Userplex::Internal::Type::Converter::input?,
26
+ api_name: Symbol
27
+ }
28
+ | ^-> Userplex::Internal::Type::Converter::input
29
+ | Userplex::Internal::Type::Converter::input,
30
+ spec: ::Hash[Symbol, top]
31
+ ) -> void
32
+
33
+ def self.required: (
34
+ Symbol name_sym,
35
+ ::Hash[Symbol, top]
36
+ | ^-> Userplex::Internal::Type::Converter::input
37
+ | Userplex::Internal::Type::Converter::input type_info,
38
+ ?::Hash[Symbol, top] spec
39
+ ) -> void
40
+
41
+ def self.optional: (
42
+ Symbol name_sym,
43
+ ::Hash[Symbol, top]
44
+ | ^-> Userplex::Internal::Type::Converter::input
45
+ | Userplex::Internal::Type::Converter::input type_info,
46
+ ?::Hash[Symbol, top] spec
47
+ ) -> void
48
+
49
+ private def self.request_only: { -> void } -> void
50
+
51
+ private def self.response_only: { -> void } -> void
52
+
53
+ def self.==: (top other) -> bool
54
+
55
+ def self.hash: -> Integer
56
+
57
+ def ==: (top other) -> bool
58
+
59
+ def hash: -> Integer
60
+
61
+ def self.coerce: (
62
+ Userplex::Internal::Type::BaseModel | ::Hash[top, top] | top value,
63
+ state: Userplex::Internal::Type::Converter::coerce_state
64
+ ) -> (instance | top)
65
+
66
+ def self.dump: (
67
+ instance | top value,
68
+ state: Userplex::Internal::Type::Converter::dump_state
69
+ ) -> (::Hash[top, top] | top)
70
+
71
+ def self.to_sorbet_type: -> top
72
+
73
+ def self.recursively_to_h: (
74
+ Userplex::Internal::Type::BaseModel model,
75
+ convert: bool
76
+ ) -> ::Hash[Symbol, top]
77
+
78
+ def []: (Symbol key) -> top?
79
+
80
+ def to_h: -> ::Hash[Symbol, top]
81
+
82
+ alias to_hash to_h
83
+
84
+ def deep_to_h: -> ::Hash[Symbol, top]
85
+
86
+ def deconstruct_keys: (::Array[Symbol]? keys) -> ::Hash[Symbol, top]
87
+
88
+ def to_json: (*top a) -> String
89
+
90
+ def to_yaml: (*top a) -> String
91
+
92
+ def initialize: (?::Hash[Symbol, top] | instance data) -> void
93
+
94
+ def self.inspect: (?depth: Integer) -> String
95
+
96
+ def to_s: -> String
97
+
98
+ def inspect: -> String
99
+ end
100
+ end
101
+ end
102
+ end