pheme 4.0.15 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55dba8498ea4e27e8725d819a9ecb085182e568a9b7f978ee8108224ce2f6b75
4
- data.tar.gz: b563ecb37ec9cd3b57e0e53f6f1145c0871661dbe87d005428cab70b3d15ea0f
3
+ metadata.gz: 73d6d18c98b810a214ef5386e5ec140fc32def55ab066649e7ff4d1296dda78b
4
+ data.tar.gz: b8735d499447d6e83a3a5b301a42b58832dd814e7551be5a2b30b2fc9ee58cd7
5
5
  SHA512:
6
- metadata.gz: 1be078789a00dd493a1493aabb6efd4a308210d254cbeb4dffdec8a25e99ded101e9f6801de70ce80a9eb2d570caaee4dca9bbfe22dcce3a5fa8da58ceb0e0a5
7
- data.tar.gz: 59d82218e150ceb46f3f2e0c9de6445d866ec7e351115d7542774452766ff03efe9aebabe4366701dd968e417ef8feeec865119f9abdae2e750184a5e3f5abf8
6
+ metadata.gz: 7df69644e5d8a98420f716f7435197f6d303d1db53a74b98e50f26a93a8c0e3de54f33a6421bd1169948d63fbad5542dd33e7c1251e4f0167ce6f0d9095342a3
7
+ data.tar.gz: c48888c79ea780c30b07bdbd7135f424b9ce306deb7839fc8146a3805a9046aed318be03d94ef472585eb496a101a6f47c7ca5f79916f27fdd0a6e624c7e63be
@@ -10,19 +10,39 @@ jobs:
10
10
  build:
11
11
  name: Build
12
12
  runs-on: ubuntu-20.04
13
+ strategy:
14
+ matrix:
15
+ ruby-version: [2.7.5, 3.0.3, 3.1.0]
13
16
  steps:
14
17
  - uses: actions/checkout@v2
15
18
  with:
16
19
  fetch-depth: 0
17
- - uses: ruby/setup-ruby@v1
20
+ - name: Set up Ruby ${{ matrix.ruby-version }}
21
+ uses: ruby/setup-ruby@v1
18
22
  with:
19
23
  bundler-cache: true
24
+ ruby-version: ${{ matrix.ruby-version }}
20
25
  - name: Lint
21
26
  run: bundle exec rubocop
22
27
  - name: Test
23
28
  run: bundle exec rspec
29
+
30
+ # Separate `release` job from `build`, as we only want release to be run once
31
+ # and not run for each ruby version in the matrix:
32
+ release:
33
+ name: Release
34
+ if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
35
+ needs: build
36
+ runs-on: ubuntu-20.04
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+ with:
40
+ fetch-depth: 0
41
+ - name: Set up Ruby
42
+ uses: ruby/setup-ruby@v1
43
+ with:
44
+ bundler-cache: true
24
45
  - name: Release the gem
25
- if: ${{ github.ref == 'refs/heads/main' }}
26
46
  run: |
27
47
  mkdir -p ~/.gem
28
48
  cat << EOF > ~/.gem/credentials
@@ -0,0 +1,20 @@
1
+ name: 'Close stale PRs'
2
+ on:
3
+ schedule:
4
+ - cron: '30 6 * * *' # 6:30 am UTC: 1:30 am EST
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v4
11
+ with:
12
+ days-before-stale: 30
13
+ days-before-close: 60
14
+ stale-pr-message: >
15
+ This issue has been automatically marked as stale because it has not had
16
+ recent activity. It will be closed if no further activity occurs.
17
+ close-pr-message: >
18
+ This issue has been automatically closed because it has had no activity
19
+ for over 90 days. Please re-open if you feel this was done in error.
20
+ exempt-pr-labels: 'dependabot,depfu,dependencies,security'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.3
1
+ 2.7.5
data/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 5.0.1 - 2022-02-02
8
+ ### Changed
9
+ - Updated dependencies
10
+
11
+ ## 5.0.0 - 2022-01-04
12
+ ### Changed
13
+ - Remove RecusiveOpenStruct in favor of ResourceStruct::FlexStruct
14
+
15
+ ## 4.1.1 - 2022-01-04
16
+ ### Changed
17
+ - Updated dependencies
18
+
19
+ ## 4.1.0 - 2021-12-31
20
+ ### Changed
21
+ - Add Ruby 3 support
22
+
7
23
  ## 4.0.15 - 2021-12-03
