shakapacker 8.0.2 → 9.2.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 (198) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintignore +1 -0
  3. data/.eslintrc.fast.js +40 -0
  4. data/.eslintrc.js +48 -0
  5. data/.github/STATUS.md +1 -0
  6. data/.github/workflows/claude-code-review.yml +54 -0
  7. data/.github/workflows/claude.yml +50 -0
  8. data/.github/workflows/dummy.yml +9 -4
  9. data/.github/workflows/generator.yml +32 -10
  10. data/.github/workflows/node.yml +23 -1
  11. data/.github/workflows/ruby.yml +33 -2
  12. data/.github/workflows/test-bundlers.yml +170 -0
  13. data/.gitignore +20 -0
  14. data/.husky/pre-commit +2 -0
  15. data/.npmignore +56 -0
  16. data/.prettierignore +3 -0
  17. data/.rubocop.yml +1 -0
  18. data/.yalcignore +26 -0
  19. data/CHANGELOG.md +302 -16
  20. data/CLAUDE.md +29 -0
  21. data/CONTRIBUTING.md +138 -20
  22. data/Gemfile.lock +83 -89
  23. data/README.md +343 -105
  24. data/Rakefile +39 -4
  25. data/TODO.md +50 -0
  26. data/TODO_v9.md +87 -0
  27. data/bin/export-bundler-config +11 -0
  28. data/conductor-setup.sh +70 -0
  29. data/conductor.json +7 -0
  30. data/docs/cdn_setup.md +379 -0
  31. data/docs/common-upgrades.md +615 -0
  32. data/docs/css-modules-export-mode.md +512 -0
  33. data/docs/deployment.md +62 -9
  34. data/docs/optional-peer-dependencies.md +198 -0
  35. data/docs/peer-dependencies.md +60 -0
  36. data/docs/react.md +6 -14
  37. data/docs/releasing.md +197 -0
  38. data/docs/rspack.md +190 -0
  39. data/docs/rspack_migration_guide.md +305 -0
  40. data/docs/subresource_integrity.md +54 -0
  41. data/docs/transpiler-migration.md +209 -0
  42. data/docs/transpiler-performance.md +179 -0
  43. data/docs/troubleshooting.md +157 -22
  44. data/docs/typescript-migration.md +379 -0
  45. data/docs/typescript.md +99 -0
  46. data/docs/using_esbuild_loader.md +3 -3
  47. data/docs/using_swc_loader.md +112 -10
  48. data/docs/v6_upgrade.md +10 -0
  49. data/docs/v8_upgrade.md +3 -5
  50. data/docs/v9_upgrade.md +458 -0
  51. data/gemfiles/Gemfile-rails.6.0.x +2 -1
  52. data/gemfiles/Gemfile-rails.6.1.x +1 -1
  53. data/gemfiles/Gemfile-rails.7.0.x +2 -2
  54. data/gemfiles/Gemfile-rails.7.1.x +1 -2
  55. data/gemfiles/Gemfile-rails.7.2.x +11 -0
  56. data/gemfiles/Gemfile-rails.8.0.x +11 -0
  57. data/lib/install/bin/export-bundler-config +11 -0
  58. data/lib/install/bin/shakapacker +4 -6
  59. data/lib/install/bin/shakapacker-dev-server +1 -1
  60. data/lib/install/config/rspack/rspack.config.js +6 -0
  61. data/lib/install/config/rspack/rspack.config.ts +7 -0
  62. data/lib/install/config/shakapacker.yml +25 -5
  63. data/lib/install/config/webpack/webpack.config.ts +7 -0
  64. data/lib/install/package.json +38 -0
  65. data/lib/install/template.rb +194 -44
  66. data/lib/shakapacker/bundler_switcher.rb +329 -0
  67. data/lib/shakapacker/compiler.rb +2 -1
  68. data/lib/shakapacker/compiler_strategy.rb +2 -2
  69. data/lib/shakapacker/configuration.rb +173 -2
  70. data/lib/shakapacker/dev_server_runner.rb +29 -8
  71. data/lib/shakapacker/digest_strategy.rb +2 -1
  72. data/lib/shakapacker/doctor.rb +905 -0
  73. data/lib/shakapacker/helper.rb +64 -16
  74. data/lib/shakapacker/manifest.rb +10 -3
  75. data/lib/shakapacker/mtime_strategy.rb +1 -1
  76. data/lib/shakapacker/railtie.rb +4 -4
  77. data/lib/shakapacker/rspack_runner.rb +19 -0
  78. data/lib/shakapacker/runner.rb +159 -10
  79. data/lib/shakapacker/swc_migrator.rb +384 -0
  80. data/lib/shakapacker/utils/manager.rb +15 -2
  81. data/lib/shakapacker/version.rb +1 -1
  82. data/lib/shakapacker/version_checker.rb +2 -2
  83. data/lib/shakapacker/webpack_runner.rb +6 -43
  84. data/lib/shakapacker.rb +22 -11
  85. data/lib/tasks/shakapacker/doctor.rake +8 -0
  86. data/lib/tasks/shakapacker/export_bundler_config.rake +72 -0
  87. data/lib/tasks/shakapacker/install.rake +12 -2
  88. data/lib/tasks/shakapacker/migrate_to_swc.rake +13 -0
  89. data/lib/tasks/shakapacker/switch_bundler.rake +82 -0
  90. data/lib/tasks/shakapacker.rake +2 -0
  91. data/package/.npmignore +4 -0
  92. data/package/babel/preset.ts +56 -0
  93. data/package/config.ts +175 -0
  94. data/package/configExporter/cli.ts +683 -0
  95. data/package/configExporter/configDocs.ts +102 -0
  96. data/package/configExporter/fileWriter.ts +92 -0
  97. data/package/configExporter/index.ts +5 -0
  98. data/package/configExporter/types.ts +36 -0
  99. data/package/configExporter/yamlSerializer.ts +266 -0
  100. data/package/{dev_server.js → dev_server.ts} +8 -5
  101. data/package/env.ts +92 -0
  102. data/package/environments/__type-tests__/rspack-plugin-compatibility.ts +30 -0
  103. data/package/environments/{base.js → base.ts} +56 -60
  104. data/package/environments/development.ts +90 -0
  105. data/package/environments/production.ts +80 -0
  106. data/package/environments/test.ts +53 -0
  107. data/package/environments/types.ts +98 -0
  108. data/package/esbuild/index.ts +42 -0
  109. data/package/index.d.ts +3 -60
  110. data/package/index.ts +55 -0
  111. data/package/loaders.d.ts +28 -0
  112. data/package/optimization/rspack.ts +36 -0
  113. data/package/optimization/webpack.ts +57 -0
  114. data/package/plugins/rspack.ts +103 -0
  115. data/package/plugins/webpack.ts +62 -0
  116. data/package/rspack/index.ts +64 -0
  117. data/package/rules/{babel.js → babel.ts} +2 -2
  118. data/package/rules/{coffee.js → coffee.ts} +1 -1
  119. data/package/rules/css.ts +3 -0
  120. data/package/rules/{erb.js → erb.ts} +1 -1
  121. data/package/rules/esbuild.ts +10 -0
  122. data/package/rules/file.ts +40 -0
  123. data/package/rules/{jscommon.js → jscommon.ts} +4 -4
  124. data/package/rules/{less.js → less.ts} +4 -4
  125. data/package/rules/raw.ts +25 -0
  126. data/package/rules/rspack.ts +176 -0
  127. data/package/rules/{sass.js → sass.ts} +7 -3
  128. data/package/rules/{stylus.js → stylus.ts} +4 -8
  129. data/package/rules/swc.ts +10 -0
  130. data/package/rules/webpack.ts +16 -0
  131. data/package/swc/index.ts +56 -0
  132. data/package/types/README.md +88 -0
  133. data/package/types/index.ts +61 -0
  134. data/package/types.ts +108 -0
  135. data/package/utils/configPath.ts +6 -0
  136. data/package/utils/debug.ts +49 -0
  137. data/package/utils/defaultConfigPath.ts +4 -0
  138. data/package/utils/errorCodes.ts +219 -0
  139. data/package/utils/errorHelpers.ts +143 -0
  140. data/package/utils/getStyleRule.ts +64 -0
  141. data/package/utils/helpers.ts +85 -0
  142. data/package/utils/{inliningCss.js → inliningCss.ts} +3 -3
  143. data/package/utils/pathValidation.ts +139 -0
  144. data/package/utils/requireOrError.ts +15 -0
  145. data/package/utils/snakeToCamelCase.ts +5 -0
  146. data/package/utils/typeGuards.ts +342 -0
  147. data/package/utils/validateDependencies.ts +61 -0
  148. data/package/webpack-types.d.ts +33 -0
  149. data/package/webpackDevServerConfig.ts +117 -0
  150. data/package-lock.json +13047 -0
  151. data/package.json +154 -18
  152. data/scripts/remove-use-strict.js +45 -0
  153. data/scripts/type-check-no-emit.js +27 -0
  154. data/test/helpers.js +1 -1
  155. data/test/package/config.test.js +43 -0
  156. data/test/package/env.test.js +42 -7
  157. data/test/package/environments/base.test.js +5 -1
  158. data/test/package/rules/babel.test.js +16 -0
  159. data/test/package/rules/esbuild.test.js +1 -1
  160. data/test/package/rules/raw.test.js +40 -7
  161. data/test/package/rules/swc.test.js +1 -1
  162. data/test/package/rules/webpack.test.js +35 -0
  163. data/test/package/staging.test.js +4 -3
  164. data/test/package/transpiler-defaults.test.js +127 -0
  165. data/test/peer-dependencies.sh +85 -0
  166. data/test/scripts/remove-use-strict.test.js +125 -0
  167. data/test/typescript/build.test.js +118 -0
  168. data/test/typescript/environments.test.js +107 -0
  169. data/test/typescript/pathValidation.test.js +142 -0
  170. data/test/typescript/securityValidation.test.js +182 -0
  171. data/tools/README.md +124 -0
  172. data/tools/css-modules-v9-codemod.js +179 -0
  173. data/tsconfig.eslint.json +16 -0
  174. data/tsconfig.json +38 -0
  175. data/yarn.lock +4165 -2706
  176. metadata +129 -41
  177. data/package/babel/preset.js +0 -37
  178. data/package/config.js +0 -54
  179. data/package/env.js +0 -48
  180. data/package/environments/development.js +0 -13
  181. data/package/environments/production.js +0 -88
  182. data/package/environments/test.js +0 -3
  183. data/package/esbuild/index.js +0 -40
  184. data/package/index.js +0 -40
  185. data/package/rules/css.js +0 -3
  186. data/package/rules/esbuild.js +0 -10
  187. data/package/rules/file.js +0 -29
  188. data/package/rules/index.js +0 -20
  189. data/package/rules/raw.js +0 -5
  190. data/package/rules/swc.js +0 -10
  191. data/package/swc/index.js +0 -50
  192. data/package/utils/configPath.js +0 -4
  193. data/package/utils/defaultConfigPath.js +0 -2
  194. data/package/utils/getStyleRule.js +0 -40
  195. data/package/utils/helpers.js +0 -58
  196. data/package/utils/snakeToCamelCase.js +0 -5
  197. data/package/webpackDevServerConfig.js +0 -71
  198. data/test/package/rules/index.test.js +0 -16
