lunchmoney 1.0.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/check_pipeline.yml +24 -0
- data/.github/workflows/ci.yml +1 -4
- data/.github/workflows/dependabot-rbi-updater.yml +3 -6
- data/.github/workflows/publish_gem.yml +14 -16
- data/.github/workflows/release_pipeline.yml +36 -0
- data/.rubocop.yml +5 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +19 -18
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +27 -0
- data/lib/lunchmoney/api.rb +160 -35
- data/lib/lunchmoney/calls/assets.rb +98 -0
- data/lib/lunchmoney/calls/base.rb +118 -0
- data/lib/lunchmoney/calls/budgets.rb +84 -0
- data/lib/lunchmoney/calls/categories.rb +196 -0
- data/lib/lunchmoney/calls/crypto.rb +50 -0
- data/lib/lunchmoney/calls/plaid_accounts.rb +40 -0
- data/lib/lunchmoney/calls/recurring_expenses.rb +29 -0
- data/lib/lunchmoney/calls/tags.rb +21 -0
- data/lib/lunchmoney/calls/transactions.rb +220 -0
- data/lib/lunchmoney/calls/users.rb +21 -0
- data/lib/lunchmoney/errors.rb +17 -1
- data/lib/lunchmoney/objects/asset.rb +92 -0
- data/lib/lunchmoney/objects/budget.rb +76 -0
- data/lib/lunchmoney/objects/category.rb +55 -0
- data/lib/lunchmoney/objects/child_category.rb +44 -0
- data/lib/lunchmoney/objects/child_transaction.rb +35 -0
- data/lib/lunchmoney/objects/config.rb +40 -0
- data/lib/lunchmoney/objects/crypto.rb +46 -0
- data/lib/lunchmoney/objects/crypto_base.rb +67 -0
- data/lib/lunchmoney/objects/data.rb +44 -0
- data/lib/lunchmoney/objects/object.rb +28 -0
- data/lib/lunchmoney/objects/plaid_account.rb +75 -0
- data/lib/lunchmoney/objects/recurring_expense.rb +68 -0
- data/lib/lunchmoney/objects/recurring_expense_base.rb +31 -0
- data/lib/lunchmoney/objects/split.rb +28 -0
- data/lib/lunchmoney/objects/tag.rb +24 -0
- data/lib/lunchmoney/objects/tag_base.rb +23 -0
- data/lib/lunchmoney/objects/transaction.rb +160 -0
- data/lib/lunchmoney/objects/transaction_base.rb +54 -0
- data/lib/lunchmoney/objects/transaction_modification_base.rb +32 -0
- data/lib/lunchmoney/objects/update_transaction.rb +47 -0
- data/lib/lunchmoney/objects/user.rb +38 -0
- data/lib/lunchmoney/version.rb +1 -1
- data/lunchmoney.gemspec +3 -4
- data/sorbet/rbi/gems/{minitest@5.21.2.rbi → minitest@5.22.2.rbi} +147 -144
- data/sorbet/rbi/gems/{rubocop-sorbet@0.7.6.rbi → rubocop-sorbet@0.7.7.rbi} +53 -6
- data/sorbet/rbi/gems/{rubocop@1.60.1.rbi → rubocop@1.60.2.rbi} +51 -30
- data/sorbet/rbi/gems/{toys@0.15.4.rbi → toys@0.15.5.rbi} +3 -3
- data/sorbet/rbi/gems/{webmock@3.19.1.rbi → webmock@3.20.0.rbi} +10 -10
- metadata +50 -47
- data/lib/lunchmoney/api_call.rb +0 -109
- data/lib/lunchmoney/assets/asset.rb +0 -89
- data/lib/lunchmoney/assets/asset_calls.rb +0 -96
- data/lib/lunchmoney/budget/budget.rb +0 -74
- data/lib/lunchmoney/budget/budget_calls.rb +0 -82
- data/lib/lunchmoney/budget/config.rb +0 -38
- data/lib/lunchmoney/budget/data.rb +0 -42
- data/lib/lunchmoney/categories/category/category.rb +0 -52
- data/lib/lunchmoney/categories/category/child_category.rb +0 -42
- data/lib/lunchmoney/categories/category_calls.rb +0 -195
- data/lib/lunchmoney/crypto/crypto/crypto.rb +0 -43
- data/lib/lunchmoney/crypto/crypto/crypto_base.rb +0 -65
- data/lib/lunchmoney/crypto/crypto_calls.rb +0 -49
- data/lib/lunchmoney/data_object.rb +0 -25
- data/lib/lunchmoney/plaid_accounts/plaid_account.rb +0 -73
- data/lib/lunchmoney/plaid_accounts/plaid_account_calls.rb +0 -38
- data/lib/lunchmoney/recurring_expenses/recurring_expense/recurring_expense.rb +0 -65
- data/lib/lunchmoney/recurring_expenses/recurring_expense/recurring_expense_base.rb +0 -29
- data/lib/lunchmoney/recurring_expenses/recurring_expense_calls.rb +0 -28
- data/lib/lunchmoney/tags/tag/tag.rb +0 -20
- data/lib/lunchmoney/tags/tag/tag_base.rb +0 -21
- data/lib/lunchmoney/tags/tag_calls.rb +0 -20
- data/lib/lunchmoney/transactions/transaction/child_transaction.rb +0 -31
- data/lib/lunchmoney/transactions/transaction/split.rb +0 -24
- data/lib/lunchmoney/transactions/transaction/transaction.rb +0 -156
- data/lib/lunchmoney/transactions/transaction/transaction_base.rb +0 -52
- data/lib/lunchmoney/transactions/transaction/transaction_modification_base.rb +0 -30
- data/lib/lunchmoney/transactions/transaction/update_transaction.rb +0 -43
- data/lib/lunchmoney/transactions/transaction_calls.rb +0 -218
- data/lib/lunchmoney/user/user.rb +0 -36
- data/lib/lunchmoney/user/user_calls.rb +0 -19
- /data/sorbet/rbi/gems/{crack@0.4.5.rbi → crack@1.0.0.rbi} +0 -0
- /data/sorbet/rbi/gems/{toys-core@0.15.4.rbi → toys-core@0.15.5.rbi} +0 -0
@@ -1199,12 +1199,6 @@ RuboCop::Cop::Sorbet::RedundantExtendTSig::RESTRICT_ON_SEND = T.let(T.unsafe(nil
|
|
1199
1199
|
# - returns, or void
|
1200
1200
|
# - soft, checked, or on_failure
|
1201
1201
|
#
|
1202
|
-
# # bad
|
1203
|
-
# sig { returns(Integer).params(x: Integer) }
|
1204
|
-
#
|
1205
|
-
# # good
|
1206
|
-
# sig { params(x: Integer).returns(Integer) }
|
1207
|
-
#
|
1208
1202
|
# @example
|
1209
1203
|
# # bad
|
1210
1204
|
# sig { void.abstract }
|
@@ -1212,6 +1206,12 @@ RuboCop::Cop::Sorbet::RedundantExtendTSig::RESTRICT_ON_SEND = T.let(T.unsafe(nil
|
|
1212
1206
|
# # good
|
1213
1207
|
# sig { abstract.void }
|
1214
1208
|
#
|
1209
|
+
# # bad
|
1210
|
+
# sig { returns(Integer).params(x: Integer) }
|
1211
|
+
#
|
1212
|
+
# # good
|
1213
|
+
# sig { params(x: Integer).returns(Integer) }
|
1214
|
+
#
|
1215
1215
|
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/signature_build_order.rb#31
|
1216
1216
|
class RuboCop::Cop::Sorbet::SignatureBuildOrder < ::RuboCop::Cop::Cop
|
1217
1217
|
include ::RuboCop::Cop::Sorbet::SignatureHelp
|
@@ -1474,6 +1474,53 @@ RuboCop::Cop::Sorbet::ValidSigil::SIGIL_REGEX = T.let(T.unsafe(nil), Regexp)
|
|
1474
1474
|
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/sigils/valid_sigil.rb#53
|
1475
1475
|
RuboCop::Cop::Sorbet::ValidSigil::STRICTNESS_LEVELS = T.let(T.unsafe(nil), Array)
|
1476
1476
|
|
1477
|
+
# Disallows the usage of `.void.checked(:tests)`.
|
1478
|
+
#
|
1479
|
+
# Using `.void` changes the value returned from the method, but only if
|
1480
|
+
# runtime type checking is enabled for the method. Methods marked `.void`
|
1481
|
+
# will return different values in tests compared with non-test
|
1482
|
+
# environments. This is particularly troublesome if branching on the
|
1483
|
+
# result of a `.void` method, because the returned value in test code
|
1484
|
+
# will be the truthy `VOID` value, while the non-test return value may be
|
1485
|
+
# falsy depending on the method's implementation.
|
1486
|
+
#
|
1487
|
+
# - Use `.returns(T.anything).checked(:tests)` to keep the runtime type
|
1488
|
+
# checking for the rest of the parameters.
|
1489
|
+
# - Use `.void.checked(:never)` if you are on an older version of Sorbet
|
1490
|
+
# which does not have `T.anything` (meaning versions 0.5.10781 or
|
1491
|
+
# earlier. Versions released after 2023-04-14 include `T.anything`.)
|
1492
|
+
#
|
1493
|
+
# @example
|
1494
|
+
#
|
1495
|
+
# # bad
|
1496
|
+
# sig { void.checked(:tests) }
|
1497
|
+
#
|
1498
|
+
# # good
|
1499
|
+
# sig { void }
|
1500
|
+
# sig { returns(T.anything).checked(:tests) }
|
1501
|
+
# sig { void.checked(:never) }
|
1502
|
+
#
|
1503
|
+
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb#31
|
1504
|
+
class RuboCop::Cop::Sorbet::VoidCheckedTests < ::RuboCop::Cop::Base
|
1505
|
+
include ::RuboCop::Cop::RangeHelp
|
1506
|
+
include ::RuboCop::Cop::Sorbet::SignatureHelp
|
1507
|
+
extend ::RuboCop::Cop::AutoCorrector
|
1508
|
+
|
1509
|
+
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb#37
|
1510
|
+
def checked_tests(param0); end
|
1511
|
+
|
1512
|
+
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb#58
|
1513
|
+
def on_signature(node); end
|
1514
|
+
|
1515
|
+
private
|
1516
|
+
|
1517
|
+
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb#48
|
1518
|
+
def top_level_void(node); end
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb#41
|
1522
|
+
RuboCop::Cop::Sorbet::VoidCheckedTests::MESSAGE = T.let(T.unsafe(nil), String)
|
1523
|
+
|
1477
1524
|
module RuboCop::Cop::Style; end
|
1478
1525
|
|
1479
1526
|
class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base
|
@@ -14115,17 +14115,17 @@ class RuboCop::Cop::Layout::RedundantLineBreak < ::RuboCop::Cop::Base
|
|
14115
14115
|
|
14116
14116
|
# @return [Boolean]
|
14117
14117
|
#
|
14118
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14118
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#125
|
14119
14119
|
def comment_within?(node); end
|
14120
14120
|
|
14121
14121
|
# @return [Boolean]
|
14122
14122
|
#
|
14123
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14123
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#95
|
14124
14124
|
def configured_to_not_be_inspected?(node); end
|
14125
14125
|
|
14126
14126
|
# @return [Boolean]
|
14127
14127
|
#
|
14128
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14128
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#119
|
14129
14129
|
def convertible_block?(node); end
|
14130
14130
|
|
14131
14131
|
# @return [Boolean]
|
@@ -14133,7 +14133,12 @@ class RuboCop::Cop::Layout::RedundantLineBreak < ::RuboCop::Cop::Base
|
|
14133
14133
|
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#69
|
14134
14134
|
def end_with_percent_blank_string?(processed_source); end
|
14135
14135
|
|
14136
|
-
#
|
14136
|
+
# @return [Boolean]
|
14137
|
+
#
|
14138
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#91
|
14139
|
+
def index_access_call_chained?(node); end
|
14140
|
+
|
14141
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#147
|
14137
14142
|
def max_line_length; end
|
14138
14143
|
|
14139
14144
|
# @return [Boolean]
|
@@ -14143,7 +14148,7 @@ class RuboCop::Cop::Layout::RedundantLineBreak < ::RuboCop::Cop::Base
|
|
14143
14148
|
|
14144
14149
|
# @return [Boolean]
|
14145
14150
|
#
|
14146
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14151
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#102
|
14147
14152
|
def other_cop_takes_precedence?(node); end
|
14148
14153
|
|
14149
14154
|
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#79
|
@@ -14151,20 +14156,20 @@ class RuboCop::Cop::Layout::RedundantLineBreak < ::RuboCop::Cop::Base
|
|
14151
14156
|
|
14152
14157
|
# @return [Boolean]
|
14153
14158
|
#
|
14154
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14159
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#108
|
14155
14160
|
def single_line_block_chain_enabled?; end
|
14156
14161
|
|
14157
14162
|
# @return [Boolean]
|
14158
14163
|
#
|
14159
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14164
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#112
|
14160
14165
|
def suitable_as_single_line?(node); end
|
14161
14166
|
|
14162
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14167
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#138
|
14163
14168
|
def to_single_line(source); end
|
14164
14169
|
|
14165
14170
|
# @return [Boolean]
|
14166
14171
|
#
|
14167
|
-
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#
|
14172
|
+
# source://rubocop//lib/rubocop/cop/layout/redundant_line_break.rb#133
|
14168
14173
|
def too_long?(node); end
|
14169
14174
|
end
|
14170
14175
|
|
@@ -31015,7 +31020,7 @@ RuboCop::Cop::Style::AndOr::MSG = T.let(T.unsafe(nil), String)
|
|
31015
31020
|
# bar(**)
|
31016
31021
|
# end
|
31017
31022
|
# @example RedundantBlockArgumentNames: ['blk', 'block', 'proc'] (default)
|
31018
|
-
# # bad
|
31023
|
+
# # bad - But it is good with `EnforcedStyle: explicit` set for `Naming/BlockForwarding`.
|
31019
31024
|
# def foo(&block)
|
31020
31025
|
# bar(&block)
|
31021
31026
|
# end
|
@@ -31062,6 +31067,11 @@ class RuboCop::Cop::Style::ArgumentsForwarding < ::RuboCop::Cop::Base
|
|
31062
31067
|
# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#227
|
31063
31068
|
def classify_send_nodes(def_node, send_nodes, referenced_lvars, forwardable_args); end
|
31064
31069
|
|
31070
|
+
# @return [Boolean]
|
31071
|
+
#
|
31072
|
+
# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#473
|
31073
|
+
def explicit_block_name?; end
|
31074
|
+
|
31065
31075
|
# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#159
|
31066
31076
|
def extract_forwardable_args(args); end
|
31067
31077
|
|
@@ -37493,19 +37503,22 @@ class RuboCop::Cop::Style::HashEachMethods < ::RuboCop::Cop::Base
|
|
37493
37503
|
include ::RuboCop::Cop::Lint::UnusedArgument
|
37494
37504
|
extend ::RuboCop::Cop::AutoCorrector
|
37495
37505
|
|
37496
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37506
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#74
|
37507
|
+
def check_unused_block_args(node, key, value); end
|
37508
|
+
|
37509
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#51
|
37497
37510
|
def each_arguments(param0 = T.unsafe(nil)); end
|
37498
37511
|
|
37499
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37512
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#46
|
37500
37513
|
def kv_each(param0 = T.unsafe(nil)); end
|
37501
37514
|
|
37502
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37515
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#56
|
37503
37516
|
def kv_each_with_block_pass(param0 = T.unsafe(nil)); end
|
37504
37517
|
|
37505
37518
|
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#60
|
37506
37519
|
def on_block(node); end
|
37507
37520
|
|
37508
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37521
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#95
|
37509
37522
|
def on_block_pass(node); end
|
37510
37523
|
|
37511
37524
|
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#60
|
@@ -37513,55 +37526,63 @@ class RuboCop::Cop::Style::HashEachMethods < ::RuboCop::Cop::Base
|
|
37513
37526
|
|
37514
37527
|
private
|
37515
37528
|
|
37516
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37529
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#180
|
37517
37530
|
def check_argument(variable); end
|
37518
37531
|
|
37519
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37532
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#204
|
37520
37533
|
def correct_args(node, corrector); end
|
37521
37534
|
|
37522
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37535
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#190
|
37523
37536
|
def correct_implicit(node, corrector, method_name); end
|
37524
37537
|
|
37525
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37538
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#195
|
37526
37539
|
def correct_key_value_each(node, corrector); end
|
37527
37540
|
|
37528
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37541
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#176
|
37529
37542
|
def format_message(method_name, current); end
|
37530
37543
|
|
37531
37544
|
# @return [Boolean]
|
37532
37545
|
#
|
37533
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37546
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#103
|
37534
37547
|
def handleable?(node); end
|
37535
37548
|
|
37536
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37549
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#211
|
37537
37550
|
def kv_range(outer_node); end
|
37538
37551
|
|
37539
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37552
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#133
|
37540
37553
|
def message(prefer, method_name, unused_code); end
|
37541
37554
|
|
37542
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37555
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#139
|
37543
37556
|
def register_each_args_offense(node, message, prefer, unused_range); end
|
37544
37557
|
|
37545
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37558
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#110
|
37546
37559
|
def register_kv_offense(target, method); end
|
37547
37560
|
|
37548
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37561
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#146
|
37549
37562
|
def register_kv_with_block_pass_offense(node, target, method); end
|
37550
37563
|
|
37551
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37564
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#167
|
37552
37565
|
def root_receiver(node); end
|
37553
37566
|
|
37554
37567
|
# @return [Boolean]
|
37555
37568
|
#
|
37556
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37569
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#121
|
37557
37570
|
def unused_block_arg_exist?(node, block_arg); end
|
37558
37571
|
|
37559
37572
|
# @return [Boolean]
|
37560
37573
|
#
|
37561
|
-
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#
|
37574
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#157
|
37575
|
+
def use_array_converter_method_as_preceding?(node); end
|
37576
|
+
|
37577
|
+
# @return [Boolean]
|
37578
|
+
#
|
37579
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#186
|
37562
37580
|
def used?(arg); end
|
37563
37581
|
end
|
37564
37582
|
|
37583
|
+
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#43
|
37584
|
+
RuboCop::Cop::Style::HashEachMethods::ARRAY_CONVERTER_METHODS = T.let(T.unsafe(nil), Array)
|
37585
|
+
|
37565
37586
|
# source://rubocop//lib/rubocop/cop/style/hash_each_methods.rb#41
|
37566
37587
|
RuboCop::Cop::Style::HashEachMethods::MSG = T.let(T.unsafe(nil), String)
|
37567
37588
|
|
@@ -41540,7 +41561,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base
|
|
41540
41561
|
include ::RuboCop::Cop::ConfigurableEnforcedStyle
|
41541
41562
|
extend ::RuboCop::Cop::AutoCorrector
|
41542
41563
|
|
41543
|
-
# source://rubocop-sorbet/0.7.
|
41564
|
+
# source://rubocop-sorbet/0.7.7/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#18
|
41544
41565
|
def on_assignment(value); end
|
41545
41566
|
|
41546
41567
|
# source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#127
|
@@ -41558,7 +41579,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base
|
|
41558
41579
|
# source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#217
|
41559
41580
|
def splat_value(param0 = T.unsafe(nil)); end
|
41560
41581
|
|
41561
|
-
# source://rubocop-sorbet/0.7.
|
41582
|
+
# source://rubocop-sorbet/0.7.7/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#12
|
41562
41583
|
def t_let(param0 = T.unsafe(nil)); end
|
41563
41584
|
|
41564
41585
|
private
|
@@ -33,13 +33,13 @@
|
|
33
33
|
# source://toys//lib/toys/version.rb#3
|
34
34
|
module Toys
|
35
35
|
class << self
|
36
|
-
# source://toys-core/0.15.
|
36
|
+
# source://toys-core/0.15.5/lib/toys/dsl/base.rb#28
|
37
37
|
def Tool(*args, name: T.unsafe(nil), base: T.unsafe(nil)); end
|
38
38
|
|
39
|
-
# source://toys-core/0.15.
|
39
|
+
# source://toys-core/0.15.5/lib/toys-core.rb#114
|
40
40
|
def executable_path; end
|
41
41
|
|
42
|
-
# source://toys-core/0.15.
|
42
|
+
# source://toys-core/0.15.5/lib/toys-core.rb#114
|
43
43
|
def executable_path=(_arg0); end
|
44
44
|
end
|
45
45
|
end
|
@@ -1525,36 +1525,36 @@ class WebMock::Util::HashKeysStringifier
|
|
1525
1525
|
end
|
1526
1526
|
end
|
1527
1527
|
|
1528
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1528
|
+
# source://webmock//lib/webmock/util/headers.rb#7
|
1529
1529
|
class WebMock::Util::Headers
|
1530
1530
|
class << self
|
1531
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1531
|
+
# source://webmock//lib/webmock/util/headers.rb#59
|
1532
1532
|
def basic_auth_header(*credentials); end
|
1533
1533
|
|
1534
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1534
|
+
# source://webmock//lib/webmock/util/headers.rb#55
|
1535
1535
|
def decode_userinfo_from_header(header); end
|
1536
1536
|
|
1537
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1537
|
+
# source://webmock//lib/webmock/util/headers.rb#13
|
1538
1538
|
def normalize_headers(headers); end
|
1539
1539
|
|
1540
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1540
|
+
# source://webmock//lib/webmock/util/headers.rb#64
|
1541
1541
|
def normalize_name(name); end
|
1542
1542
|
|
1543
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1543
|
+
# source://webmock//lib/webmock/util/headers.rb#40
|
1544
1544
|
def pp_headers_string(headers); end
|
1545
1545
|
|
1546
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1546
|
+
# source://webmock//lib/webmock/util/headers.rb#26
|
1547
1547
|
def sorted_headers_string(headers); end
|
1548
1548
|
end
|
1549
1549
|
end
|
1550
1550
|
|
1551
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1551
|
+
# source://webmock//lib/webmock/util/headers.rb#11
|
1552
1552
|
WebMock::Util::Headers::JOIN = T.let(T.unsafe(nil), String)
|
1553
1553
|
|
1554
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1554
|
+
# source://webmock//lib/webmock/util/headers.rb#10
|
1555
1555
|
WebMock::Util::Headers::NONSTANDARD_HEADER_DELIMITER = T.let(T.unsafe(nil), String)
|
1556
1556
|
|
1557
|
-
# source://webmock//lib/webmock/util/headers.rb#
|
1557
|
+
# source://webmock//lib/webmock/util/headers.rb#9
|
1558
1558
|
WebMock::Util::Headers::STANDARD_HEADER_DELIMITER = T.let(T.unsafe(nil), String)
|
1559
1559
|
|
1560
1560
|
# source://webmock//lib/webmock/util/json.rb#12
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lunchmoney
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- "@
|
7
|
+
- "@mmenanno"
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.5'
|
55
55
|
description:
|
56
|
-
email:
|
56
|
+
email:
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
@@ -61,9 +61,11 @@ files:
|
|
61
61
|
- ".DS_Store"
|
62
62
|
- ".github/dependabot.yml"
|
63
63
|
- ".github/workflows/build_and_publish_yard_docs.yml"
|
64
|
+
- ".github/workflows/check_pipeline.yml"
|
64
65
|
- ".github/workflows/ci.yml"
|
65
66
|
- ".github/workflows/dependabot-rbi-updater.yml"
|
66
67
|
- ".github/workflows/publish_gem.yml"
|
68
|
+
- ".github/workflows/release_pipeline.yml"
|
67
69
|
- ".gitignore"
|
68
70
|
- ".rubocop.yml"
|
69
71
|
- ".ruby-version"
|
@@ -79,6 +81,7 @@ files:
|
|
79
81
|
- Gemfile.lock
|
80
82
|
- LICENSE
|
81
83
|
- README.md
|
84
|
+
- Rakefile
|
82
85
|
- bin/console
|
83
86
|
- bin/rubocop
|
84
87
|
- bin/setup
|
@@ -89,40 +92,40 @@ files:
|
|
89
92
|
- bin/yard
|
90
93
|
- lib/lunchmoney.rb
|
91
94
|
- lib/lunchmoney/api.rb
|
92
|
-
- lib/lunchmoney/
|
93
|
-
- lib/lunchmoney/
|
94
|
-
- lib/lunchmoney/
|
95
|
-
- lib/lunchmoney/
|
96
|
-
- lib/lunchmoney/
|
97
|
-
- lib/lunchmoney/
|
98
|
-
- lib/lunchmoney/
|
99
|
-
- lib/lunchmoney/
|
100
|
-
- lib/lunchmoney/
|
101
|
-
- lib/lunchmoney/
|
95
|
+
- lib/lunchmoney/calls/assets.rb
|
96
|
+
- lib/lunchmoney/calls/base.rb
|
97
|
+
- lib/lunchmoney/calls/budgets.rb
|
98
|
+
- lib/lunchmoney/calls/categories.rb
|
99
|
+
- lib/lunchmoney/calls/crypto.rb
|
100
|
+
- lib/lunchmoney/calls/plaid_accounts.rb
|
101
|
+
- lib/lunchmoney/calls/recurring_expenses.rb
|
102
|
+
- lib/lunchmoney/calls/tags.rb
|
103
|
+
- lib/lunchmoney/calls/transactions.rb
|
104
|
+
- lib/lunchmoney/calls/users.rb
|
102
105
|
- lib/lunchmoney/configuration.rb
|
103
|
-
- lib/lunchmoney/crypto/crypto/crypto.rb
|
104
|
-
- lib/lunchmoney/crypto/crypto/crypto_base.rb
|
105
|
-
- lib/lunchmoney/crypto/crypto_calls.rb
|
106
|
-
- lib/lunchmoney/data_object.rb
|
107
106
|
- lib/lunchmoney/errors.rb
|
108
107
|
- lib/lunchmoney/exceptions.rb
|
109
|
-
- lib/lunchmoney/
|
110
|
-
- lib/lunchmoney/
|
111
|
-
- lib/lunchmoney/
|
112
|
-
- lib/lunchmoney/
|
113
|
-
- lib/lunchmoney/
|
114
|
-
- lib/lunchmoney/
|
115
|
-
- lib/lunchmoney/
|
116
|
-
- lib/lunchmoney/
|
117
|
-
- lib/lunchmoney/
|
118
|
-
- lib/lunchmoney/
|
119
|
-
- lib/lunchmoney/
|
120
|
-
- lib/lunchmoney/
|
121
|
-
- lib/lunchmoney/
|
122
|
-
- lib/lunchmoney/
|
123
|
-
- lib/lunchmoney/
|
124
|
-
- lib/lunchmoney/
|
125
|
-
- lib/lunchmoney/
|
108
|
+
- lib/lunchmoney/objects/asset.rb
|
109
|
+
- lib/lunchmoney/objects/budget.rb
|
110
|
+
- lib/lunchmoney/objects/category.rb
|
111
|
+
- lib/lunchmoney/objects/child_category.rb
|
112
|
+
- lib/lunchmoney/objects/child_transaction.rb
|
113
|
+
- lib/lunchmoney/objects/config.rb
|
114
|
+
- lib/lunchmoney/objects/crypto.rb
|
115
|
+
- lib/lunchmoney/objects/crypto_base.rb
|
116
|
+
- lib/lunchmoney/objects/data.rb
|
117
|
+
- lib/lunchmoney/objects/object.rb
|
118
|
+
- lib/lunchmoney/objects/plaid_account.rb
|
119
|
+
- lib/lunchmoney/objects/recurring_expense.rb
|
120
|
+
- lib/lunchmoney/objects/recurring_expense_base.rb
|
121
|
+
- lib/lunchmoney/objects/split.rb
|
122
|
+
- lib/lunchmoney/objects/tag.rb
|
123
|
+
- lib/lunchmoney/objects/tag_base.rb
|
124
|
+
- lib/lunchmoney/objects/transaction.rb
|
125
|
+
- lib/lunchmoney/objects/transaction_base.rb
|
126
|
+
- lib/lunchmoney/objects/transaction_modification_base.rb
|
127
|
+
- lib/lunchmoney/objects/update_transaction.rb
|
128
|
+
- lib/lunchmoney/objects/user.rb
|
126
129
|
- lib/lunchmoney/validators.rb
|
127
130
|
- lib/lunchmoney/version.rb
|
128
131
|
- lunchmoney.gemspec
|
@@ -145,7 +148,7 @@ files:
|
|
145
148
|
- sorbet/rbi/gems/coderay@1.1.3.rbi
|
146
149
|
- sorbet/rbi/gems/concurrent-ruby@1.2.3.rbi
|
147
150
|
- sorbet/rbi/gems/connection_pool@2.4.1.rbi
|
148
|
-
- sorbet/rbi/gems/crack@0.
|
151
|
+
- sorbet/rbi/gems/crack@1.0.0.rbi
|
149
152
|
- sorbet/rbi/gems/dotenv@2.8.1.rbi
|
150
153
|
- sorbet/rbi/gems/drb@2.2.0.rbi
|
151
154
|
- sorbet/rbi/gems/erubi@1.12.0.rbi
|
@@ -156,7 +159,7 @@ files:
|
|
156
159
|
- sorbet/rbi/gems/json@2.7.1.rbi
|
157
160
|
- sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi
|
158
161
|
- sorbet/rbi/gems/method_source@1.0.0.rbi
|
159
|
-
- sorbet/rbi/gems/minitest@5.
|
162
|
+
- sorbet/rbi/gems/minitest@5.22.2.rbi
|
160
163
|
- sorbet/rbi/gems/mocha@2.1.0.rbi
|
161
164
|
- sorbet/rbi/gems/mutex_m@0.2.0.rbi
|
162
165
|
- sorbet/rbi/gems/net-http@0.4.1.rbi
|
@@ -179,34 +182,34 @@ files:
|
|
179
182
|
- sorbet/rbi/gems/rubocop-minitest@0.34.5.rbi
|
180
183
|
- sorbet/rbi/gems/rubocop-rails@2.23.1.rbi
|
181
184
|
- sorbet/rbi/gems/rubocop-shopify@2.14.0.rbi
|
182
|
-
- sorbet/rbi/gems/rubocop-sorbet@0.7.
|
183
|
-
- sorbet/rbi/gems/rubocop@1.60.
|
185
|
+
- sorbet/rbi/gems/rubocop-sorbet@0.7.7.rbi
|
186
|
+
- sorbet/rbi/gems/rubocop@1.60.2.rbi
|
184
187
|
- sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi
|
185
188
|
- sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi
|
186
189
|
- sorbet/rbi/gems/spoom@1.2.4.rbi
|
187
190
|
- sorbet/rbi/gems/syntax_tree@6.2.0.rbi
|
188
191
|
- sorbet/rbi/gems/tapioca@0.12.0.rbi
|
189
192
|
- sorbet/rbi/gems/thor@1.3.0.rbi
|
190
|
-
- sorbet/rbi/gems/toys-core@0.15.
|
191
|
-
- sorbet/rbi/gems/toys@0.15.
|
193
|
+
- sorbet/rbi/gems/toys-core@0.15.5.rbi
|
194
|
+
- sorbet/rbi/gems/toys@0.15.5.rbi
|
192
195
|
- sorbet/rbi/gems/tzinfo@2.0.6.rbi
|
193
196
|
- sorbet/rbi/gems/unicode-display_width@2.5.0.rbi
|
194
197
|
- sorbet/rbi/gems/uri@0.13.0.rbi
|
195
198
|
- sorbet/rbi/gems/vcr@6.2.0.rbi
|
196
|
-
- sorbet/rbi/gems/webmock@3.
|
199
|
+
- sorbet/rbi/gems/webmock@3.20.0.rbi
|
197
200
|
- sorbet/rbi/gems/yard-sorbet@0.8.1.rbi
|
198
201
|
- sorbet/rbi/gems/yard@0.9.34.rbi
|
199
202
|
- sorbet/shims/module.rbi
|
200
203
|
- sorbet/tapioca/require.rb
|
201
|
-
homepage: https://github.com/
|
204
|
+
homepage: https://github.com/mmenanno/lunchmoney
|
202
205
|
licenses:
|
203
206
|
- MIT
|
204
207
|
metadata:
|
205
208
|
allowed_push_host: https://rubygems.org
|
206
|
-
homepage_uri: https://github.com/
|
207
|
-
source_code_uri: https://github.com/
|
208
|
-
documentation_uri: https://
|
209
|
-
changelog_uri: https://github.com/
|
209
|
+
homepage_uri: https://github.com/mmenanno/lunchmoney
|
210
|
+
source_code_uri: https://github.com/mmenanno/lunchmoney
|
211
|
+
documentation_uri: https://mmenanno.github.io/lunchmoney/
|
212
|
+
changelog_uri: https://github.com/mmenanno/lunchmoney/releases
|
210
213
|
post_install_message:
|
211
214
|
rdoc_options: []
|
212
215
|
require_paths:
|
data/lib/lunchmoney/api_call.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require_relative "errors"
|
5
|
-
|
6
|
-
module LunchMoney
|
7
|
-
# Base class for all API call types
|
8
|
-
class ApiCall
|
9
|
-
# Base URL used for API calls
|
10
|
-
BASE_URL = "https://dev.lunchmoney.app/v1/"
|
11
|
-
|
12
|
-
sig { returns(T.nilable(String)) }
|
13
|
-
attr_reader :api_key
|
14
|
-
|
15
|
-
sig { params(api_key: T.nilable(String)).void }
|
16
|
-
def initialize(api_key: nil)
|
17
|
-
@api_key = T.let((api_key || LunchMoney.configuration.api_key), T.nilable(String))
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
sig { params(endpoint: String, query_params: T.nilable(T::Hash[Symbol, T.untyped])).returns(Faraday::Response) }
|
23
|
-
def get(endpoint, query_params: nil)
|
24
|
-
connection = request(flat_params: true)
|
25
|
-
|
26
|
-
if query_params.present?
|
27
|
-
connection.get(BASE_URL + endpoint, query_params)
|
28
|
-
else
|
29
|
-
connection.get(BASE_URL + endpoint)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
sig { params(endpoint: String, params: T.nilable(T::Hash[Symbol, T.untyped])).returns(Faraday::Response) }
|
34
|
-
def post(endpoint, params)
|
35
|
-
request(json_request: true).post(BASE_URL + endpoint, params)
|
36
|
-
end
|
37
|
-
|
38
|
-
sig { params(endpoint: String, body: T::Hash[Symbol, T.untyped]).returns(Faraday::Response) }
|
39
|
-
def put(endpoint, body)
|
40
|
-
request(json_request: true).put(BASE_URL + endpoint) do |req|
|
41
|
-
req.body = body
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
sig { params(endpoint: String, query_params: T.nilable(T::Hash[Symbol, T.untyped])).returns(Faraday::Response) }
|
46
|
-
def delete(endpoint, query_params: nil)
|
47
|
-
connection = request(flat_params: true)
|
48
|
-
|
49
|
-
if query_params.present?
|
50
|
-
connection.delete(BASE_URL + endpoint, query_params)
|
51
|
-
else
|
52
|
-
connection.delete(BASE_URL + endpoint)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
sig { params(json_request: T::Boolean, flat_params: T::Boolean).returns(Faraday::Connection) }
|
57
|
-
def request(json_request: false, flat_params: false)
|
58
|
-
Faraday.new do |conn|
|
59
|
-
conn.request(:authorization, "Bearer", @api_key)
|
60
|
-
conn.request(:json) if json_request
|
61
|
-
# conn.options.params_encoder = Faraday::FlatParamsEncoder if flat_params
|
62
|
-
conn.response(:json, content_type: /json$/, parser_options: { symbolize_names: true })
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
sig { params(response: Faraday::Response).returns(LunchMoney::Errors) }
|
67
|
-
def errors(response)
|
68
|
-
body = response.body
|
69
|
-
|
70
|
-
return parse_errors(body) unless error_hash(body).nil?
|
71
|
-
|
72
|
-
LunchMoney::Errors.new
|
73
|
-
end
|
74
|
-
|
75
|
-
sig { params(body: T::Hash[Symbol, T.any(String, T::Array[String])]).returns(LunchMoney::Errors) }
|
76
|
-
def parse_errors(body)
|
77
|
-
errors = error_hash(body)
|
78
|
-
api_errors = LunchMoney::Errors.new
|
79
|
-
return api_errors if errors.blank?
|
80
|
-
|
81
|
-
case errors
|
82
|
-
when String
|
83
|
-
api_errors << errors
|
84
|
-
when Array
|
85
|
-
errors.each { |error| api_errors << error }
|
86
|
-
end
|
87
|
-
|
88
|
-
api_errors
|
89
|
-
end
|
90
|
-
|
91
|
-
sig { params(body: T.untyped).returns(T.untyped) }
|
92
|
-
def error_hash(body)
|
93
|
-
return unless body.is_a?(Hash)
|
94
|
-
|
95
|
-
if body[:error]
|
96
|
-
body[:error]
|
97
|
-
elsif body[:errors]
|
98
|
-
body[:errors]
|
99
|
-
elsif body[:name] == "Error"
|
100
|
-
body[:message]
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
sig { params(params: T::Hash[Symbol, T.untyped]).returns(T::Hash[Symbol, T.untyped]) }
|
105
|
-
def clean_params(params)
|
106
|
-
params.reject! { |_key, value| value.nil? }
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|