Module: ReactOnRails::Generators::RscSetup::ClientReferences
- Included in:
- ReactOnRails::Generators::RscSetup
- Defined in:
- lib/generators/react_on_rails/rsc_setup/client_references.rb
Overview
rubocop:disable Metrics/ModuleLength
Constant Summary collapse
- JS_STRING_DELIMITERS =
["'", '"', "`"].freeze
- JS_COMMENT_STATES =
%i[line_comment block_comment].freeze
- JS_COMMENT_SECOND_CHARS =
Characters that complete
//or/*after a leading/. ["/", "*"].freeze
- REGEX_LITERAL_PRECEDERS =
Known limitation: this list only covers single-character regex preceders. Multi-character JavaScript keywords that legally precede a regex literal (
return,typeof,void,delete,throw,case,in,instanceof) are not represented. A regex like/\{/appearing afterreturnmay be misidentified as a division operator and let{` / `}inside the regex body throw offmatching_js_closing_brace's depth counter. The unparseable-section detection inrsc_plugin_options_followed_by_close_paren?catches the resulting corruption and flags the section as unparseable, so the migration falls back safely rather than producing a wrong rewrite. ["(", "{", "[", "=", ":", ",", ";", "!", "?", "&", "|", "+", "-", "*", "~", "^", "<", ">"].freeze
- RSC_PLUGIN_INVOCATION_REGEX =
Matches
new RSCWebpackPlugin(ornew RSCRspackPlugin(, allowing whitespace/newlines betweennew, the class name, and the open paren. Both bundler plugin names are matched so detection and idempotency stay correct whether the config was scaffolded for webpack (RSCWebpackPlugin) or rspack (RSCRspackPlugin). Shared by the partition scanner and the routing checks so both detect the same set of invocations. /new\s+RSC(?:Webpack|Rspack)Plugin\s*\(/