wal 0.0.2 → 0.0.4

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -7
  3. data/exe/wal +19 -14
  4. data/lib/wal/noop_watcher.rb +0 -4
  5. data/lib/wal/record_watcher.rb +4 -58
  6. data/lib/wal/replicator.rb +2 -21
  7. data/lib/wal/streaming_watcher.rb +0 -9
  8. data/lib/wal/version.rb +1 -2
  9. data/lib/wal/watcher.rb +0 -25
  10. data/lib/wal.rb +5 -64
  11. data/rbi/wal.rbi +21 -102
  12. metadata +2 -161
  13. data/sorbet/config +0 -7
  14. data/sorbet/rbi/annotations/.gitattributes +0 -1
  15. data/sorbet/rbi/annotations/activemodel.rbi +0 -89
  16. data/sorbet/rbi/annotations/activerecord.rbi +0 -98
  17. data/sorbet/rbi/annotations/activesupport.rbi +0 -463
  18. data/sorbet/rbi/annotations/minitest.rbi +0 -119
  19. data/sorbet/rbi/annotations/rainbow.rbi +0 -269
  20. data/sorbet/rbi/gems/.gitattributes +0 -1
  21. data/sorbet/rbi/gems/actioncable@8.0.2.rbi +0 -9
  22. data/sorbet/rbi/gems/actionmailbox@8.0.2.rbi +0 -9
  23. data/sorbet/rbi/gems/actionmailer@8.0.2.rbi +0 -9
  24. data/sorbet/rbi/gems/actionpack@8.0.2.rbi +0 -21122
  25. data/sorbet/rbi/gems/actiontext@8.0.2.rbi +0 -9
  26. data/sorbet/rbi/gems/actionview@8.0.2.rbi +0 -16423
  27. data/sorbet/rbi/gems/activejob@8.0.2.rbi +0 -9
  28. data/sorbet/rbi/gems/activemodel@8.0.2.rbi +0 -6866
  29. data/sorbet/rbi/gems/activerecord@8.0.2.rbi +0 -43227
  30. data/sorbet/rbi/gems/activestorage@8.0.2.rbi +0 -9
  31. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +0 -21110
  32. data/sorbet/rbi/gems/ast@2.4.3.rbi +0 -585
  33. data/sorbet/rbi/gems/base64@0.3.0.rbi +0 -545
  34. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +0 -619
  35. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +0 -78
  36. data/sorbet/rbi/gems/builder@3.3.0.rbi +0 -9
  37. data/sorbet/rbi/gems/commander@5.0.0.rbi +0 -9
  38. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +0 -11657
  39. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +0 -9
  40. data/sorbet/rbi/gems/crass@1.0.6.rbi +0 -623
  41. data/sorbet/rbi/gems/date@3.4.1.rbi +0 -75
  42. data/sorbet/rbi/gems/diff-lcs@1.6.2.rbi +0 -1134
  43. data/sorbet/rbi/gems/docker-api@2.4.0.rbi +0 -1719
  44. data/sorbet/rbi/gems/docopt@0.6.1.rbi +0 -9
  45. data/sorbet/rbi/gems/drb@2.2.3.rbi +0 -1661
  46. data/sorbet/rbi/gems/erubi@1.13.1.rbi +0 -155
  47. data/sorbet/rbi/gems/excon@1.2.7.rbi +0 -1514
  48. data/sorbet/rbi/gems/globalid@1.2.1.rbi +0 -9
  49. data/sorbet/rbi/gems/highline@3.0.1.rbi +0 -9
  50. data/sorbet/rbi/gems/i18n@1.14.7.rbi +0 -2359
  51. data/sorbet/rbi/gems/io-console@0.8.0.rbi +0 -9
  52. data/sorbet/rbi/gems/logger@1.7.0.rbi +0 -963
  53. data/sorbet/rbi/gems/loofah@2.24.1.rbi +0 -1105
  54. data/sorbet/rbi/gems/mail@2.8.1.rbi +0 -9
  55. data/sorbet/rbi/gems/marcel@1.0.4.rbi +0 -9
  56. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +0 -9
  57. data/sorbet/rbi/gems/minitest@5.25.5.rbi +0 -1704
  58. data/sorbet/rbi/gems/multi_json@1.15.0.rbi +0 -268
  59. data/sorbet/rbi/gems/net-imap@0.5.9.rbi +0 -9
  60. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +0 -9
  61. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +0 -292
  62. data/sorbet/rbi/gems/net-smtp@0.5.1.rbi +0 -9
  63. data/sorbet/rbi/gems/netrc@0.11.0.rbi +0 -159
  64. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +0 -9
  65. data/sorbet/rbi/gems/nokogiri@1.18.8.rbi +0 -8206
  66. data/sorbet/rbi/gems/ostruct@0.6.2.rbi +0 -354
  67. data/sorbet/rbi/gems/parallel@1.27.0.rbi +0 -291
  68. data/sorbet/rbi/gems/parlour@9.1.1.rbi +0 -3071
  69. data/sorbet/rbi/gems/parser@3.3.8.0.rbi +0 -7338
  70. data/sorbet/rbi/gems/pg-replication-protocol@0.0.7.rbi +0 -633
  71. data/sorbet/rbi/gems/pg@1.5.9.rbi +0 -2806
  72. data/sorbet/rbi/gems/pp@0.6.2.rbi +0 -368
  73. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +0 -477
  74. data/sorbet/rbi/gems/prism@1.4.0.rbi +0 -41732
  75. data/sorbet/rbi/gems/psych@5.2.3.rbi +0 -2435
  76. data/sorbet/rbi/gems/racc@1.8.1.rbi +0 -160
  77. data/sorbet/rbi/gems/rack-session@2.1.1.rbi +0 -727
  78. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +0 -734
  79. data/sorbet/rbi/gems/rack@3.1.16.rbi +0 -4940
  80. data/sorbet/rbi/gems/rackup@2.2.1.rbi +0 -230
  81. data/sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi +0 -858
  82. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +0 -785
  83. data/sorbet/rbi/gems/rails@8.0.2.rbi +0 -9
  84. data/sorbet/rbi/gems/railties@8.0.2.rbi +0 -3865
  85. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -403
  86. data/sorbet/rbi/gems/rake@13.2.1.rbi +0 -3120
  87. data/sorbet/rbi/gems/rbi@0.3.6.rbi +0 -6893
  88. data/sorbet/rbi/gems/rbs@3.9.4.rbi +0 -6978
  89. data/sorbet/rbi/gems/rdoc@6.12.0.rbi +0 -12760
  90. data/sorbet/rbi/gems/reline@0.6.0.rbi +0 -2451
  91. data/sorbet/rbi/gems/rexml@3.4.1.rbi +0 -5240
  92. data/sorbet/rbi/gems/rspec-core@3.13.4.rbi +0 -11348
  93. data/sorbet/rbi/gems/rspec-expectations@3.13.5.rbi +0 -8189
  94. data/sorbet/rbi/gems/rspec-mocks@3.13.5.rbi +0 -5350
  95. data/sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi +0 -164
  96. data/sorbet/rbi/gems/rspec-support@3.13.4.rbi +0 -1630
  97. data/sorbet/rbi/gems/rspec@3.13.1.rbi +0 -83
  98. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +0 -75
  99. data/sorbet/rbi/gems/spoom@1.6.3.rbi +0 -6985
  100. data/sorbet/rbi/gems/stringio@3.1.5.rbi +0 -9
  101. data/sorbet/rbi/gems/tapioca@0.16.11.rbi +0 -3628
  102. data/sorbet/rbi/gems/testcontainers-core@0.2.0.rbi +0 -1005
  103. data/sorbet/rbi/gems/testcontainers-postgres@0.2.0.rbi +0 -145
  104. data/sorbet/rbi/gems/thor@1.3.2.rbi +0 -4378
  105. data/sorbet/rbi/gems/timeout@0.4.3.rbi +0 -157
  106. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +0 -5918
  107. data/sorbet/rbi/gems/uri@1.0.3.rbi +0 -2349
  108. data/sorbet/rbi/gems/useragent@0.16.11.rbi +0 -9
  109. data/sorbet/rbi/gems/websocket-driver@0.8.0.rbi +0 -9
  110. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +0 -9
  111. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
  112. data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18379
  113. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +0 -9
  114. data/sorbet/tapioca/config.yml +0 -5
  115. data/sorbet/tapioca/require.rb +0 -12
