api_adaptor 0.0.2 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d434d1287d28256b67543919c32dba816a5c6a682247108a985eee72ac7ca86c
4
- data.tar.gz: e386558347941960b7c54bbd0107381202bfcf4c8318c0ac3908cf2bd3e1c99a
3
+ metadata.gz: a7f99a36581d23c2d20acb77209e83094d0376abfebbe485961c716ad5a2996e
4
+ data.tar.gz: d247399af57052605021e37293944d92da841351f958d45ea7f00153b1a075c7
5
5
  SHA512:
6
- metadata.gz: 3ee873a96fa726a95caf41861a683abc276571b3a6424ae44f7ede1c0cc27e242de879b7f8f73930f10c0347d60ff6d31595ba55235a5be1a39e36208359e524
7
- data.tar.gz: 0a42e0ded563c8f1b9cab2433c8f3f5ca5160da8df923deb80382ecb3736012fa0a136d53799b4681011f6723c18eceaf5fd9e3e2ee853071ca4d38a9903b1ba
6
+ metadata.gz: fe8f8c29cfad7facd7b38ec9d7d1ca7076fa603a881ee19cff99d937f6911857c8b5b288ba1e2d49c7c71ccfc6ad8dd5e206bc28133548711cc7b4b7242ac6d8
7
+ data.tar.gz: fc13ade3b00830ee758141678ed28928d8fb4111bb241b25ac2e281064056b4fb9835ccef407779e9465a2f74bd67b68133d552fa82f001d940cd7a34814687c
data/.rubocop.yml CHANGED
@@ -1,5 +1,10 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 3.2
3
+ NewCops: disable
4
+ SuggestExtensions: false
5
+
6
+ plugins:
7
+ - rubocop-yard
3
8
 
4
9
  Style/StringLiterals:
5
10
  Enabled: true
@@ -10,13 +15,7 @@ Style/StringLiteralsInInterpolation:
10
15
  EnforcedStyle: double_quotes
11
16
 
12
17
  Layout/LineLength:
13
- Max: 120
14
-
15
- Metrics:
16
18
  Enabled: false
17
19
 
18
- Style/Documentation:
20
+ Metrics:
19
21
  Enabled: false
20
-
21
- Layout/LineLength:
22
- Enabled: false
data/.yardopts ADDED
@@ -0,0 +1,10 @@
1
+ --markup markdown
2
+ --markup-provider redcarpet
3
+ --output-dir doc
4
+ --readme README.md
5
+ --no-private
6
+ --protected
7
+ lib/**/*.rb
8
+ -
9
+ README.md
10
+ CLAUDE.md
data/CHANGELOG.md CHANGED
@@ -1,4 +1,45 @@
1
- ## [Unreleased]
1
+ ## [1.0.0] - 2026-02-15
2
+
3
+ ### Added
4
+ - YARD documentation for all public APIs (100% coverage)
5
+ - YARD documentation deployment to GitHub Pages
6
+ - CLAUDE.md development guide for AI assistants and contributors
7
+ - rubocop-yard plugin for documentation linting
8
+ - API Documentation section in README with links to hosted docs
9
+ - Development section in README with testing, coverage, and documentation commands
10
+ - Troubleshooting section in README for common issues
11
+ - Badges in README for CI status, gem version, and documentation
12
+
13
+ ### Changed
14
+ - README enhanced with wikidata_adaptor best practices
15
+ - Default Rake task now includes YARD documentation generation
16
+ - RuboCop now enforces documentation standards via rubocop-yard
17
+ - GitHub Actions updated to use consistent SHA pinning across all workflows
18
+ - All development dependencies updated to latest compatible versions
19
+
20
+ ### Fixed
21
+ - Standardized GitHub Actions versions across all workflows
22
+ - Updated ruby/setup-ruby to v1.288.0 in all workflows
23
+ - Updated rubygems/release-gem to v1.1.2 in release workflow
24
+ - Updated actions/configure-pages to v5.0.0 in pages workflow
25
+ - Updated actions/upload-pages-artifact to v4.0.0 in pages workflow
26
+ - Updated actions/deploy-pages to v4.0.5 in pages workflow
27
+ - Fixed invalid date format in CHANGELOG (2025-31-01 → 2025-01-31)
28
+
29
+ ## [0.1.0] - 2025-01-31
30
+
31
+ - Improvements to 307, 308 redirect behaviour
32
+ - Greater configuration over redirect behaviour
33
+ - Add CI/CD to Rubygems
34
+ - Test against Ruby v4.0
35
+
36
+ ## [0.0.2] - 2024-14-01
37
+
38
+ - Improvements to CI/CD
39
+ - Enable CodeQL
40
+ - Enable Dependabot
41
+ - Enable Rubocop Testing
42
+ - Enable unit testing against Ruby v3.2, v3.3, v3.4
2
43
 
