rails_type_id 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 (124) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +25 -0
  3. data/.ruby-version +1 -0
  4. data/README.md +46 -0
  5. data/Rakefile +16 -0
  6. data/lib/rails_type_id/concern.rb +129 -0
  7. data/lib/rails_type_id/require.rb +6 -0
  8. data/lib/rails_type_id/test_helper.rb +16 -0
  9. data/lib/rails_type_id/version.rb +6 -0
  10. data/lib/rails_type_id.rb +9 -0
  11. data/lib/tapioca/dsl/compilers/rails_type_id_compiler.rb +49 -0
  12. data/sig/rails_type_id.rbs +4 -0
  13. data/sorbet/config +4 -0
  14. data/sorbet/rbi/annotations/.gitattributes +1 -0
  15. data/sorbet/rbi/annotations/actionmailer.rbi +10 -0
  16. data/sorbet/rbi/annotations/actionpack.rbi +430 -0
  17. data/sorbet/rbi/annotations/actionview.rbi +75 -0
  18. data/sorbet/rbi/annotations/activejob.rbi +44 -0
  19. data/sorbet/rbi/annotations/activemodel.rbi +89 -0
  20. data/sorbet/rbi/annotations/activerecord.rbi +98 -0
  21. data/sorbet/rbi/annotations/activesupport.rbi +468 -0
  22. data/sorbet/rbi/annotations/globalid.rbi +30 -0
  23. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  24. data/sorbet/rbi/annotations/railties.rbi +61 -0
  25. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  26. data/sorbet/rbi/dsl/.gitattributes +1 -0
  27. data/sorbet/rbi/dsl/active_model/validations/callbacks.rbi +21 -0
  28. data/sorbet/rbi/dsl/active_model/validations.rbi +26 -0
  29. data/sorbet/rbi/dsl/active_support/callbacks.rbi +21 -0
  30. data/sorbet/rbi/dsl/rails_type_id/concern.rbi +22 -0
  31. data/sorbet/rbi/gems/.gitattributes +1 -0
  32. data/sorbet/rbi/gems/actioncable@8.0.2.rbi +3133 -0
  33. data/sorbet/rbi/gems/actionmailbox@8.0.2.rbi +991 -0
  34. data/sorbet/rbi/gems/actionmailer@8.0.2.rbi +2775 -0
  35. data/sorbet/rbi/gems/actionpack@8.0.2.rbi +21167 -0
  36. data/sorbet/rbi/gems/actiontext@8.0.2.rbi +1449 -0
  37. data/sorbet/rbi/gems/actionview@8.0.2.rbi +15789 -0
  38. data/sorbet/rbi/gems/activejob@8.0.2.rbi +2864 -0
  39. data/sorbet/rbi/gems/activemodel@8.0.2.rbi +6946 -0
  40. data/sorbet/rbi/gems/activerecord@8.0.2.rbi +42458 -0
  41. data/sorbet/rbi/gems/activestorage@8.0.2.rbi +2156 -0
  42. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +21274 -0
  43. data/sorbet/rbi/gems/ast@2.4.3.rbi +586 -0
  44. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  45. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
  46. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +275 -0
  47. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  48. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +11734 -0
  49. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  50. data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
  51. data/sorbet/rbi/gems/date@3.4.1.rbi +403 -0
  52. data/sorbet/rbi/gems/drb@2.2.3.rbi +1661 -0
  53. data/sorbet/rbi/gems/erb@5.0.2.rbi +878 -0
  54. data/sorbet/rbi/gems/erubi@1.13.1.rbi +157 -0
  55. data/sorbet/rbi/gems/globalid@1.2.1.rbi +742 -0
  56. data/sorbet/rbi/gems/i18n@1.14.7.rbi +2383 -0
  57. data/sorbet/rbi/gems/io-console@0.8.1.rbi +9 -0
  58. data/sorbet/rbi/gems/json@2.12.2.rbi +2287 -0
  59. data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
  60. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +323 -0
  61. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  62. data/sorbet/rbi/gems/loofah@2.24.1.rbi +1105 -0
  63. data/sorbet/rbi/gems/mail@2.8.1.rbi +8890 -0
  64. data/sorbet/rbi/gems/marcel@1.0.4.rbi +239 -0
  65. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +173 -0
  66. data/sorbet/rbi/gems/minitest@5.25.5.rbi +2231 -0
  67. data/sorbet/rbi/gems/net-imap@0.5.9.rbi +10285 -0
  68. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +927 -0
  69. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
  70. data/sorbet/rbi/gems/net-smtp@0.5.1.rbi +1240 -0
  71. data/sorbet/rbi/gems/netrc@0.11.0.rbi +177 -0
  72. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +388 -0
  73. data/sorbet/rbi/gems/nokogiri@1.18.9.rbi +8548 -0
  74. data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
  75. data/sorbet/rbi/gems/parser@3.3.9.0.rbi +5537 -0
  76. data/sorbet/rbi/gems/pp@0.6.2.rbi +368 -0
  77. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +477 -0
  78. data/sorbet/rbi/gems/prism@1.4.0.rbi +41790 -0
  79. data/sorbet/rbi/gems/psych@5.2.6.rbi +2542 -0
  80. data/sorbet/rbi/gems/racc@1.8.1.rbi +168 -0
  81. data/sorbet/rbi/gems/rack-session@2.1.1.rbi +722 -0
  82. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +729 -0
  83. data/sorbet/rbi/gems/rack@3.2.0.rbi +5054 -0
  84. data/sorbet/rbi/gems/rackup@2.2.1.rbi +230 -0
  85. data/sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi +790 -0
  86. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +645 -0
  87. data/sorbet/rbi/gems/rails@8.0.2.rbi +9 -0
  88. data/sorbet/rbi/gems/railties@8.0.2.rbi +4014 -0
  89. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  90. data/sorbet/rbi/gems/rake@13.3.0.rbi +3039 -0
  91. data/sorbet/rbi/gems/rbi@0.3.6.rbi +5162 -0
  92. data/sorbet/rbi/gems/rbs@4.0.0.dev.4.rbi +7895 -0
  93. data/sorbet/rbi/gems/rdoc@6.14.2.rbi +12944 -0
  94. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3833 -0
  95. data/sorbet/rbi/gems/reline@0.6.2.rbi +9 -0
  96. data/sorbet/rbi/gems/require-hooks@0.2.2.rbi +110 -0
  97. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5205 -0
  98. data/sorbet/rbi/gems/rubocop-ast@1.46.0.rbi +7473 -0
  99. data/sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi +2386 -0
  100. data/sorbet/rbi/gems/rubocop@1.79.1.rbi +63674 -0
  101. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  102. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  103. data/sorbet/rbi/gems/spoom@1.7.5.rbi +5832 -0
  104. data/sorbet/rbi/gems/sqlite3@2.7.3.rbi +1989 -0
  105. data/sorbet/rbi/gems/stringio@3.1.7.rbi +9 -0
  106. data/sorbet/rbi/gems/tapioca@0.17.7.rbi +3692 -0
  107. data/sorbet/rbi/gems/thor@1.4.0.rbi +4399 -0
  108. data/sorbet/rbi/gems/timeout@0.4.3.rbi +157 -0
  109. data/sorbet/rbi/gems/typeid@0.2.2.rbi +239 -0
  110. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5919 -0
  111. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +132 -0
  112. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +251 -0
  113. data/sorbet/rbi/gems/uri@1.0.3.rbi +2354 -0
  114. data/sorbet/rbi/gems/useragent@0.16.11.rbi +9 -0
  115. data/sorbet/rbi/gems/uuid7@0.2.0.rbi +60 -0
  116. data/sorbet/rbi/gems/websocket-driver@0.8.0.rbi +1065 -0
  117. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +117 -0
  118. data/sorbet/rbi/gems/with_model@2.2.0.rbi +282 -0
  119. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +430 -0
  120. data/sorbet/rbi/gems/yard@0.9.37.rbi +18512 -0
  121. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1196 -0
  122. data/sorbet/tapioca/config.yml +13 -0
  123. data/sorbet/tapioca/require.rb +13 -0
  124. metadata +208 -0