8
24
  ### Changed
9
25
  - Updated dependencies
data/Gemfile.lock CHANGED
@@ -1,35 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pheme (4.0.15)
4
+ pheme (5.0.1)
5
5
  activesupport (>= 4)
6
6
  aws-sdk-sns (~> 1.1)
7
7
  aws-sdk-sqs (~> 1.3)
8
- recursive-open-struct (~> 1)
8
+ resource-struct (~> 0.4)
9
9
  smarter_csv (~> 1)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (6.1.4.1)
14
+ activesupport (7.0.1)
15
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
16
  i18n (>= 1.6, < 2)
17
17
  minitest (>= 5.1)
18
18
  tzinfo (~> 2.0)
19
- zeitwerk (~> 2.3)
20
19
  ast (2.4.2)
21
20
  aws-eventstream (1.2.0)
22
- aws-partitions (1.539.0)
23
- aws-sdk-core (3.124.0)
21
+ aws-partitions (1.551.0)
22
+ aws-sdk-core (3.125.5)
24
23
  aws-eventstream (~> 1, >= 1.0.2)
25
24
  aws-partitions (~> 1, >= 1.525.0)
26
25
  aws-sigv4 (~> 1.1)
27
26
  jmespath (~> 1.0)
28
- aws-sdk-sns (1.49.0)
29
- aws-sdk-core (~> 3, >= 3.122.0)
27
+ aws-sdk-sns (1.50.0)
28
+ aws-sdk-core (~> 3, >= 3.125.0)
30
29
  aws-sigv4 (~> 1.1)
31
- aws-sdk-sqs (1.48.0)
32
- aws-sdk-core (~> 3, >= 3.122.0)
30
+ aws-sdk-sqs (1.49.0)
31
+ aws-sdk-core (~> 3, >= 3.125.0)
33
32
  aws-sigv4 (~> 1.1)
34
33
  aws-sigv4 (1.4.0)
35
34
  aws-eventstream (~> 1, >= 1.0.2)
@@ -37,23 +36,23 @@ GEM
37
36
  bundler (>= 1.2.0, < 3)
38
37
  thor (~> 1.0)
39
38
  concurrent-ruby (1.1.9)
40
- diff-lcs (1.4.4)
39
+ diff-lcs (1.5.0)
41
40
  docile (1.4.0)
42
- git (1.9.1)
41
+ git (1.10.2)
43
42
  rchardet (~> 1.8)
44
- i18n (1.8.11)
43
+ i18n (1.9.1)
45
44
  concurrent-ruby (~> 1.0)
46
- jmespath (1.4.0)
47
- minitest (5.14.4)
45
+ jmespath (1.5.0)
46
+ minitest (5.15.0)
48
47
  parallel (1.21.0)
49
- parser (3.0.3.1)
48
+ parser (3.1.0.0)
50
49
  ast (~> 2.4.1)
51
50
  rack (2.2.3)
52
- rainbow (3.0.0)
51
+ rainbow (3.1.1)
53
52
  rake (13.0.6)
54
53
  rchardet (1.8.0)
55
- recursive-open-struct (1.1.3)
56
- regexp_parser (2.1.1)
54
+ regexp_parser (2.2.0)
55
+ resource-struct (0.4.0)
57
56
  rexml (3.2.5)
58
57
  rspec (3.10.0)
59
58
  rspec-core (~> 3.10.0)
@@ -61,41 +60,41 @@ GEM
61
60
  rspec-mocks (~> 3.10.0)
