supabase-rb 3.1.1 → 3.2.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/supabase/auth/README.md +10 -4
  3. data/lib/supabase/auth/admin_api.rb +4 -0
  4. data/lib/supabase/auth/admin_mfa_api.rb +30 -0
  5. data/lib/supabase/auth/async/admin_api.rb +4 -1
  6. data/lib/supabase/auth/async/admin_mfa_api.rb +15 -0
  7. data/lib/supabase/auth/async/client.rb +2 -4
  8. data/lib/supabase/auth/async.rb +1 -0
  9. data/lib/supabase/auth/client.rb +71 -31
  10. data/lib/supabase/auth/helpers.rb +4 -0
  11. data/lib/supabase/auth/types.rb +14 -5
  12. data/lib/supabase/auth.rb +1 -0
  13. data/lib/supabase/client.rb +103 -22
  14. data/lib/supabase/client_options.rb +1 -1
  15. data/lib/supabase/functions/README.md +99 -12
  16. data/lib/supabase/functions/client.rb +72 -31
  17. data/lib/supabase/functions/types.rb +24 -3
  18. data/lib/supabase/postgrest/async/client.rb +2 -0
  19. data/lib/supabase/postgrest/client.rb +9 -2
  20. data/lib/supabase/postgrest/errors.rb +18 -6
  21. data/lib/supabase/postgrest/request_builder.rb +5 -11
  22. data/lib/supabase/realtime/README.md +111 -0
  23. data/lib/supabase/realtime/callback_safety.rb +41 -0
  24. data/lib/supabase/realtime/channel.rb +89 -23
  25. data/lib/supabase/realtime/client.rb +130 -44
  26. data/lib/supabase/realtime/errors.rb +0 -13
  27. data/lib/supabase/realtime/message.rb +13 -3
  28. data/lib/supabase/realtime/presence.rb +84 -32
  29. data/lib/supabase/realtime/push.rb +11 -2
  30. data/lib/supabase/realtime/timer.rb +72 -0
  31. data/lib/supabase/realtime.rb +2 -1
  32. data/lib/supabase/storage/README.md +117 -0
  33. data/lib/supabase/storage/async/client.rb +7 -4
  34. data/lib/supabase/storage/client.rb +16 -4
  35. data/lib/supabase/storage/file_api.rb +36 -9
  36. data/lib/supabase/storage/request.rb +3 -1
  37. data/lib/supabase/storage/utils.rb +15 -1
  38. data/lib/supabase/version.rb +1 -1
  39. data/lib/supabase.rb +0 -7
  40. metadata +33 -16
  41. data/lib/supabase/realtime/test_socket.rb +0 -65
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supabase-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Supabase
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: faraday-follow_redirects
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.3'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.3'
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: faraday-multipart
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -51,6 +65,20 @@ dependencies:
51
65
  - - "~>"
52
66
  - !ruby/object:Gem::Version
53
67
  version: '2.8'
68
+ - !ruby/object:Gem::Dependency
69
+ name: websocket-client-simple
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.9'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.9'
54
82
  - !ruby/object:Gem::Dependency
55
83
  name: rspec
56
84
  requirement: !ruby/object:Gem::Requirement
@@ -135,20 +163,6 @@ dependencies:
135
163
  - - "~>"
136
164
  - !ruby/object:Gem::Version
137
165
  version: '0.20'
138
- - !ruby/object:Gem::Dependency
139
- name: websocket-client-simple
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '0.9'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '0.9'
152
166
  - !ruby/object:Gem::Dependency
153
167
  name: async-websocket
154
168
  requirement: !ruby/object:Gem::Requirement
@@ -178,10 +192,12 @@ files:
178
192
  - lib/supabase/auth.rb
179
193
  - lib/supabase/auth/README.md
180
194
  - lib/supabase/auth/admin_api.rb
195
+ - lib/supabase/auth/admin_mfa_api.rb
181
196
  - lib/supabase/auth/admin_oauth_api.rb
182
197
  - lib/supabase/auth/api.rb
183
198
  - lib/supabase/auth/async.rb
184
199
  - lib/supabase/auth/async/admin_api.rb
200
+ - lib/supabase/auth/async/admin_mfa_api.rb
185
201
  - lib/supabase/auth/async/admin_oauth_api.rb
186
202
  - lib/supabase/auth/async/api.rb
187
203
  - lib/supabase/auth/async/client.rb
@@ -216,6 +232,7 @@ files:
216
232
  - lib/supabase/postgrest/version.rb
217
233
  - lib/supabase/realtime.rb
218
234
  - lib/supabase/realtime/README.md
235
+ - lib/supabase/realtime/callback_safety.rb
219
236
  - lib/supabase/realtime/channel.rb
220
237
  - lib/supabase/realtime/client.rb
221
238
  - lib/supabase/realtime/errors.rb
@@ -225,7 +242,7 @@ files:
225
242
  - lib/supabase/realtime/socket.rb
226
243
  - lib/supabase/realtime/sockets/async_websocket.rb
227
244
  - lib/supabase/realtime/sockets/websocket_client_simple.rb
228
- - lib/supabase/realtime/test_socket.rb
245
+ - lib/supabase/realtime/timer.rb
229
246
  - lib/supabase/realtime/transformers.rb
230
247
  - lib/supabase/realtime/types.rb
231
248
  - lib/supabase/realtime/version.rb
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "socket"
4
-
5
- module Supabase
6
- module Realtime
7
- # In-memory {Socket} implementation for specs and local prototyping. Captures
8
- # every frame the client sends in `sent_frames`, and exposes `inject(frame)`
9
- # so a test can simulate a server response.
10
- #
11
- # Not intended for production use — bring a real WebSocket adapter for that.
12
- class TestSocket
13
- include Socket
14
-
15
- attr_reader :sent_frames
16
-
17
- def initialize
18
- @connected = false
19
- @sent_frames = []
20
- end
21
-
22
- def connect
23
- @connected = true
24
- open_callbacks.each(&:call)
25
- end
26
-
27
- def close
28
- @connected = false
29
- close_callbacks.each(&:call)
30
- end
31
-
32
- def send(payload)
33
- @sent_frames << payload
34
- end
35
-
36
- def connected?
37
- @connected
38
- end
39
-
40
- # ----- Test helpers -----
41
-
42
- # Push a JSON frame as if it came from the server. Accepts a JSON String
43
- # or a Hash (which gets JSON-encoded for you).
44
- def inject(frame)
45
- raw = frame.is_a?(String) ? frame : JSON.generate(frame)
46
- message_callbacks.each { |cb| cb.call(raw) }
47
- end
48
-
49
- # Convenience: the last frame the client pushed, parsed back to a Hash.
50
- def last_sent_frame
51
- return nil if @sent_frames.empty?
52
-
53
- JSON.parse(@sent_frames.last)
54
- end
55
-
56
- def sent_events
57
- @sent_frames.map { |f| JSON.parse(f)["event"] }
58
- end
59
-
60
- def reset_sent_frames
61
- @sent_frames = []
62
- end
63
- end
64
- end
65
- end