3
44
  ## [0.0.1] - 2023-06-01
4
45
 
data/CLAUDE.md ADDED
@@ -0,0 +1,423 @@
1
+ # CLAUDE.md - Developer Guide for api_adaptor
2
+
3
+ This guide is for AI assistants and human contributors working on api_adaptor. It provides context about the project's architecture, conventions, and development workflow.
4
+
5
+ ## Overview
6
+
7
+ **api_adaptor** is a Ruby gem that provides a basic HTTP client adaptor for JSON APIs. It handles common patterns like request/response parsing, redirects, error handling, and pagination, allowing developers to quickly build API clients without repetitive boilerplate.
8
+
9
+ ### Key Features
10
+
11
+ - JSON request/response handling with automatic parsing
12
+ - Configurable redirect handling (cross-origin, non-GET requests)
13
+ - Bearer token and basic authentication support
14
+ - Pagination support via `ListResponse`
15
+ - Cache-Control header parsing
16
+ - Comprehensive exception hierarchy for HTTP errors
17
+ - Thread-safe connection pooling via rest-client
18
+
19
+ ### Architecture
20
+
21
+ - **JSONClient**: Core HTTP client with redirect handling and authentication
22
+ - **Base**: Abstract base class for building API-specific clients
23
+ - **Response/ListResponse**: Wrapper classes for parsed responses
24
+ - **Headers**: Manages request headers including User-Agent
25
+ - **Variables**: Environment variable configuration for app metadata
26
+ - **Exceptions**: HTTP error hierarchy
27
+
28
+ ## Commands
29
+
30
+ ### Development
31
+
32
+ ```bash
33
+ bundle install # Install dependencies
34
+ bundle exec rspec # Run tests
35
+ bundle exec rubocop # Run linter
36
+ bundle exec rake # Run tests + linter + generate docs (default)
37
+ ```
38
+
39
+ ### Documentation
40
+
41
+ ```bash
42
+ bundle exec yard # Generate YARD documentation to doc/
43
+ bundle exec yard server # Preview docs at http://localhost:8808
44
+ bundle exec yard stats # View documentation coverage
45
+ ```
46
+
47
+ ### Coverage
48
+
49
+ ```bash
50
+ bundle exec rspec # Generates coverage report
51
+ open coverage/index.html # View coverage report
52
+ ```
53
+
54
+ ### Release
55
+
56
+ ```bash
57
+ # Manual release (not recommended - use GitHub Actions)
58
+ bundle exec rake release # Build gem, create git tag, push to RubyGems
59
+
60
+ # Automated release (recommended)
61
+ git tag v1.0.0 # Create version tag
62
+ git push origin v1.0.0 # Push tag to trigger release workflow
63
+ ```
64
+
65
+ ## Project Structure
66
+
67
+ ### Core Files
68
+
69
+ ```
70
+ lib/
71
+ ├── api_adaptor.rb # Main entry point, loads all components
72
+ ├── api_adaptor/
73
+ │ ├── version.rb # VERSION constant
74
+ │ ├── json_client.rb # HTTP client with JSON parsing
75
+ │ ├── base.rb # Base class for API clients
76
+ │ ├── response.rb # Response wrapper with cache control
77
+ │ ├── list_response.rb # Paginated response wrapper
78
+ │ ├── exceptions.rb # HTTP exception hierarchy
79
+ │ ├── headers.rb # Header management
80
+ │ └── variables.rb # Environment variable config
81
+ ```
82
+
83
+ ### Configuration
84
+
85
+ - `api_adaptor.gemspec` - Gem specification and dependencies
86
+ - `Rakefile` - Rake tasks (test, lint, docs)
87
+ - `.rubocop.yml` - RuboCop linting configuration
88
+ - `.yardopts` - YARD documentation configuration
89
+ - `.rspec` - RSpec test configuration
90
+
91
+ ### Tests
92
+
93
+ ```
94
+ spec/
95
+ ├── spec_helper.rb # Test configuration with SimpleCov
96
+ ├── api_adaptor/
97
+ │ ├── base_spec.rb # Base class tests
98
+ │ ├── exceptions_spec.rb # Exception handling tests
99
+ │ ├── headers_spec.rb # Header tests
100
+ │ ├── json_client_spec.rb # Core client tests
101
+ │ ├── list_response_spec.rb # Pagination tests
102
+ │ ├── response_spec.rb # Response wrapper tests
103
+ │ └── variables_spec.rb # Environment variable tests
104
+ └── fixtures/ # Test fixtures including foo.json
105
+ ```
106
+
107
+ ### CI/CD
108
+
109
+ ```
110
+ .github/workflows/
111
+ ├── ci.yml # Main CI (RSpec tests)
112
+ ├── quality-checks.yml # RuboCop linting
113
+ ├── release.yml # Automated gem release
114
+ ├── pages.yml # Deploy fixtures to GitHub Pages
115
+ ├── docs.yml # Deploy YARD docs to GitHub Pages
116
+ └── codeql.yml # Security scanning
117
+ ```
118
+
119
+ ## Testing Conventions
120
+
121
+ ### Test Structure
122
+
123
+ - Use RSpec with descriptive contexts
124
+ - Mock HTTP requests with WebMock
125
+ - Use Timecop for time-sensitive tests
126
+ - Aim for ≥80% line coverage, ≥75% branch coverage
127
+
128
+ ### Test Patterns
129
+
130
+ ```ruby
131
+ # Good: Descriptive context and it blocks
132
+ describe JSONClient do
133
+ describe "#get_json" do
134
+ context "when request succeeds" do
135
+ it "returns parsed JSON response" do
136
+ # ...
137
+ end
138
+ end
139
+
140
+ context "when request fails" do
141
+ it "raises appropriate exception" do
142
+ # ...
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ # Good: Use WebMock for HTTP mocking
149
+ stub_request(:get, "https://example.com/api")
150
+ .to_return(status: 200, body: '{"key": "value"}')
151
+
152
+ # Good: Use Timecop for time tests
153
+ Timecop.freeze(Time.utc(2024, 1, 1, 12, 0, 0)) do
154
+ # ...
155
+ end
156
+ ```
157
+
158
+ ### Running Tests
159
+
160
+ ```bash
161
+ bundle exec rspec # Run all tests
162
+ bundle exec rspec spec/api_adaptor/json_client_spec.rb # Run specific file
163
+ bundle exec rspec spec/api_adaptor/json_client_spec.rb:42 # Run specific line
164
+ ```
165
+
166
+ ## Environment Variables
167
+
168
+ The gem reads app metadata from environment variables for User-Agent headers:
169
+
170
+ - `APP_NAME` - Application name (default: "Ruby ApiAdaptor App")
171
+ - `APP_VERSION` - Application version (default: "Version not stated")
172
+ - `APP_CONTACT` - Contact email/URL for API providers
173
+
174
+ ### Example .env
175
+
176
+ ```bash
177
+ APP_NAME=MyApiClient
178
+ APP_VERSION=2.1.0
179
+ APP_CONTACT=dev@example.com
180
+ ```
181
+
182
+ These are accessed via `ApiAdaptor::Variables` methods.
183
+
184
+ ## Git Standards
185
+
186
+ Never commit to main branch,
187
+ Always create a new branch with a sensible descriptive name and expect a Pull Request process.
188
+
189
+ You'll need to provide a good PR description that sums up any collected change.
190
+
191
+ ## Commit Standards
192
+
193
+ Follows [GDS Git conventions](https://gds-way.digital.cabinet-office.gov.uk/standards/source-code/working-with-git.html#commits), informed by [chris.beams.io/posts/git-commit](https://chris.beams.io/posts/git-commit), [thoughtbot](https://thoughtbot.com/blog/5-useful-tips-for-a-better-commit-message), [mislav.net](https://mislav.net/2014/02/hidden-documentation/), and [Joel Chippindale's "Telling Stories Through Your Commits"](https://blog.mocoso.co.uk/posts/talks/telling-stories-through-your-commits/).
194
+
195
+ ### Formatting
196
+
197
+ - **[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)** — subject line format: `<type>[optional scope]: <description>`
198
+ - **Types**: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`
199
+ - **Scope** — optional parenthetical context, e.g. `feat(labels):` or `fix(integration):`
200
+ - **Breaking changes** — indicated with `!` before the colon, e.g. `feat!:`, or a `BREAKING CHANGE:` footer
201
+ - **Subject line** — max 50 characters, no trailing period, imperative mood ("Add feature" not "Added feature")
202
+ - **Body** — separated from subject by a blank line, wrapped at 72 characters
203
+ - **Links supplement, not replace** — issue/PR links may go stale, so the message must stand on its own
204
+
205
+ ### Content
206
+
207
+ - **Answer three questions**: Why is this change necessary? How does it address the issue? What side effects does it have?
208
+ - **Explain the "why"** — the code shows _how_; the commit message must capture _why_. Rationale and context are hard to reconstruct later
209
+ - **Note alternatives considered** — if you chose approach A over B, say so and why
210
+
211
+ ### Structure
212
+
213
+ - **Atomic commits** — each commit is a self-contained, logical unit of work; avoid needing "and" in your subject line
214
+ - **Tell a story** — commits should be logically ordered so the history reads as a coherent narrative, not a jumbled log
215
+ - **Clean up before sharing** — revise commit history on feature branches before opening a PR
216
+
217
+ ## Development Workflow
218
+
219
+ ### TDD Approach (Recommended)
220
+
221
+ 1. **Write failing test** - Define expected behavior
222
+ 2. **Implement feature** - Write minimal code to pass test
223
+ 3. **Refactor** - Improve code while keeping tests green
224
+ 4. **Document** - Add YARD comments to public APIs
225
+ 5. **Lint** - Run `bundle exec rubocop` and fix issues
226
+ 6. **Commit** - Use conventional commit message
227
+
228
+ ### Feature Development Cycle
229
+
230
+ ```bash
231
+ # 1. Create feature branch
232
+ git checkout -b feature/add-retry-logic
233
+
234
+ # 2. Write test
235
+ # Edit spec/api_adaptor/json_client_spec.rb
236
+
237
+ # 3. Run test (should fail)
238
+ bundle exec rspec spec/api_adaptor/json_client_spec.rb
239
+
240
+ # 4. Implement feature
241
+ # Edit lib/api_adaptor/json_client.rb
242
+
243
+ # 5. Run test (should pass)
244
+ bundle exec rspec spec/api_adaptor/json_client_spec.rb
245
+
246
+ # 6. Run full test suite
247
+ bundle exec rake
248
+
249
+ # 7. Commit
250
+ git add .
251
+ git commit -m "feat(client): add retry logic for transient failures"
252
+
253
+ # 8. Push and create PR
254
+ git push origin feature/add-retry-logic
255
+ gh pr create
256
+ ```
257
+
258
+ ### Code Review Checklist
259
+
260
+ - [ ] Tests pass (`bundle exec rspec`)
261
+ - [ ] Linter passes (`bundle exec rubocop`)
262
+ - [ ] Coverage maintained (≥80% line, ≥75% branch)
263
+ - [ ] YARD documentation added for public APIs
264
+ - [ ] CHANGELOG.md updated (if applicable)
265
+ - [ ] Conventional commit message used
266
+
267
+ ## Release Process
268
+
269
+ ### Version Numbering
270
+
271
+ Follow [Semantic Versioning](https://semver.org/):
272
+
273
+ - **MAJOR**: Breaking API changes (1.0.0 → 2.0.0)
274
+ - **MINOR**: New features, backward-compatible (1.0.0 → 1.1.0)
275
+ - **PATCH**: Bug fixes, backward-compatible (1.0.0 → 1.0.1)
276
+
277
+ ### Release Checklist
278
+
279
+ 1. **Update version** - Edit `lib/api_adaptor/version.rb`
280
+ 2. **Update CHANGELOG** - Add entry with date in `CHANGELOG.md`
281
+ 3. **Run full test suite** - `bundle exec rake` (includes tests, lint, docs)
282
+ 4. **Commit changes** - `chore(release): prepare v1.0.0`
283
+ 5. **Create git tag** - `git tag v1.0.0`
284
+ 6. **Push tag** - `git push origin v1.0.0`
285
+ 7. **GitHub Actions triggers** - Release workflow builds and publishes gem to RubyGems
286
+ 8. **Verify release** - Check https://rubygems.org/gems/api_adaptor
287
+
288
+ ### Automated Release
289
+
290
+ The `.github/workflows/release.yml` workflow handles:
291
+
292
+ - Building the gem
293
+ - Running tests
294
+ - Publishing to RubyGems (using `RUBYGEMS_API_KEY` secret)
295
+ - Creating GitHub release
296
+
297
+ ## Documentation Standards
298
+
299
+ ### YARD Comments
300
+
301
+ All public APIs must have YARD documentation:
302
+
303
+ ```ruby
304
+ # Initializes a new JSON client
305
+ #
306
+ # @param options [Hash] Configuration options
307
+ # @option options [String] :bearer_token Bearer token for authentication
308
+ # @option options [Hash] :basic_auth Basic auth credentials (:user, :password)
309
+ # @option options [Integer] :timeout Request timeout in seconds (default: 4)
310
+ # @option options [Integer] :max_redirects Maximum redirects to follow (default: 3)
311
+ # @option options [Boolean] :allow_cross_origin_redirects Allow cross-origin redirects (default: true)
312
+ # @option options [Logger] :logger Custom logger instance
313
+ #
314
+ # @return [JSONClient] A new instance of JSONClient
315
+ #
316
+ # @example Basic usage
317
+ # client = JSONClient.new(bearer_token: "abc123")
318
+ #
319
+ # @example With custom timeout
320
+ # client = JSONClient.new(timeout: 10)
321
+ def initialize(options = {})
322
+ # ...
323
+ end
324
+ ```
325
+
326
+ ### Documentation Commands
327
+
328
+ ```bash
329
+ bundle exec yard stats --list-undoc # Find undocumented methods
330
+ bundle exec yard server # Preview docs locally
331
+ ```
332
+
333
+ ## Code Quality Standards
334
+
335
+ ### Coverage Targets
336
+
337
+ - **Line Coverage**: ≥80% (current: 92.3%)
338
+ - **Branch Coverage**: ≥75% (current: 81.65%)
339
+
340
+ ### RuboCop Configuration
341
+
342
+ - Follows standard Ruby style guide
343
+ - Custom cops enabled: `rubocop-yard` for documentation enforcement
344
+ - Configuration in `.rubocop.yml`
345
+
346
+ ### Security
347
+
348
+ - Input validation at API boundaries
349
+ - Safe redirect handling with cross-origin protection
350
+ - No credential logging
351
+ - CodeQL security scanning enabled
352
+
353
+ ## Common Tasks
354
+
355
+ ### Adding a New Exception
356
+
357
+ 1. Define exception in `lib/api_adaptor/exceptions.rb`
358
+ 2. Add YARD documentation
359
+ 3. Add test in `spec/api_adaptor/exceptions_spec.rb`
360
+ 4. Update `json_client.rb` to raise exception where appropriate
361
+
362
+ ### Adding a New Configuration Option
363
+
364
+ 1. Add parameter to `JSONClient#initialize`
365
+ 2. Document with YARD `@option` tag
366
+ 3. Add instance variable and accessor
367
+ 4. Add tests for new behavior
368
+ 5. Update README with example
369
+
370
+ ### Debugging HTTP Requests
371
+
372
+ ```ruby
373
+ # Enable request/response logging
374
+ client = JSONClient.new(logger: Logger.new($stdout))
375
+ ```
376
+
377
+ ## Troubleshooting
378
+
379
+ ### Tests Failing
380
+
381
+ ```bash
382
+ # Run specific test
383
+ bundle exec rspec spec/api_adaptor/json_client_spec.rb:42
384
+
385
+ # Run with verbose output
386
+ bundle exec rspec --format documentation
387
+
388
+ # Check coverage
389
+ open coverage/index.html
390
+ ```
391
+
392
+ ### RuboCop Errors
393
+
394
+ ```bash
395
+ # Auto-fix safe violations
396
+ bundle exec rubocop --auto-correct
397
+
398
+ # Fix all violations (less safe)
399
+ bundle exec rubocop --auto-correct-all
400
+ ```
401
+
402
+ ### YARD Documentation Issues
403
+
404
+ ```bash
405
+ # Check for undocumented methods
406
+ bundle exec yard stats --list-undoc
407
+
408
+ # Validate YARD syntax
409
+ bundle exec yard --no-output
410
+ ```
411
+
412
+ ## Additional Resources
413
+
414
+ - **RubyGems**: https://rubygems.org/gems/api_adaptor
415
+ - **GitHub**: https://github.com/huwd/api_adaptor
416
+ - **YARD Docs**: https://huwd.github.io/api_adaptor/
417
+ - **Issues**: https://github.com/huwd/api_adaptor/issues
418
+
419
+ ## Contact
420
+
421
+ - **Maintainer**: Huw Diprose
422
+ - **Email**: mail@huwdiprose.co.uk
423
+ - **License**: MIT
data/Gemfile.lock CHANGED
@@ -1,80 +1,105 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api_adaptor (0.0.2)
4
+ api_adaptor (1.0.0)
5
5
  addressable (~> 2.8)
6
+ base64 (~> 0.3)
7
+ bigdecimal (>= 3.3, < 5.0)
6
8
  link_header (~> 0.0.8)
9
+ logger (>= 1.6, < 2.0)
7
10
  rest-client (~> 2.1)
8
11
 
9
12
  GEM
10
13
  remote: https://rubygems.org/
11
14
  specs:
12
- addressable (2.8.6)
13
- public_suffix (>= 2.0.2, < 6.0)
14
- ast (2.4.2)
15
- crack (0.4.5)
15
+ addressable (2.8.8)
16
+ public_suffix (>= 2.0.2, < 8.0)
17
+ ast (2.4.3)
18
+ base64 (0.3.0)
19
+ bigdecimal (4.0.1)
20
+ crack (1.0.1)
21
+ bigdecimal
16
22
  rexml
17
- diff-lcs (1.5.0)
23
+ diff-lcs (1.6.2)
24
+ docile (1.4.1)
18
25
  domain_name (0.6.20240107)
19
- hashdiff (1.1.0)
26
+ hashdiff (1.2.1)
20
27
  http-accept (1.7.0)
21
28
  http-cookie (1.0.5)
22
29
  domain_name (~> 0.5)
23
- json (2.7.1)
24
- language_server-protocol (3.17.0.3)
30
+ json (2.18.1)
31
+ language_server-protocol (3.17.0.5)
25
32
  link_header (0.0.8)
33
+ lint_roller (1.1.0)
34
+ logger (1.7.0)
26
35
  mime-types (3.5.2)
27
36
  mime-types-data (~> 3.2015)
28
37
  mime-types-data (3.2023.1205)
29
38
  netrc (0.11.0)
30
- parallel (1.24.0)
31
- parser (3.3.0.3)
39
+ parallel (1.27.0)
40
+ parser (3.3.10.1)
32
41
  ast (~> 2.4.1)
33
42
  racc
34
- public_suffix (5.0.4)
35
- racc (1.7.3)
43
+ prism (1.9.0)
44
+ public_suffix (7.0.2)
45
+ racc (1.8.1)
36
46
  rainbow (3.1.1)
37
- rake (13.1.0)
38
- regexp_parser (2.9.0)
47
+ rake (13.3.1)
48
+ redcarpet (3.6.1)
49
+ regexp_parser (2.11.3)
39
50
  rest-client (2.1.0)
40
51
  http-accept (>= 1.7.0, < 2.0)
41
52
  http-cookie (>= 1.0.2, < 2.0)
42
53
  mime-types (>= 1.16, < 4.0)
43
54
  netrc (~> 0.8)
44
- rexml (3.2.6)
45
- rspec (3.12.0)
46
- rspec-core (~> 3.12.0)
47
- rspec-expectations (~> 3.12.0)
48
- rspec-mocks (~> 3.12.0)
49
- rspec-core (3.12.2)
50
- rspec-support (~> 3.12.0)
51
- rspec-expectations (3.12.3)
55
+ rexml (3.4.4)
56
+ rspec (3.13.2)
57
+ rspec-core (~> 3.13.0)
58
+ rspec-expectations (~> 3.13.0)
59
+ rspec-mocks (~> 3.13.0)
60
+ rspec-core (3.13.6)
61
+ rspec-support (~> 3.13.0)
62
+ rspec-expectations (3.13.5)
52
63
  diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.12.0)
