lunchmoney 1.4.0 → 1.5.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 +4 -4
- data/.github/dependabot.yml +7 -0
- data/.github/workflows/build_and_publish_yard_docs.yml +4 -4
- data/.github/workflows/ci.yml +9 -10
- data/.github/workflows/rbi-updater.yml +1 -1
- data/.github/workflows/release_pipeline.yml +1 -1
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/.simplecov +1 -0
- data/.toys/.toys.rb +8 -0
- data/Gemfile +3 -3
- data/Gemfile.lock +102 -78
- data/README.md +0 -2
- data/SECURITY.md +151 -0
- data/bin/check_vcr_version +94 -0
- data/lib/lunchmoney/api.rb +26 -38
- data/lib/lunchmoney/calls/assets.rb +10 -13
- data/lib/lunchmoney/calls/base.rb +59 -7
- data/lib/lunchmoney/calls/budgets.rb +22 -25
- data/lib/lunchmoney/calls/categories.rb +28 -38
- data/lib/lunchmoney/calls/crypto.rb +7 -9
- data/lib/lunchmoney/calls/plaid_accounts.rb +7 -9
- data/lib/lunchmoney/calls/recurring_expenses.rb +4 -5
- data/lib/lunchmoney/calls/tags.rb +3 -4
- data/lib/lunchmoney/calls/transactions.rb +28 -37
- data/lib/lunchmoney/calls/users.rb +3 -4
- data/lib/lunchmoney/configuration.rb +20 -0
- data/lib/lunchmoney/deprecate.rb +35 -0
- data/lib/lunchmoney/objects/asset.rb +6 -1
- data/lib/lunchmoney/objects/object.rb +4 -9
- data/lib/lunchmoney/objects/plaid_account.rb +6 -1
- data/lib/lunchmoney/validators.rb +8 -6
- data/lib/lunchmoney/version.rb +1 -1
- data/lib/lunchmoney.rb +3 -3
- data/lunchmoney.gemspec +1 -1
- data/sorbet/rbi/annotations/activesupport.rbi +40 -0
- data/sorbet/rbi/dsl/active_support/callbacks.rbi +0 -2
- data/sorbet/rbi/gems/{activesupport@7.2.1.rbi → activesupport@8.0.2.1.rbi} +1431 -1028
- data/sorbet/rbi/gems/{ast@2.4.2.rbi → ast@2.4.3.rbi} +4 -3
- data/sorbet/rbi/gems/{base64@0.2.0.rbi → base64@0.3.0.rbi} +76 -39
- data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
- data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +275 -0
- data/sorbet/rbi/gems/{concurrent-ruby@1.3.4.rbi → concurrent-ruby@1.3.5.rbi} +44 -32
- data/sorbet/rbi/gems/{connection_pool@2.4.1.rbi → connection_pool@2.5.3.rbi} +1 -0
- data/sorbet/rbi/gems/{dotenv@3.1.2.rbi → dotenv@3.1.8.rbi} +21 -29
- data/sorbet/rbi/gems/{drb@2.2.1.rbi → drb@2.2.3.rbi} +503 -188
- data/sorbet/rbi/gems/{erubi@1.13.0.rbi → erubi@1.13.1.rbi} +14 -9
- data/sorbet/rbi/gems/{faraday-net_http@3.1.1.rbi → faraday-net_http@3.4.1.rbi} +34 -34
- data/sorbet/rbi/gems/{faraday@2.10.1.rbi → faraday@2.13.4.rbi} +507 -171
- data/sorbet/rbi/gems/{hashdiff@1.1.1.rbi → hashdiff@1.2.0.rbi} +5 -3
- data/sorbet/rbi/gems/{i18n@1.14.5.rbi → i18n@1.14.7.rbi} +80 -80
- data/sorbet/rbi/gems/{json@2.7.2.rbi → json@2.13.2.rbi} +988 -226
- data/sorbet/rbi/gems/{kramdown@2.4.0.rbi → kramdown@2.5.1.rbi} +316 -234
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
- data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +240 -0
- data/sorbet/rbi/gems/{logger@1.6.0.rbi → logger@1.7.0.rbi} +136 -76
- data/sorbet/rbi/gems/{minitest@5.25.1.rbi → minitest@5.25.5.rbi} +227 -220
- data/sorbet/rbi/gems/{mocha@2.4.5.rbi → mocha@2.7.1.rbi} +154 -118
- data/sorbet/rbi/gems/{net-http@0.4.1.rbi → net-http@0.6.0.rbi} +360 -181
- data/sorbet/rbi/gems/{parser@3.3.4.2.rbi → parser@3.3.9.0.rbi} +326 -308
- data/sorbet/rbi/gems/{prism@0.30.0.rbi → prism@1.4.0.rbi} +12440 -9920
- data/sorbet/rbi/gems/{rack@3.1.7.rbi → rack@3.2.1.rbi} +752 -579
- data/sorbet/rbi/gems/{rake@13.2.1.rbi → rake@13.3.0.rbi} +238 -227
- data/sorbet/rbi/gems/rbi@0.3.6.rbi +5162 -0
- data/sorbet/rbi/gems/rbs@4.0.0.dev.4.rbi +7895 -0
- data/sorbet/rbi/gems/{regexp_parser@2.9.2.rbi → regexp_parser@2.11.2.rbi} +1124 -1013
- data/sorbet/rbi/gems/require-hooks@0.2.2.rbi +110 -0
- data/sorbet/rbi/gems/{rexml@3.3.6.rbi → rexml@3.4.2.rbi} +755 -318
- data/sorbet/rbi/gems/{rubocop-ast@1.32.1.rbi → rubocop-ast@1.46.0.rbi} +1287 -899
- data/sorbet/rbi/gems/{rubocop-minitest@0.35.1.rbi → rubocop-minitest@0.38.2.rbi} +133 -97
- data/sorbet/rbi/gems/{rubocop-rails@2.26.0.rbi → rubocop-rails@2.33.3.rbi} +9874 -6597
- data/sorbet/rbi/gems/{rubocop-shopify@2.15.1.rbi → rubocop-shopify@2.17.1.rbi} +1 -0
- data/sorbet/rbi/gems/{rubocop-sorbet@0.8.5.rbi → rubocop-sorbet@0.10.5.rbi} +804 -83
- data/sorbet/rbi/gems/{rubocop@1.65.1.rbi → rubocop@1.80.1.rbi} +10688 -5103
- data/sorbet/rbi/gems/{securerandom@0.3.1.rbi → securerandom@0.4.1.rbi} +7 -5
- data/sorbet/rbi/gems/{spoom@1.4.2.rbi → spoom@1.7.6.rbi} +1939 -1039
- data/sorbet/rbi/gems/{tapioca@0.16.1.rbi → tapioca@0.17.7.rbi} +765 -821
- data/sorbet/rbi/gems/{thor@1.3.1.rbi → thor@1.4.0.rbi} +139 -91
- data/sorbet/rbi/gems/unicode-display_width@3.1.5.rbi +132 -0
- data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +251 -0
- data/sorbet/rbi/gems/{uri@0.13.0.rbi → uri@1.0.3.rbi} +278 -256
- data/sorbet/rbi/gems/{vcr@6.3.1.rbi → vcr@6.3.1-ce35c236fe48899f02ddf780973b44cdb756c0ee.rbi} +140 -123
- data/sorbet/rbi/gems/{webmock@3.23.1.rbi → webmock@3.25.1.rbi} +101 -78
- data/sorbet/rbi/gems/{yard@0.9.36.rbi → yard@0.9.37.rbi} +394 -235
- metadata +55 -53
- data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +0 -78
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +0 -14237
- data/sorbet/rbi/gems/rbi@0.1.14.rbi +0 -3305
- data/sorbet/rbi/gems/strscan@3.1.0.rbi +0 -9
- data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +0 -65
- /data/sorbet/rbi/gems/{parallel@1.26.3.rbi → parallel@1.27.0.rbi} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 837338cb47e04506201212586e26c1b9c25a21eded600c3ddf34b9e20fae4395
|
4
|
+
data.tar.gz: ef26cf61532ecc48c74e7f15f6bf215a148578c6903dea90ad4a78d36f89dc8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5285b8d16caa4dd5d4f6897008db0d4ec0ac51efea529ac8174cd6fce0b1c3a2b5384a4a9c08f6ff667fb3b08cf3aaab52bb7e26b52220e116b7245dd052d16
|
7
|
+
data.tar.gz: a8775f582eee1fc9c8258ab8e89d7486dedd66be933f4fa7b3044eee6ce859edfcb3f218cb6c87e9eb4c98e381708fa1dcdd41b4e33019e1d4d445bfcd82b6ab
|
data/.github/dependabot.yml
CHANGED
@@ -11,6 +11,13 @@ updates:
|
|
11
11
|
open-pull-requests-limit: 100
|
12
12
|
schedule:
|
13
13
|
interval: weekly
|
14
|
+
groups:
|
15
|
+
minor_updates:
|
16
|
+
update-types:
|
17
|
+
- "minor"
|
18
|
+
patch_updates:
|
19
|
+
update-types:
|
20
|
+
- "patch"
|
14
21
|
- package-ecosystem: github-actions
|
15
22
|
directory: "/"
|
16
23
|
open-pull-requests-limit: 100
|
@@ -20,12 +20,12 @@ jobs:
|
|
20
20
|
runs-on: ubuntu-latest
|
21
21
|
|
22
22
|
steps:
|
23
|
-
- uses: actions/checkout@
|
23
|
+
- uses: actions/checkout@v5
|
24
24
|
|
25
25
|
- name: Set up Ruby
|
26
|
-
uses: ruby/setup-ruby@v1.
|
26
|
+
uses: ruby/setup-ruby@v1.218.0
|
27
27
|
with:
|
28
|
-
ruby-version:
|
28
|
+
ruby-version: head
|
29
29
|
bundler-cache: true
|
30
30
|
|
31
31
|
- name: Install YARD
|
@@ -38,7 +38,7 @@ jobs:
|
|
38
38
|
uses: actions/configure-pages@v5
|
39
39
|
|
40
40
|
- name: Upload Artifact
|
41
|
-
uses: actions/upload-pages-artifact@
|
41
|
+
uses: actions/upload-pages-artifact@v4
|
42
42
|
with:
|
43
43
|
path: "doc"
|
44
44
|
|
data/.github/workflows/ci.yml
CHANGED
@@ -14,19 +14,22 @@ jobs:
|
|
14
14
|
|
15
15
|
strategy:
|
16
16
|
matrix:
|
17
|
-
ruby-version: [3.
|
17
|
+
ruby-version: [3.2, 3.3, 3.4, head]
|
18
18
|
continue-on-error: ${{ endsWith(matrix.ruby-version, 'head') }}
|
19
19
|
|
20
20
|
steps:
|
21
21
|
-
|
22
22
|
name: Checkout
|
23
|
-
uses: actions/checkout@
|
23
|
+
uses: actions/checkout@v5
|
24
24
|
-
|
25
25
|
name: Setup Ruby
|
26
26
|
uses: ruby/setup-ruby@v1
|
27
27
|
with:
|
28
28
|
bundler-cache: true
|
29
29
|
ruby-version: ${{ matrix.ruby-version }}
|
30
|
+
-
|
31
|
+
name: Check for newer VCR version
|
32
|
+
run: bin/toys check-vcr-version
|
30
33
|
-
|
31
34
|
name: RuboCop
|
32
35
|
run: bin/rubocop
|
@@ -46,18 +49,14 @@ jobs:
|
|
46
49
|
run: bin/toys mdl
|
47
50
|
-
|
48
51
|
name: Run Tests (Using Cassettes)
|
49
|
-
if: ${{ ! endsWith(matrix.ruby-version, '3.
|
52
|
+
if: ${{ ! endsWith(matrix.ruby-version, '3.4') }}
|
50
53
|
run: bin/toys test
|
51
54
|
-
|
52
55
|
name: Run Tests (With Remote Calls & Coverage Report)
|
53
|
-
if: ${{ endsWith(matrix.ruby-version, '3.
|
54
|
-
|
56
|
+
if: ${{ endsWith(matrix.ruby-version, '3.4') }}
|
57
|
+
continue-on-error: true
|
55
58
|
env:
|
56
|
-
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
57
59
|
REMOTE_TESTS_ENABLED: ${{ vars.REMOTE_TESTS_ENABLED }}
|
58
60
|
LUNCHMONEY_TOKEN: ${{ secrets.LUNCHMONEY_TOKEN }}
|
59
|
-
|
60
|
-
coverageCommand: bin/toys test
|
61
|
-
coverageLocations: |
|
62
|
-
${{ github.workspace }}/coverage/coverage.json:simplecov
|
61
|
+
run: bin/toys test
|
63
62
|
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.4.5
|
data/.simplecov
CHANGED
data/.toys/.toys.rb
CHANGED
@@ -9,3 +9,11 @@ alias_tool :style, :rubocop
|
|
9
9
|
alias_tool :tapioca, :rbi
|
10
10
|
alias_tool :tc, :typecheck
|
11
11
|
alias_tool :cov, :coverage
|
12
|
+
|
13
|
+
tool "check-vcr-version" do
|
14
|
+
desc "Check if a newer version of VCR has been released"
|
15
|
+
|
16
|
+
def run
|
17
|
+
system("ruby", "bin/check_vcr_version") || exit(1)
|
18
|
+
end
|
19
|
+
end
|
data/Gemfile
CHANGED
@@ -7,10 +7,10 @@ gemspec
|
|
7
7
|
|
8
8
|
# Specify development dependencies here
|
9
9
|
gem "toys"
|
10
|
-
gem "minitest", "~> 5.
|
11
|
-
gem "mocha", "~> 2.
|
10
|
+
gem "minitest", "~> 5.25", require: false
|
11
|
+
gem "mocha", "~> 2.7.1", require: false
|
12
12
|
gem "webmock", require: false
|
13
|
-
gem "vcr", require: false
|
13
|
+
gem "vcr", git: "https://github.com/vcr/vcr.git", ref: "ce35c236fe48899f02ddf780973b44cdb756c0ee", require: false
|
14
14
|
gem "rubocop-shopify", require: false
|
15
15
|
gem "rubocop-sorbet", require: false
|
16
16
|
gem "rubocop-minitest", require: false
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/vcr/vcr.git
|
3
|
+
revision: ce35c236fe48899f02ddf780973b44cdb756c0ee
|
4
|
+
ref: ce35c236fe48899f02ddf780973b44cdb756c0ee
|
5
|
+
specs:
|
6
|
+
vcr (6.3.1)
|
7
|
+
|
1
8
|
PATH
|
2
9
|
remote: .
|
3
10
|
specs:
|
4
|
-
lunchmoney (1.
|
11
|
+
lunchmoney (1.5.0)
|
5
12
|
activesupport (>= 6.1)
|
6
13
|
faraday (>= 1.0.0)
|
7
14
|
sorbet-runtime (>= 0.5)
|
@@ -9,8 +16,9 @@ PATH
|
|
9
16
|
GEM
|
10
17
|
remote: https://rubygems.org/
|
11
18
|
specs:
|
12
|
-
activesupport (
|
19
|
+
activesupport (8.0.2.1)
|
13
20
|
base64
|
21
|
+
benchmark (>= 0.3)
|
14
22
|
bigdecimal
|
15
23
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
16
24
|
connection_pool (>= 2.2.5)
|
@@ -20,147 +28,162 @@ GEM
|
|
20
28
|
minitest (>= 5.1)
|
21
29
|
securerandom (>= 0.3)
|
22
30
|
tzinfo (~> 2.0, >= 2.0.5)
|
31
|
+
uri (>= 0.13.1)
|
23
32
|
addressable (2.8.7)
|
24
33
|
public_suffix (>= 2.0.2, < 7.0)
|
25
34
|
appraisal (2.5.0)
|
26
35
|
bundler
|
27
36
|
rake
|
28
37
|
thor (>= 0.14.0)
|
29
|
-
ast (2.4.
|
30
|
-
base64 (0.
|
31
|
-
|
38
|
+
ast (2.4.3)
|
39
|
+
base64 (0.3.0)
|
40
|
+
benchmark (0.4.1)
|
41
|
+
bigdecimal (3.2.2)
|
32
42
|
chef-utils (18.5.0)
|
33
43
|
concurrent-ruby
|
34
|
-
concurrent-ruby (1.3.
|
35
|
-
connection_pool (2.
|
44
|
+
concurrent-ruby (1.3.5)
|
45
|
+
connection_pool (2.5.3)
|
36
46
|
crack (1.0.0)
|
37
47
|
bigdecimal
|
38
48
|
rexml
|
39
49
|
docile (1.4.1)
|
40
|
-
dotenv (3.1.
|
41
|
-
drb (2.2.
|
42
|
-
erubi (1.13.
|
43
|
-
faraday (2.
|
44
|
-
faraday-net_http (>= 2.0, < 3.
|
50
|
+
dotenv (3.1.8)
|
51
|
+
drb (2.2.3)
|
52
|
+
erubi (1.13.1)
|
53
|
+
faraday (2.13.4)
|
54
|
+
faraday-net_http (>= 2.0, < 3.5)
|
55
|
+
json
|
45
56
|
logger
|
46
|
-
faraday-net_http (3.
|
47
|
-
net-http
|
48
|
-
hashdiff (1.
|
49
|
-
i18n (1.14.
|
57
|
+
faraday-net_http (3.4.1)
|
58
|
+
net-http (>= 0.5.0)
|
59
|
+
hashdiff (1.2.0)
|
60
|
+
i18n (1.14.7)
|
50
61
|
concurrent-ruby (~> 1.0)
|
51
|
-
json (2.
|
52
|
-
kramdown (2.
|
53
|
-
rexml
|
62
|
+
json (2.13.2)
|
63
|
+
kramdown (2.5.1)
|
64
|
+
rexml (>= 3.3.9)
|
54
65
|
kramdown-parser-gfm (1.1.0)
|
55
66
|
kramdown (~> 2.0)
|
56
|
-
language_server-protocol (3.17.0.
|
57
|
-
|
67
|
+
language_server-protocol (3.17.0.5)
|
68
|
+
lint_roller (1.1.0)
|
69
|
+
logger (1.7.0)
|
58
70
|
mdl (0.13.0)
|
59
71
|
kramdown (~> 2.3)
|
60
72
|
kramdown-parser-gfm (~> 1.1)
|
61
73
|
mixlib-cli (~> 2.1, >= 2.1.1)
|
62
74
|
mixlib-config (>= 2.2.1, < 4)
|
63
75
|
mixlib-shellout
|
64
|
-
minitest (5.25.
|
76
|
+
minitest (5.25.5)
|
65
77
|
mixlib-cli (2.1.8)
|
66
78
|
mixlib-config (3.0.27)
|
67
79
|
tomlrb
|
68
80
|
mixlib-shellout (3.2.8)
|
69
81
|
chef-utils
|
70
|
-
mocha (2.
|
82
|
+
mocha (2.7.1)
|
71
83
|
ruby2_keywords (>= 0.0.5)
|
72
|
-
net-http (0.
|
84
|
+
net-http (0.6.0)
|
73
85
|
uri
|
74
86
|
netrc (0.11.0)
|
75
|
-
parallel (1.
|
76
|
-
parser (3.3.
|
87
|
+
parallel (1.27.0)
|
88
|
+
parser (3.3.9.0)
|
77
89
|
ast (~> 2.4.1)
|
78
90
|
racc
|
79
|
-
prism (
|
91
|
+
prism (1.4.0)
|
80
92
|
public_suffix (6.0.1)
|
81
93
|
racc (1.8.1)
|
82
|
-
rack (3.1
|
94
|
+
rack (3.2.1)
|
83
95
|
rainbow (3.1.1)
|
84
|
-
rake (13.
|
85
|
-
rbi (0.
|
86
|
-
prism (
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
96
|
+
rake (13.3.0)
|
97
|
+
rbi (0.3.6)
|
98
|
+
prism (~> 1.0)
|
99
|
+
rbs (>= 3.4.4)
|
100
|
+
rbs (4.0.0.dev.4)
|
101
|
+
logger
|
102
|
+
prism (>= 1.3.0)
|
103
|
+
regexp_parser (2.11.2)
|
104
|
+
require-hooks (0.2.2)
|
105
|
+
rexml (3.4.2)
|
106
|
+
rubocop (1.80.1)
|
92
107
|
json (~> 2.3)
|
93
|
-
language_server-protocol (
|
108
|
+
language_server-protocol (~> 3.17.0.2)
|
109
|
+
lint_roller (~> 1.1.0)
|
94
110
|
parallel (~> 1.10)
|
95
111
|
parser (>= 3.3.0.2)
|
96
112
|
rainbow (>= 2.2.2, < 4.0)
|
97
|
-
regexp_parser (>= 2.
|
98
|
-
|
99
|
-
rubocop-ast (>= 1.31.1, < 2.0)
|
113
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
114
|
+
rubocop-ast (>= 1.46.0, < 2.0)
|
100
115
|
ruby-progressbar (~> 1.7)
|
101
|
-
unicode-display_width (>= 2.4.0, <
|
102
|
-
rubocop-ast (1.
|
103
|
-
parser (>= 3.3.
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
116
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
117
|
+
rubocop-ast (1.46.0)
|
118
|
+
parser (>= 3.3.7.2)
|
119
|
+
prism (~> 1.4)
|
120
|
+
rubocop-minitest (0.38.2)
|
121
|
+
lint_roller (~> 1.1)
|
122
|
+
rubocop (>= 1.75.0, < 2.0)
|
123
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
124
|
+
rubocop-rails (2.33.3)
|
108
125
|
activesupport (>= 4.2.0)
|
126
|
+
lint_roller (~> 1.1)
|
109
127
|
rack (>= 1.1)
|
110
|
-
rubocop (>= 1.
|
111
|
-
rubocop-ast (>= 1.
|
112
|
-
rubocop-shopify (2.
|
113
|
-
rubocop (~> 1.
|
114
|
-
rubocop-sorbet (0.
|
115
|
-
|
128
|
+
rubocop (>= 1.75.0, < 2.0)
|
129
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
130
|
+
rubocop-shopify (2.17.1)
|
131
|
+
rubocop (~> 1.62)
|
132
|
+
rubocop-sorbet (0.10.5)
|
133
|
+
lint_roller
|
134
|
+
rubocop (>= 1.75.2)
|
116
135
|
ruby-progressbar (1.13.0)
|
117
136
|
ruby2_keywords (0.0.5)
|
118
|
-
securerandom (0.
|
137
|
+
securerandom (0.4.1)
|
119
138
|
simplecov (0.22.0)
|
120
139
|
docile (~> 1.1)
|
121
140
|
simplecov-html (~> 0.11)
|
122
141
|
simplecov_json_formatter (~> 0.1)
|
123
142
|
simplecov-html (0.12.3)
|
124
143
|
simplecov_json_formatter (0.1.4)
|
125
|
-
sorbet (0.
|
126
|
-
sorbet-static (= 0.
|
127
|
-
sorbet-runtime (0.
|
128
|
-
sorbet-static (0.
|
129
|
-
sorbet-static (0.
|
130
|
-
sorbet-static-and-runtime (0.
|
131
|
-
sorbet (= 0.
|
132
|
-
sorbet-runtime (= 0.
|
133
|
-
spoom (1.
|
144
|
+
sorbet (0.6.12473)
|
145
|
+
sorbet-static (= 0.6.12473)
|
146
|
+
sorbet-runtime (0.6.12473)
|
147
|
+
sorbet-static (0.6.12473-universal-darwin)
|
148
|
+
sorbet-static (0.6.12473-x86_64-linux)
|
149
|
+
sorbet-static-and-runtime (0.6.12473)
|
150
|
+
sorbet (= 0.6.12473)
|
151
|
+
sorbet-runtime (= 0.6.12473)
|
152
|
+
spoom (1.7.6)
|
134
153
|
erubi (>= 1.10.0)
|
135
154
|
prism (>= 0.28.0)
|
155
|
+
rbi (>= 0.3.3)
|
156
|
+
rbs (>= 4.0.0.dev.4)
|
157
|
+
rexml (>= 3.2.6)
|
136
158
|
sorbet-static-and-runtime (>= 0.5.10187)
|
137
159
|
thor (>= 0.19.2)
|
138
|
-
|
139
|
-
|
160
|
+
tapioca (0.17.7)
|
161
|
+
benchmark
|
140
162
|
bundler (>= 2.2.25)
|
141
163
|
netrc (>= 0.11.0)
|
142
164
|
parallel (>= 1.21.0)
|
143
|
-
rbi (>= 0.1
|
165
|
+
rbi (>= 0.3.1)
|
166
|
+
require-hooks (>= 0.2.2)
|
144
167
|
sorbet-static-and-runtime (>= 0.5.11087)
|
145
|
-
spoom (>= 1.
|
168
|
+
spoom (>= 1.7.0)
|
146
169
|
thor (>= 1.2.0)
|
147
170
|
yard-sorbet
|
148
|
-
thor (1.
|
171
|
+
thor (1.4.0)
|
149
172
|
tomlrb (2.0.3)
|
150
173
|
toys (0.15.6)
|
151
174
|
toys-core (= 0.15.6)
|
152
175
|
toys-core (0.15.6)
|
153
176
|
tzinfo (2.0.6)
|
154
177
|
concurrent-ruby (~> 1.0)
|
155
|
-
unicode-display_width (
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
webmock (3.
|
178
|
+
unicode-display_width (3.1.5)
|
179
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
180
|
+
unicode-emoji (4.0.4)
|
181
|
+
uri (1.0.3)
|
182
|
+
webmock (3.25.1)
|
160
183
|
addressable (>= 2.8.0)
|
161
184
|
crack (>= 0.3.2)
|
162
185
|
hashdiff (>= 0.4.0, < 2.0.0)
|
163
|
-
yard (0.9.
|
186
|
+
yard (0.9.37)
|
164
187
|
yard-sorbet (0.9.0)
|
165
188
|
sorbet-runtime
|
166
189
|
yard
|
@@ -168,6 +191,7 @@ GEM
|
|
168
191
|
PLATFORMS
|
169
192
|
arm64-darwin-22
|
170
193
|
arm64-darwin-23
|
194
|
+
arm64-darwin-24
|
171
195
|
x86_64-darwin-20
|
172
196
|
x86_64-linux
|
173
197
|
|
@@ -176,8 +200,8 @@ DEPENDENCIES
|
|
176
200
|
dotenv
|
177
201
|
lunchmoney!
|
178
202
|
mdl
|
179
|
-
minitest (~> 5.
|
180
|
-
mocha (~> 2.
|
203
|
+
minitest (~> 5.25)
|
204
|
+
mocha (~> 2.7.1)
|
181
205
|
rubocop-minitest
|
182
206
|
rubocop-rails
|
183
207
|
rubocop-shopify
|
@@ -188,10 +212,10 @@ DEPENDENCIES
|
|
188
212
|
spoom
|
189
213
|
tapioca
|
190
214
|
toys
|
191
|
-
vcr
|
215
|
+
vcr!
|
192
216
|
webmock
|
193
217
|
yard
|
194
218
|
yard-sorbet
|
195
219
|
|
196
220
|
BUNDLED WITH
|
197
|
-
2.
|
221
|
+
2.7.0
|
data/README.md
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
[](https://badge.fury.io/rb/lunchmoney)
|
4
4
|
[](https://github.com/mmenanno/lunchmoney/actions/workflows/ci.yml)
|
5
5
|
[](https://github.com/mmenanno/lunchmoney/actions/workflows/build_and_publish_yard_docs.yml)
|
6
|
-
[](https://codeclimate.com/github/mmenanno/lunchmoney/maintainability)
|
7
|
-
[](https://codeclimate.com/github/mmenanno/lunchmoney/test_coverage)
|
8
6
|
|
9
7
|
<a href="https://www.buymeacoffee.com/mmenanno" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
|
10
8
|
|
data/SECURITY.md
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
## Supported Versions
|
4
|
+
|
5
|
+
We actively support the following versions of the `lunchmoney` gem with security updates:
|
6
|
+
|
7
|
+
| Version | Supported |
|
8
|
+
| ------- | ------------------ |
|
9
|
+
| 1.4.x | :white_check_mark: |
|
10
|
+
| 1.3.x | :white_check_mark: |
|
11
|
+
| < 1.3 | :x: |
|
12
|
+
|
13
|
+
## Reporting a Vulnerability
|
14
|
+
|
15
|
+
We take the security of the `lunchmoney` gem seriously. If you discover a security vulnerability, please follow these steps:
|
16
|
+
|
17
|
+
### How to Report
|
18
|
+
|
19
|
+
**Please do not report security vulnerabilities through public GitHub issues.**
|
20
|
+
|
21
|
+
Instead, please report security vulnerabilities by emailing us directly at:
|
22
|
+
|
23
|
+
- **Email**: [Create an email to the maintainer based on the GitHub profile]
|
24
|
+
- **Subject Line**: "[SECURITY] Vulnerability Report for lunchmoney gem"
|
25
|
+
|
26
|
+
### What to Include
|
27
|
+
|
28
|
+
Please include the following information in your report:
|
29
|
+
|
30
|
+
1. **Description**: A clear description of the vulnerability
|
31
|
+
2. **Impact**: The potential impact and severity of the vulnerability
|
32
|
+
3. **Reproduction Steps**: Step-by-step instructions to reproduce the issue
|
33
|
+
4. **Affected Versions**: Which versions of the gem are affected
|
34
|
+
5. **Suggested Fix**: If you have ideas for how to fix the issue (optional)
|
35
|
+
6. **Your Contact Information**: So we can follow up with questions if needed
|
36
|
+
|
37
|
+
### Response Timeline
|
38
|
+
|
39
|
+
We are committed to addressing security vulnerabilities promptly:
|
40
|
+
|
41
|
+
- **Acknowledgment**: We will acknowledge receipt of your vulnerability report within 48 hours
|
42
|
+
- **Initial Assessment**: We will provide an initial assessment within 5 business days
|
43
|
+
- **Status Updates**: We will provide regular updates on our progress
|
44
|
+
- **Resolution**: We aim to resolve critical vulnerabilities within 30 days
|
45
|
+
|
46
|
+
### Responsible Disclosure
|
47
|
+
|
48
|
+
We kindly ask that you:
|
49
|
+
|
50
|
+
- Give us reasonable time to investigate and fix the issue before public disclosure
|
51
|
+
- Avoid accessing, modifying, or deleting data that doesn't belong to you
|
52
|
+
- Don't perform actions that could harm the availability or integrity of our services
|
53
|
+
- Don't social engineer our team members or contractors
|
54
|
+
|
55
|
+
### Recognition
|
56
|
+
|
57
|
+
We appreciate the security research community's efforts to improve the security of our project. If you report a valid security vulnerability, we will:
|
58
|
+
|
59
|
+
- Acknowledge your contribution in our release notes (unless you prefer to remain anonymous)
|
60
|
+
- Work with you on the disclosure timeline
|
61
|
+
- Keep you informed throughout the remediation process
|
62
|
+
|
63
|
+
## Security Best Practices for Users
|
64
|
+
|
65
|
+
When using the `lunchmoney` gem in your applications:
|
66
|
+
|
67
|
+
### API Key Security
|
68
|
+
|
69
|
+
1. **Never commit API keys to version control**
|
70
|
+
- Use environment variables (`LUNCHMONEY_TOKEN`)
|
71
|
+
- Use secure credential management systems
|
72
|
+
- Add API keys to your `.gitignore` file
|
73
|
+
|
74
|
+
2. **Rotate API keys regularly**
|
75
|
+
- Generate new API keys periodically
|
76
|
+
- Immediately revoke compromised keys
|
77
|
+
|
78
|
+
3. **Use least privilege access**
|
79
|
+
- Only grant the minimum permissions necessary
|
80
|
+
- Monitor API key usage for unusual activity
|
81
|
+
|
82
|
+
### Network Security
|
83
|
+
|
84
|
+
1. **Use HTTPS only**
|
85
|
+
- The gem uses HTTPS by default for all API calls
|
86
|
+
- Never disable SSL verification in production
|
87
|
+
|
88
|
+
2. **Network monitoring**
|
89
|
+
- Monitor outbound API calls to LunchMoney
|
90
|
+
- Set up alerts for unusual API usage patterns
|
91
|
+
|
92
|
+
### Dependency Security
|
93
|
+
|
94
|
+
1. **Keep dependencies updated**
|
95
|
+
- Regularly update the `lunchmoney` gem
|
96
|
+
- Monitor for security advisories affecting dependencies
|
97
|
+
|
98
|
+
2. **Audit your dependencies**
|
99
|
+
|
100
|
+
```bash
|
101
|
+
# Install bundler-audit gem first
|
102
|
+
gem install bundler-audit
|
103
|
+
|
104
|
+
# Then audit your dependencies
|
105
|
+
bundle audit
|
106
|
+
```
|
107
|
+
|
108
|
+
### Error Handling
|
109
|
+
|
110
|
+
1. **Don't log sensitive data**
|
111
|
+
- API keys should never appear in logs
|
112
|
+
- Be careful with error messages that might expose sensitive information
|
113
|
+
|
114
|
+
2. **Handle API errors gracefully**
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
api = LunchMoney::Api.new
|
118
|
+
response = api.categories
|
119
|
+
|
120
|
+
if response.is_a?(LunchMoney::Errors)
|
121
|
+
# Handle error without exposing sensitive details
|
122
|
+
logger.error "API call failed"
|
123
|
+
end
|
124
|
+
```
|
125
|
+
|
126
|
+
## Security Features
|
127
|
+
|
128
|
+
This gem includes several security features:
|
129
|
+
|
130
|
+
- **HTTPS-only communication** with the LunchMoney API
|
131
|
+
- **Input validation** for API parameters
|
132
|
+
- **Error handling** that doesn't expose sensitive information
|
133
|
+
- **Dependency management** with regular updates
|
134
|
+
|
135
|
+
## Vulnerability History
|
136
|
+
|
137
|
+
We will maintain a record of resolved security vulnerabilities here:
|
138
|
+
|
139
|
+
- No security vulnerabilities have been reported to date
|
140
|
+
|
141
|
+
## Contact
|
142
|
+
|
143
|
+
For security-related questions or concerns, please contact:
|
144
|
+
|
145
|
+
- **Maintainer**: @mmenanno
|
146
|
+
- **Repository**: <https://github.com/mmenanno/lunchmoney>
|
147
|
+
- **Documentation**: <https://mmenanno.github.io/lunchmoney/>
|
148
|
+
|
149
|
+
---
|
150
|
+
|
151
|
+
Thank you for helping keep the `lunchmoney` gem and our community safe!
|