@@ -0,0 +1,722 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rack-session` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rack-session`.
6
+
7
+
8
+ # source://rack-session//lib/rack/session/constants.rb#7
9
+ module Rack; end
10
+
11
+ # source://rack-session//lib/rack/session/constants.rb#8
12
+ module Rack::Session; end
13
+
14
+ # source://rack-session//lib/rack/session/abstract/id.rb#47
15
+ module Rack::Session::Abstract; end
16
+
17
+ # source://rack-session//lib/rack/session/abstract/id.rb#499
18
+ class Rack::Session::Abstract::ID < ::Rack::Session::Abstract::Persisted
19
+ # All thread safety and session destroy procedures should occur here.
20
+ # Should return a new session id or nil if options[:drop]
21
+ #
22
+ # source://rack-session//lib/rack/session/abstract/id.rb#529
23
+ def delete_session(req, sid, options); end
24
+
25
+ # All thread safety and session retrieval procedures should occur here.
26
+ # Should return [session_id, session].
27
+ # If nil is provided as the session id, generation of a new valid id
28
+ # should occur within.
29
+ #
30
+ # source://rack-session//lib/rack/session/abstract/id.rb#514
31
+ def find_session(req, sid); end
32
+
33
+ # All thread safety and session storage procedures should occur here.
34
+ # Must return the session id if the session was saved successfully, or
35
+ # false if the session could not be saved.
36
+ #
37
+ # source://rack-session//lib/rack/session/abstract/id.rb#522
38
+ def write_session(req, sid, session, options); end
39
+
40
+ class << self
41
+ # @private
42
+ #
43
+ # source://rack-session//lib/rack/session/abstract/id.rb#500
44
+ def inherited(klass); end
45
+ end
46
+ end
47
+
48
+ # ID sets up a basic framework for implementing an id based sessioning
49
+ # service. Cookies sent to the client for maintaining sessions will only
50
+ # contain an id reference. Only #find_session, #write_session and
51
+ # #delete_session are required to be overwritten.
52
+ #
53
+ # All parameters are optional.
54
+ # * :key determines the name of the cookie, by default it is
55
+ # 'rack.session'
56
+ # * :path, :domain, :expire_after, :secure, :httponly, :partitioned and :same_site set
57
+ # the related cookie options as by Rack::Response#set_cookie
58
+ # * :skip will not a set a cookie in the response nor update the session state
59
+ # * :defer will not set a cookie in the response but still update the session
60
+ # state if it is used with a backend
61
+ # * :renew (implementation dependent) will prompt the generation of a new
62
+ # session id, and migration of data to be referenced at the new id. If
63
+ # :defer is set, it will be overridden and the cookie will be set.
64
+ # * :sidbits sets the number of bits in length that a generated session
65
+ # id will be.
66
+ #
67
+ # These options can be set on a per request basis, at the location of
68
+ # <tt>env['rack.session.options']</tt>. Additionally the id of the
69
+ # session can be found within the options hash at the key :id. It is
70
+ # highly not recommended to change its value.
71
+ #
72
+ # Is Rack::Utils::Context compatible.
73
+ #
74
+ # Not included by default; you must require 'rack/session/abstract/id'
75
+ # to use.
76
+ #
77
+ # source://rack-session//lib/rack/session/abstract/id.rb#239
78
+ class Rack::Session::Abstract::Persisted
79
+ # @return [Persisted] a new instance of Persisted
80
+ #
81
+ # source://rack-session//lib/rack/session/abstract/id.rb#257
82
+ def initialize(app, options = T.unsafe(nil)); end
83
+
84
+ # source://rack-session//lib/rack/session/abstract/id.rb#267
85
+ def call(env); end
86
+
87
+ # Acquires the session from the environment and the session id from
88
+ # the session options and passes them to #write_session. If successful
89
+ # and the :defer option is not true, a cookie will be added to the
90
+ # response with the session's id.
91
+ #
92
+ # source://rack-session//lib/rack/session/abstract/id.rb#381
93
+ def commit_session(req, res); end
94
+
95
+ # source://rack-session//lib/rack/session/abstract/id.rb#271
96
+ def context(env, app = T.unsafe(nil)); end
97
+
98
+ # Returns the value of attribute default_options.
99
+ #
100
+ # source://rack-session//lib/rack/session/abstract/id.rb#255
101
+ def default_options; end
102
+
103
+ # Returns the value of attribute key.
104
+ #
105
+ # source://rack-session//lib/rack/session/abstract/id.rb#255
106
+ def key; end
107
+
108
+ # Returns the value of attribute same_site.
109
+ #
110
+ # source://rack-session//lib/rack/session/abstract/id.rb#255
111
+ def same_site; end
112
+
113
+ # Returns the value of attribute sid_secure.
114
+ #
115
+ # source://rack-session//lib/rack/session/abstract/id.rb#255
116
+ def sid_secure; end
117
+
118
+ private
119
+
120
+ # Session should be committed if it was loaded, any of specific options like :renew, :drop
121
+ # or :expire_after was given and the security permissions match. Skips if skip is given.
122
+ #
123
+ # @return [Boolean]
124
+ #
125
+ # source://rack-session//lib/rack/session/abstract/id.rb#350
126
+ def commit_session?(req, session, options); end
127
+
128
+ # source://rack-session//lib/rack/session/abstract/id.rb#416
129
+ def cookie_value(data); end
130
+
131
+ # Returns the current session id from the SessionHash.
132
+ #
133
+ # source://rack-session//lib/rack/session/abstract/id.rb#336
134
+ def current_session_id(req); end
135
+
136
+ # All thread safety and session destroy procedures should occur here.
137
+ # Should return a new session id or nil if options[:drop]
138
+ #
139
+ # source://rack-session//lib/rack/session/abstract/id.rb#455
140
+ def delete_session(req, sid, options); end
141
+
142
+ # Extract session id from request object.
143
+ #
144
+ # source://rack-session//lib/rack/session/abstract/id.rb#328
145
+ def extract_session_id(request); end
146
+
147
+ # All thread safety and session retrieval procedures should occur here.
148
+ # Should return [session_id, session].
149
+ # If nil is provided as the session id, generation of a new valid id
150
+ # should occur within.
151
+ #
152
+ # source://rack-session//lib/rack/session/abstract/id.rb#440
153
+ def find_session(env, sid); end
154
+
155
+ # @return [Boolean]
156
+ #
157
+ # source://rack-session//lib/rack/session/abstract/id.rb#367
158
+ def force_options?(options); end
159
+
160
+ # @return [Boolean]
161
+ #
162
+ # source://rack-session//lib/rack/session/abstract/id.rb#363
163
+ def forced_session_update?(session, options); end
164
+
165
+ # Generate a new session id using Ruby #rand. The size of the
166
+ # session id is controlled by the :sidbits option.
167
+ # Monkey patch this to use custom methods for session id generation.
168
+ #
169
+ # source://rack-session//lib/rack/session/abstract/id.rb#296
170
+ def generate_sid(secure = T.unsafe(nil)); end
171
+
172
+ # source://rack-session//lib/rack/session/abstract/id.rb#286
173
+ def initialize_sid; end
174
+
175
+ # Extracts the session id from provided cookies and passes it and the
176
+ # environment to #find_session.
177
+ #
178
+ # source://rack-session//lib/rack/session/abstract/id.rb#320
179
+ def load_session(req); end
180
+
181
+ # @return [Boolean]
182
+ #
183
+ # source://rack-session//lib/rack/session/abstract/id.rb#359
184
+ def loaded_session?(session); end
185
+
186
+ # source://rack-session//lib/rack/session/abstract/id.rb#282
187
+ def make_request(env); end
188
+
189
+ # Sets the lazy session at 'rack.session' and places options and session
190
+ # metadata into 'rack.session.options'.
191
+ #
192
+ # source://rack-session//lib/rack/session/abstract/id.rb#309
193
+ def prepare_session(req); end
194
+
195
+ # @return [Boolean]
196
+ #
197
+ # source://rack-session//lib/rack/session/abstract/id.rb#371
198
+ def security_matches?(request, options); end
199
+
200
+ # Allow subclasses to prepare_session for different Session classes
201
+ #
202
+ # source://rack-session//lib/rack/session/abstract/id.rb#431
203
+ def session_class; end
204
+
205
+ # Check if the session exists or not.
206
+ #
207
+ # @return [Boolean]
208
+ #
209
+ # source://rack-session//lib/rack/session/abstract/id.rb#342
210
+ def session_exists?(req); end
211
+
212
+ # Sets the cookie back to the client with session id. We skip the cookie
213
+ # setting if the value didn't change (sid is the same) or expires was given.
214
+ #
215
+ # source://rack-session//lib/rack/session/abstract/id.rb#423
216
+ def set_cookie(request, response, cookie); end
217
+
218
+ # All thread safety and session storage procedures should occur here.
219
+ # Must return the session id if the session was saved successfully, or
220
+ # false if the session could not be saved.
221
+ #
222
+ # source://rack-session//lib/rack/session/abstract/id.rb#448
223
+ def write_session(req, sid, session, options); end
224
+ end
225
+
226
+ # source://rack-session//lib/rack/session/abstract/id.rb#240
227
+ Rack::Session::Abstract::Persisted::DEFAULT_OPTIONS = T.let(T.unsafe(nil), Hash)
228
+
229
+ # source://rack-session//lib/rack/session/abstract/id.rb#460
230
+ class Rack::Session::Abstract::PersistedSecure < ::Rack::Session::Abstract::Persisted
231
+ # source://rack-session//lib/rack/session/abstract/id.rb#483
232
+ def extract_session_id(*_arg0); end
233
+
234
+ # source://rack-session//lib/rack/session/abstract/id.rb#477
235
+ def generate_sid(*_arg0); end
236
+
237
+ private
238
+
239
+ # source://rack-session//lib/rack/session/abstract/id.rb#494
240
+ def cookie_value(data); end
241
+
242
+ # source://rack-session//lib/rack/session/abstract/id.rb#490
243
+ def session_class; end
244
+ end
245
+
246
+ # source://rack-session//lib/rack/session/abstract/id.rb#461
247
+ class Rack::Session::Abstract::PersistedSecure::SecureSessionHash < ::Rack::Session::Abstract::SessionHash
248
+ # source://rack-session//lib/rack/session/abstract/id.rb#462
249
+ def [](key); end
250
+ end
251
+
252
+ # SessionHash is responsible to lazily load the session from store.
253
+ #
254
+ # source://rack-session//lib/rack/session/abstract/id.rb#50
255
+ class Rack::Session::Abstract::SessionHash
256
+ include ::Enumerable
257
+
258
+ # @return [SessionHash] a new instance of SessionHash
259
+ #
260
+ # source://rack-session//lib/rack/session/abstract/id.rb#68
261
+ def initialize(store, req); end
262
+
263
+ # source://rack-session//lib/rack/session/abstract/id.rb#88
264
+ def [](key); end
265
+
266
+ # source://rack-session//lib/rack/session/abstract/id.rb#114
267
+ def []=(key, value); end
268
+
269
+ # source://rack-session//lib/rack/session/abstract/id.rb#120
270
+ def clear; end
271
+
272
+ # source://rack-session//lib/rack/session/abstract/id.rb#146
273
+ def delete(key); end
274
+
275
+ # source://rack-session//lib/rack/session/abstract/id.rb#125
276
+ def destroy; end
277
+
278
+ # source://rack-session//lib/rack/session/abstract/id.rb#93
279
+ def dig(key, *keys); end
280
+
281
+ # source://rack-session//lib/rack/session/abstract/id.rb#83
282
+ def each(&block); end
283
+
284
+ # @return [Boolean]
285
+ #
286
+ # source://rack-session//lib/rack/session/abstract/id.rb#169
287
+ def empty?; end
288
+
289
+ # @return [Boolean]
290
+ #
291
+ # source://rack-session//lib/rack/session/abstract/id.rb#159
292
+ def exists?; end
293
+
294
+ # source://rack-session//lib/rack/session/abstract/id.rb#98
295
+ def fetch(key, default = T.unsafe(nil), &block); end
296
+
297
+ # @return [Boolean]
298
+ #
299
+ # source://rack-session//lib/rack/session/abstract/id.rb#107
300
+ def has_key?(key); end
301
+
302
+ # source://rack-session//lib/rack/session/abstract/id.rb#74
303
+ def id; end
304
+
305
+ # Sets the attribute id
306
+ #
307
+ # @param value the value to set the attribute id to.
308
+ #
309
+ # source://rack-session//lib/rack/session/abstract/id.rb#52
310
+ def id=(_arg0); end
311
+
312
+ # @return [Boolean]
313
+ #
314
+ # source://rack-session//lib/rack/session/abstract/id.rb#112
315
+ def include?(key); end
316
+
317
+ # source://rack-session//lib/rack/session/abstract/id.rb#151
318
+ def inspect; end
319
+
320
+ # @return [Boolean]
321
+ #
322
+ # source://rack-session//lib/rack/session/abstract/id.rb#111
323
+ def key?(key); end
324
+
325
+ # source://rack-session//lib/rack/session/abstract/id.rb#174
326
+ def keys; end
327
+
328
+ # @return [Boolean]
329
+ #
330
+ # source://rack-session//lib/rack/session/abstract/id.rb#165
331
+ def loaded?; end
332
+
333
+ # source://rack-session//lib/rack/session/abstract/id.rb#139
334
+ def merge!(hash); end
335
+
336
+ # source://rack-session//lib/rack/session/abstract/id.rb#79
337
+ def options; end
338
+
339
+ # source://rack-session//lib/rack/session/abstract/id.rb#141
340
+ def replace(hash); end
341
+
342
+ # source://rack-session//lib/rack/session/abstract/id.rb#118
343
+ def store(key, value); end
344
+
345
+ # source://rack-session//lib/rack/session/abstract/id.rb#130
346
+ def to_hash; end
347
+
348
+ # source://rack-session//lib/rack/session/abstract/id.rb#135
349
+ def update(hash); end
350
+
351
+ # source://rack-session//lib/rack/session/abstract/id.rb#179
352
+ def values; end
353
+
354
+ private
355
+
356
+ # source://rack-session//lib/rack/session/abstract/id.rb#194
357
+ def load!; end
358
+
359
+ # source://rack-session//lib/rack/session/abstract/id.rb#186
360
+ def load_for_read!; end
361
+
362
+ # source://rack-session//lib/rack/session/abstract/id.rb#190
363
+ def load_for_write!; end
364
+
365
+ # source://rack-session//lib/rack/session/abstract/id.rb#200
366
+ def stringify_keys(other); end
367
+
368
+ class << self
369
+ # source://rack-session//lib/rack/session/abstract/id.rb#56
370
+ def find(req); end
371
+
372
+ # source://rack-session//lib/rack/session/abstract/id.rb#60
373
+ def set(req, session); end
374
+
375
+ # source://rack-session//lib/rack/session/abstract/id.rb#64
376
+ def set_options(req, options); end
377
+ end
378
+ end
379
+
380
+ # source://rack-session//lib/rack/session/abstract/id.rb#54
381
+ Rack::Session::Abstract::SessionHash::Unspecified = T.let(T.unsafe(nil), Object)
382
+
383
+ # Rack::Session::Cookie provides simple cookie based session management.
384
+ # By default, the session is a Ruby Hash that is serialized and encoded as
385
+ # a cookie set to :key (default: rack.session).
386
+ #
387
+ # This middleware accepts a :secrets option which enables encryption of
388
+ # session cookies. This option should be one or more random "secret keys"
389
+ # that are each at least 64 bytes in length. Multiple secret keys can be
390
+ # supplied in an Array, which is useful when rotating secrets.
391
+ #
392
+ # Several options are also accepted that are passed to Rack::Session::Encryptor.
393
+ # These options include:
394
+ # * :serialize_json
395
+ # Use JSON for message serialization instead of Marshal. This can be
396
+ # viewed as a security enhancement.
397
+ # * :gzip_over
398
+ # For message data over this many bytes, compress it with the deflate
399
+ # algorithm.
400
+ #
401
+ # Refer to Rack::Session::Encryptor for more details on these options.
402
+ #
403
+ # Prior to version TODO, the session hash was stored as base64 encoded
404
+ # marshalled data. When a :secret option was supplied, the integrity of the
405
+ # encoded data was protected with HMAC-SHA1. This functionality is still
406
+ # supported using a set of a legacy options.
407
+ #
408
+ # Lastly, a :coder option is also accepted. When used, both encryption and
409
+ # the legacy HMAC will be skipped. This option could create security issues
410
+ # in your application!
411
+ #
412
+ # Example:
413
+ #
414
+ # use Rack::Session::Cookie, {
415
+ # key: 'rack.session',
416
+ # domain: 'foo.com',
417
+ # path: '/',
418
+ # expire_after: 2592000,
419
+ # secrets: 'a randomly generated, raw binary string 64 bytes in size',
420
+ # }
421
+ #
422
+ # Example using legacy HMAC options:
423
+ #
424
+ # Rack::Session:Cookie.new(application, {
425
+ # # The secret used for legacy HMAC cookies, this enables the functionality
426
+ # legacy_hmac_secret: 'legacy secret',
427
+ # # legacy_hmac_coder will default to Rack::Session::Cookie::Base64::Marshal
428
+ # legacy_hmac_coder: Rack::Session::Cookie::Identity.new,
429
+ # # legacy_hmac will default to OpenSSL::Digest::SHA1
430
+ # legacy_hmac: OpenSSL::Digest::SHA256
431
+ # })
432
+ #
433
+ #
434
+ # Rack::Session::Cookie.new(application, {
435
+ # :coder => Rack::Session::Cookie::Identity.new
436
+ # })
437
+ #
438
+ #
439
+ # Rack::Session::Cookie.new(application, {
440
+ # :coder => Class.new {
441
+ # def encode(str); str.reverse; end
442
+ # def decode(str); str.reverse; end
443
+ # }.new
444
+ # })
445
+ #
446
+ # source://rack-session//lib/rack/session/cookie.rb#91
447
+ class Rack::Session::Cookie < ::Rack::Session::Abstract::PersistedSecure
448
+ # @return [Cookie] a new instance of Cookie
449
+ #
450
+ # source://rack-session//lib/rack/session/cookie.rb#159
451
+ def initialize(app, options = T.unsafe(nil)); end
452
+
453
+ # Returns the value of attribute coder.
454
+ #
455
+ # source://rack-session//lib/rack/session/cookie.rb#157
456
+ def coder; end
457
+
458
+ # Returns the value of attribute encryptors.
459
+ #
460
+ # source://rack-session//lib/rack/session/cookie.rb#157
461
+ def encryptors; end
462
+
463
+ private
464
+
465
+ # source://rack-session//lib/rack/session/cookie.rb#277
466
+ def delete_session(req, session_id, options); end
467
+
468
+ # source://rack-session//lib/rack/session/cookie.rb#292
469
+ def encode_session_data(session); end
470
+
471
+ # source://rack-session//lib/rack/session/cookie.rb#209
472
+ def extract_session_id(request); end
473
+
474
+ # source://rack-session//lib/rack/session/cookie.rb#203
475
+ def find_session(req, sid); end
476
+
477
+ # @return [Boolean]
478
+ #
479
+ # source://rack-session//lib/rack/session/cookie.rb#282
480
+ def legacy_digest_match?(data, digest); end
481
+
482
+ # source://rack-session//lib/rack/session/cookie.rb#288
483
+ def legacy_generate_hmac(data); end
484
+
485
+ # source://rack-session//lib/rack/session/cookie.rb#250
486
+ def persistent_session_id!(data, sid = T.unsafe(nil)); end
487
+
488
+ # Were consider "secure" if:
489
+ # * Encrypted cookies are enabled and one or more encryptor is
490
+ # initialized
491
+ # * The legacy HMAC option is enabled
492
+ # * Customer :coder is used, with :let_coder_handle_secure_encoding
493
+ # set to true
494
+ #
495
+ # @return [Boolean]
496
+ #
497
+ # source://rack-session//lib/rack/session/cookie.rb#306
498
+ def secure?(options); end
499
+
500
+ # source://rack-session//lib/rack/session/cookie.rb#213
501
+ def unpacked_cookie_data(request); end
502
+
503
+ # source://rack-session//lib/rack/session/cookie.rb#265
504
+ def write_session(req, session_id, session, options); end
505
+ end
506
+
507
+ # Encode session cookies as Base64
508
+ #
509
+ # source://rack-session//lib/rack/session/cookie.rb#93
510
+ class Rack::Session::Cookie::Base64
511
+ # source://rack-session//lib/rack/session/cookie.rb#98
512
+ def decode(str); end
513
+
514
+ # source://rack-session//lib/rack/session/cookie.rb#94
515
+ def encode(str); end
516
+ end
517
+
518
+ # N.B. Unlike other encoding methods, the contained objects must be a
519
+ # valid JSON composite type, either a Hash or an Array.
520
+ #
521
+ # source://rack-session//lib/rack/session/cookie.rb#116
522
+ class Rack::Session::Cookie::Base64::JSON < ::Rack::Session::Cookie::Base64
523
+ # source://rack-session//lib/rack/session/cookie.rb#121
524
+ def decode(str); end
525
+
526
+ # source://rack-session//lib/rack/session/cookie.rb#117
527
+ def encode(obj); end
528
+ end
529
+
530
+ # Encode session cookies as Marshaled Base64 data
531
+ #
532
+ # source://rack-session//lib/rack/session/cookie.rb#103
533
+ class Rack::Session::Cookie::Base64::Marshal < ::Rack::Session::Cookie::Base64
534
+ # source://rack-session//lib/rack/session/cookie.rb#108
535
+ def decode(str); end
536
+
537
+ # source://rack-session//lib/rack/session/cookie.rb#104
538
+ def encode(str); end
539
+ end
540
+
541
+ # source://rack-session//lib/rack/session/cookie.rb#127
542
+ class Rack::Session::Cookie::Base64::ZipJSON < ::Rack::Session::Cookie::Base64
543
+ # source://rack-session//lib/rack/session/cookie.rb#132
544
+ def decode(str); end
545
+
546
+ # source://rack-session//lib/rack/session/cookie.rb#128
547
+ def encode(obj); end
548
+ end
549
+
550
+ # Use no encoding for session cookies
551
+ #
552
+ # source://rack-session//lib/rack/session/cookie.rb#142
553
+ class Rack::Session::Cookie::Identity
554
+ # source://rack-session//lib/rack/session/cookie.rb#144
555
+ def decode(str); end
556
+
557
+ # source://rack-session//lib/rack/session/cookie.rb#143
558
+ def encode(str); end
559
+ end
560
+
561
+ # source://rack-session//lib/rack/session/cookie.rb#147
562
+ class Rack::Session::Cookie::Marshal
563
+ # source://rack-session//lib/rack/session/cookie.rb#152
564
+ def decode(str); end
565
+
566
+ # source://rack-session//lib/rack/session/cookie.rb#148
567
+ def encode(str); end
568
+ end
569
+
570
+ # source://rack-session//lib/rack/session/cookie.rb#256
571
+ class Rack::Session::Cookie::SessionId
572
+ # @return [SessionId] a new instance of SessionId
573
+ #
574
+ # source://rack-session//lib/rack/session/cookie.rb#259
575
+ def initialize(session_id, cookie_value); end
576
+
577
+ # Returns the value of attribute cookie_value.
578
+ #
579
+ # source://rack-session//lib/rack/session/cookie.rb#257
580
+ def cookie_value; end
581
+ end
582
+
583
+ # source://rack-session//lib/rack/session/encryptor.rb#16
584
+ class Rack::Session::Encryptor
585
+ # The secret String must be at least 64 bytes in size. The first 32 bytes
586
+ # will be used for the encryption cipher key. The remainder will be used
587
+ # for an HMAC key.
588
+ #
589
+ # Options may include:
590
+ # * :serialize_json
591
+ # Use JSON for message serialization instead of Marshal. This can be
592
+ # viewed as a security enhancement.
593
+ # * :pad_size
594
+ # Pad encrypted message data, to a multiple of this many bytes
595
+ # (default: 32). This can be between 2-4096 bytes, or +nil+ to disable
596
+ # padding.
597
+ # * :purpose
598
+ # Limit messages to a specific purpose. This can be viewed as a
599
+ # security enhancement to prevent message reuse from different contexts
600
+ # if keys are reused.
601
+ #
602
+ # Cryptography and Output Format:
603
+ #
604
+ # urlsafe_encode64(version + random_data + IV + encrypted data + HMAC)
605
+ #
606
+ # Where:
607
+ # * version - 1 byte and is currently always 0x01
608
+ # * random_data - 32 bytes used for generating the per-message secret
609
+ # * IV - 16 bytes random initialization vector
610
+ # * HMAC - 32 bytes HMAC-SHA-256 of all preceding data, plus the purpose
611
+ # value
612
+ #
613
+ # @raise [ArgumentError]
614
+ # @return [Encryptor] a new instance of Encryptor
615
+ #
616
+ # source://rack-session//lib/rack/session/encryptor.rb#53
617
+ def initialize(secret, opts = T.unsafe(nil)); end
618
+
619
+ # source://rack-session//lib/rack/session/encryptor.rb#77
620
+ def decrypt(base64_data); end
621
+
622
+ # source://rack-session//lib/rack/session/encryptor.rb#102
623
+ def encrypt(message); end
624
+
625
+ private
626
+
627
+ # source://rack-session//lib/rack/session/encryptor.rb#139
628
+ def cipher_secret_from_message_secret(message_secret); end
629
+
630
+ # source://rack-session//lib/rack/session/encryptor.rb#151
631
+ def compute_signature(data); end
632
+
633
+ # Return the deserialized message. The first 2 bytes will be read as the
634
+ # amount of padding.
635
+ #
636
+ # source://rack-session//lib/rack/session/encryptor.rb#182
637
+ def deserialized_message(data); end
638
+
639
+ # source://rack-session//lib/rack/session/encryptor.rb#129
640
+ def new_cipher; end
641
+
642
+ # source://rack-session//lib/rack/session/encryptor.rb#133
643
+ def new_message_and_cipher_secret; end
644
+
645
+ # Returns a serialized payload of the message. If a :pad_size is supplied,
646
+ # the message will be padded. The first 2 bytes of the returned string will
647
+ # indicating the amount of padding.
648
+ #
649
+ # source://rack-session//lib/rack/session/encryptor.rb#169
650
+ def serialize_payload(message); end
651
+
652
+ # source://rack-session//lib/rack/session/encryptor.rb#147
653
+ def serializer; end
654
+
655
+ # source://rack-session//lib/rack/session/encryptor.rb#143
656
+ def set_cipher_key(cipher, key); end
657
+
658
+ # @raise [InvalidMessage]
659
+ #
660
+ # source://rack-session//lib/rack/session/encryptor.rb#158
661
+ def verify_authenticity!(data, signature); end
662
+ end
663
+
664
+ # source://rack-session//lib/rack/session/encryptor.rb#17
665
+ class Rack::Session::Encryptor::Error < ::StandardError; end
666
+
667
+ # source://rack-session//lib/rack/session/encryptor.rb#23
668
+ class Rack::Session::Encryptor::InvalidMessage < ::Rack::Session::Encryptor::Error; end
669
+
670
+ # source://rack-session//lib/rack/session/encryptor.rb#20
671
+ class Rack::Session::Encryptor::InvalidSignature < ::Rack::Session::Encryptor::Error; end
672
+
673
+ # source://rack-session//lib/rack/session/constants.rb#9
674
+ Rack::Session::RACK_SESSION = T.let(T.unsafe(nil), String)
675
+
676
+ # source://rack-session//lib/rack/session/constants.rb#10
677
+ Rack::Session::RACK_SESSION_OPTIONS = T.let(T.unsafe(nil), String)
678
+
679
+ # source://rack-session//lib/rack/session/constants.rb#11
680
+ Rack::Session::RACK_SESSION_UNPACKED_COOKIE_DATA = T.let(T.unsafe(nil), String)
681
+
682
+ # source://rack-session//lib/rack/session/abstract/id.rb#21
683
+ class Rack::Session::SessionId
684
+ # @return [SessionId] a new instance of SessionId
685
+ #
686
+ # source://rack-session//lib/rack/session/abstract/id.rb#26
687
+ def initialize(public_id); end
688
+
689
+ # Returns the value of attribute public_id.
690
+ #
691
+ # source://rack-session//lib/rack/session/abstract/id.rb#34
692
+ def cookie_value; end
693
+
694
+ # @return [Boolean]
695
+ #
696
+ # source://rack-session//lib/rack/session/abstract/id.rb#37
697
+ def empty?; end
698
+
699
+ # source://rack-session//lib/rack/session/abstract/id.rb#38
700
+ def inspect; end
701
+
702
+ # source://rack-session//lib/rack/session/abstract/id.rb#30
703
+ def private_id; end
704
+
705
+ # Returns the value of attribute public_id.
706
+ #
707
+ # source://rack-session//lib/rack/session/abstract/id.rb#24
708
+ def public_id; end
709
+
710
+ # Returns the value of attribute public_id.
711
+ #
712
+ # source://rack-session//lib/rack/session/abstract/id.rb#35
713
+ def to_s; end
714
+
715
+ private
716
+
717
+ # source://rack-session//lib/rack/session/abstract/id.rb#42
718
+ def hash_sid(sid); end
719
+ end
720
+
721
+ # source://rack-session//lib/rack/session/abstract/id.rb#22
722
+ Rack::Session::SessionId::ID_VERSION = T.let(T.unsafe(nil), Integer)