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