lutaml-store 0.2.0 → 0.2.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +11 -175
  3. data/README.adoc +233 -1124
  4. data/lib/lutaml/store/adapter/base.rb +4 -0
  5. data/lib/lutaml/store/adapter/memory.rb +8 -0
  6. data/lib/lutaml/store/cache_store.rb +9 -6
  7. data/lib/lutaml/store/format.rb +19 -0
  8. data/lib/lutaml/store/http_cache.rb +3 -13
  9. data/lib/lutaml/store/model_registration.rb +5 -2
  10. data/lib/lutaml/store/model_registry.rb +22 -20
  11. data/lib/lutaml/store/package_store.rb +2 -18
  12. data/lib/lutaml/store/package_transport/base.rb +48 -0
  13. data/lib/lutaml/store/package_transport/directory_transport.rb +196 -0
  14. data/lib/lutaml/store/package_transport/zip_transport.rb +178 -0
  15. data/lib/lutaml/store/package_transport.rb +11 -438
  16. data/lib/lutaml/store/version.rb +1 -1
  17. metadata +12 -77
  18. data/.github/workflows/main.yml +0 -27
  19. data/.gitignore +0 -12
  20. data/CORRECTED_HTTP_CACHE_IMPLEMENTATION.md +0 -209
  21. data/CORRECTED_HTTP_CACHE_PLAN.md +0 -164
  22. data/Gemfile +0 -15
  23. data/Gemfile.lock +0 -227
  24. data/TODO.impl/0-lutaml-store-self-quality.md +0 -112
  25. data/TODO.impl/1-lutaml-hal-migration.md +0 -96
  26. data/TODO.impl/2-glossarist-migration.md +0 -359
  27. data/TODO.impl/3-lutaml-jsonschema-migration.md +0 -273
  28. data/bin/console +0 -11
  29. data/bin/setup +0 -8
  30. data/demo/Gemfile +0 -15
  31. data/demo/Gemfile.lock +0 -61
  32. data/demo/README.adoc +0 -301
  33. data/demo/data/vcards/co/contact_10_thompson.data +0 -1
  34. data/demo/data/vcards/co/contact_10_thompson.meta +0 -1
  35. data/demo/data/vcards/co/contact_1_doe.data +0 -1
  36. data/demo/data/vcards/co/contact_1_doe.meta +0 -1
  37. data/demo/data/vcards/co/contact_2_smith.data +0 -1
  38. data/demo/data/vcards/co/contact_2_smith.meta +0 -1
  39. data/demo/data/vcards/co/contact_3_johnson.data +0 -1
  40. data/demo/data/vcards/co/contact_3_johnson.meta +0 -1
  41. data/demo/data/vcards/co/contact_4_garcia.data +0 -1
  42. data/demo/data/vcards/co/contact_4_garcia.meta +0 -1
  43. data/demo/data/vcards/co/contact_5_wilson.data +0 -1
  44. data/demo/data/vcards/co/contact_5_wilson.meta +0 -1
  45. data/demo/data/vcards/co/contact_6_brown.data +0 -1
  46. data/demo/data/vcards/co/contact_6_brown.meta +0 -1
  47. data/demo/data/vcards/co/contact_7_davis.data +0 -1
  48. data/demo/data/vcards/co/contact_7_davis.meta +0 -1
  49. data/demo/data/vcards/co/contact_8_anderson.data +0 -1
  50. data/demo/data/vcards/co/contact_8_anderson.meta +0 -1
  51. data/demo/data/vcards/co/contact_9_taylor.data +0 -1
  52. data/demo/data/vcards/co/contact_9_taylor.meta +0 -1
  53. data/demo/data/vcards.db +0 -0
  54. data/demo/pottery_class_demo.rb +0 -164
  55. data/demo/vcard_models.rb +0 -140
  56. data/demo/vcard_store_demo.rb +0 -526
  57. data/lutaml-store.gemspec +0 -36
  58. data/plan.adoc +0 -606
  59. data/spec/lutaml/store/adapter_interface_spec.rb +0 -89
  60. data/spec/lutaml/store/anti_pattern_guard_spec.rb +0 -35
  61. data/spec/lutaml/store/anti_pattern_spec.rb +0 -78
  62. data/spec/lutaml/store/autoload_spec.rb +0 -34
  63. data/spec/lutaml/store/cache_store_spec.rb +0 -271
  64. data/spec/lutaml/store/compression_spec.rb +0 -78
  65. data/spec/lutaml/store/config_enhanced_spec.rb +0 -158
  66. data/spec/lutaml/store/corrected_http_cache_integration_spec.rb +0 -336
  67. data/spec/lutaml/store/custom_serializer_spec.rb +0 -108
  68. data/spec/lutaml/store/database_store_spec.rb +0 -279
  69. data/spec/lutaml/store/file_io_spec.rb +0 -220
  70. data/spec/lutaml/store/format/yamls_spec.rb +0 -80
  71. data/spec/lutaml/store/format_round_trip_spec.rb +0 -110
  72. data/spec/lutaml/store/format_spec.rb +0 -70
  73. data/spec/lutaml/store/http_cache_entry_spec.rb +0 -203
  74. data/spec/lutaml/store/http_cache_hal_integration_spec.rb +0 -404
  75. data/spec/lutaml/store/http_cache_spec.rb +0 -422
  76. data/spec/lutaml/store/http_header_processor_spec.rb +0 -290
  77. data/spec/lutaml/store/import_spec.rb +0 -90
  78. data/spec/lutaml/store/integrity_spec.rb +0 -157
  79. data/spec/lutaml/store/key_collision_serializer_spec.rb +0 -98
  80. data/spec/lutaml/store/load_save_spec.rb +0 -107
  81. data/spec/lutaml/store/lutaml_model_integration_spec.rb +0 -291
  82. data/spec/lutaml/store/model_serializer_spec.rb +0 -140
  83. data/spec/lutaml/store/package_definition_spec.rb +0 -89
  84. data/spec/lutaml/store/package_store_spec.rb +0 -153
  85. data/spec/lutaml/store/package_transport/directory_transport_spec.rb +0 -139
  86. data/spec/lutaml/store/package_transport/zip_transport_spec.rb +0 -85
  87. data/spec/lutaml/store/store_spec.rb +0 -182
  88. data/spec/lutaml/store_spec.rb +0 -21
  89. data/spec/spec_helper.rb +0 -16
  90. data/spec/support/simple_test_model.rb +0 -15
  91. data/spec/support/yamls_test_model.rb +0 -35