data/rbi/wal.rbi CHANGED
@@ -7,7 +7,7 @@ module Wal
7
7
  UpdateEvent,
8
8
  DeleteEvent,
9
9
  ) }
10
- VERSION = "0.0.2"
10
+ VERSION = "0.0.3"
11
11
 
12
12
  class BeginTransactionEvent < T::Struct
13
13
  prop :transaction_id, Integer, immutable: true
@@ -103,7 +103,7 @@ module Wal
103
103
  include Wal::Watcher
104
104
  extend T::Sig
105
105
 
106
- sig { override.params(event: Event).void }
106
+ sig { override.params(event: Wal::Event).void }
107
107
  def on_event(event); end
108
108
  end
109
109
 
@@ -113,21 +113,21 @@ module Wal
113
113
  include Wal::Watcher
114
114
  extend T::Sig
115
115
  extend T::Helpers
116
- RecordEvent = T.type_alias { T.any(InsertEvent, UpdateEvent, DeleteEvent) }
116
+ RecordEvent = T.type_alias { T.any(Wal::InsertEvent, Wal::UpdateEvent, Wal::DeleteEvent) }
117
117
 
118
118
  sig { params(subclass: T.untyped).returns(T.untyped) }
119
119
  def self.inherited(subclass); end
120
120
 
