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,645 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rails-html-sanitizer` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rails-html-sanitizer`.
6
+
7
+
8
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#14
9
+ module ActionView; end
10
+
11
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#15
12
+ module ActionView::Helpers
13
+ include ::ActionView::Helpers::SanitizeHelper
14
+ include ::ActionView::Helpers::TextHelper
15
+ include ::ActionView::Helpers::UrlHelper
16
+ include ::ActionView::Helpers::SanitizeHelper
17
+ include ::ActionView::Helpers::TextHelper
18
+ include ::ActionView::Helpers::FormTagHelper
19
+ include ::ActionView::Helpers::FormHelper
20
+ include ::ActionView::Helpers::TranslationHelper
21
+
22
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
23
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
24
+ end
25
+
26
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#16
27
+ module ActionView::Helpers::SanitizeHelper
28
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
29
+ end
30
+
31
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#17
32
+ module ActionView::Helpers::SanitizeHelper::ClassMethods
33
+ # Replaces the allowed HTML attributes for the +sanitize+ helper.
34
+ #
35
+ # class Application < Rails::Application
36
+ # config.action_view.sanitized_allowed_attributes = ['onclick', 'longdesc']
37
+ # end
38
+ #
39
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#34
40
+ def sanitized_allowed_attributes=(attributes); end
41
+
42
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
43
+ def sanitized_allowed_css_keywords; end
44
+
45
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
46
+ def sanitized_allowed_css_keywords=(_); end
47
+
48
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
49
+ def sanitized_allowed_css_properties; end
50
+
51
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
52
+ def sanitized_allowed_css_properties=(_); end
53
+
54
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
55
+ def sanitized_allowed_protocols; end
56
+
57
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
58
+ def sanitized_allowed_protocols=(_); end
59
+
60
+ # Replaces the allowed tags for the +sanitize+ helper.
61
+ #
62
+ # class Application < Rails::Application
63
+ # config.action_view.sanitized_allowed_tags = 'table', 'tr', 'td'
64
+ # end
65
+ #
66
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#24
67
+ def sanitized_allowed_tags=(tags); end
68
+
69
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
70
+ def sanitized_bad_tags; end
71
+
72
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
73
+ def sanitized_bad_tags=(_); end
74
+
75
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
76
+ def sanitized_protocol_separator; end
77
+
78
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
79
+ def sanitized_protocol_separator=(_); end
80
+
81
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
82
+ def sanitized_shorthand_css_properties; end
83
+
84
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
85
+ def sanitized_shorthand_css_properties=(_); end
86
+
87
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
88
+ def sanitized_uri_attributes; end
89
+
90
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
91
+ def sanitized_uri_attributes=(_); end
92
+
93
+ private
94
+
95
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#52
96
+ def deprecate_option(name); end
97
+ end
98
+
99
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#3
100
+ module Rails; end
101
+
102
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#4
103
+ module Rails::HTML; end
104
+
105
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#194
106
+ module Rails::HTML4; end
107
+
108
+ # == Rails::HTML4::FullSanitizer
109
+ #
110
+ # Removes all tags from HTML4 but strips out scripts, forms and comments.
111
+ #
112
+ # full_sanitizer = Rails::HTML4::FullSanitizer.new
113
+ # full_sanitizer.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
114
+ # # => "Bold no more! See more here..."
115
+ #
116
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#225
117
+ class Rails::HTML4::FullSanitizer < ::Rails::HTML::Sanitizer
118
+ include ::Rails::HTML::Concern::ComposedSanitize
119
+ include ::Rails::HTML::Concern::Parser::HTML4
120
+ include ::Rails::HTML::Concern::Scrubber::Full
121
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
122
+ end
123
+
124
+ # == Rails::HTML4::LinkSanitizer
125
+ #
126
+ # Removes +a+ tags and +href+ attributes from HTML4 leaving only the link text.
127
+ #
128
+ # link_sanitizer = Rails::HTML4::LinkSanitizer.new
129
+ # link_sanitizer.sanitize('<a href="example.com">Only the link text will be kept.</a>')
130
+ # # => "Only the link text will be kept."
131
+ #
132
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#240
133
+ class Rails::HTML4::LinkSanitizer < ::Rails::HTML::Sanitizer
134
+ include ::Rails::HTML::Concern::ComposedSanitize
135
+ include ::Rails::HTML::Concern::Parser::HTML4
136
+ include ::Rails::HTML::Concern::Scrubber::Link
137
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
138
+ end
139
+
140
+ # == Rails::HTML4::SafeListSanitizer
141
+ #
142
+ # Sanitizes HTML4 and CSS from an extensive safe list.
143
+ #
144
+ # === Whitespace
145
+ #
146
+ # We can't make any guarantees about whitespace being kept or stripped. Loofah uses Nokogiri,
147
+ # which wraps either a C or Java parser for the respective Ruby implementation. Those two
148
+ # parsers determine how whitespace is ultimately handled.
149
+ #
150
+ # When the stripped markup will be rendered the users browser won't take whitespace into account
151
+ # anyway. It might be better to suggest your users wrap their whitespace sensitive content in
152
+ # pre tags or that you do so automatically.
153
+ #
154
+ # === Options
155
+ #
156
+ # Sanitizes both html and css via the safe lists found in
157
+ # Rails::HTML::Concern::Scrubber::SafeList
158
+ #
159
+ # SafeListSanitizer also accepts options to configure the safe list used when sanitizing html.
160
+ # There's a class level option:
161
+ #
162
+ # Rails::HTML4::SafeListSanitizer.allowed_tags = %w(table tr td)
163
+ # Rails::HTML4::SafeListSanitizer.allowed_attributes = %w(id class style)
164
+ #
165
+ # Tags and attributes can also be passed to +sanitize+. Passed options take precedence over the
166
+ # class level options.
167
+ #
168
+ # === Examples
169
+ #
170
+ # safe_list_sanitizer = Rails::HTML4::SafeListSanitizer.new
171
+ #
172
+ # # default: sanitize via a extensive safe list of allowed elements
173
+ # safe_list_sanitizer.sanitize(@article.body)
174
+ #
175
+ # # sanitize via the supplied tags and attributes
176
+ # safe_list_sanitizer.sanitize(
177
+ # @article.body,
178
+ # tags: %w(table tr td),
179
+ # attributes: %w(id class style),
180
+ # )
181
+ #
182
+ # # sanitize via a custom Loofah scrubber
183
+ # safe_list_sanitizer.sanitize(@article.body, scrubber: ArticleScrubber.new)
184
+ #
185
+ # # prune nodes from the tree instead of stripping tags and leaving inner content
186
+ # safe_list_sanitizer = Rails::HTML4::SafeListSanitizer.new(prune: true)
187
+ #
188
+ # # the sanitizer can also sanitize CSS
189
+ # safe_list_sanitizer.sanitize_css('background-color: #000;')
190
+ #
191
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#298
192
+ class Rails::HTML4::SafeListSanitizer < ::Rails::HTML::Sanitizer
193
+ include ::Rails::HTML::Concern::ComposedSanitize
194
+ include ::Rails::HTML::Concern::Parser::HTML4
195
+ include ::Rails::HTML::Concern::Scrubber::SafeList
196
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
197
+
198
+ class << self
199
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#145
200
+ def allowed_attributes; end
201
+
202
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#145
203
+ def allowed_attributes=(_arg0); end
204
+
205
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
206
+ def allowed_tags; end
207
+
208
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
209
+ def allowed_tags=(_arg0); end
210
+ end
211
+ end
212
+
213
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#195
214
+ module Rails::HTML4::Sanitizer
215
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
216
+ end
217
+
218
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#196
219
+ module Rails::HTML4::Sanitizer::VendorMethods
220
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#197
221
+ def full_sanitizer; end
222
+
223
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#201
224
+ def link_sanitizer; end
225
+
226
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#205
227
+ def safe_list_sanitizer; end
228
+
229
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#209
230
+ def white_list_sanitizer; end
231
+ end
232
+
233
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#306
234
+ module Rails::HTML5; end
235
+
236
+ # == Rails::HTML5::FullSanitizer
237
+ #
238
+ # Removes all tags from HTML5 but strips out scripts, forms and comments.
239
+ #
240
+ # full_sanitizer = Rails::HTML5::FullSanitizer.new
241
+ # full_sanitizer.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
242
+ # # => "Bold no more! See more here..."
243
+ #
244
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#335
245
+ class Rails::HTML5::FullSanitizer < ::Rails::HTML::Sanitizer
246
+ include ::Rails::HTML::Concern::ComposedSanitize
247
+ include ::Rails::HTML::Concern::Parser::HTML5
248
+ include ::Rails::HTML::Concern::Scrubber::Full
249
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
250
+ end
251
+
252
+ # == Rails::HTML5::LinkSanitizer
253
+ #
254
+ # Removes +a+ tags and +href+ attributes from HTML5 leaving only the link text.
255
+ #
256
+ # link_sanitizer = Rails::HTML5::LinkSanitizer.new
257
+ # link_sanitizer.sanitize('<a href="example.com">Only the link text will be kept.</a>')
258
+ # # => "Only the link text will be kept."
259
+ #
260
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#350
261
+ class Rails::HTML5::LinkSanitizer < ::Rails::HTML::Sanitizer
262
+ include ::Rails::HTML::Concern::ComposedSanitize
263
+ include ::Rails::HTML::Concern::Parser::HTML5
264
+ include ::Rails::HTML::Concern::Scrubber::Link
265
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
266
+ end
267
+
268
+ # == Rails::HTML5::SafeListSanitizer
269
+ #
270
+ # Sanitizes HTML5 and CSS from an extensive safe list.
271
+ #
272
+ # === Whitespace
273
+ #
274
+ # We can't make any guarantees about whitespace being kept or stripped. Loofah uses Nokogiri,
275
+ # which wraps either a C or Java parser for the respective Ruby implementation. Those two
276
+ # parsers determine how whitespace is ultimately handled.
277
+ #
278
+ # When the stripped markup will be rendered the users browser won't take whitespace into account
279
+ # anyway. It might be better to suggest your users wrap their whitespace sensitive content in
280
+ # pre tags or that you do so automatically.
281
+ #
282
+ # === Options
283
+ #
284
+ # Sanitizes both html and css via the safe lists found in
285
+ # Rails::HTML::Concern::Scrubber::SafeList
286
+ #
287
+ # SafeListSanitizer also accepts options to configure the safe list used when sanitizing html.
288
+ # There's a class level option:
289
+ #
290
+ # Rails::HTML5::SafeListSanitizer.allowed_tags = %w(table tr td)
291
+ # Rails::HTML5::SafeListSanitizer.allowed_attributes = %w(id class style)
292
+ #
293
+ # Tags and attributes can also be passed to +sanitize+. Passed options take precedence over the
294
+ # class level options.
295
+ #
296
+ # === Examples
297
+ #
298
+ # safe_list_sanitizer = Rails::HTML5::SafeListSanitizer.new
299
+ #
300
+ # # default: sanitize via a extensive safe list of allowed elements
301
+ # safe_list_sanitizer.sanitize(@article.body)
302
+ #
303
+ # # sanitize via the supplied tags and attributes
304
+ # safe_list_sanitizer.sanitize(
305
+ # @article.body,
306
+ # tags: %w(table tr td),
307
+ # attributes: %w(id class style),
308
+ # )
309
+ #
310
+ # # sanitize via a custom Loofah scrubber
311
+ # safe_list_sanitizer.sanitize(@article.body, scrubber: ArticleScrubber.new)
312
+ #
313
+ # # prune nodes from the tree instead of stripping tags and leaving inner content
314
+ # safe_list_sanitizer = Rails::HTML5::SafeListSanitizer.new(prune: true)
315
+ #
316
+ # # the sanitizer can also sanitize CSS
317
+ # safe_list_sanitizer.sanitize_css('background-color: #000;')
318
+ #
319
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#408
320
+ class Rails::HTML5::SafeListSanitizer < ::Rails::HTML::Sanitizer
321
+ include ::Rails::HTML::Concern::ComposedSanitize
322
+ include ::Rails::HTML::Concern::Parser::HTML5
323
+ include ::Rails::HTML::Concern::Scrubber::SafeList
324
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
325
+
326
+ class << self
327
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#145
328
+ def allowed_attributes; end
329
+
330
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#145
331
+ def allowed_attributes=(_arg0); end
332
+
333
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
334
+ def allowed_tags; end
335
+
336
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
337
+ def allowed_tags=(_arg0); end
338
+ end
339
+ end
340
+
341
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#307
342
+ class Rails::HTML5::Sanitizer
343
+ class << self
344
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#309
345
+ def full_sanitizer; end
346
+
347
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#313
348
+ def link_sanitizer; end
349
+
350
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#317
351
+ def safe_list_sanitizer; end
352
+
353
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#321
354
+ def white_list_sanitizer; end
355
+ end
356
+ end
357
+
358
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#33
359
+ module Rails::HTML::Concern; end
360
+
361
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#34
362
+ module Rails::HTML::Concern::ComposedSanitize
363
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#35
364
+ def sanitize(html, options = T.unsafe(nil)); end
365
+ end
366
+
367
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#43
368
+ module Rails::HTML::Concern::Parser; end
369
+
370
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#44
371
+ module Rails::HTML::Concern::Parser::HTML4
372
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#45
373
+ def parse_fragment(html); end
374
+ end
375
+
376
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#50
377
+ module Rails::HTML::Concern::Parser::HTML5
378
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#51
379
+ def parse_fragment(html); end
380
+ end
381
+
382
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#57
383
+ module Rails::HTML::Concern::Scrubber; end
384
+
385
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#58
386
+ module Rails::HTML::Concern::Scrubber::Full
387
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#59
388
+ def scrub(fragment, options = T.unsafe(nil)); end
389
+ end
390
+
391
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#64
392
+ module Rails::HTML::Concern::Scrubber::Link
393
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#65
394
+ def initialize; end
395
+
396
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#72
397
+ def scrub(fragment, options = T.unsafe(nil)); end
398
+ end
399
+
400
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#77
401
+ module Rails::HTML::Concern::Scrubber::SafeList
402
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#152
403
+ def initialize(prune: T.unsafe(nil)); end
404
+
405
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#169
406
+ def sanitize_css(style_string); end
407
+
408
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#156
409
+ def scrub(fragment, options = T.unsafe(nil)); end
410
+
411
+ private
412
+
413
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#178
414
+ def allowed_attributes(options); end
415
+
416
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#174
417
+ def allowed_tags(options); end
418
+
419
+ class << self
420
+ # @private
421
+ #
422
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#142
423
+ def included(klass); end
424
+ end
425
+ end
426
+
427
+ # The default safe list for attributes
428
+ #
429
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#126
430
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_ATTRIBUTES = T.let(T.unsafe(nil), Set)
431
+
432
+ # The default safe list for tags
433
+ #
434
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#79
435
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_TAGS = T.let(T.unsafe(nil), Set)
436
+
437
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#184
438
+ module Rails::HTML::Concern::Serializer; end
439
+
440
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#185
441
+ module Rails::HTML::Concern::Serializer::UTF8Encode
442
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#186
443
+ def serialize(fragment); end
444
+ end
445
+
446
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#418
447
+ Rails::HTML::FullSanitizer = Rails::HTML4::FullSanitizer
448
+
449
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#419
450
+ Rails::HTML::LinkSanitizer = Rails::HTML4::LinkSanitizer
451
+
452
+ # === Rails::HTML::PermitScrubber
453
+ #
454
+ # +Rails::HTML::PermitScrubber+ allows you to permit only your own tags and/or attributes.
455
+ #
456
+ # +Rails::HTML::PermitScrubber+ can be subclassed to determine:
457
+ # - When a node should be skipped via +skip_node?+.
458
+ # - When a node is allowed via +allowed_node?+.
459
+ # - When an attribute should be scrubbed via +scrub_attribute?+.
460
+ #
461
+ # Subclasses don't need to worry if tags or attributes are set or not.
462
+ # If tags or attributes are not set, Loofah's behavior will be used.
463
+ # If you override +allowed_node?+ and no tags are set, it will not be called.
464
+ # Instead Loofahs behavior will be used.
465
+ # Likewise for +scrub_attribute?+ and attributes respectively.
466
+ #
467
+ # Text and CDATA nodes are skipped by default.
468
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
469
+ # Supplied tags and attributes should be Enumerables.
470
+ #
471
+ # +tags=+
472
+ # If set, elements excluded will be stripped.
473
+ # If not, elements are stripped based on Loofahs +HTML5::Scrub.allowed_element?+.
474
+ #
475
+ # +attributes=+
476
+ # If set, attributes excluded will be removed.
477
+ # If not, attributes are removed based on Loofahs +HTML5::Scrub.scrub_attributes+.
478
+ #
479
+ # class CommentScrubber < Rails::HTML::PermitScrubber
480
+ # def initialize
481
+ # super
482
+ # self.tags = %w(form script comment blockquote)
483
+ # end
484
+ #
485
+ # def skip_node?(node)
486
+ # node.text?
487
+ # end
488
+ #
489
+ # def scrub_attribute?(name)
490
+ # name == "style"
491
+ # end
492
+ # end
493
+ #
494
+ # See the documentation for +Nokogiri::XML::Node+ to understand what's possible
495
+ # with nodes: https://nokogiri.org/rdoc/Nokogiri/XML/Node.html
496
+ #
497
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#49
498
+ class Rails::HTML::PermitScrubber < ::Loofah::Scrubber
499
+ # @return [PermitScrubber] a new instance of PermitScrubber
500
+ #
501
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#52
502
+ def initialize(prune: T.unsafe(nil)); end
503
+
504
+ # Returns the value of attribute attributes.
505
+ #
506
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
507
+ def attributes; end
508
+
509
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#62
510
+ def attributes=(attributes); end
511
+
512
+ # Returns the value of attribute prune.
513
+ #
514
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
515
+ def prune; end
516
+
517
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#66
518
+ def scrub(node); end
519
+
520
+ # Returns the value of attribute tags.
521
+ #
522
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
523
+ def tags; end
524
+
525
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#58
526
+ def tags=(tags); end
527
+
528
+ protected
529
+
530
+ # @return [Boolean]
531
+ #
532
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#83
533
+ def allowed_node?(node); end
534
+
535
+ # @return [Boolean]
536
+ #
537
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#95
538
+ def keep_node?(node); end
539
+
540
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#162
541
+ def scrub_attribute(node, attr_node); end
542
+
543
+ # @return [Boolean]
544
+ #
545
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#91
546
+ def scrub_attribute?(name); end
547
+
548
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#112
549
+ def scrub_attributes(node); end
550
+
551
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#128
552
+ def scrub_css_attribute(node); end
553
+
554
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#103
555
+ def scrub_node(node); end
556
+
557
+ # @return [Boolean]
558
+ #
559
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#87
560
+ def skip_node?(node); end
561
+
562
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#137
563
+ def validate!(var, name); end
564
+ end
565
+
566
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#420
567
+ Rails::HTML::SafeListSanitizer = Rails::HTML4::SafeListSanitizer
568
+
569
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#5
570
+ class Rails::HTML::Sanitizer
571
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
572
+
573
+ # @raise [NotImplementedError]
574
+ #
575
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#18
576
+ def sanitize(html, options = T.unsafe(nil)); end
577
+
578
+ private
579
+
580
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#28
581
+ def properly_encode(fragment, options); end
582
+
583
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#23
584
+ def remove_xpaths(node, xpaths); end
585
+
586
+ class << self
587
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#13
588
+ def best_supported_vendor; end
589
+
590
+ # @return [Boolean]
591
+ #
592
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#7
593
+ def html5_support?; end
594
+ end
595
+ end
596
+
597
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#6
598
+ Rails::HTML::Sanitizer::VERSION = T.let(T.unsafe(nil), String)
599
+
600
+ # === Rails::HTML::TargetScrubber
601
+ #
602
+ # Where +Rails::HTML::PermitScrubber+ picks out tags and attributes to permit in
603
+ # sanitization, +Rails::HTML::TargetScrubber+ targets them for removal.
604
+ #
605
+ # +tags=+
606
+ # If set, elements included will be stripped.
607
+ #
608
+ # +attributes=+
609
+ # If set, attributes included will be removed.
610
+ #
611
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#195
612
+ class Rails::HTML::TargetScrubber < ::Rails::HTML::PermitScrubber
613
+ # @return [Boolean]
614
+ #
615
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#196
616
+ def allowed_node?(node); end
617
+
618
+ # @return [Boolean]
619
+ #
620
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#200
621
+ def scrub_attribute?(name); end
622
+ end
623
+
624
+ # === Rails::HTML::TextOnlyScrubber
625
+ #
626
+ # +Rails::HTML::TextOnlyScrubber+ allows you to permit text nodes.
627
+ #
628
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
629
+ #
630
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#210
631
+ class Rails::HTML::TextOnlyScrubber < ::Loofah::Scrubber
632
+ # @return [TextOnlyScrubber] a new instance of TextOnlyScrubber
633
+ #
634
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#211
635
+ def initialize; end
636
+
637
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#215
638
+ def scrub(node); end
639
+ end
640
+
641
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#421
642
+ Rails::HTML::WhiteListSanitizer = Rails::HTML4::SafeListSanitizer
643
+
644
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#11
645
+ Rails::Html = Rails::HTML
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rails` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rails`.
6
+
7
+
8
+ # THIS IS AN EMPTY RBI FILE.
9
+ # see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem