jpie 0.4.5 → 1.0.1

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/.cursor/rules/release.mdc +62 -0
  3. data/.gitignore +26 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +76 -107
  6. data/.travis.yml +7 -0
  7. data/Gemfile +23 -0
  8. data/Gemfile.lock +321 -0
  9. data/README.md +1508 -136
  10. data/Rakefile +3 -14
  11. data/bin/console +15 -0
  12. data/bin/setup +8 -0
  13. data/jpie.gemspec +21 -38
  14. data/kiln/app/resources/user_message_resource.rb +4 -0
  15. data/lib/jpie.rb +3 -25
  16. data/lib/json_api/active_storage/deserialization.rb +116 -0
  17. data/lib/json_api/active_storage/detection.rb +69 -0
  18. data/lib/json_api/active_storage/serialization.rb +34 -0
  19. data/lib/json_api/configuration.rb +57 -0
  20. data/lib/json_api/controllers/base_controller.rb +26 -0
  21. data/lib/json_api/controllers/concerns/controller_helpers/authorization.rb +30 -0
  22. data/lib/json_api/controllers/concerns/controller_helpers/document_meta.rb +20 -0
  23. data/lib/json_api/controllers/concerns/controller_helpers/error_rendering.rb +64 -0
  24. data/lib/json_api/controllers/concerns/controller_helpers/parsing.rb +127 -0
  25. data/lib/json_api/controllers/concerns/controller_helpers/resource_setup.rb +38 -0
  26. data/lib/json_api/controllers/concerns/controller_helpers.rb +19 -0
  27. data/lib/json_api/controllers/concerns/relationships/active_storage_removal.rb +65 -0
  28. data/lib/json_api/controllers/concerns/relationships/events.rb +44 -0
  29. data/lib/json_api/controllers/concerns/relationships/removal.rb +92 -0
  30. data/lib/json_api/controllers/concerns/relationships/response_helpers.rb +55 -0
  31. data/lib/json_api/controllers/concerns/relationships/serialization.rb +72 -0
  32. data/lib/json_api/controllers/concerns/relationships/sorting.rb +114 -0
  33. data/lib/json_api/controllers/concerns/relationships/updating.rb +73 -0
  34. data/lib/json_api/controllers/concerns/relationships_controller/active_storage_removal.rb +67 -0
  35. data/lib/json_api/controllers/concerns/relationships_controller/events.rb +44 -0
  36. data/lib/json_api/controllers/concerns/relationships_controller/removal.rb +92 -0
  37. data/lib/json_api/controllers/concerns/relationships_controller/response_helpers.rb +55 -0
  38. data/lib/json_api/controllers/concerns/relationships_controller/serialization.rb +72 -0
  39. data/lib/json_api/controllers/concerns/relationships_controller/sorting.rb +114 -0
  40. data/lib/json_api/controllers/concerns/relationships_controller/updating.rb +73 -0
  41. data/lib/json_api/controllers/concerns/resource_actions/crud_helpers.rb +93 -0
  42. data/lib/json_api/controllers/concerns/resource_actions/field_validation.rb +114 -0
  43. data/lib/json_api/controllers/concerns/resource_actions/filter_validation.rb +91 -0
  44. data/lib/json_api/controllers/concerns/resource_actions/pagination.rb +51 -0
  45. data/lib/json_api/controllers/concerns/resource_actions/preloading.rb +64 -0
  46. data/lib/json_api/controllers/concerns/resource_actions/resource_loading.rb +71 -0
  47. data/lib/json_api/controllers/concerns/resource_actions/serialization.rb +63 -0
  48. data/lib/json_api/controllers/concerns/resource_actions/type_validation.rb +75 -0
  49. data/lib/json_api/controllers/concerns/resource_actions.rb +106 -0
  50. data/lib/json_api/controllers/relationships_controller.rb +108 -0
  51. data/lib/json_api/controllers/resources_controller.rb +6 -0
  52. data/lib/json_api/errors/parameter_not_allowed.rb +19 -0
  53. data/lib/json_api/railtie.rb +112 -0
  54. data/lib/json_api/resources/active_storage_blob_resource.rb +19 -0
  55. data/lib/json_api/resources/concerns/attributes_dsl.rb +69 -0
  56. data/lib/json_api/resources/concerns/filters_dsl.rb +32 -0
  57. data/lib/json_api/resources/concerns/meta_dsl.rb +23 -0
  58. data/lib/json_api/resources/concerns/model_class_helpers.rb +37 -0
  59. data/lib/json_api/resources/concerns/relationships_dsl.rb +71 -0
  60. data/lib/json_api/resources/concerns/sortable_fields_dsl.rb +36 -0
  61. data/lib/json_api/resources/resource.rb +32 -0
  62. data/lib/json_api/resources/resource_loader.rb +35 -0
  63. data/lib/json_api/routing.rb +81 -0
  64. data/lib/json_api/serialization/concerns/attributes_deserialization.rb +27 -0
  65. data/lib/json_api/serialization/concerns/attributes_serialization.rb +50 -0
  66. data/lib/json_api/serialization/concerns/deserialization_helpers.rb +115 -0
  67. data/lib/json_api/serialization/concerns/includes_serialization.rb +82 -0
  68. data/lib/json_api/serialization/concerns/links_serialization.rb +33 -0
  69. data/lib/json_api/serialization/concerns/meta_serialization.rb +60 -0
  70. data/lib/json_api/serialization/concerns/model_attributes_transformation.rb +69 -0
  71. data/lib/json_api/serialization/concerns/relationship_processing.rb +119 -0
  72. data/lib/json_api/serialization/concerns/relationships_deserialization.rb +47 -0
  73. data/lib/json_api/serialization/concerns/relationships_serialization.rb +81 -0
  74. data/lib/json_api/serialization/deserializer.rb +26 -0
  75. data/lib/json_api/serialization/serializer.rb +77 -0
  76. data/lib/json_api/support/active_storage_support.rb +82 -0
  77. data/lib/json_api/support/collection_query.rb +50 -0
  78. data/lib/json_api/support/concerns/condition_building.rb +57 -0
  79. data/lib/json_api/support/concerns/nested_filters.rb +130 -0
  80. data/lib/json_api/support/concerns/pagination.rb +30 -0
  81. data/lib/json_api/support/concerns/polymorphic_filters.rb +75 -0
  82. data/lib/json_api/support/concerns/regular_filters.rb +81 -0
  83. data/lib/json_api/support/concerns/sorting.rb +88 -0
  84. data/lib/json_api/support/instrumentation.rb +43 -0
  85. data/lib/json_api/support/param_helpers.rb +54 -0
  86. data/lib/json_api/support/relationship_guard.rb +16 -0
  87. data/lib/json_api/support/relationship_helpers.rb +76 -0
  88. data/lib/json_api/support/resource_identifier.rb +87 -0
  89. data/lib/json_api/support/responders.rb +100 -0
  90. data/lib/json_api/support/response_helpers.rb +10 -0
  91. data/lib/json_api/support/sort_parsing.rb +21 -0
  92. data/lib/json_api/support/type_conversion.rb +21 -0
  93. data/lib/json_api/testing/test_helper.rb +76 -0
  94. data/lib/json_api/testing.rb +3 -0
  95. data/lib/{jpie → json_api}/version.rb +2 -2
  96. data/lib/json_api.rb +50 -0
  97. data/lib/rubocop/cop/custom/hash_value_omission.rb +53 -0
  98. metadata +100 -169
  99. data/.cursor/rules/dependencies.mdc +0 -19
  100. data/.cursor/rules/examples.mdc +0 -16
  101. data/.cursor/rules/git.mdc +0 -14
  102. data/.cursor/rules/project_structure.mdc +0 -30
  103. data/.cursor/rules/publish_gem.mdc +0 -73
  104. data/.cursor/rules/security.mdc +0 -14
  105. data/.cursor/rules/style.mdc +0 -15
  106. data/.cursor/rules/testing.mdc +0 -16
  107. data/.overcommit.yml +0 -35
  108. data/CHANGELOG.md +0 -164
  109. data/LICENSE.txt +0 -21
  110. data/PUBLISHING.md +0 -111
  111. data/examples/basic_example.md +0 -146
  112. data/examples/including_related_resources.md +0 -491
  113. data/examples/pagination.md +0 -303
  114. data/examples/relationships.md +0 -114
  115. data/examples/resource_attribute_configuration.md +0 -147
  116. data/examples/resource_meta_configuration.md +0 -244
  117. data/examples/rspec_testing.md +0 -130
  118. data/examples/single_table_inheritance.md +0 -160
  119. data/lib/jpie/configuration.rb +0 -12
  120. data/lib/jpie/controller/crud_actions.rb +0 -141
  121. data/lib/jpie/controller/error_handling/handler_setup.rb +0 -124
  122. data/lib/jpie/controller/error_handling/handlers.rb +0 -109
  123. data/lib/jpie/controller/error_handling.rb +0 -23
  124. data/lib/jpie/controller/json_api_validation.rb +0 -193
  125. data/lib/jpie/controller/parameter_parsing.rb +0 -78
  126. data/lib/jpie/controller/related_actions.rb +0 -45
  127. data/lib/jpie/controller/relationship_actions.rb +0 -291
  128. data/lib/jpie/controller/relationship_validation.rb +0 -117
  129. data/lib/jpie/controller/rendering.rb +0 -154
  130. data/lib/jpie/controller.rb +0 -45
  131. data/lib/jpie/deserializer.rb +0 -110
  132. data/lib/jpie/errors.rb +0 -117
  133. data/lib/jpie/generators/resource_generator.rb +0 -116
  134. data/lib/jpie/generators/templates/resource.rb.erb +0 -31
  135. data/lib/jpie/railtie.rb +0 -42
  136. data/lib/jpie/resource/attributable.rb +0 -112
  137. data/lib/jpie/resource/inferrable.rb +0 -43
  138. data/lib/jpie/resource/sortable.rb +0 -93
  139. data/lib/jpie/resource.rb +0 -147
  140. data/lib/jpie/routing.rb +0 -59
  141. data/lib/jpie/serializer.rb +0 -205
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47016b3f031cd5322fecf012737f1aaace980414f3ed27dd18f54e21e5c5b76b
4
- data.tar.gz: 7f8164b1e49018f93838740dcf64d79c331608095e1aa6c58e6c3fbf756ce1b8
3
+ metadata.gz: a8d19fff52264fdefbdba8d63bae64a532cbd2daddfdcfbfaa9ffd205d028822
4
+ data.tar.gz: c10827822e1638a8e0690a8432709a0cfc7d3fc5d82a845e276d74c66f8761c3
5
5
  SHA512:
6
- metadata.gz: 81b14fd2264f3a2b930deec1f9328fea96c6b89e8fd0a2ef60379ec245789503304f013c442ff6e23b1eee304a8e3d34c064b8535a51edcbcf505b108f63acff
7
- data.tar.gz: aad90976a22a42d6dcc038edfb0a28ef5f2a4923cf7a8d5083ad6d9c55198c93c59aab7b94cce408057597219f50f4f8ecad18651f7a774821d5906601be55e9
6
+ metadata.gz: 7693f48c7c20c4879478a72e233c092dd4e0a90e1ca038129b3c3d2821d2d07d0cfa50bd73b166c2c5235e2e580869b989fce91928916b2df671e397811002d7
7
+ data.tar.gz: 859af674c3a0eca429e86ed566df855141806b1d26d15f7dacfa2fad5ab93699957a9c30e218199bb04152b6ab865e690c0ed1cf54296ebc9fe58de0fd967dc2
@@ -0,0 +1,62 @@
1
+ ---
2
+ description: Rules for releasing the jpie gem to RubyGems
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Gem Release Rules
7
+
8
+ ## Core Principles
9
+
10
+ - **OTP Authentication Required**: RubyGems release requires OTP (One-Time Password) codes for authentication
11
+ - **Interactive Release Flow**: The `rake release` command will prompt for an OTP code during push to RubyGems
12
+ - **Cannot be fully automated**: Due to OTP requirements, gem releases require human interaction
13
+ - **Tests and Linting Must Pass**: Both `rspec` and `rubocop` must pass before releasing
14
+
15
+ ## Release Process
16
+
17
+ ### Steps
18
+
19
+ 1. Bump the version in `lib/json_api/version.rb`
20
+ 2. Run tests to ensure everything passes: `bundle exec rspec`
21
+ 3. Run linting to ensure code quality: `bundle exec rubocop`
22
+ 4. Commit the version bump (include `Gemfile.lock` changes)
23
+ 5. Run `bundle exec rake release` which will:
24
+ - Build the gem
25
+ - Create a git tag
26
+ - Push the tag to the remote
27
+ - Push the gem to RubyGems (requires OTP code entry)
28
+
29
+ ### OTP Code Entry
30
+
31
+ When running `rake release`, you will be prompted:
32
+
33
+ ```
34
+ Enter OTP code:
35
+ ```
36
+
37
+ Enter your RubyGems authenticator OTP code to complete the release.
38
+
39
+ ## Implementation Guidelines
40
+
41
+ ### Version Bump
42
+
43
+ ```ruby
44
+ # lib/json_api/version.rb
45
+ module JSONAPI
46
+ VERSION = "x.y.z" # Update patch/minor/major as needed
47
+ end
48
+ ```
49
+
50
+ ### Release Command
51
+
52
+ ```bash
53
+ bundle exec rake release
54
+ ```
55
+
56
+ ## Best Practices
57
+
58
+ - Always run the full test suite (`bundle exec rspec`) before releasing - it must pass
59
+ - Always run linting (`bundle exec rubocop`) before releasing - it must pass
60
+ - Ensure `Gemfile.lock` is committed with version changes
61
+ - Have your authenticator app ready for the OTP prompt
62
+ - Verify the release on rubygems.org after completion
data/.gitignore ADDED
@@ -0,0 +1,26 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # Gem builds
11
+ *.gem
12
+
13
+ # rspec failure tracking
14
+ .rspec_status
15
+
16
+ # test log files
17
+ spec/dummy/log/*.log
18
+ spec/dummy/log/*.log.*
19
+
20
+ # dummy app tmp directory
21
+ spec/dummy/tmp/
22
+
23
+ # SQLite test databases
24
+ spec/dummy/db/*.sqlite3
25
+ spec/dummy/db/*.sqlite3-shm
26
+ spec/dummy/db/*.sqlite3-wal
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,140 +1,109 @@
1
- # frozen_string_literal: true
2
-
3
- require:
4
- - rubocop-performance
5
- - rubocop-rails
1
+ plugins:
6
2
  - rubocop-rspec
3
+ - rubocop-performance
7
4
 
8
5
  AllCops:
9
- TargetRubyVersion: 3.4
10
- TargetRailsVersion: 8.0
11
6
  NewCops: enable
7
+ TargetRubyVersion: 3.4
8
+ SuggestExtensions: false
12
9
  Exclude:
13
- - 'vendor/**/*'
14
- - 'bin/**/*'
15
- - 'db/schema.rb'
16
- - 'tmp/**/*'
17
- - 'spec/examples.txt'
10
+ - "bin/**/*"
11
+ - "pkg/**/*"
12
+ - "tmp/**/*"
13
+ - "vendor/**/*"
14
+ - "spec/dummy/db/schema.rb"
15
+ - "spec/dummy/db/migrate/**/*"
16
+ - "spec/dummy/tmp/**/*"
17
+ - "spec/dummy/log/**/*"
18
+
19
+ # Gem-specific: ensure dev dependencies are in gemspec
20
+ Gemspec/DevelopmentDependencies:
21
+ Enabled: true
22
+ EnforcedStyle: gemspec
18
23
 