121
- sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), block: T.proc.bind(T.attached_class).params(event: InsertEvent).void).void }
121
+ sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), block: T.proc.bind(T.attached_class).params(event: Wal::InsertEvent).void).void }
122
122
  def self.on_insert(table, &block); end
123
123
 
124
- sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), changed: T.nilable(T::Array[T.any(String, Symbol)]), block: T.proc.bind(T.attached_class).params(event: UpdateEvent).void).void }
124
+ sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), changed: T.nilable(T::Array[T.any(String, Symbol)]), block: T.proc.bind(T.attached_class).params(event: Wal::UpdateEvent).void).void }
125
125
  def self.on_update(table, changed: nil, &block); end
126
126
 
127
- sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), changed: T.nilable(T::Array[T.any(String, Symbol)]), block: T.proc.bind(T.attached_class).params(event: T.any(InsertEvent, UpdateEvent)).void).void }
127
+ sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), changed: T.nilable(T::Array[T.any(String, Symbol)]), block: T.proc.bind(T.attached_class).params(event: T.any(Wal::InsertEvent, Wal::UpdateEvent)).void).void }
128
128
  def self.on_save(table, changed: nil, &block); end
129
129
 
130
- sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), block: T.proc.bind(T.attached_class).params(event: DeleteEvent).void).void }
130
+ sig { params(table: T.any(String, T.class_of(::ActiveRecord::Base)), block: T.proc.bind(T.attached_class).params(event: Wal::DeleteEvent).void).void }
131
131
  def self.on_destroy(table, &block); end
132
132
 
133
133
  sig { params(event: RecordEvent).void }
@@ -136,71 +136,11 @@ module Wal
136
136
  sig { params(table: String).returns(T::Boolean) }
137
137
  def should_watch_table?(table); end
138
138
 
139
- sig { params(event: BeginTransactionEvent).returns(Symbol) }
139
+ sig { params(event: Wal::BeginTransactionEvent).returns(Symbol) }
140
140
  def aggregation_strategy(event); end
141
141
 
142
- sig { override.params(event: Event).void }
142
+ sig { override.params(event: Wal::Event).void }
143
143
  def on_event(event); end