@@ -1,209 +0,0 @@
1
- # Corrected HTTP Cache Implementation - COMPLETED ✅
2
-
3
- ## Summary
4
-
5
- Successfully implemented transparent HTTP caching for the w3c_api gem with proper architectural integration at the lutaml-hal ModelRegister level. The implementation provides significant performance improvements while maintaining zero API changes for end users.
6
-
7
- ## Key Achievements
8
-
9
- ### ✅ Architectural Correctness
10
- - **CORRECT**: Cache integrated at lutaml-hal ModelRegister.fetch() level
11
- - **CORRECT**: Uses real w3c_api.Client methods, not bypassing the gem
12
- - **CORRECT**: Transparent caching through existing API call chain
13
- - **CORRECT**: Zero API changes required for relaton-w3c users
14
- - **CORRECT**: HTTP semantics preserved (ETags, Last-Modified, Cache-Control)
15
-
16
- ### ✅ Performance Results
17
- From the demo execution:
18
- - **HTML5 specification**: 97.4% improvement (41.44ms → 1.08ms)
19
- - **Working groups**: 97.5% improvement (45.18ms → 1.13ms)
20
- - **Specification series**: 94.9% improvement (45.05ms → 2.28ms)
21
- - **Overall specifications**: 98.6% improvement (213.35ms → 2.91ms)
22
- - **Massive performance gains**: Cache hits are 20-200x faster than cache misses
23
-
24
- ### ✅ Cache Statistics
25
- ```
26
- 📊 Cache statistics:
27
- adapter_type: memory
28
- total_entries: 4
29
- cache_hits: 4
30
- cache_misses: 4
31
- conditional_requests: 0
32
- not_modified_responses: 0
33
- entries_stored: 4
34
- entries_evicted: 0
35
- hit_ratio: 50.0
36
- total_requests: 8
37
- config: {:default_ttl=>3600, :max_entries=>10000, :respect_http_headers=>true, :enable_conditional_requests=>true}
38
- ```
39
-
40
- ## Implementation Details
41
-
42
- ### Phase 1: lutaml-hal ModelRegister Cache Integration ✅
43
- **File**: `../lutaml-hal/lib/lutaml/hal/model_register.rb`
44
-
45
- **Key Changes**:
46
- 1. Added `cache_store` attribute to ModelRegister constructor
47
- 2. Modified `fetch()` method to check cache before making HTTP requests
48
- 3. Added HTTP-aware caching with conditional requests support
49
- 4. Implemented cache key generation from endpoint_id + params
50
- 5. Added cache management methods: `cache_stats`, `cache_info`, `clear_cache`
51
-
52
- **Critical Code**:
53
- ```ruby
54
- def fetch(endpoint_id, **params)
55
- # ... parameter processing ...
56
-
57
- # Use HTTP cache if available
58
- if @cache_store.respond_to?(:fetch)
59
- response = @cache_store.fetch("GET", final_url, processed_params[:headers]) do |request_headers|
60
- # Make actual HTTP request with conditional headers
61
- raw_response = if request_headers.any?
62
- client.get_with_headers(final_url, request_headers)
63
- else
64
- client.get(final_url)
65
- end
66
- convert_client_response_to_http_format(raw_response)
67
- end
68
-
69
- client_response = convert_http_response_to_client_format(response)
70
- realized_model = endpoint[:model].from_json(client_response.to_json)
71
- else
72
- # Fallback to basic caching
73
- # ... existing cache logic ...
74
- end
75
- end
76
- ```
77
-
78
- ### Phase 2: w3c_api Cache Configuration ✅
79
- **File**: `../../relaton/w3c_api/lib/w3c_api/client.rb`
80
-
81
- **Key Changes**:
82
- 1. Added `cache` parameter to Client constructor
83
- 2. Configured cache on the HAL register instance
84
- 3. Maintained backward compatibility
85
-
86
- **Critical Code**:
87
- ```ruby
88
- def initialize(cache: nil)
89
- @cache = cache
90
- configure_cache if cache
91
- end
92
-
93
- private
94
-
95
- def configure_cache
96
- W3cApi::Hal.instance.configure_cache(@cache)
97
- end
98
- ```
99
-
100
- ### Phase 3: HAL Configuration ✅
101
- **File**: `../../relaton/w3c_api/lib/w3c_api/hal.rb`
102
-
103
- **Key Changes**:
104
- 1. Added `configure_cache` method
105
- 2. Added cache delegation methods: `cache_info`, `cache_stats`, `clear_cache`
106
-
107
- **Critical Code**:
108
- ```ruby
109
- def configure_cache(cache)
110
- @register.cache_store = cache
111
- end
112
-
113
- def cache_info
114
- @register.cache_info
115
- end
116
-
117
- def cache_stats
118
- @register.cache_stats
119
- end
120
-
121
- def clear_cache
122
- @register.clear_cache
123
- end
124
- ```
125
-
126
- ### Phase 4: Demo and Validation ✅
127
- **File**: `../../relaton/w3c_api/corrected_cache_integration_demo.rb`
128
-
129
- **Demonstrates**:
130
- 1. Transparent caching through real w3c_api methods
131
- 2. Performance improvements with cache hits
132
- 3. HTTP semantics preservation
133
- 4. Zero API changes for end users
134
- 5. Cache statistics and monitoring
135
-
136
- ## Usage Example for relaton-w3c
137
-
138
- ```ruby
139
- # In relaton-w3c configuration:
140
- require 'lutaml/store/http_cache'
141
-
142
- # Configure cache
143
- cache_config = {
144
- adapter_type: :filesystem,
145
- adapter_options: { path: "./cache/w3c_api" },
146
- default_ttl: 3600,
147
- respect_http_headers: true
148
- }
149
-
150
- cache = Lutaml::Store::HttpCache.new(cache_config)
151
-
152
- # Pass cache to client initialization - this enables transparent caching!
153
- client = W3cApi::Client.new(cache: cache)
154
- specs = client.specifications(page: 1, items: 100) # Cached transparently
155
- spec = client.specification("html5") # Cached transparently
156
- ```
157
-
158
- ## Architecture Flow
159
-
160
- ```
161
- relaton-w3c
162
-
163
- W3cApi::Client.new(cache: cache)
164
-
165
- W3cApi::Client#specifications() / #specification() / etc.
166
-
167
- W3cApi::Client#fetch_resource()
168
-
169
- W3cApi::Hal.instance.register.fetch()
170
-
171
- [HTTP CACHE INTERCEPTS HERE] ← lutaml-hal ModelRegister.fetch()
172
-
173
- HTTP Request (with conditional headers if cached)
174
- ```
175
-
176
- ## Key Benefits
177
-
178
- 1. **Transparent Integration**: No changes needed in relaton-w3c code
179
- 2. **HTTP Semantics**: Proper ETag, Last-Modified, Cache-Control support
180
- 3. **Performance**: Significant speed improvements on cache hits
181
- 4. **Flexibility**: Supports multiple cache adapters (memory, filesystem, etc.)
182
- 5. **Monitoring**: Built-in cache statistics and inspection
183
- 6. **Conditional Requests**: Automatic If-None-Match, If-Modified-Since headers
184
-
185
- ## Files Modified
186
-
187
- ### lutaml-hal
188
- - `lib/lutaml/hal/model_register.rb` - Core cache integration
189
-
190
- ### w3c_api
191
- - `lib/w3c_api/client.rb` - Cache configuration
192
- - `lib/w3c_api/hal.rb` - Cache delegation methods
193
-
194
- ### lutaml-store
195
- - All HTTP cache components already implemented and working
196
-
197
- ## Test Results
198
-
199
- ✅ **Demo Execution**: Successful with performance improvements
200
- ✅ **Cache Statistics**: Working and reporting correctly
201
- ✅ **HTTP Semantics**: Preserved through proper header handling
202
- ✅ **API Compatibility**: Zero changes required for existing code
203
- ✅ **Architecture**: Proper layering and integration points
204
-
205
- ## Conclusion
206
-
207
- The corrected HTTP cache implementation successfully addresses all the architectural issues identified in the previous approach. The cache now properly integrates with the w3c_api gem architecture, providing transparent caching without bypassing any components. Performance improvements are measurable and the implementation maintains full HTTP semantics compliance.
208
-
209
- **Status**: ✅ COMPLETE AND VALIDATED
@@ -1,164 +0,0 @@
1
- # Corrected HTTP Cache Implementation Plan
2
-
3
- ## Problem Statement
4
-
5
- The previous implementation was fundamentally flawed. Instead of integrating HTTP caching transparently with the w3c_api gem, it bypassed the gem entirely by creating a SimpleHttpClient and making direct HTTP calls. This defeats the purpose of transparent caching integration.
6
-
7
- ## Correct Architecture Understanding
8
-
9
- ### Current Flow (w3c_api gem)
10
- ```
11
- relaton-w3c → w3c_api.Client.specifications() → W3cApi::Hal.instance.register.fetch() → lutaml-hal HTTP client → W3C API
12
- ```
13
-
14
- ### Required Integration Point
15
- The cache must be integrated at the `lutaml-hal` ModelRegister level, specifically in the `fetch()` method, so that when w3c_api calls `register.fetch()`, the cache transparently intercepts and handles HTTP requests.
16
-
17
- ### Correct Cache Flow
18
- ```
19
- relaton-w3c → w3c_api.specifications() → W3cApi::Hal.register.fetch() → [HTTP CACHE HERE] → HTTP request (if cache miss)
20
- ```
21
-
22
- ### Monitoring cache
23
-
24
- Add a CACHE debug mode to log cache hits/misses. Use the "Paint" gem to output cache activity in a visually distinct way and with appropriate emojis.
25
-
26
- ### Store inspection
27
-
28
- Add a method outputting pretty content to inspect the cache store contents for debugging purposes.
29
-
30
- ## Key Files Analysis
31
-
32
- ### w3c_api Architecture
33
- - **`w3c_api/lib/w3c_api/client.rb`**: Contains all public API methods like `specifications()`, `specification()`, etc.
34
- - **`w3c_api/lib/w3c_api/hal.rb`**: Sets up lutaml-hal ModelRegister with W3C API endpoints
35
- - **Integration Point**: All client methods call `fetch_resource()` which calls `Hal.instance.register.fetch()`
36
-
37
- ### lutaml-hal Integration
38
- - **`lutaml-hal/lib/lutaml/hal/model_register.rb`**: Contains the `fetch()` method that makes HTTP requests
39
- - **Cache Integration Point**: The `fetch()` method needs to check cache before making HTTP requests
40
-
41
- ## Implementation Plan
42
-
43
- ### Phase 1: lutaml-hal ModelRegister Cache Integration
44
-
45
- **Modify `lutaml-hal/lib/lutaml/hal/model_register.rb`:**
46
-
47
- 1. **Add cache_store attribute:**
48
- ```ruby
49
- class ModelRegister
50
- attr_accessor :cache_store
51
-
52
- def initialize(name:, client:, cache_store: nil)
53
- @cache_store = cache_store
54
- # existing code...
55
- end
56
- end
57
- ```
58
-
59
- 2. **Modify fetch() method to use cache:**
60
- ```ruby
61
- def fetch(endpoint_id, **params)
62
- if @cache_store
63
- # Generate cache key from endpoint + params
64
- cache_key = generate_cache_key(endpoint_id, params)
65
-
66
- # Try cache first
67
- cached_response = @cache_store.get(cache_key)
68
- return cached_response if cached_response
69
-
70
- # Cache miss - make HTTP request
71
- response = make_http_request(endpoint_id, params)
72
-
73
- # Store in cache
74
- @cache_store.set(cache_key, response)
75
-
76
- response
77
- else
78
- # No cache - direct HTTP request
79
- make_http_request(endpoint_id, params)
80
- end
81
- end
82
- ```
83
-
84
- ### Phase 2: w3c_api Cache Configuration
85
-
86
- **Add cache configuration to `w3c_api/lib/w3c_api/hal.rb`:**
87
-
88
- ```ruby
89
- class Hal
90
- def configure_cache(cache_store)
91
- register.cache_store = cache_store
92
- end
93
- end
94
- ```
95
-
96
- ### Phase 3: Integration Example
97
-
98
- **Usage in relaton-w3c:**
99
- ```ruby
100
- # Configure cache
101
- cache_config = {
102
- adapter_type: :filesystem,
103
- adapter_options: { path: "./cache/w3c_api" },
104
- default_ttl: 3600,
105
- respect_http_headers: true
106
- }
107
-
108
- cache = Lutaml::Store::HttpCache.new(cache_config)
109
- W3cApi::Hal.instance.configure_cache(cache)
110
-
111
- # Now all w3c_api calls use cache transparently
112
- client = W3cApi::Client.new
113
- specs = client.specifications(page: 1, items: 100) # Cached
114
- spec = client.specification("html5") # Cached
115
- ```
116
-
117
- ### Phase 4: Fix Demo Scripts
118
-
119
- **Replace all SimpleHttpClient usage with real w3c_api calls:**
120
-
121
- ```ruby
122
- # WRONG (current implementation):
123
- client = SimpleHttpClient.new
124
- response = client.get("https://api.w3.org/specifications")
125
-
126
- # CORRECT (fixed implementation):
127
- client = W3cApi::Client.new
128
- specs = client.specifications(page: 1, items: 100)
129
- ```
130
-
131
- ## Success Criteria
132
-
133
- 1. ✅ **Zero API Changes**: relaton-w3c code remains unchanged
134
- 2. ✅ **Transparent Caching**: Cache works through existing w3c_api method calls
135
- 3. ✅ **Proper Architecture**: Cache integrated at lutaml-hal ModelRegister level
136
- 4. ✅ **Real Integration**: Uses actual w3c_api gem methods, not direct HTTP calls
137
- 5. ✅ **HTTP Semantics**: Maintains existing HTTP cache implementation (ETags, etc.)
138
-
139
- ## Files to Modify
140
-
141
- ### lutaml-hal Changes
142
- - `lib/lutaml/hal/model_register.rb` - Add cache_store support to fetch() method
143
-
144
- ### w3c_api Changes
145
- - `lib/w3c_api/hal.rb` - Add cache configuration method
146
-
147
- ### Demo Fixes
148
- - Replace all `SimpleHttpClient` usage with `W3cApi::Client` methods
149
- - Show transparent caching through real API calls
150
-
151
- ### Tests
152
- - Update integration tests to use real w3c_api methods
153
- - Test cache behavior through ModelRegister.fetch()
154
-
155
- ## Key Insight
156
-
157
- The fundamental error was bypassing the w3c_api gem architecture. The cache must integrate **within** the existing call chain, not replace it. This ensures:
158
-
159
- - Zero breaking changes for users
160
- - Proper architectural layering
161
- - Transparent operation
162
- - Real-world validation with actual gem usage
163
-
164
- This corrected approach maintains the existing HTTP cache implementation (models, headers, etc.) but integrates it at the correct architectural level.
data/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- gemspec
6
-
7
- gem "irb"
8
- gem "paint"
9
- gem "rake"
10
- gem "rspec"
11
- gem "rubocop"
12
- gem "rubocop-performance", require: false
13
- gem "rubocop-rake", require: false
14
- gem "rubocop-rspec", require: false
15
- gem "sqlite3"
data/Gemfile.lock DELETED
@@ -1,227 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lutaml-store (0.2.0)
5
- lutaml-model (~> 0.8.15)
6
- rubyzip (~> 2.3)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- ast (2.4.3)
12
- base64 (0.3.0)
13
- bigdecimal (4.1.2)
14
- canon (0.2.9)
15
- diff-lcs
16
- json
17
- moxml
18
- nokogiri
19
- paint
20
- rainbow
21
- table_tennis
22
- thor
23
- unicode-name
24
- concurrent-ruby (1.3.6)
25
- csv (3.3.5)
26
- date (3.5.1)
27
- diff-lcs (1.6.2)
28
- erb (6.0.4)
29
- ffi (1.17.4)
30
- ffi (1.17.4-arm64-darwin)
31
- ffi (1.17.4-x86_64-linux-gnu)
32
- io-console (0.8.2)
33
- irb (1.18.0)
34
- pp (>= 0.6.0)
35
- prism (>= 1.3.0)
36
- rdoc (>= 4.0.0)
37
- reline (>= 0.4.2)
38
- json (2.19.5)
39
- language_server-protocol (3.17.0.5)
40
- lint_roller (1.1.0)
41
- liquid (5.12.0)
42
- bigdecimal
43
- strscan (>= 3.1.1)
44
- lutaml-model (0.8.15)
45
- base64
46
- bigdecimal
47
- canon
48
- concurrent-ruby
49
- liquid (>= 4.0, < 6.0)
50
- moxml (~> 0.1.23)
51
- ostruct
52
- rubyzip (~> 2.3)
53
- thor
54
- memo_wise (1.13.0)
55
- mini_portile2 (2.8.9)
56
- moxml (0.1.23)
57
- nokogiri (1.19.3)
58
- mini_portile2 (~> 2.8.2)
59
- racc (~> 1.4)
60
- nokogiri (1.19.3-arm64-darwin)
61
- racc (~> 1.4)
62
- nokogiri (1.19.3-x86_64-linux-gnu)
63
- racc (~> 1.4)
64
- ostruct (0.6.3)
65
- paint (2.3.0)
66
- parallel (2.1.0)
67
- parser (3.3.11.1)
68
- ast (~> 2.4.1)
69
- racc
70
- pp (0.6.3)
71
- prettyprint
72
- prettyprint (0.2.0)
73
- prism (1.9.0)
74
- psych (5.3.1)
75
- date
76
- stringio
77
- racc (1.8.1)
78
- rainbow (3.1.1)
79
- rake (13.4.2)
80
- rdoc (7.2.0)
81
- erb
82
- psych (>= 4.0.0)
83
- tsort
84
- regexp_parser (2.12.0)
85
- reline (0.6.3)
86
- io-console (~> 0.5)
87
- rspec (3.13.2)
88
- rspec-core (~> 3.13.0)
89
- rspec-expectations (~> 3.13.0)
90
- rspec-mocks (~> 3.13.0)
91
- rspec-core (3.13.6)
92
- rspec-support (~> 3.13.0)
93
- rspec-expectations (3.13.5)
94
- diff-lcs (>= 1.2.0, < 2.0)
95
- rspec-support (~> 3.13.0)
96
- rspec-mocks (3.13.8)
97
- diff-lcs (>= 1.2.0, < 2.0)
98
- rspec-support (~> 3.13.0)
99
- rspec-support (3.13.7)
100
- rubocop (1.86.2)
101
- json (~> 2.3)
102
- language_server-protocol (~> 3.17.0.2)
103
- lint_roller (~> 1.1.0)
104
- parallel (>= 1.10)
105
- parser (>= 3.3.0.2)
106
- rainbow (>= 2.2.2, < 4.0)
107
- regexp_parser (>= 2.9.3, < 3.0)
108
- rubocop-ast (>= 1.49.0, < 2.0)
109
- ruby-progressbar (~> 1.7)
110
- unicode-display_width (>= 2.4.0, < 4.0)
111
- rubocop-ast (1.49.1)
112
- parser (>= 3.3.7.2)
113
- prism (~> 1.7)
114
- rubocop-performance (1.26.1)
115
- lint_roller (~> 1.1)
116
- rubocop (>= 1.75.0, < 2.0)
117
- rubocop-ast (>= 1.47.1, < 2.0)
118
- rubocop-rake (0.7.1)
119
- lint_roller (~> 1.1)
120
- rubocop (>= 1.72.1)
121
- rubocop-rspec (3.9.0)
122
- lint_roller (~> 1.1)
123
- rubocop (~> 1.81)
124
- ruby-progressbar (1.13.0)
125
- rubyzip (2.4.1)
126
- sqlite3 (1.7.3)
127
- mini_portile2 (~> 2.8.0)
128
- stringio (3.2.0)
129
- strscan (3.1.8)
130
- table_tennis (0.0.7)
131
- csv (~> 3.3)
132
- ffi (~> 1.17)
133
- memo_wise (~> 1.11)
134
- paint (~> 2.3)
135
- unicode-display_width (~> 3.1)
136
- thor (1.5.0)
137
- tsort (0.2.0)
138
- unicode-display_width (3.2.0)
139
- unicode-emoji (~> 4.1)
140
- unicode-emoji (4.2.0)
141
- unicode-name (1.14.0)
142
- unicode-types (~> 1.11)
143
- unicode-types (1.11.0)
144
-
145
- PLATFORMS
146
- arm64-darwin-23
147
- x86_64-linux
148
-
149
- DEPENDENCIES
150
- irb
151
- lutaml-store!
152
- paint
153
- rake
154
- rspec
155
- rubocop
156
- rubocop-performance
157
- rubocop-rake
158
- rubocop-rspec
159
- sqlite3
160
-
161
- CHECKSUMS
162
- ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
163
- base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
164
- bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
165
- bundler (4.0.11) sha256=5bcec0fb78302e48d02ee46f10ee6e6942be647ba5b44a6d1ddfda9a240ce785
166
- canon (0.2.9) sha256=2623e83062272d34cff08a7d091b9f4b27dc04d3df75266ac396e23fae7d92e3
167
- concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
168
- csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f
169
- date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
170
- diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
171
- erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
172
- ffi (1.17.4) sha256=bcd1642e06f0d16fc9e09ac6d49c3a7298b9789bcb58127302f934e437d60acf
173
- ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b
174
- ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d
175
- io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
176
- irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
177
- json (2.19.5) sha256=218a18553e4801d579ca7e0f5bc72bafd776d7397238a1fb4e74db5b0a812c59
178
- language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
179
- lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
180
- liquid (5.12.0) sha256=5a3c2c2430cd925d21c53e4ed9abea52cd0a9da53b541422f81dee79aca2a673
181
- lutaml-model (0.8.15) sha256=8ee4181197c0dbfef4bcc0d4c63f783c33b8187f6fddeedf68bb0cd854959ca6
182
- lutaml-store (0.2.0)
183
- memo_wise (1.13.0) sha256=30220c38c4cef410849bc73553c58664dc2c91c6379e4a1df22aea02358b716b
184
- mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289
185
- moxml (0.1.23) sha256=d78a4f9c075973603d9b941908f2cac16a1f74de6f6d8247d7b44ecbe3322b3a
186
- nokogiri (1.19.3) sha256=78312cbac32a40c812780d9678221b79d51288eec00054c1a8d15f7ce05960e8
187
- nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42
188
- nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976
189
- ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
190
- paint (2.3.0) sha256=327d623e4038619d5bd99ae5db07973859cd78400c7f0329eea283cef8e83be5
191
- parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
192
- parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
193
- pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
194
- prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
195
- prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
196
- psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
197
- racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
198
- rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
199
- rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
200
- rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
201
- regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
202
- reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
203
- rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
204
- rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
205
- rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
206
- rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
207
- rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
208
- rubocop (1.86.2) sha256=bb2e97f635eda42c448f2588f4a6ff78f221b8bdfdf65b1e9b07fbd57521b45d
209
- rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
210
- rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
211
- rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
212
- rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
213
- ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
214
- rubyzip (2.4.1) sha256=8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615
215
- sqlite3 (1.7.3) sha256=fa77f63c709548f46d4e9b6bb45cda52aa3881aa12cc85991132758e8968701c
216
- stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
217
- strscan (3.1.8) sha256=aae2db611a225559f21ffbb71765c9a4e60fd262534a9ea84f4f11c7f32f679e
218
- table_tennis (0.0.7) sha256=b45b50dc7714e3bea5b31d2ad2b7d6bdc2995fc7a686976017c17424e1094a28
219
- thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
220
- tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
221
- unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
222
- unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
223
- unicode-name (1.14.0) sha256=b350dcdeb503748c8ad05c472e8078570fbf3231a73be53431c15db10bbedbdd
224
- unicode-types (1.11.0) sha256=81d1201273260fa89b85471e7eebb93a51bb4e5f078a525508dcae7835d176f9
225
-
226
- BUNDLED WITH
227
- 4.0.11