24
+ # Layout
19
25
  Layout/LineLength:
20
26
  Max: 120
21
- AllowedPatterns: ['\A\s*#']
22
-
23
- Style/Documentation:
24
- Enabled: false
25
-
26
- Style/StringLiterals:
27
- EnforcedStyle: single_quotes
28
-
29
- Style/StringLiteralsInInterpolation:
30
- EnforcedStyle: single_quotes
31
-
32
- # Naming cops
33
- Naming/PredicateName:
34
- AllowedMethods:
35
- - has_many # DSL method for defining relationships
36
- - has_one # DSL method for defining relationships
27
+ AllowedPatterns:
28
+ - "^\\s*#" # Allow long comments
29
+ Exclude:
30
+ - "spec/**/*"
37
31
 
38
- Metrics/ClassLength:
39
- Max: 150
32
+ Layout/MultilineMethodCallIndentation:
33
+ EnforcedStyle: indented
40
34
 
41
- Metrics/ModuleLength:
42
- Max: 150
35
+ Layout/FirstArrayElementIndentation:
36
+ EnforcedStyle: consistent
43
37
 
44
- Metrics/MethodLength:
45
- Max: 20
38
+ Layout/FirstHashElementIndentation:
39
+ EnforcedStyle: consistent
46
40
 
41
+ # Metrics - exclude spec and gemspec blocks only
47
42
  Metrics/BlockLength:
48
43
  Exclude:
49
- - 'spec/**/*'
50
- - '*.gemspec'
51
- - 'lib/jpie/resource/**/*' # Resource modules have large class_methods blocks for DSL methods
52
- - 'lib/jpie/controller/**/*' # Controller modules have large class_methods blocks for DSL methods
53
-
54
- # Rails cops that don't apply to our gem
55
- Rails/TimeZone:
56
- Enabled: false
44
+ - "spec/**/*"
45
+ - "*.gemspec"
46
+ - "Rakefile"
57
47
 
58
- Rails/ApplicationRecord:
59
- Enabled: false
48
+ Metrics/ParameterLists:
49
+ CountKeywordArgs: false
60
50
 
61
- # Gemspec cops that are acceptable for gems
62
- Gemspec/DevelopmentDependencies:
51
+ # Naming - allow DSL methods
52
+ Naming/PredicatePrefix:
53
+ AllowedMethods:
54
+ - is_a?
55
+ - has_key?
56
+ - has_value?
57
+ - has_one
58
+ - has_many
59
+ - has_setter?
60
+ - has_id?
61
+ - has_type?
62
+
63
+ # Style
64
+ Style/Documentation:
63
65
  Enabled: false