data/CLAUDE.md ADDED
@@ -0,0 +1,29 @@
1
+ # Shakapacker Project Guidelines
2
+
3
+ ## Critical Requirements
4
+ - **ALWAYS end all files with a trailing newline character.** This is required by the project's linting rules.
5
+ - **ALWAYS use `bundle exec` prefix when running Ruby commands** (rubocop, rspec, rake, etc.)
6
+ - **ALWAYS run `bundle exec rubocop` before committing Ruby changes**
7
+ - **ALWAYS run `yarn lint` before committing JavaScript changes**
8
+
9
+ ## Testing
10
+ - Run corresponding RSpec tests when changing source files
11
+ - For example, when changing `lib/shakapacker/foo.rb`, run `spec/shakapacker/foo_spec.rb`
12
+ - Run the full test suite with `bundle exec rspec` before pushing
13
+
14
+ ## Code Style
15
+ - Follow existing code conventions in the file you're editing
16
+ - Use the project's existing patterns and utilities
17
+ - No unnecessary comments unless requested
18
+ - Keep changes focused and minimal - avoid extraneous diffs
19
+
20
+ ## Git Workflow
21
+ - Create feature branches for all changes
22
+ - Never push directly to main branch
23
+ - Create small, focused PRs that are easy to review
24
+ - Always create a PR immediately after pushing changes
25
+
26
+ ## Shakapacker-Specific
27
+ - This gem supports both webpack and rspack configurations
28
+ - Test changes with both bundlers when modifying core functionality
29
+ - Be aware of the dual package.json/Gemfile dependency management
data/CONTRIBUTING.md CHANGED
@@ -3,6 +3,7 @@
3
3
  Thank you for your interest in contributing to Shakapacker! We welcome all contributions that align with our project goals and values. To ensure a smooth and productive collaboration, please follow these guidelines.