144
-
145
- class MemoryRecordWatcher
146
- include Wal::Watcher
147
- include Wal::Watcher::SeparatedEvents
148
- extend T::Sig
149
- extend T::Helpers
150
- RecordsStorage = T.type_alias { T::Hash[[String, Integer], T.nilable(RecordEvent)] }
151
-
152
- sig { params(watcher: T.untyped).void }
153
- def initialize(watcher); end
154
-
155
- sig { params(event: BeginTransactionEvent).void }
156
- def on_begin(event); end
157
-
158
- sig { params(_event: T.untyped).returns(T.untyped) }
159
- def on_commit(_event); end
160
-
161
- sig { params(event: InsertEvent).void }
162
- def on_insert(event); end
163
-
164
- sig { params(event: UpdateEvent).void }
165
- def on_update(event); end
166
-
167
- sig { params(event: DeleteEvent).void }
168
- def on_delete(event); end
169
- end
170
-
171
- class TemporaryTableRecordWatcher
172
- include Wal::Watcher
173
- include Wal::Watcher::SeparatedEvents
174
- extend T::Sig
175
- extend T::Helpers
176
-
177
- sig { params(watcher: T.untyped, batch_size: T.untyped).void }
178
- def initialize(watcher, batch_size: 5_000); end
179
-
180
- sig { params(event: BeginTransactionEvent).void }
181
- def on_begin(event); end
182
-
183
- sig { params(_event: T.untyped).returns(T.untyped) }
184
- def on_commit(_event); end
185
-
186
- sig { params(event: InsertEvent).void }
187
- def on_insert(event); end
188
-
189
- sig { params(event: UpdateEvent).void }
190
- def on_update(event); end
191
-
192
- sig { params(event: DeleteEvent).void }
193
- def on_delete(event); end
194
-
195
- sig { returns(T.class_of(::ActiveRecord::Base)) }
196
- def base_class; end
197
-
198
- sig { params(event: T.untyped).returns(T.untyped) }
199
- def serialize(event); end
200
-
201
- sig { params(persisted_event: T.untyped).returns(T.untyped) }
202
- def deserialize(persisted_event); end
203
- end
204
144
  end
205
145
 
206
146
  class Replicator
@@ -210,31 +150,11 @@ module Wal
210
150
  sig { params(replication_slot: String, use_temporary_slot: T::Boolean, db_config: T::Hash[Symbol, T.untyped]).void }
211
151
  def initialize(replication_slot:, use_temporary_slot: false, db_config: ActiveRecord::Base.configurations.configs_for(name: "primary").configuration_hash); end
212
152
 
213
- sig { params(watcher: Watcher, publications: T::Array[String]).void }
153
+ sig { params(watcher: Wal::Watcher, publications: T::Array[String]).void }
214
154
  def replicate_forever(watcher, publications:); end
215
155
 
216
- sig { params(watcher: Watcher, publications: T::Array[String]).returns(T::Enumerator::Lazy[Event]) }
156
+ sig { params(watcher: Wal::Watcher, publications: T::Array[String]).returns(T::Enumerator::Lazy[Wal::Event]) }
217
157
  def replicate(watcher, publications:); end
218
-
219
- class Column < T::Struct
220
- prop :name, String, immutable: true
221
- prop :decoder, T.untyped, immutable: true
222
-
223
- sig { params(value: T.untyped).returns(T.untyped) }
224
- def decode(value); end
225
- end
226
-
227
- class Table < T::Struct
228
- prop :name, String, immutable: true
229
- prop :primary_key_colums, T::Array[String], immutable: true
230
- prop :columns, T::Array[Column], immutable: true
231
-
232
- sig { params(decoded_row: T.untyped).returns(T.untyped) }
233
- def primary_key(decoded_row); end
234
-
235
- sig { params(values: T.untyped).returns(T.untyped) }
236
- def decode_row(values); end
237
- end
238
158
  end
239
159
 
240
160
  class StreamingWatcher
@@ -244,24 +164,23 @@ module Wal
244
164
  extend T::Sig
245
165
  extend T::Helpers
246
166
 
247
- sig { abstract.params(events: T::Enumerator[Event]).void }
167
+ sig { abstract.params(events: T::Enumerator[Wal::Event]).void }
248
168
  def on_transaction_events(events); end
249
169
 
250
- sig { params(event: BeginTransactionEvent).returns(Integer) }
170
+ sig { params(event: Wal::BeginTransactionEvent).returns(Integer) }
251
171
  def queue_size(event); end
252
172
 
253
- sig { override.params(event: Event).void }
173
+ sig { override.params(event: Wal::Event).void }
254
174
  def on_event(event); end