54
- rspec-mocks (3.12.6)
64
+ rspec-support (~> 3.13.0)
65
+ rspec-mocks (3.13.7)
55
66
  diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.12.0)
57
- rspec-support (3.12.1)
58
- rubocop (1.59.0)
67
+ rspec-support (~> 3.13.0)
68
+ rspec-support (3.13.6)
69
+ rubocop (1.84.2)
59
70
  json (~> 2.3)
60
- language_server-protocol (>= 3.17.0)
71
+ language_server-protocol (~> 3.17.0.2)
72
+ lint_roller (~> 1.1.0)
61
73
  parallel (~> 1.10)
62
- parser (>= 3.2.2.4)
74
+ parser (>= 3.3.0.2)
63
75
  rainbow (>= 2.2.2, < 4.0)
64
- regexp_parser (>= 1.8, < 3.0)
65
- rexml (>= 3.2.5, < 4.0)
66
- rubocop-ast (>= 1.30.0, < 2.0)
76
+ regexp_parser (>= 2.9.3, < 3.0)
77
+ rubocop-ast (>= 1.49.0, < 2.0)
67
78
  ruby-progressbar (~> 1.7)
68
- unicode-display_width (>= 2.4.0, < 3.0)
69
- rubocop-ast (1.30.0)
70
- parser (>= 3.2.1.0)
79
+ unicode-display_width (>= 2.4.0, < 4.0)
80
+ rubocop-ast (1.49.0)
81
+ parser (>= 3.3.7.2)
82
+ prism (~> 1.7)
83
+ rubocop-yard (1.1.0)
84
+ lint_roller
85
+ rubocop (~> 1.72)
86
+ yard
71
87
  ruby-progressbar (1.13.0)