64
66
 
65
- # Capybara cops that are causing issues (rubocop bug)
66
- Capybara/RSpec/PredicateMatcher:
67
+ Style/DocumentationMethod:
67
68
  Enabled: false
68
69
 
69
- # RSpec cops that are acceptable for our test style
70
- RSpec/ExampleLength:
71
- Max: 30
72
-
73
- RSpec/MultipleExpectations:
74
- Max: 8 # Allow more expectations for complex integration tests
75
-
76
- RSpec/MultipleMemoizedHelpers:
77
- Max: 20 # Allow more helpers for complex test scenarios
78
-
79
- RSpec/NestedGroups:
80
- Max: 4
81
-
82
- RSpec/DescribeClass:
83
- Exclude:
84
- - 'spec/**/*_integration_spec.rb'
85
- - 'spec/**/*_spec.rb' # Allow integration and feature tests without class specification
86
-
87
- RSpec/ContextWording:
88
- Enabled: false # Allow flexible context descriptions for better readability
89
-
90
- RSpec/IndexedLet:
91
- Enabled: false # Allow indexed let statements for test data setup
92
-
93
- RSpec/LetSetup:
94
- Enabled: false # Allow let! for test data setup
95
-
96
- RSpec/StubbedMock:
97
- Enabled: false # Allow expect().to receive for test clarity
98
-
99
- RSpec/IteratedExpectation:
100
- Enabled: false # Allow iteration over arrays in tests
101
-
102
- RSpec/InstanceVariable:
103
- Enabled: false # Allow instance variables in tests for setup
70
+ Style/StringLiterals:
71
+ EnforcedStyle: double_quotes
104
72
 
105
- RSpec/FilePath:
106
- Enabled: false
73
+ Style/StringLiteralsInInterpolation:
74
+ EnforcedStyle: double_quotes
107
75
 
108
- RSpec/SpecFilePathFormat:
109
- Enabled: false
76
+ Style/FrozenStringLiteralComment:
77
+ EnforcedStyle: always
110
78
 
111
- RSpec/MultipleDescribes:
112
- Enabled: false
79
+ Style/TrailingCommaInArrayLiteral:
80
+ EnforcedStyleForMultiline: consistent_comma
113
81
 
114
- RSpec/LeakyConstantDeclaration:
115
- Enabled: false
82
+ Style/TrailingCommaInHashLiteral:
83
+ EnforcedStyleForMultiline: consistent_comma
116
84
 
117
- RSpec/VerifiedDoubles:
118
- Enabled: false
85
+ Style/TrailingCommaInArguments:
86
+ EnforcedStyleForMultiline: consistent_comma
119
87
 
120
- RSpec/MessageSpies:
121
- Enabled: false
88
+ Style/HashSyntax:
89
+ EnforcedShorthandSyntax: either
122
90
 
123
- # Style cops that are acceptable for test code
124
- Style/OpenStructUse:
91
+ # Lint - file-specific exclusions
92
+ Lint/UnusedBlockArgument:
125
93
  Exclude:
126
- - 'spec/**/*'
94
+ - "spec/jsonapi/authorization_spec.rb"
127
95
 
128
- # Lint cops that are acceptable for test initialization methods
129
- Lint/MissingSuper:
96
+ # RSpec - file-specific exclusions
97
+ RSpec/DescribedClass:
130
98
  Exclude:
131
- - 'spec/**/*'
99
+ - "spec/jsonapi/base_controller_spec.rb"
132
100
 
133
- Lint/ConstantDefinitionInBlock:
101
+ # Allow deeper nesting in complex integration specs
102
+ RSpec/NestedGroups:
103
+ Max: 4
134
104
  Exclude:
135
- - 'spec/**/*'
105
+ - "spec/jsonapi_spec/active_storage_spec.rb"
136
106
 
