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,620 @@
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
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:14
9
+ module ActionView; end
10
+
11
+ # pkg:gem/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
+ # pkg:gem/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
+ # pkg:gem/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
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:34
40
+ def sanitized_allowed_attributes=(attributes); end
41
+
42
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
43
+ def sanitized_allowed_css_keywords; end
44
+
45
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
46
+ def sanitized_allowed_css_keywords=(_); end
47
+
48
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
49
+ def sanitized_allowed_css_properties; end
50
+
51
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
52
+ def sanitized_allowed_css_properties=(_); end
53
+
54
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
55
+ def sanitized_allowed_protocols; end
56
+
57
+ # pkg:gem/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
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:24
67
+ def sanitized_allowed_tags=(tags); end
68
+
69
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
70
+ def sanitized_bad_tags; end
71
+
72
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
73
+ def sanitized_bad_tags=(_); end
74
+
75
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
76
+ def sanitized_protocol_separator; end
77
+
78
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
79
+ def sanitized_protocol_separator=(_); end
80
+
81
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
82
+ def sanitized_shorthand_css_properties; end
83
+
84
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
85
+ def sanitized_shorthand_css_properties=(_); end
86
+
87
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:47
88
+ def sanitized_uri_attributes; end
89
+
90
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:48
91
+ def sanitized_uri_attributes=(_); end
92
+
93
+ private
94
+
95
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:52
96
+ def deprecate_option(name); end
97
+ end
98
+
99
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer/version.rb:3
100
+ module Rails; end
101
+
102
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer/version.rb:4
103
+ module Rails::HTML; end
104
+
105
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:198
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:229
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:244
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:302
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:149
200
+ def allowed_attributes; end
201
+
202
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:149
203
+ def allowed_attributes=(_arg0); end
204
+
205
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:148
206
+ def allowed_tags; end
207
+
208
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:148
209
+ def allowed_tags=(_arg0); end
210
+ end
211
+ end
212
+
213
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:199
214
+ module Rails::HTML4::Sanitizer
215
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
216
+ end
217
+
218
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:200
219
+ module Rails::HTML4::Sanitizer::VendorMethods
220
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:201
221
+ def full_sanitizer; end
222
+
223
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:205
224
+ def link_sanitizer; end
225
+
226
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:209
227
+ def safe_list_sanitizer; end
228
+
229
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:213
230
+ def white_list_sanitizer; end
231
+ end
232
+
233
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:310
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:339
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:354
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:412
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
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:149
328
+ def allowed_attributes; end
329
+
330
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:149
331
+ def allowed_attributes=(_arg0); end
332
+
333
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:148
334
+ def allowed_tags; end
335
+
336
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:148
337
+ def allowed_tags=(_arg0); end
338
+ end
339
+ end
340
+
341
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:311
342
+ class Rails::HTML5::Sanitizer
343
+ class << self
344
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:313
345
+ def full_sanitizer; end
346
+
347
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:317
348
+ def link_sanitizer; end
349
+
350
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:321
351
+ def safe_list_sanitizer; end
352
+
353
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:325
354
+ def white_list_sanitizer; end
355
+ end
356
+ end
357
+
358
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:37
359
+ module Rails::HTML::Concern; end
360
+
361
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:38
362
+ module Rails::HTML::Concern::ComposedSanitize
363
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:39
364
+ def sanitize(html, options = T.unsafe(nil)); end
365
+ end
366
+
367
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:47
368
+ module Rails::HTML::Concern::Parser; end
369
+
370
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:48
371
+ module Rails::HTML::Concern::Parser::HTML4
372
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:49
373
+ def parse_fragment(html); end
374
+ end
375
+
376
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:54
377
+ module Rails::HTML::Concern::Parser::HTML5
378
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:55
379
+ def parse_fragment(html); end
380
+ end
381
+
382
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:61
383
+ module Rails::HTML::Concern::Scrubber; end
384
+
385
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:62
386
+ module Rails::HTML::Concern::Scrubber::Full
387
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:63
388
+ def scrub(fragment, options = T.unsafe(nil)); end
389
+ end
390
+
391
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:68
392
+ module Rails::HTML::Concern::Scrubber::Link
393
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:69
394
+ def initialize; end
395
+
396
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:76
397
+ def scrub(fragment, options = T.unsafe(nil)); end
398
+ end
399
+
400
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:81
401
+ module Rails::HTML::Concern::Scrubber::SafeList
402
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:156
403
+ def initialize(prune: T.unsafe(nil)); end
404
+
405
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:173
406
+ def sanitize_css(style_string); end
407
+
408
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:160
409
+ def scrub(fragment, options = T.unsafe(nil)); end
410
+
411
+ private
412
+
413
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:182
414
+ def allowed_attributes(options); end
415
+
416
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:178
417
+ def allowed_tags(options); end
418
+
419
+ class << self
420
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:146
421
+ def included(klass); end
422
+ end
423
+ end
424
+
425
+ # The default safe list for attributes
426
+ #
427
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:130
428
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_ATTRIBUTES = T.let(T.unsafe(nil), Set)
429
+
430
+ # The default safe list for tags
431
+ #
432
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:83
433
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_TAGS = T.let(T.unsafe(nil), Set)
434
+
435
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:188
436
+ module Rails::HTML::Concern::Serializer; end
437
+
438
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:189
439
+ module Rails::HTML::Concern::Serializer::UTF8Encode
440
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:190
441
+ def serialize(fragment); end
442
+ end
443
+
444
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:422
445
+ Rails::HTML::FullSanitizer = Rails::HTML4::FullSanitizer
446
+
447
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:423
448
+ Rails::HTML::LinkSanitizer = Rails::HTML4::LinkSanitizer
449
+
450
+ # === Rails::HTML::PermitScrubber
451
+ #
452
+ # +Rails::HTML::PermitScrubber+ allows you to permit only your own tags and/or attributes.
453
+ #
454
+ # +Rails::HTML::PermitScrubber+ can be subclassed to determine:
455
+ # - When a node should be skipped via +skip_node?+.
456
+ # - When a node is allowed via +allowed_node?+.
457
+ # - When an attribute should be scrubbed via +scrub_attribute?+.
458
+ #
459
+ # Subclasses don't need to worry if tags or attributes are set or not.
460
+ # If tags or attributes are not set, Loofah's behavior will be used.
461
+ # If you override +allowed_node?+ and no tags are set, it will not be called.
462
+ # Instead Loofahs behavior will be used.
463
+ # Likewise for +scrub_attribute?+ and attributes respectively.
464
+ #
465
+ # Text and CDATA nodes are skipped by default.
466
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
467
+ # Supplied tags and attributes should be Enumerables.
468
+ #
469
+ # +tags=+
470
+ # If set, elements excluded will be stripped.
471
+ # If not, elements are stripped based on Loofahs +HTML5::Scrub.allowed_element?+.
472
+ #
473
+ # +attributes=+
474
+ # If set, attributes excluded will be removed.
475
+ # If not, attributes are removed based on Loofahs +HTML5::Scrub.scrub_attributes+.
476
+ #
477
+ # class CommentScrubber < Rails::HTML::PermitScrubber
478
+ # def initialize
479
+ # super
480
+ # self.tags = %w(form script comment blockquote)
481
+ # end
482
+ #
483
+ # def skip_node?(node)
484
+ # node.text?
485
+ # end
486
+ #
487
+ # def scrub_attribute?(name)
488
+ # name == "style"
489
+ # end
490
+ # end
491
+ #
492
+ # See the documentation for +Nokogiri::XML::Node+ to understand what's possible
493
+ # with nodes: https://nokogiri.org/rdoc/Nokogiri/XML/Node.html
494
+ #
495
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:49
496
+ class Rails::HTML::PermitScrubber < ::Loofah::Scrubber
497
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:52
498
+ def initialize(prune: T.unsafe(nil)); end
499
+
500
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:50
501
+ def attributes; end
502
+
503
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:62
504
+ def attributes=(attributes); end
505
+
506
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:50
507
+ def prune; end
508
+
509
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:66
510
+ def scrub(node); end
511
+
512
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:50
513
+ def tags; end
514
+
515
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:58
516
+ def tags=(tags); end
517
+
518
+ protected
519
+
520
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:83
521
+ def allowed_node?(node); end
522
+
523
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:95
524
+ def keep_node?(node); end
525
+
526
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:162
527
+ def scrub_attribute(node, attr_node); end
528
+
529
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:91
530
+ def scrub_attribute?(name); end
531
+
532
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:112
533
+ def scrub_attributes(node); end
534
+
535
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:128
536
+ def scrub_css_attribute(node); end
537
+
538
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:103
539
+ def scrub_node(node); end
540
+
541
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:87
542
+ def skip_node?(node); end
543
+
544
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:137
545
+ def validate!(var, name); end
546
+ end
547
+
548
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:424
549
+ Rails::HTML::SafeListSanitizer = Rails::HTML4::SafeListSanitizer
550
+
551
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer/version.rb:5
552
+ class Rails::HTML::Sanitizer
553
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
554
+
555
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:22
556
+ def sanitize(html, options = T.unsafe(nil)); end
557
+
558
+ private
559
+
560
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:32
561
+ def properly_encode(fragment, options); end
562
+
563
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:27
564
+ def remove_xpaths(node, xpaths); end
565
+
566
+ class << self
567
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:17
568
+ def allowed_uri?(uri_string); end
569
+
570
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:13
571
+ def best_supported_vendor; end
572
+
573
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:7
574
+ def html5_support?; end
575
+ end
576
+ end
577
+
578
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer/version.rb:6
579
+ Rails::HTML::Sanitizer::VERSION = T.let(T.unsafe(nil), String)
580
+
581
+ # === Rails::HTML::TargetScrubber
582
+ #
583
+ # Where +Rails::HTML::PermitScrubber+ picks out tags and attributes to permit in
584
+ # sanitization, +Rails::HTML::TargetScrubber+ targets them for removal.
585
+ #
586
+ # +tags=+
587
+ # If set, elements included will be stripped.
588
+ #
589
+ # +attributes=+
590
+ # If set, attributes included will be removed.
591
+ #
592
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:195
593
+ class Rails::HTML::TargetScrubber < ::Rails::HTML::PermitScrubber
594
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:196
595
+ def allowed_node?(node); end
596
+
597
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:200
598
+ def scrub_attribute?(name); end
599
+ end
600
+
601
+ # === Rails::HTML::TextOnlyScrubber
602
+ #
603
+ # +Rails::HTML::TextOnlyScrubber+ allows you to permit text nodes.
604
+ #
605
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
606
+ #
607
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:210
608
+ class Rails::HTML::TextOnlyScrubber < ::Loofah::Scrubber
609
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:211
610
+ def initialize; end
611
+
612
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/scrubbers.rb:215
613
+ def scrub(node); end
614
+ end
615
+
616
+ # pkg:gem/rails-html-sanitizer#lib/rails/html/sanitizer.rb:425
617
+ Rails::HTML::WhiteListSanitizer = Rails::HTML4::SafeListSanitizer
618
+
619
+ # pkg:gem/rails-html-sanitizer#lib/rails-html-sanitizer.rb:11
620
+ 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