72
- timecop (0.9.8)
73
- unicode-display_width (2.5.0)
74
- webmock (3.19.1)
88
+ simplecov (0.22.0)
89
+ docile (~> 1.1)
90
+ simplecov-html (~> 0.11)
91
+ simplecov_json_formatter (~> 0.1)
92
+ simplecov-html (0.13.1)
93
+ simplecov_json_formatter (0.1.4)
94
+ timecop (0.9.10)
95
+ unicode-display_width (3.2.0)
96
+ unicode-emoji (~> 4.1)
97
+ unicode-emoji (4.2.0)
98
+ webmock (3.26.1)
75
99
  addressable (>= 2.8.0)
76
100
  crack (>= 0.3.2)
77
101
  hashdiff (>= 0.4.0, < 2.0.0)
102
+ yard (0.9.38)
78
103
 
79
104
  PLATFORMS
80
105
  x86_64-linux
@@ -82,10 +107,14 @@ PLATFORMS
82
107
  DEPENDENCIES
83
108
  api_adaptor!
84
109
  rake (~> 13.0)
110
+ redcarpet (~> 3.6)
85
111
  rspec (~> 3.0)
86
112
  rubocop (~> 1.21)
113
+ rubocop-yard
114
+ simplecov (~> 0.22)
87
115
  timecop (~> 0.9)
88
116
  webmock (~> 3.18)
117
+ yard (~> 0.9)
89
118
 
90
119
  BUNDLED WITH
91
120
  2.4.13