255
175
  end
256
176
 
257
177
  module Watcher
258
178
  abstract!
259
179
 
260
- include Wal
261
180
  extend T::Sig
262
181
  extend T::Helpers
263
182
 
264
- sig { abstract.params(event: Event).void }
183
+ sig { abstract.params(event: Wal::Event).void }
265
184
  def on_event(event); end
266
185
 
267
186
  sig { params(table: String).returns(T::Boolean) }
@@ -273,22 +192,22 @@ module Wal
273
192
  module SeparatedEvents
274
193
  extend T::Sig
275
194
 
276
- sig { params(event: Event).void }
195
+ sig { params(event: Wal::Event).void }
277
196
  def on_event(event); end
278
197
 
279
- sig { params(event: BeginTransactionEvent).void }
198
+ sig { params(event: Wal::BeginTransactionEvent).void }
280
199
  def on_begin(event); end
281
200
 
282
- sig { params(event: InsertEvent).void }
201
+ sig { params(event: Wal::InsertEvent).void }
283
202
  def on_insert(event); end
284
203
 
285
- sig { params(event: UpdateEvent).void }
204
+ sig { params(event: Wal::UpdateEvent).void }
286
205
  def on_update(event); end
287
206
 
288
- sig { params(event: DeleteEvent).void }
207
+ sig { params(event: Wal::DeleteEvent).void }
289
208
  def on_delete(event); end
290
209
 
291
- sig { params(event: CommitTransactionEvent).void }
210
+ sig { params(event: Wal::CommitTransactionEvent).void }
292
211
  def on_commit(event); end
293
212
  end
294
213
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Navarro
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-06-22 00:00:00.000000000 Z
10
+ date: 2025-08-10 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: pg
@@ -79,62 +79,6 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '7'
82
- - !ruby/object:Gem::Dependency
83
- name: rbs
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- - !ruby/object:Gem::Dependency
97
- name: sorbet
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: tapioca
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- - !ruby/object:Gem::Dependency
125
- name: parlour
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
82
  email:
139
83
  - rnavarro@rnavarro.com.br
140
84
  executables:
@@ -157,109 +101,6 @@ files:
157
101
  - lib/wal/watcher.rb
158
102
  - rbi/wal.rbi
159
103
  - sig/wal.rbs