62
61
  rspec-collection_matchers (1.2.0)
63
62
  rspec-expectations (>= 2.99.0.beta1)
64
- rspec-core (3.10.1)
63
+ rspec-core (3.10.2)
65
64
  rspec-support (~> 3.10.0)
66
- rspec-expectations (3.10.1)
65
+ rspec-expectations (3.10.2)
67
66
  diff-lcs (>= 1.2.0, < 2.0)
68
67
  rspec-support (~> 3.10.0)
69
68
  rspec-its (1.3.0)
70
69
  rspec-core (>= 3.0.0)
71
70
  rspec-expectations (>= 3.0.0)
72
- rspec-mocks (3.10.2)
71
+ rspec-mocks (3.10.3)
73
72
  diff-lcs (>= 1.2.0, < 2.0)
74
73
  rspec-support (~> 3.10.0)
75
74
  rspec-support (3.10.3)
76
- rspec_junit_formatter (0.4.1)
75
+ rspec_junit_formatter (0.5.1)
77
76
  rspec-core (>= 2, < 4, != 2.12.0)
78
- rubocop (1.23.0)
77
+ rubocop (1.25.0)
79
78
  parallel (~> 1.10)
80
- parser (>= 3.0.0.0)
79
+ parser (>= 3.1.0.0)
81
80
  rainbow (>= 2.2.2, < 4.0)
82
81
  regexp_parser (>= 1.8, < 3.0)
83
82
  rexml
84
- rubocop-ast (>= 1.12.0, < 2.0)
83
+ rubocop-ast (>= 1.15.1, < 2.0)
85
84
  ruby-progressbar (~> 1.7)
86
85
  unicode-display_width (>= 1.4.0, < 3.0)
87
- rubocop-ast (1.14.0)
86
+ rubocop-ast (1.15.1)
88
87
  parser (>= 3.0.1.1)
89
- rubocop-performance (1.12.0)
88
+ rubocop-performance (1.13.2)
90
89
  rubocop (>= 1.7.0, < 2.0)
91
90
  rubocop-ast (>= 0.4.0)
92
- rubocop-rails (2.12.4)
91
+ rubocop-rails (2.13.2)
93
92
  activesupport (>= 4.2.0)
94
93
  rack (>= 1.1)
95
94
  rubocop (>= 1.7.0, < 2.0)
96
- rubocop-rspec (2.6.0)
95
+ rubocop-rspec (2.8.0)
97
96
  rubocop (~> 1.19)
98
- rubocop-vendor (0.6.1)
97
+ rubocop-vendor (0.8.0)
99
98
  rubocop (>= 0.53.0)
100
99
  ruby-progressbar (1.11.0)
101
100
  simplecov (0.21.2)
@@ -105,17 +104,16 @@ GEM
105
104
  simplecov-html (0.12.3)
106
105
  simplecov_json_formatter (0.1.3)
107
106
  smarter_csv (1.2.9)
108
- thor (1.1.0)
107
+ thor (1.2.1)
109
108
  tzinfo (2.0.4)
110
109
  concurrent-ruby (~> 1.0)
111
110
  unicode-display_width (2.1.0)
112
- ws-style (6.11.3)
113
- rubocop (>= 1.12.1)
111
+ ws-style (6.13.6)
112
+ rubocop (>= 1.23)
114
113
  rubocop-performance (>= 1.10.2)
115
114
  rubocop-rails (>= 2.9.1)
116
115
  rubocop-rspec (>= 2.2.0)
117
116
  rubocop-vendor (>= 0.6.0)
118
- zeitwerk (2.5.1)
119
117
 
120
118
  PLATFORMS
121
119
  ruby
@@ -134,4 +132,4 @@ DEPENDENCIES
134
132
  ws-style
135
133
 
136
134
  BUNDLED WITH
137
- 2.2.32
135
+ 2.2.33
data/Rakefile CHANGED
@@ -6,7 +6,9 @@ end
6
6
 
7
7
  require 'bundler/gem_tasks'
8
8
  require 'rspec/core/rake_task'
9
+ require 'rubocop/rake_task'
9
10
 
10
11
  RSpec::Core::RakeTask.new(:spec)
12
+ RuboCop::RakeTask.new
11
13
 
12
- task default: :spec
14
+ task default: %i[spec rubocop]
@@ -19,7 +19,7 @@ module Pheme
19
19
  end
20
20
 
21
21
  def parse_aws_event(message_contents)
22
- RecursiveOpenStruct.new({ wrapper: message_contents }, recurse_over_arrays: true).wrapper
22
+ ResourceStruct::FlexStruct.new({ wrapper: message_contents }).wrapper
23
23
  end
24
24
  end
25
25
  end
@@ -127,12 +127,12 @@ module Pheme
127
127
 
128
128
  def parse_csv(message_contents)
129
129
  parsed_body = SmarterCSV.process(StringIO.new(message_contents))
130
- parsed_body.map { |item| RecursiveOpenStruct.new(item, recurse_over_arrays: true) }
130
+ parsed_body.map { |item| ResourceStruct::FlexStruct.new(item) }
131
131
  end
132
132
 
133
133
  def parse_json(message_contents)
134
134
  parsed_body = JSON.parse(message_contents)
135
- RecursiveOpenStruct.new({ wrapper: parsed_body }, recurse_over_arrays: true).wrapper
135
+ ResourceStruct::FlexStruct.new({ wrapper: parsed_body }).wrapper
136
136
  end
137
137
 
138
138
  def handle(message, metadata, message_attributes)
data/lib/pheme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pheme
2
- VERSION = '4.0.15'.freeze
2
+ VERSION = '5.0.1'.freeze
3
3
  end
data/lib/pheme.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'active_support/all'
2
- require 'recursive-open-struct'
2
+ require 'resource-struct'
3
3
  require 'aws-sdk-sns'
4
4
  require 'aws-sdk-sqs'
5
5
  require 'securerandom'
data/pheme.gemspec CHANGED
@@ -1,32 +1,32 @@
1
1
  lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
- require "pheme/version"
4
+ require 'pheme/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless s.respond_to?(:metadata)
8
8
 
9
- s.name = "pheme"
9
+ s.name = 'pheme'
10
10
  s.version = Pheme::VERSION
11
- s.authors = ["Peter Graham"]
12
- s.email = ["peter@wealthsimple.com"]
11
+ s.authors = ['Peter Graham']
12
+ s.email = ['peter@wealthsimple.com']
13
13
  s.description = 'Ruby AWS SNS publisher + SQS poller & message handler'
14
14
  s.summary = 'Ruby SNS publisher + SQS poller & message handler'
15
- s.homepage = "https://github.com/wealthsimple/pheme"
15
+ s.homepage = 'https://github.com/wealthsimple/pheme'
16
16
 
17
17
  s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
18
  s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
19
19
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
20
- s.require_paths = ["lib"]
21
- s.license = "MIT"
20
+ s.require_paths = ['lib']
21
+ s.license = 'MIT'
22
22
 
23
23
  s.required_ruby_version = '>= 2.7.3'
24
24
 
25
- s.add_dependency "activesupport", ">= 4"
26
- s.add_dependency "aws-sdk-sns", "~> 1.1"
27
- s.add_dependency "aws-sdk-sqs", "~> 1.3"
28
- s.add_dependency "recursive-open-struct", "~> 1"
29
- s.add_dependency "smarter_csv", "~> 1"
25
+ s.add_dependency 'activesupport', '>= 4'
26
+ s.add_dependency 'aws-sdk-sns', '~> 1.1'
27
+ s.add_dependency 'aws-sdk-sqs', '~> 1.3'
28
+ s.add_dependency 'resource-struct', '~> 0.4'
29
+ s.add_dependency 'smarter_csv', '~> 1'
30
30
 
31
31
  s.add_development_dependency 'bundler'
32
32
  s.add_development_dependency 'git'
@@ -3,7 +3,7 @@ describe Pheme::MessageHandler do
3
3
 
4
4
  before { use_default_configuration! }
5
5
 
6
- let(:message) { RecursiveOpenStruct.new(status: status) }
6
+ let(:message) { ResourceStruct::FlexStruct.new(status: status) }
7
7
  let(:timestamp) { '2018-04-17T21:45:05.915Z' }
8
8
 
9
9
  describe "#handle" do
@@ -3,7 +3,8 @@ describe Pheme::MessageType::AwsEvent do
3
3
  let(:message_id) { SecureRandom.uuid }
4
4
  let(:queue_url) { 'http://queue_url' }
5
5
  let(:queue_message) do
6
- OpenStruct.new(
6
+ instance_double(
7
+ Aws::SQS::Message,
7
8
  message_id: message_id,
8
9
  body: { 'Records' => records }.to_json,
9
10
  queue_url: queue_url,
@@ -22,7 +22,7 @@ describe Pheme::MessageType::SnsMessage do
22
22
 
23
23
  describe "#parse_message" do
24
24
  context "with JSON message" do
25
- let!(:message) { OpenStruct.new({ body: '{"Message":"{\"test\":\"test\"}"}' }) }
25
+ let!(:message) { ResourceStruct::FlexStruct.new({ body: '{"Message":"{\"test\":\"test\"}"}' }) }
26
26
 
27
27
  it 'parses the message correctly' do
28
28
  expect(subject.parse_body(message).test).to eq("test")
@@ -5,7 +5,7 @@ describe Pheme::QueuePoller do
5
5
  let(:topic_arn) { 'arn:topic:test' }
6
6
 
7
7
  let!(:queue_message) do
8
- OpenStruct.new(
8
+ ResourceStruct::FlexStruct.new(
9
9
  body: { Message: message }.to_json,
10
10
  message_id: message_id,
11
11
  )
@@ -57,7 +57,7 @@ describe Pheme::QueuePoller do
57
57
 
58
58
  before do
59
59
  allow(Aws::SQS::QueuePoller).to receive(:new).and_return(aws_poller)
60
- allow(aws_poller).to receive(:before_request).and_yield(OpenStruct.new(received_message_count: max_messages))
60
+ allow(aws_poller).to receive(:before_request).and_yield(ResourceStruct::FlexStruct.new(received_message_count: max_messages))
61
61
  end
62
62
 
63
63
  it 'throws error' do
@@ -145,7 +145,7 @@ describe Pheme::QueuePoller do
145
145
 
146
146
  context 'when message attributes' do
147
147
  let(:queue_message) do
148
- OpenStruct.new(
148
+ ResourceStruct::FlexStruct.new(
149
149
  body: {
150
150
  Message: message,
151
151
  MessageAttributes: {
@@ -222,7 +222,7 @@ describe Pheme::QueuePoller do
222
222
  end
223
223
 
224
224
  it { is_expected.to have(2).items }
225
- it { is_expected.to eq(RecursiveOpenStruct.new({ wrapper: expected_message }, recurse_over_arrays: true).wrapper) }
225
+ it { is_expected.to eq(ResourceStruct::FlexStruct.new({ wrapper: expected_message }).wrapper) }
226
226
  end
227
227
 
228
228
  context "with unknown message format" do
@@ -240,7 +240,7 @@ describe Pheme::QueuePoller do
240
240
 
241
241
  it { is_expected.to be_a(Array) }
242
242
  its(:first) { is_expected.to be_a(Array) }
243
- its('first.first') { is_expected.to be_a(RecursiveOpenStruct) }
243
+ its('first.first') { is_expected.to be_a(ResourceStruct::FlexStruct) }
244
244
 
245
245
  it "parses the nested object" do
246
246
  expect(subject.first.first.test).to eq('test')
@@ -284,7 +284,7 @@ describe Pheme::QueuePoller do
284
284
  }
285
285
  }
286
286
  let!(:queue_message) do
287
- OpenStruct.new(
287
+ ResourceStruct::FlexStruct.new(
288
288
  body: notification.to_json,
289
289
  message_id: message_id,
290
290
  )
@@ -317,7 +317,7 @@ describe Pheme::QueuePoller do
317
317
  }
318
318
  }
319
319
  let!(:queue_message) do
320
- OpenStruct.new(
320
+ ResourceStruct::FlexStruct.new(
321
321
  body: notification.to_json,
322
322
  message_id: message_id,
323
323
  )
@@ -348,7 +348,7 @@ describe Pheme::QueuePoller do
348
348
  }
349
349
  end
350
350
  let!(:queue_message) do
351
- OpenStruct.new(
351
+ ResourceStruct::FlexStruct.new(
352
352
  body: notification.to_json,
353
353
  message_id: message_id,
354
354
  )
@@ -361,7 +361,7 @@ describe Pheme::QueuePoller do
361
361
 
362
362
  it "handles the message" do
363
363
  expect(ExampleMessageHandler).to receive(:new).with(
364
- message: RecursiveOpenStruct.new(message),
364
+ message: ResourceStruct::FlexStruct.new(message),
365
365
  metadata: { timestamp: timestamp, topic_arn: topic_arn },
366
366
  message_attributes: {},
367
367
  )
@@ -387,7 +387,7 @@ describe Pheme::QueuePoller do
387
387
  }
388
388
  end
389
389
  let!(:queue_message) do
390
- OpenStruct.new(
390
+ ResourceStruct::FlexStruct.new(
391
391
  body: notification.to_json,
392
392
  message_id: message_id,
393
393
  )
@@ -416,7 +416,7 @@ describe Pheme::QueuePoller do
416
416
  context "AWS-event message" do
417
417
  subject { ExampleAwsEventQueuePoller.new(queue_url: queue_url) }
418
418
 
419
- let(:queue_message) { OpenStruct.new(body: { 'Records' => records }.to_json) }
419
+ let(:queue_message) { ResourceStruct::FlexStruct.new(body: { 'Records' => records }.to_json) }
420
420
  let(:records) do
421
421
  [{ 'eventVersion' => '2.0', eventSource: 'aws:s3' }]
422
422
  end
@@ -437,7 +437,7 @@ describe Pheme::QueuePoller do
437
437
  let(:message) { { status: 'complete' } }
438
438
  let(:notification) { { 'MessageId' => SecureRandom.uuid, 'Message' => message.to_json, 'Type' => 'Notification', 'Timestamp' => timestamp } }
439
439
  let!(:queue_message) do
440
- OpenStruct.new(
440
+ ResourceStruct::FlexStruct.new(
441
441
  body: notification.to_json,
442
442
  message_id: message_id,
443
443
  )
data/spec/version_spec.rb CHANGED
@@ -4,8 +4,7 @@ describe Pheme do
4
4
  def get_version(git, branch = 'HEAD')
5
5
  git.grep('VERSION = ', 'lib/*/version.rb', { object: branch }).
6
6
  map { |_sha, matches| matches.first[1] }.
7
- map { |version_string| parse_version(version_string) }.
8
- reject(&:nil?).
7
+ filter_map { |version_string| parse_version(version_string) }.
9
8
  first
10
9
  end
11
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pheme
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.15
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-03 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
- name: recursive-open-struct
56
+ name: resource-struct
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1'
61
+ version: '0.4'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1'
68
+ version: '0.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: smarter_csv
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -216,6 +216,7 @@ files:
216
216
  - ".github/CODEOWNERS"
217
217
  - ".github/PULL_REQUEST_TEMPLATE.md"
218
218
  - ".github/workflows/main.yml"
219
+ - ".github/workflows/stale.yml"
219
220
  - ".gitignore"
220
221
  - ".rspec"
221
222
  - ".rubocop.yml"