4
4
 
5
5
  ## Contents
6
+
6
7
  - [Reporting Issues](#reporting-issues)
7
8
  - [Submitting Pull Requests](#submitting-pull-requests)
8
9
  - [Setting Up a Development Environment](#setting-up-a-development-environment)
@@ -10,46 +11,121 @@ Thank you for your interest in contributing to Shakapacker! We welcome all contr
10
11
  - [Testing the generator](#testing-the-generator)
11
12
 
12
13
  ## Reporting Issues
14
+
13
15
  If you encounter any issues with the project, please first check the existing issues (including closed ones). If the issues is not reported before, please opening an issue on our GitHub repository. Please provide a clear and detailed description of the issue, including steps to reproduce it. Creating a demo repository to demonstrate the issue would be ideal (and in some cases necessary).
14
16
 
15
17
  If looking to contribute to the project by fixing existing issues, we recommend looking at issues, particularly with the "[help wanted](https://github.com/shakacode/shakapacker/issues?q=is%3Aissue+label%3A%22help+wanted%22)" label.
16
18
 
17
19
  ## Submitting Pull Requests
20
+
18
21
  We welcome pull requests that fix bugs, add new features, or improve existing ones. Before submitting a pull request, please make sure to:
19
22
 
20
- - Open an issue about what you want to propose before start working on.
21
- - Fork the repository and create a new branch for your changes.
22
- - Write clear and concise commit messages.
23
- - Follow our code style guidelines.
24
- - Write tests for your changes and [make sure all tests pass](#making-sure-your-changes-pass-all-tests).
25
- - Update the documentation as needed.
26
- - Update CHANGELOG.md if the changes affect public behavior of the project.
23
+ - Open an issue about what you want to propose before start working on.
24
+ - Fork the repository and create a new branch for your changes.
25
+ - Write clear and concise commit messages.
26
+ - Follow our code style guidelines.
27
+ - Write tests for your changes and [make sure all tests pass](#making-sure-your-changes-pass-all-tests).
28
+ - Update the documentation as needed.
29
+ - Update CHANGELOG.md if the changes affect public behavior of the project.
30
+
31
+ ---
32
+
33
+ ## Git Hooks (Optional)
34
+
35
+ This project includes configuration for git hooks via `husky` and `lint-staged`, but they are **opt-in for contributors**.
36
+
37
+ **Why are hooks optional?** As a library project, we don't enforce git hooks because:
38
+
39
+ - Different contributors may have different workflows
40
+ - Forcing hooks can interfere with contributor tooling
41
+ - CI/CD handles the final validation
42
+
43
+ To enable pre-commit hooks locally:
44
+
45
+ ```bash
46
+ npx husky install
47
+ npx husky add .husky/pre-commit "npx lint-staged"
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Linting and Code Quality
53
+
54
+ ### Running Linters
55
+
56
+ ```bash
57
+ # Full linting with type checking (slower but thorough)
58
+ yarn lint
59
+
60
+ # Fast linting without type checking (for quick feedback)
61
+ yarn lint:fast
62
+
63
+ # With caching for better performance
64
+ yarn lint --cache
65
+ ```
66
+
67
+ **Performance Note:** TypeScript ESLint uses type-aware linting for better type safety, which can be slower on large codebases. Use `yarn lint:fast` during development for quick feedback.
27
68
 
28
69
  ---
70
+
29
71
  ## Setting Up a Development Environment
30
72
 
31
73
  1. Install [Yarn](https://classic.yarnpkg.com/)
32
74
  2. To test your changes on a Rails test project do the following steps:
75
+
33
76
  - For Ruby gem, update `Gemfile` and point the `shakapacker` to the locally developing Shakapacker project:
34
- ```ruby
35
- gem 'shakapacker', path: "relative_or_absolute_path_to_local_shakapacker"
36
- ```
77
+ ```ruby
78
+ gem 'shakapacker', path: "relative_or_absolute_path_to_local_shakapacker"
79
+ ```
37
80
  - For npm package, use `yalc` with following steps:
38
- ```bash
39
- # In Shakapacker root directory
40
- yalc publish
41
- # In Rails app for testing
42
- yalc link shakapacker
43
-
44
- # After every change in shakapacker, run the following in Shakapacker directory
45
- yalc push # or yalc publish --push
46
- ```
81
+
82
+ ```bash
83
+ # In Shakapacker root directory
84
+ yalc publish
85
+ # In Rails app for testing
86
+ yalc link shakapacker
87
+
88
+ # After every change in shakapacker, run the following in Shakapacker directory
89
+ yalc push # or yalc publish --push
90
+ ```
91
+
47
92
  3. Run the following commands to set up the development environment.
48
93
  ```
49
94
  bundle install
50
95
  yarn install
96
+ yarn prepare:husky # Set up pre-commit hooks for linting
51
97
  ```
52
98
 
99
+ ## Understanding Optional Peer Dependencies
100
+
101
+ Shakapacker uses optional peer dependencies (via `peerDependenciesMeta`) for maximum flexibility:
102
+
103
+ - **All peer dependencies are optional** - Users only install what they need
104
+ - **No installation warnings** - Package managers won't warn about missing optional dependencies
105
+ - **Version constraints still apply** - When a package is installed, version compatibility is enforced
106
+
107
+ ### When modifying dependencies:
108
+
109
+ 1. Add new peer dependencies to both `peerDependencies` and `peerDependenciesMeta` (marking as optional)
110
+ 2. Keep version ranges synchronized between `devDependencies` and `peerDependencies`
111
+ 3. Test with multiple package managers: `npm`, `yarn`, and `pnpm`
112
+
113
+ ### Testing peer dependency changes:
114
+
115
+ ```bash
116
+ # Test with npm (no warnings expected)
117
+ cd /tmp && mkdir test-npm && cd test-npm
118
+ npm init -y && npm install /path/to/shakapacker
119
+
120
+ # Test with yarn (no warnings expected)
121
+ cd /tmp && mkdir test-yarn && cd test-yarn
122
+ yarn init -y && yarn add /path/to/shakapacker
123
+
124
+ # Test with pnpm (no warnings expected)
125
+ cd /tmp && mkdir test-pnpm && cd test-pnpm
126
+ pnpm init && pnpm add /path/to/shakapacker
127
+ ```
128
+
53
129
  ## Making sure your changes pass all tests
54
130
 
55
131
  There are several specs, covering different aspects of Shakapacker gem. You may run them locally or rely on GitHub CI actions configured to test the gem functionality if different Ruby, Rails, and Node environment.
@@ -101,6 +177,7 @@ bundle exec rake run_spec:gem
101
177
  ```
102
178
 
103
179
  #### 4.4 Run only Shakapacker gem specs for backward compatibility
180
+
104
181
  These specs are to check Shakapacker v7 backward compatibility with v6.x
105
182
 
106
183
  ```
@@ -108,6 +185,7 @@ bundle exec rake run_spec:gem_bc
108
185
  ```
109
186
 
110
187
  #### 4.5 Run dummy app test
188
+
111
189
  For this, you need `yalc` to be installed on your local machine
112
190
 
113
191
  ```
@@ -115,6 +193,7 @@ bundle exec rake run_spec:dummy
115
193
  ```
116
194
 
117
195
  #### 4.6 Testing the installer
196
+
118
197
  To ensure that your installer works as expected, either you can run `bundle exec rake run_spec:install`, or take the following manual testing steps:
119
198
 
120
199
  1. Update the `Gemfile` so that gem `shakapacker` has a line like this, pointing to your developing Shakapacker:
@@ -124,4 +203,43 @@ To ensure that your installer works as expected, either you can run `bundle exec
124
203
  2. Run `bundle install` to install the updated gem.
125
204
  3. Run `bundle exec rails shakapacker:install` to confirm that you got the right changes.
126
205
 
127
- **Note:** Ensure that you use bundle exec otherwise the installed shakapacker gem will run and not the one you are working on.
206
+ **Note:** Ensure that you use bundle exec otherwise the installed shakapacker gem will run and not the one you are working on.
207
+
208
+ ## CI Workflows
209
+
210
+ Shakapacker uses GitHub Actions for continuous integration. The CI workflows use **Yarn** as the package manager for consistency and reliability.
211
+
212
+ ### Package Manager Choice
213
+
214
+ The project uses Yarn in CI workflows for the following reasons:
215
+
216
+ - Deterministic dependency resolution with `yarn.lock`
217
+ - Faster installation with offline mirror support
218
+ - Better workspace support for monorepo-style testing
219
+ - Consistent behavior across different Node.js versions
220
+
221
+ ### Key CI Workflow Files
222
+
223
+ - `.github/workflows/test-bundlers.yml` - Tests webpack, rspack, and bundler switching
224
+ - `.github/workflows/ruby.yml` - Ruby test suite across Ruby/Rails versions
225
+ - `.github/workflows/node.yml` - Node.js test suite across Node versions
226
+ - `.github/workflows/generator.yml` - Generator installation tests
227
+
228
+ All workflows use:
229
+
230
+ ```yaml
231
+ - uses: actions/setup-node@v4
232
+ with:
233
+ cache: "yarn"
234
+ cache-dependency-path: spec/dummy/yarn.lock
235
+ ```
236
+
237
+ And install dependencies with:
238
+
239
+ ```bash
240
+ yarn install
241
+ ```
242
+
243
+ ### Testing with Other Package Managers
244
+
245
+ While CI uses Yarn, the gem supports all major package managers (npm, yarn, pnpm, bun). Generator specs test against all package managers to ensure compatibility.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shakapacker (8.0.2)
4
+ shakapacker (9.2.0)
5
5
  activesupport (>= 5.2)
6
6
  package_json
7
7
  rack-proxy (>= 0.6.1)
@@ -11,86 +11,82 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- actioncable (7.1.3.4)
15
- actionpack (= 7.1.3.4)
16
- activesupport (= 7.1.3.4)
14
+ actioncable (7.2.1)
15
+ actionpack (= 7.2.1)
16
+ activesupport (= 7.2.1)
17
17
  nio4r (~> 2.0)
18
18
  websocket-driver (>= 0.6.1)
19
19
  zeitwerk (~> 2.6)
20
- actionmailbox (7.1.3.4)
21
- actionpack (= 7.1.3.4)
22
- activejob (= 7.1.3.4)
23
- activerecord (= 7.1.3.4)
24
- activestorage (= 7.1.3.4)
25
- activesupport (= 7.1.3.4)
26
- mail (>= 2.7.1)
27
- net-imap
28
- net-pop
29
- net-smtp
30
- actionmailer (7.1.3.4)
31
- actionpack (= 7.1.3.4)
32
- actionview (= 7.1.3.4)
33
- activejob (= 7.1.3.4)
34
- activesupport (= 7.1.3.4)
35
- mail (~> 2.5, >= 2.5.4)
36
- net-imap
37
- net-pop
38
- net-smtp
20
+ actionmailbox (7.2.1)
21
+ actionpack (= 7.2.1)
22
+ activejob (= 7.2.1)
23
+ activerecord (= 7.2.1)
24
+ activestorage (= 7.2.1)
25
+ activesupport (= 7.2.1)
26
+ mail (>= 2.8.0)
27
+ actionmailer (7.2.1)
28
+ actionpack (= 7.2.1)
29
+ actionview (= 7.2.1)
30
+ activejob (= 7.2.1)
31
+ activesupport (= 7.2.1)
32
+ mail (>= 2.8.0)
39
33
  rails-dom-testing (~> 2.2)
40
- actionpack (7.1.3.4)
41
- actionview (= 7.1.3.4)
42
- activesupport (= 7.1.3.4)
34
+ actionpack (7.2.1)
35
+ actionview (= 7.2.1)
36
+ activesupport (= 7.2.1)
43
37
  nokogiri (>= 1.8.5)
44
38
  racc
45
- rack (>= 2.2.4)
39
+ rack (>= 2.2.4, < 3.2)
46
40
  rack-session (>= 1.0.1)
47
41
  rack-test (>= 0.6.3)
48
42
  rails-dom-testing (~> 2.2)
49
43
  rails-html-sanitizer (~> 1.6)
50
- actiontext (7.1.3.4)
51
- actionpack (= 7.1.3.4)
52
- activerecord (= 7.1.3.4)
53
- activestorage (= 7.1.3.4)
54
- activesupport (= 7.1.3.4)
44
+ useragent (~> 0.16)
45
+ actiontext (7.2.1)
46
+ actionpack (= 7.2.1)
47
+ activerecord (= 7.2.1)
48
+ activestorage (= 7.2.1)
49
+ activesupport (= 7.2.1)
55
50
  globalid (>= 0.6.0)
56
51
  nokogiri (>= 1.8.5)
57
- actionview (7.1.3.4)
58
- activesupport (= 7.1.3.4)
52
+ actionview (7.2.1)
53
+ activesupport (= 7.2.1)
59
54
  builder (~> 3.1)
60
55
  erubi (~> 1.11)
61
56
  rails-dom-testing (~> 2.2)
62
57
  rails-html-sanitizer (~> 1.6)
63
- activejob (7.1.3.4)
64
- activesupport (= 7.1.3.4)
58
+ activejob (7.2.1)
59
+ activesupport (= 7.2.1)
65
60
  globalid (>= 0.3.6)
66
- activemodel (7.1.3.4)
67
- activesupport (= 7.1.3.4)
68
- activerecord (7.1.3.4)
69
- activemodel (= 7.1.3.4)
70
- activesupport (= 7.1.3.4)
61
+ activemodel (7.2.1)
62
+ activesupport (= 7.2.1)
63
+ activerecord (7.2.1)
64
+ activemodel (= 7.2.1)
65
+ activesupport (= 7.2.1)
71
66
  timeout (>= 0.4.0)
72
- activestorage (7.1.3.4)
73
- actionpack (= 7.1.3.4)
74
- activejob (= 7.1.3.4)
75
- activerecord (= 7.1.3.4)
76
- activesupport (= 7.1.3.4)
67
+ activestorage (7.2.1)
68
+ actionpack (= 7.2.1)
69
+ activejob (= 7.2.1)
70
+ activerecord (= 7.2.1)
71
+ activesupport (= 7.2.1)
77
72
  marcel (~> 1.0)
78
- activesupport (7.1.3.4)
73
+ activesupport (7.2.1)
79
74
  base64
80
75
  bigdecimal
81
- concurrent-ruby (~> 1.0, >= 1.0.2)
76
+ concurrent-ruby (~> 1.0, >= 1.3.1)
82
77
  connection_pool (>= 2.2.5)
83
78
  drb
84
79
  i18n (>= 1.6, < 2)
80
+ logger (>= 1.4.2)
85
81
  minitest (>= 5.1)
86
- mutex_m
87
- tzinfo (~> 2.0)
82
+ securerandom (>= 0.3)
83
+ tzinfo (~> 2.0, >= 2.0.5)
88
84
  ast (2.4.2)
89
85
  base64 (0.2.0)
90
86
  bigdecimal (3.1.8)
91
87
  builder (3.3.0)
92
88
  byebug (11.1.3)
93
- concurrent-ruby (1.3.3)
89
+ concurrent-ruby (1.3.4)
94
90
  connection_pool (2.4.1)
95
91
  crass (1.0.6)
96
92
  date (3.3.4)
@@ -107,6 +103,7 @@ GEM
107
103
  reline (>= 0.4.2)
108
104
  json (2.7.2)
109
105
  language_server-protocol (3.17.0.3)
106
+ logger (1.6.0)
110
107
  loofah (2.22.0)
111
108
  crass (~> 1.0.2)
112
109
  nokogiri (>= 1.12.0)
@@ -118,9 +115,8 @@ GEM
118
115
  marcel (1.0.4)
119
116
  mini_mime (1.1.5)
120
117
  mini_portile2 (2.8.7)
121
- minitest (5.24.1)
122
- mutex_m (0.2.0)
123
- net-imap (0.4.14)
118
+ minitest (5.25.1)
119
+ net-imap (0.4.15)
124
120
  date
125
121
  net-protocol
126
122
  net-pop (0.1.2)
@@ -130,18 +126,18 @@ GEM
130
126
  net-smtp (0.5.0)
131
127
  net-protocol
132
128
  nio4r (2.7.3)
133
- nokogiri (1.16.6)
129
+ nokogiri (1.16.7)
134
130
  mini_portile2 (~> 2.8.2)
135
131
  racc (~> 1.4)
136
132
  package_json (0.1.0)
137
- parallel (1.25.1)
138
- parser (3.3.3.0)
133
+ parallel (1.26.3)
134
+ parser (3.3.4.2)
139
135
  ast (~> 2.4.1)
140
136
  racc
141
137
  psych (5.1.2)
142
138
  stringio
143
- racc (1.8.0)
144
- rack (3.1.6)
139
+ racc (1.8.1)
140
+ rack (3.1.7)
145
141
  rack-proxy (0.7.7)
146
142
  rack
147
143
  rack-session (2.0.0)
@@ -151,20 +147,20 @@ GEM
151
147
  rackup (2.1.0)
152
148
  rack (>= 3)
153
149
  webrick (~> 1.8)
154
- rails (7.1.3.4)
155
- actioncable (= 7.1.3.4)
156
- actionmailbox (= 7.1.3.4)
157
- actionmailer (= 7.1.3.4)
158
- actionpack (= 7.1.3.4)
159
- actiontext (= 7.1.3.4)
160
- actionview (= 7.1.3.4)
161
- activejob (= 7.1.3.4)
162
- activemodel (= 7.1.3.4)
163
- activerecord (= 7.1.3.4)
164
- activestorage (= 7.1.3.4)
165
- activesupport (= 7.1.3.4)
150
+ rails (7.2.1)
151
+ actioncable (= 7.2.1)
152
+ actionmailbox (= 7.2.1)
153
+ actionmailer (= 7.2.1)
154
+ actionpack (= 7.2.1)
155
+ actiontext (= 7.2.1)
156
+ actionview (= 7.2.1)
157
+ activejob (= 7.2.1)
158
+ activemodel (= 7.2.1)
159
+ activerecord (= 7.2.1)
160
+ activestorage (= 7.2.1)
161
+ activesupport (= 7.2.1)
166
162
  bundler (>= 1.15.0)
167
- railties (= 7.1.3.4)
163
+ railties (= 7.2.1)
168
164
  rails-dom-testing (2.2.0)
169
165
  activesupport (>= 5.0.0)
170
166
  minitest
@@ -172,10 +168,10 @@ GEM
172
168
  rails-html-sanitizer (1.6.0)
173
169
  loofah (~> 2.21)
174
170
  nokogiri (~> 1.14)
175
- railties (7.1.3.4)
176
- actionpack (= 7.1.3.4)
177
- activesupport (= 7.1.3.4)
178
- irb
171
+ railties (7.2.1)
172
+ actionpack (= 7.2.1)
173
+ activesupport (= 7.2.1)
174
+ irb (~> 1.13)
179
175
  rackup (>= 1.0.0)
180
176
  rake (>= 12.2)
181
177
  thor (~> 1.0, >= 1.2.2)
@@ -187,11 +183,9 @@ GEM
187
183
  regexp_parser (2.9.2)
188
184
  reline (0.5.9)
189
185
  io-console (~> 0.5)
190
- rexml (3.3.1)
191
- strscan
192
186
  rspec-core (3.13.0)
193
187
  rspec-support (~> 3.13.0)
194
- rspec-expectations (3.13.1)
188
+ rspec-expectations (3.13.2)
195
189
  diff-lcs (>= 1.2.0, < 2.0)
196
190
  rspec-support (~> 3.13.0)
197
191
  rspec-mocks (3.13.1)
@@ -206,36 +200,36 @@ GEM
206
200
  rspec-mocks (~> 3.12)
207
201
  rspec-support (~> 3.12)
208
202
  rspec-support (3.13.1)
209
- rubocop (1.64.1)
203
+ rubocop (1.66.0)
210
204
  json (~> 2.3)
211
205
  language_server-protocol (>= 3.17.0)
212
206
  parallel (~> 1.10)
213
207
  parser (>= 3.3.0.2)
214
208
  rainbow (>= 2.2.2, < 4.0)
215
- regexp_parser (>= 1.8, < 3.0)
216
- rexml (>= 3.2.5, < 4.0)
217
- rubocop-ast (>= 1.31.1, < 2.0)
209
+ regexp_parser (>= 2.4, < 3.0)
210
+ rubocop-ast (>= 1.32.1, < 2.0)
218
211
  ruby-progressbar (~> 1.7)
219
212
  unicode-display_width (>= 2.4.0, < 3.0)
220
- rubocop-ast (1.31.3)
213
+ rubocop-ast (1.32.1)
221
214
  parser (>= 3.3.1.0)
222
215
  rubocop-performance (1.21.1)
223
216
  rubocop (>= 1.48.1, < 2.0)
224
217
  rubocop-ast (>= 1.31.1, < 2.0)
225
218
  ruby-progressbar (1.13.0)
226
- semantic_range (3.0.0)
219
+ securerandom (0.3.1)
220
+ semantic_range (3.1.0)
227
221
  stringio (3.1.1)
228
- strscan (3.1.0)
229
- thor (1.3.1)
222
+ thor (1.3.2)
230
223
  timeout (0.4.1)
231
224
  tzinfo (2.0.6)
232
225
  concurrent-ruby (~> 1.0)
233
226
  unicode-display_width (2.5.0)
227
+ useragent (0.16.10)
234
228
  webrick (1.8.1)
235
229
  websocket-driver (0.7.6)
236
230
  websocket-extensions (>= 0.1.0)
237
231
  websocket-extensions (0.1.5)
238
- zeitwerk (2.6.16)
232
+ zeitwerk (2.6.17)
239
233
 
240
234
  PLATFORMS
241
235
  ruby
@@ -254,4 +248,4 @@ DEPENDENCIES
254
248
  shakapacker!
255
249
 
256
250
  BUNDLED WITH
257
- 2.5.9
251
+ 2.5.23