160
- - sorbet/config
161
- - sorbet/rbi/annotations/.gitattributes
162
- - sorbet/rbi/annotations/activemodel.rbi
163
- - sorbet/rbi/annotations/activerecord.rbi
164
- - sorbet/rbi/annotations/activesupport.rbi
165
- - sorbet/rbi/annotations/minitest.rbi
166
- - sorbet/rbi/annotations/rainbow.rbi
167
- - sorbet/rbi/gems/.gitattributes
168
- - sorbet/rbi/gems/actioncable@8.0.2.rbi
169
- - sorbet/rbi/gems/actionmailbox@8.0.2.rbi
170
- - sorbet/rbi/gems/actionmailer@8.0.2.rbi
171
- - sorbet/rbi/gems/actionpack@8.0.2.rbi
172
- - sorbet/rbi/gems/actiontext@8.0.2.rbi
173
- - sorbet/rbi/gems/actionview@8.0.2.rbi
174
- - sorbet/rbi/gems/activejob@8.0.2.rbi
175
- - sorbet/rbi/gems/activemodel@8.0.2.rbi
176
- - sorbet/rbi/gems/activerecord@8.0.2.rbi
177
- - sorbet/rbi/gems/activestorage@8.0.2.rbi
178
- - sorbet/rbi/gems/activesupport@8.0.2.rbi
179
- - sorbet/rbi/gems/ast@2.4.3.rbi
180
- - sorbet/rbi/gems/base64@0.3.0.rbi
181
- - sorbet/rbi/gems/benchmark@0.4.1.rbi
182
- - sorbet/rbi/gems/bigdecimal@3.2.2.rbi
183
- - sorbet/rbi/gems/builder@3.3.0.rbi
184
- - sorbet/rbi/gems/commander@5.0.0.rbi
185
- - sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi
186
- - sorbet/rbi/gems/connection_pool@2.5.3.rbi
187
- - sorbet/rbi/gems/crass@1.0.6.rbi
188
- - sorbet/rbi/gems/date@3.4.1.rbi
189
- - sorbet/rbi/gems/diff-lcs@1.6.2.rbi
190
- - sorbet/rbi/gems/docker-api@2.4.0.rbi
191
- - sorbet/rbi/gems/docopt@0.6.1.rbi
192
- - sorbet/rbi/gems/drb@2.2.3.rbi
193
- - sorbet/rbi/gems/erubi@1.13.1.rbi
194
- - sorbet/rbi/gems/excon@1.2.7.rbi
195
- - sorbet/rbi/gems/globalid@1.2.1.rbi
196
- - sorbet/rbi/gems/highline@3.0.1.rbi
197
- - sorbet/rbi/gems/i18n@1.14.7.rbi
198
- - sorbet/rbi/gems/io-console@0.8.0.rbi
199
- - sorbet/rbi/gems/logger@1.7.0.rbi
200
- - sorbet/rbi/gems/loofah@2.24.1.rbi
201
- - sorbet/rbi/gems/mail@2.8.1.rbi
202
- - sorbet/rbi/gems/marcel@1.0.4.rbi
203
- - sorbet/rbi/gems/mini_mime@1.1.5.rbi
204
- - sorbet/rbi/gems/minitest@5.25.5.rbi
205
- - sorbet/rbi/gems/multi_json@1.15.0.rbi
206
- - sorbet/rbi/gems/net-imap@0.5.9.rbi
207
- - sorbet/rbi/gems/net-pop@0.1.2.rbi
208
- - sorbet/rbi/gems/net-protocol@0.2.2.rbi
209
- - sorbet/rbi/gems/net-smtp@0.5.1.rbi
210
- - sorbet/rbi/gems/netrc@0.11.0.rbi
211
- - sorbet/rbi/gems/nio4r@2.7.4.rbi
212
- - sorbet/rbi/gems/nokogiri@1.18.8.rbi
213
- - sorbet/rbi/gems/ostruct@0.6.2.rbi
214
- - sorbet/rbi/gems/parallel@1.27.0.rbi
215
- - sorbet/rbi/gems/parlour@9.1.1.rbi
216
- - sorbet/rbi/gems/parser@3.3.8.0.rbi
217
- - sorbet/rbi/gems/pg-replication-protocol@0.0.7.rbi
218
- - sorbet/rbi/gems/pg@1.5.9.rbi
219
- - sorbet/rbi/gems/pp@0.6.2.rbi
220
- - sorbet/rbi/gems/prettyprint@0.2.0.rbi
221
- - sorbet/rbi/gems/prism@1.4.0.rbi
222
- - sorbet/rbi/gems/psych@5.2.3.rbi
223
- - sorbet/rbi/gems/racc@1.8.1.rbi
224
- - sorbet/rbi/gems/rack-session@2.1.1.rbi
225
- - sorbet/rbi/gems/rack-test@2.2.0.rbi
226
- - sorbet/rbi/gems/rack@3.1.16.rbi
227
- - sorbet/rbi/gems/rackup@2.2.1.rbi
228
- - sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi
229
- - sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi
230
- - sorbet/rbi/gems/rails@8.0.2.rbi
231
- - sorbet/rbi/gems/railties@8.0.2.rbi
232
- - sorbet/rbi/gems/rainbow@3.1.1.rbi
233
- - sorbet/rbi/gems/rake@13.2.1.rbi
234
- - sorbet/rbi/gems/rbi@0.3.6.rbi
235
- - sorbet/rbi/gems/rbs@3.9.4.rbi
236
- - sorbet/rbi/gems/rdoc@6.12.0.rbi
237
- - sorbet/rbi/gems/reline@0.6.0.rbi
238
- - sorbet/rbi/gems/rexml@3.4.1.rbi
239
- - sorbet/rbi/gems/rspec-core@3.13.4.rbi
240
- - sorbet/rbi/gems/rspec-expectations@3.13.5.rbi
241
- - sorbet/rbi/gems/rspec-mocks@3.13.5.rbi
242
- - sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi
243
- - sorbet/rbi/gems/rspec-support@3.13.4.rbi
244
- - sorbet/rbi/gems/rspec@3.13.1.rbi
245
- - sorbet/rbi/gems/securerandom@0.4.1.rbi
246
- - sorbet/rbi/gems/spoom@1.6.3.rbi
247
- - sorbet/rbi/gems/stringio@3.1.5.rbi
248
- - sorbet/rbi/gems/tapioca@0.16.11.rbi
249
- - sorbet/rbi/gems/testcontainers-core@0.2.0.rbi
250
- - sorbet/rbi/gems/testcontainers-postgres@0.2.0.rbi
251
- - sorbet/rbi/gems/thor@1.3.2.rbi
252
- - sorbet/rbi/gems/timeout@0.4.3.rbi
253
- - sorbet/rbi/gems/tzinfo@2.0.6.rbi
254
- - sorbet/rbi/gems/uri@1.0.3.rbi
255
- - sorbet/rbi/gems/useragent@0.16.11.rbi
256
- - sorbet/rbi/gems/websocket-driver@0.8.0.rbi
257
- - sorbet/rbi/gems/websocket-extensions@0.1.5.rbi
258
- - sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
259
- - sorbet/rbi/gems/yard@0.9.37.rbi
260
- - sorbet/rbi/gems/zeitwerk@2.7.3.rbi
261
- - sorbet/tapioca/config.yml
262
- - sorbet/tapioca/require.rb
263
104
  licenses:
264
105
  - MIT
265
106
  metadata:
data/sorbet/config DELETED
@@ -1,7 +0,0 @@
1
- --dir
2
- .
3
- --ignore=tmp/
4
- --ignore=sig/
5
- --ignore=vendor/
6
- --suppress-payload-superclass-redefinition-for=Psych::Parser::Mark
7
- --suppress-payload-superclass-redefinition-for=IRB::ReadlineInputMethod
@@ -1 +0,0 @@
1
- **/*.rbi linguist-vendored=true
@@ -1,89 +0,0 @@
1
- # typed: true
2
-
3
- # DO NOT EDIT MANUALLY
4
- # This file was pulled from a central RBI files repository.
5
- # Please run `bin/tapioca annotations` to update it.
6
-
7
- class ActiveModel::Errors
8
- Elem = type_member { { fixed: ActiveModel::Error } }
9
-
10
- sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
11
- def [](attribute); end
12
-
13
- sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(ActiveModel::Error) }
14
- def add(attribute, type = :invalid, **options); end
15
-
16
- sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Boolean) }
17
- def added?(attribute, type = :invalid, options = {}); end
18
-
19
- sig { params(options: T.untyped).returns(T::Hash[T.untyped, T.untyped]) }
20
- def as_json(options = nil); end
21
-
22
- sig { returns(T::Array[Symbol]) }
23
- def attribute_names; end
24
-
25
- sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T.nilable(T::Array[String])) }
26
- def delete(attribute, type = nil, **options); end
27
-
28
- sig { returns(T::Hash[Symbol, T::Array[T::Hash[Symbol, T.untyped]]]) }
29
- def details; end
30
-
31
- sig { returns(T::Array[Elem]) }
32
- def errors; end
33
-
34
- sig { params(attribute: T.any(Symbol, String), message: String).returns(String) }
35
- def full_message(attribute, message); end
36
-
37
- sig { returns(T::Array[String]) }
38
- def full_messages; end
39
-
40
- sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
41
- def full_messages_for(attribute); end
42
-
43
- sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(String) }
44
- def generate_message(attribute, type = :invalid, options = {}); end
45
-
46
- sig { returns(T::Hash[Symbol, T::Array[ActiveModel::Error]]) }
47
- def group_by_attribute; end
48
-
49
- sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
50
- def has_key?(attribute); end
51
-
52
- sig { params(error: ActiveModel::Error, override_options: T.untyped).returns(T::Array[ActiveModel::Error]) }
53
- def import(error, override_options = {}); end
54
-
55
- sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
56
- def include?(attribute); end
57
-
58
- sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
59
- def key?(attribute); end
60
-
61
- sig { params(other: T.untyped).returns(T::Array[ActiveModel::Error]) }
62
- def merge!(other); end
63
-
64
- sig { returns(T::Hash[Symbol, T::Array[String]]) }
65
- def messages; end
66
-
67
- sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
68
- def messages_for(attribute); end
69
-
70
- sig { returns(T::Array[Elem]) }
71
- def objects; end
72
-
73
- sig { params(attribute: T.any(Symbol, String), type: T.untyped).returns(T::Boolean) }
74
- def of_kind?(attribute, type = :invalid); end
75
-
76
- sig { returns(T::Array[String]) }
77
- def to_a; end
78
-
79
- sig { params(full_messages: T.untyped).returns(T::Hash[Symbol, T::Array[String]]) }
80
- def to_hash(full_messages = false); end
81
-
82
- sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Array[ActiveModel::Error]) }
83
- def where(attribute, type = nil, **options); end
84
- end
85
-
86
- module ActiveModel::Validations
87
- sig { returns(ActiveModel::Errors) }
88
- def errors; end
89
- end
@@ -1,98 +0,0 @@
1
- # typed: true
2
-
3
- # DO NOT EDIT MANUALLY
4
- # This file was pulled from a central RBI files repository.
5
- # Please run `bin/tapioca annotations` to update it.
6
-
7
- class ActiveRecord::Schema
8
- sig { params(info: T::Hash[T.untyped, T.untyped], blk: T.proc.bind(ActiveRecord::Schema).void).void }
9
- def self.define(info = nil, &blk); end
10
- end
11
-
12
- class ActiveRecord::Migration
13
- # @shim: Methods on migration are delegated to `SchemaStatements` using `method_missing`
14
- include ActiveRecord::ConnectionAdapters::SchemaStatements
15
-
16
- # @shim: Methods on migration are delegated to `DatabaseStatements` using `method_missing`
17
- include ActiveRecord::ConnectionAdapters::DatabaseStatements
18
- end
19
-
20
- class ActiveRecord::Base
21
- sig { returns(FalseClass) }
22
- def blank?; end
23
-
24
- # @shim: since `present?` is always true, `presence` always returns `self`
25
- sig { returns(T.self_type) }
26
- def presence; end
27
-
28
- sig { returns(TrueClass) }
29
- def present?; end
30
-
31
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
32
- def self.after_initialize(*args, **options, &block); end
33
-
34
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
35
- def self.after_find(*args, **options, &block); end
36
-
37
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
38
- def self.after_touch(*args, **options, &block); end
39
-
40
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
41
- def self.before_validation(*args, **options, &block); end
42
-
43
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
44
- def self.after_validation(*args, **options, &block); end
45
-
46
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
47
- def self.before_save(*args, **options, &block); end
48
-
49
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
50
- def self.around_save(*args, **options, &block); end
51
-
52
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
53
- def self.after_save(*args, **options, &block); end
54
-
55
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
56
- def self.before_create(*args, **options, &block); end
57
-
58
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
59
- def self.around_create(*args, **options, &block); end
60
-
61
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
62
- def self.after_create(*args, **options, &block); end
63
-
64
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
65
- def self.before_update(*args, **options, &block); end
66
-
67
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
68
- def self.around_update(*args, **options, &block); end
69
-
70
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
71
- def self.after_update(*args, **options, &block); end
72
-
73
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
74
- def self.before_destroy(*args, **options, &block); end
75
-
76
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
77
- def self.around_destroy(*args, **options, &block); end
78
-
79
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
80
- def self.after_destroy(*args, **options, &block); end
81
-
82
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
83
- def self.after_commit(*args, **options, &block); end
84
-
85
- sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
86
- def self.after_rollback(*args, **options, &block); end
87
- end
88
-
89
- class ActiveRecord::Relation
90
- Elem = type_member(:out) { { fixed: T.untyped } }
91
-
92
- sig { returns(T::Boolean) }
93
- def blank?; end
94
-
95
- sig { abstract.params(blk: T.proc.params(arg0: Elem).returns(BasicObject)).returns(T.untyped) }
96
- sig { abstract.returns(T::Enumerator[Elem]) }
97
- def each(&blk); end
98
- end