137
- # Rails cops that we can ignore in test support files
138
- Rails/SkipsModelValidations:
139
- Exclude:
140
- - 'spec/**/*'
107
+ # Allow more memoized helpers in complex specs
108
+ RSpec/MultipleMemoizedHelpers:
109
+ Max: 8
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.6.10
7
+ before_install: gem install bundler -v 1.17.2
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ # Specify your gem's dependencies in json_api.gemspec
8
+ gemspec
9
+
10
+ group :development, :test do
11
+ gem "appraisal", "~> 2.4"
12
+ gem "bundler", "~> 2.0"
13
+ gem "json_schemer", "~> 2.4"
14
+ gem "pundit", "~> 2.3"
15
+ gem "rake", "~> 13.0"
16
+ gem "rspec", "~> 3.12"
17
+ gem "rspec-rails", "~> 6.0"
18
+ gem "rubocop", "~> 1.0"
19
+ gem "rubocop-performance", "~> 1.0"
20
+ gem "rubocop-rails", "~> 2.0"
21
+ gem "rubocop-rspec", "~> 3.0"
22
+ gem "sqlite3", ">= 2.1"
23
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,321 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ jpie (1.0.1)
5
+ actionpack (~> 8.0, >= 8.0.0)
6
+ rails (~> 8.0, >= 8.0.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ action_text-trix (2.1.15)
12
+ railties
13
+ actioncable (8.1.1)
14
+ actionpack (= 8.1.1)
15
+ activesupport (= 8.1.1)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ zeitwerk (~> 2.6)
19
+ actionmailbox (8.1.1)
20
+ actionpack (= 8.1.1)
21
+ activejob (= 8.1.1)
22
+ activerecord (= 8.1.1)
23
+ activestorage (= 8.1.1)
24
+ activesupport (= 8.1.1)
25
+ mail (>= 2.8.0)
26
+ actionmailer (8.1.1)
27
+ actionpack (= 8.1.1)
28
+ actionview (= 8.1.1)
29
+ activejob (= 8.1.1)
30
+ activesupport (= 8.1.1)
31
+ mail (>= 2.8.0)
32
+ rails-dom-testing (~> 2.2)
33
+ actionpack (8.1.1)
34
+ actionview (= 8.1.1)
35
+ activesupport (= 8.1.1)
36
+ nokogiri (>= 1.8.5)
37
+ rack (>= 2.2.4)
38
+ rack-session (>= 1.0.1)
39
+ rack-test (>= 0.6.3)
40
+ rails-dom-testing (~> 2.2)
41
+ rails-html-sanitizer (~> 1.6)
42
+ useragent (~> 0.16)
43
+ actiontext (8.1.1)
44
+ action_text-trix (~> 2.1.15)
45
+ actionpack (= 8.1.1)
46
+ activerecord (= 8.1.1)
47
+ activestorage (= 8.1.1)
48
+ activesupport (= 8.1.1)
49
+ globalid (>= 0.6.0)
50
+ nokogiri (>= 1.8.5)
51
+ actionview (8.1.1)
52
+ activesupport (= 8.1.1)
53
+ builder (~> 3.1)
54
+ erubi (~> 1.11)
55
+ rails-dom-testing (~> 2.2)
56
+ rails-html-sanitizer (~> 1.6)
57
+ activejob (8.1.1)
58
+ activesupport (= 8.1.1)
59
+ globalid (>= 0.3.6)
60
+ activemodel (8.1.1)
61
+ activesupport (= 8.1.1)
62
+ activerecord (8.1.1)
63
+ activemodel (= 8.1.1)
64
+ activesupport (= 8.1.1)
65
+ timeout (>= 0.4.0)
66
+ activestorage (8.1.1)
67
+ actionpack (= 8.1.1)
68
+ activejob (= 8.1.1)
69
+ activerecord (= 8.1.1)
70
+ activesupport (= 8.1.1)
71
+ marcel (~> 1.0)
72
+ activesupport (8.1.1)
73
+ base64
74
+ bigdecimal
75
+ concurrent-ruby (~> 1.0, >= 1.3.1)
76
+ connection_pool (>= 2.2.5)
77
+ drb
78
+ i18n (>= 1.6, < 2)
79
+ json
80
+ logger (>= 1.4.2)
81
+ minitest (>= 5.1)
82
+ securerandom (>= 0.3)
83
+ tzinfo (~> 2.0, >= 2.0.5)
84
+ uri (>= 0.13.1)
85
+ appraisal (2.5.0)
86
+ bundler
87
+ rake
88
+ thor (>= 0.14.0)
89
+ ast (2.4.3)
90
+ base64 (0.3.0)
91
+ bigdecimal (3.3.1)
92
+ builder (3.3.0)
93
+ concurrent-ruby (1.3.5)
94
+ connection_pool (2.5.4)
95
+ crass (1.0.6)
96
+ date (3.5.0)
97
+ diff-lcs (1.6.2)
98
+ drb (2.2.3)
99
+ erb (6.0.0)
100
+ erubi (1.13.1)
101
+ globalid (1.3.0)
102
+ activesupport (>= 6.1)
103
+ hana (1.3.7)
104
+ i18n (1.14.7)
105
+ concurrent-ruby (~> 1.0)
106
+ io-console (0.8.1)
107
+ irb (1.15.3)
108
+ pp (>= 0.6.0)
109
+ rdoc (>= 4.0.0)
110
+ reline (>= 0.4.2)
111
+ json (2.16.0)
112
+ json_schemer (2.4.0)
113
+ bigdecimal
114
+ hana (~> 1.3)
115
+ regexp_parser (~> 2.0)
116
+ simpleidn (~> 0.2)
117
+ language_server-protocol (3.17.0.5)
118
+ lint_roller (1.1.0)
119
+ logger (1.7.0)
120
+ loofah (2.24.1)
121
+ crass (~> 1.0.2)
122
+ nokogiri (>= 1.12.0)
123
+ mail (2.9.0)
124
+ logger
125
+ mini_mime (>= 0.1.1)
126
+ net-imap
127
+ net-pop
128
+ net-smtp
129
+ marcel (1.1.0)
130
+ mini_mime (1.1.5)
131
+ minitest (5.26.2)
132
+ net-imap (0.5.12)
133
+ date
134
+ net-protocol
135
+ net-pop (0.1.2)
136
+ net-protocol
137
+ net-protocol (0.2.2)
138
+ timeout
139
+ net-smtp (0.5.1)
140
+ net-protocol
141
+ nio4r (2.7.5)
142
+ nokogiri (1.18.10-aarch64-linux-gnu)
143
+ racc (~> 1.4)
144
+ nokogiri (1.18.10-aarch64-linux-musl)
145
+ racc (~> 1.4)
146
+ nokogiri (1.18.10-arm-linux-gnu)
147
+ racc (~> 1.4)
148
+ nokogiri (1.18.10-arm-linux-musl)
149
+ racc (~> 1.4)
150
+ nokogiri (1.18.10-arm64-darwin)
151
+ racc (~> 1.4)
152
+ nokogiri (1.18.10-x86_64-darwin)
153
+ racc (~> 1.4)
154
+ nokogiri (1.18.10-x86_64-linux-gnu)
155
+ racc (~> 1.4)
156
+ nokogiri (1.18.10-x86_64-linux-musl)
157
+ racc (~> 1.4)
158
+ parallel (1.27.0)
159
+ parser (3.3.10.0)
160
+ ast (~> 2.4.1)
161
+ racc
162
+ pp (0.6.3)
163
+ prettyprint
164
+ prettyprint (0.2.0)
165
+ prism (1.6.0)
166
+ psych (5.2.6)
167
+ date
168
+ stringio
169
+ pundit (2.5.2)
170
+ activesupport (>= 3.0.0)
171
+ racc (1.8.1)
172
+ rack (3.2.4)
173
+ rack-session (2.1.1)
174
+ base64 (>= 0.1.0)
175
+ rack (>= 3.0.0)
176
+ rack-test (2.2.0)
177
+ rack (>= 1.3)
178
+ rackup (2.2.1)
179
+ rack (>= 3)
180
+ rails (8.1.1)
181
+ actioncable (= 8.1.1)
182
+ actionmailbox (= 8.1.1)
183
+ actionmailer (= 8.1.1)
184
+ actionpack (= 8.1.1)
185
+ actiontext (= 8.1.1)
186
+ actionview (= 8.1.1)
187
+ activejob (= 8.1.1)
188
+ activemodel (= 8.1.1)
189
+ activerecord (= 8.1.1)
190
+ activestorage (= 8.1.1)
191
+ activesupport (= 8.1.1)
192
+ bundler (>= 1.15.0)
193
+ railties (= 8.1.1)
194
+ rails-dom-testing (2.3.0)
195
+ activesupport (>= 5.0.0)
196
+ minitest
197
+ nokogiri (>= 1.6)
198
+ rails-html-sanitizer (1.6.2)
199
+ loofah (~> 2.21)
200
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
201
+ railties (8.1.1)
202
+ actionpack (= 8.1.1)
203
+ activesupport (= 8.1.1)
204
+ irb (~> 1.13)
205
+ rackup (>= 1.0.0)
206
+ rake (>= 12.2)
207
+ thor (~> 1.0, >= 1.2.2)
208
+ tsort (>= 0.2)
209
+ zeitwerk (~> 2.6)
210
+ rainbow (3.1.1)
211
+ rake (13.3.1)
212
+ rdoc (6.15.1)
213
+ erb
214
+ psych (>= 4.0.0)
215
+ tsort
216
+ regexp_parser (2.11.3)
217
+ reline (0.6.3)
218
+ io-console (~> 0.5)
219
+ rspec (3.13.2)
220
+ rspec-core (~> 3.13.0)
221
+ rspec-expectations (~> 3.13.0)
222
+ rspec-mocks (~> 3.13.0)
223
+ rspec-core (3.13.6)
224
+ rspec-support (~> 3.13.0)
225
+ rspec-expectations (3.13.5)
226
+ diff-lcs (>= 1.2.0, < 2.0)
227
+ rspec-support (~> 3.13.0)
228
+ rspec-mocks (3.13.7)
229
+ diff-lcs (>= 1.2.0, < 2.0)
230
+ rspec-support (~> 3.13.0)
231
+ rspec-rails (6.1.5)
232
+ actionpack (>= 6.1)
233
+ activesupport (>= 6.1)
234
+ railties (>= 6.1)
235
+ rspec-core (~> 3.13)
236
+ rspec-expectations (~> 3.13)
237
+ rspec-mocks (~> 3.13)
238
+ rspec-support (~> 3.13)
239
+ rspec-support (3.13.6)
240
+ rubocop (1.81.7)
241
+ json (~> 2.3)
242
+ language_server-protocol (~> 3.17.0.2)
243
+ lint_roller (~> 1.1.0)
244
+ parallel (~> 1.10)
245
+ parser (>= 3.3.0.2)
246
+ rainbow (>= 2.2.2, < 4.0)
247
+ regexp_parser (>= 2.9.3, < 3.0)
248
+ rubocop-ast (>= 1.47.1, < 2.0)
249
+ ruby-progressbar (~> 1.7)
250
+ unicode-display_width (>= 2.4.0, < 4.0)
251
+ rubocop-ast (1.48.0)
252
+ parser (>= 3.3.7.2)
253
+ prism (~> 1.4)
254
+ rubocop-performance (1.26.1)
255
+ lint_roller (~> 1.1)
256
+ rubocop (>= 1.75.0, < 2.0)
257
+ rubocop-ast (>= 1.47.1, < 2.0)
258
+ rubocop-rails (2.34.0)
259
+ activesupport (>= 4.2.0)
260
+ lint_roller (~> 1.1)
261
+ rack (>= 1.1)
262
+ rubocop (>= 1.75.0, < 2.0)
263
+ rubocop-ast (>= 1.44.0, < 2.0)
264
+ rubocop-rspec (3.8.0)
265
+ lint_roller (~> 1.1)
266
+ rubocop (~> 1.81)
267
+ ruby-progressbar (1.13.0)
268
+ securerandom (0.4.1)
269
+ simpleidn (0.2.3)
270
+ sqlite3 (2.8.0-aarch64-linux-gnu)
271
+ sqlite3 (2.8.0-aarch64-linux-musl)
272
+ sqlite3 (2.8.0-arm-linux-gnu)
273
+ sqlite3 (2.8.0-arm-linux-musl)
274
+ sqlite3 (2.8.0-arm64-darwin)
275
+ sqlite3 (2.8.0-x86_64-darwin)
276
+ sqlite3 (2.8.0-x86_64-linux-gnu)
277
+ sqlite3 (2.8.0-x86_64-linux-musl)
278
+ stringio (3.1.8)
279
+ thor (1.4.0)
280
+ timeout (0.4.4)
281
+ tsort (0.2.0)
282
+ tzinfo (2.0.6)
283
+ concurrent-ruby (~> 1.0)
284
+ unicode-display_width (3.2.0)
285
+ unicode-emoji (~> 4.1)
286
+ unicode-emoji (4.1.0)
287
+ uri (1.1.1)
288
+ useragent (0.16.11)
289
+ websocket-driver (0.8.0)
290
+ base64
291
+ websocket-extensions (>= 0.1.0)
292
+ websocket-extensions (0.1.5)
293
+ zeitwerk (2.7.3)
294
+
295
+ PLATFORMS
296
+ aarch64-linux-gnu
297
+ aarch64-linux-musl
298
+ arm-linux-gnu
299
+ arm-linux-musl
300
+ arm64-darwin
301
+ x86_64-darwin
302
+ x86_64-linux-gnu
303
+ x86_64-linux-musl
304
+
305
+ DEPENDENCIES
306
+ appraisal (~> 2.4)
307
+ bundler (~> 2.0)
308
+ jpie!
309
+ json_schemer (~> 2.4)
310
+ pundit (~> 2.3)
311
+ rake (~> 13.0)
312
+ rspec (~> 3.12)
313
+ rspec-rails (~> 6.0)
314
+ rubocop (~> 1.0)
315
+ rubocop-performance (~> 1.0)
316
+ rubocop-rails (~> 2.0)
317
+ rubocop-rspec (~> 3.0)
318
+ sqlite3 (>= 2.1)
319
+
320
+ BUNDLED WITH
321
+ 2.7.2