@opentabs-dev/opentabs-plugin-ynab 0.0.85 → 0.0.87
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.
- package/dist/adapter.iife.js +1315 -545
- package/dist/adapter.iife.js.map +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -16
- package/dist/index.js.map +1 -1
- package/dist/tools/create-category-group.d.ts +11 -0
- package/dist/tools/create-category-group.d.ts.map +1 -0
- package/dist/tools/create-category-group.js +37 -0
- package/dist/tools/create-category-group.js.map +1 -0
- package/dist/tools/create-category.d.ts +59 -0
- package/dist/tools/create-category.d.ts.map +1 -0
- package/dist/tools/create-category.js +63 -0
- package/dist/tools/create-category.js.map +1 -0
- package/dist/tools/create-transaction.d.ts +2 -2
- package/dist/tools/create-transaction.d.ts.map +1 -1
- package/dist/tools/create-transaction.js +63 -22
- package/dist/tools/create-transaction.js.map +1 -1
- package/dist/tools/delete-category-group.d.ts +8 -0
- package/dist/tools/delete-category-group.d.ts.map +1 -0
- package/dist/tools/delete-category-group.js +33 -0
- package/dist/tools/delete-category-group.js.map +1 -0
- package/dist/tools/delete-category.d.ts +7 -0
- package/dist/tools/delete-category.d.ts.map +1 -0
- package/dist/tools/delete-category.js +28 -0
- package/dist/tools/delete-category.js.map +1 -0
- package/dist/tools/delete-transaction.d.ts.map +1 -1
- package/dist/tools/delete-transaction.js +22 -7
- package/dist/tools/delete-transaction.js.map +1 -1
- package/dist/tools/get-account.d.ts.map +1 -1
- package/dist/tools/get-account.js +3 -3
- package/dist/tools/get-account.js.map +1 -1
- package/dist/tools/get-month.d.ts +2 -1
- package/dist/tools/get-month.d.ts.map +1 -1
- package/dist/tools/get-month.js +10 -33
- package/dist/tools/get-month.js.map +1 -1
- package/dist/tools/get-plan.d.ts.map +1 -1
- package/dist/tools/get-plan.js +12 -5
- package/dist/tools/get-plan.js.map +1 -1
- package/dist/tools/get-transaction.d.ts +2 -2
- package/dist/tools/get-transaction.d.ts.map +1 -1
- package/dist/tools/get-transaction.js +5 -4
- package/dist/tools/get-transaction.js.map +1 -1
- package/dist/tools/list-accounts.d.ts.map +1 -1
- package/dist/tools/list-accounts.js +4 -4
- package/dist/tools/list-accounts.js.map +1 -1
- package/dist/tools/list-categories.d.ts.map +1 -1
- package/dist/tools/list-categories.js +9 -29
- package/dist/tools/list-categories.js.map +1 -1
- package/dist/tools/list-months.d.ts +1 -1
- package/dist/tools/list-months.d.ts.map +1 -1
- package/dist/tools/list-months.js +5 -14
- package/dist/tools/list-months.js.map +1 -1
- package/dist/tools/list-payees.d.ts.map +1 -1
- package/dist/tools/list-payees.js +3 -3
- package/dist/tools/list-payees.js.map +1 -1
- package/dist/tools/list-scheduled-transactions.d.ts.map +1 -1
- package/dist/tools/list-scheduled-transactions.js +7 -5
- package/dist/tools/list-scheduled-transactions.js.map +1 -1
- package/dist/tools/list-transactions.d.ts +4 -2
- package/dist/tools/list-transactions.d.ts.map +1 -1
- package/dist/tools/list-transactions.js +40 -8
- package/dist/tools/list-transactions.js.map +1 -1
- package/dist/tools/move-category-budget.d.ts +24 -0
- package/dist/tools/move-category-budget.d.ts.map +1 -0
- package/dist/tools/move-category-budget.js +100 -0
- package/dist/tools/move-category-budget.js.map +1 -0
- package/dist/tools/schemas.d.ts +185 -28
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +411 -28
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/snooze-category-goal.d.ts +10 -0
- package/dist/tools/snooze-category-goal.d.ts.map +1 -0
- package/dist/tools/snooze-category-goal.js +53 -0
- package/dist/tools/snooze-category-goal.js.map +1 -0
- package/dist/tools/update-category-budget.d.ts.map +1 -1
- package/dist/tools/update-category-budget.js +51 -26
- package/dist/tools/update-category-budget.js.map +1 -1
- package/dist/tools/update-category.d.ts +61 -0
- package/dist/tools/update-category.d.ts.map +1 -0
- package/dist/tools/update-category.js +46 -0
- package/dist/tools/update-category.js.map +1 -0
- package/dist/tools/update-transaction.d.ts +3 -2
- package/dist/tools/update-transaction.d.ts.map +1 -1
- package/dist/tools/update-transaction.js +84 -31
- package/dist/tools/update-transaction.js.map +1 -1
- package/dist/tools.json +965 -43
- package/dist/ynab-api.d.ts +4 -1
- package/dist/ynab-api.d.ts.map +1 -1
- package/dist/ynab-api.js +47 -26
- package/dist/ynab-api.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const moveCategoryBudget: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
month: z.ZodString;
|
|
4
|
+
amount: z.ZodNumber;
|
|
5
|
+
from_category_id: z.ZodOptional<z.ZodString>;
|
|
6
|
+
to_category_id: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
categories: z.ZodArray<z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
category_group_id: z.ZodString;
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
hidden: z.ZodBoolean;
|
|
13
|
+
budgeted: z.ZodString;
|
|
14
|
+
activity: z.ZodString;
|
|
15
|
+
balance: z.ZodString;
|
|
16
|
+
budgeted_milliunits: z.ZodNumber;
|
|
17
|
+
activity_milliunits: z.ZodNumber;
|
|
18
|
+
balance_milliunits: z.ZodNumber;
|
|
19
|
+
goal_type: z.ZodString;
|
|
20
|
+
goal_target: z.ZodString;
|
|
21
|
+
goal_percentage_complete: z.ZodNumber;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
//# sourceMappingURL=move-category-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"move-category-budget.d.ts","sourceRoot":"","sources":["../../src/tools/move-category-budget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;kBAuG7B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { getPlanId, getUserId, syncBudget, syncWrite } from '../ynab-api.js';
|
|
4
|
+
import { buildSubcategoryBudgetMap, buildSubcategoryCalcMap, categorySchema, findCategory, formatMonthlyBudgetId, formatSubcategoryBudgetId, MONEY_MOVEMENT_SOURCE, mapCategoryForMonth, notTombstone, toMilliunits, toMonthKey, } from './schemas.js';
|
|
5
|
+
export const moveCategoryBudget = defineTool({
|
|
6
|
+
name: 'move_category_budget',
|
|
7
|
+
displayName: 'Move Category Budget',
|
|
8
|
+
description: 'Move budgeted money between categories or to/from Ready to Assign for a specific month. Omit from_category_id to move money out of Ready to Assign; omit to_category_id to move money back to Ready to Assign. Both null is invalid.',
|
|
9
|
+
summary: 'Move money between budget categories',
|
|
10
|
+
icon: 'arrow-left-right',
|
|
11
|
+
group: 'Categories',
|
|
12
|
+
input: z
|
|
13
|
+
.object({
|
|
14
|
+
month: z
|
|
15
|
+
.string()
|
|
16
|
+
.regex(/^\d{4}-\d{2}(-\d{2})?$/, 'Month must be YYYY-MM or YYYY-MM-DD')
|
|
17
|
+
.describe('Month in YYYY-MM format (e.g. 2026-03)'),
|
|
18
|
+
amount: z.number().positive().describe('Amount to move in currency units (e.g. 50 for $50)'),
|
|
19
|
+
from_category_id: z.string().optional().describe('Source category ID. Omit to move from Ready to Assign.'),
|
|
20
|
+
to_category_id: z.string().optional().describe('Destination category ID. Omit to move to Ready to Assign.'),
|
|
21
|
+
})
|
|
22
|
+
.refine(p => p.from_category_id || p.to_category_id, {
|
|
23
|
+
message: 'At least one of from_category_id or to_category_id must be provided',
|
|
24
|
+
})
|
|
25
|
+
.refine(p => !p.from_category_id || !p.to_category_id || p.from_category_id !== p.to_category_id, {
|
|
26
|
+
message: 'from_category_id and to_category_id must differ',
|
|
27
|
+
}),
|
|
28
|
+
output: z.object({
|
|
29
|
+
categories: z
|
|
30
|
+
.array(categorySchema)
|
|
31
|
+
.describe('Updated categories (1 if RTA is involved, 2 for category-to-category)'),
|
|
32
|
+
}),
|
|
33
|
+
handle: async (params) => {
|
|
34
|
+
const planId = getPlanId();
|
|
35
|
+
const userId = getUserId();
|
|
36
|
+
const milliunits = toMilliunits(params.amount);
|
|
37
|
+
const monthKey = toMonthKey(params.month);
|
|
38
|
+
const monthlyBudgetId = formatMonthlyBudgetId(monthKey, planId);
|
|
39
|
+
const budget = await syncBudget(planId);
|
|
40
|
+
const serverKnowledge = budget.current_server_knowledge ?? 0;
|
|
41
|
+
const existingBudgets = budget.changed_entities?.be_monthly_subcategory_budgets ?? [];
|
|
42
|
+
const fromCategoryId = params.from_category_id;
|
|
43
|
+
const toCategoryId = params.to_category_id;
|
|
44
|
+
const fromCategory = fromCategoryId ? findCategory(budget.changed_entities, fromCategoryId) : null;
|
|
45
|
+
const toCategory = toCategoryId ? findCategory(budget.changed_entities, toCategoryId) : null;
|
|
46
|
+
const fromBudgetId = fromCategoryId ? formatSubcategoryBudgetId(monthKey, fromCategoryId) : null;
|
|
47
|
+
const toBudgetId = toCategoryId ? formatSubcategoryBudgetId(monthKey, toCategoryId) : null;
|
|
48
|
+
const buildEntry = (categoryId, budgetId, signedDelta) => {
|
|
49
|
+
const current = existingBudgets.find(b => b.id === budgetId && notTombstone(b))?.budgeted ?? 0;
|
|
50
|
+
return {
|
|
51
|
+
id: budgetId,
|
|
52
|
+
is_tombstone: false,
|
|
53
|
+
entities_monthly_budget_id: monthlyBudgetId,
|
|
54
|
+
entities_subcategory_id: categoryId,
|
|
55
|
+
budgeted: current + signedDelta,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
const budgetEntries = [];
|
|
59
|
+
if (fromCategoryId && fromBudgetId)
|
|
60
|
+
budgetEntries.push(buildEntry(fromCategoryId, fromBudgetId, -milliunits));
|
|
61
|
+
if (toCategoryId && toBudgetId)
|
|
62
|
+
budgetEntries.push(buildEntry(toCategoryId, toBudgetId, milliunits));
|
|
63
|
+
const source = fromCategoryId && toCategoryId ? MONEY_MOVEMENT_SOURCE.MOVEMENT : MONEY_MOVEMENT_SOURCE.ASSIGN;
|
|
64
|
+
const result = await syncWrite(planId, {
|
|
65
|
+
be_monthly_subcategory_budgets: budgetEntries,
|
|
66
|
+
be_money_movements: [
|
|
67
|
+
{
|
|
68
|
+
id: crypto.randomUUID(),
|
|
69
|
+
is_tombstone: false,
|
|
70
|
+
from_entities_monthly_subcategory_budget_id: fromBudgetId,
|
|
71
|
+
to_entities_monthly_subcategory_budget_id: toBudgetId,
|
|
72
|
+
entities_money_movement_group_id: null,
|
|
73
|
+
amount: milliunits,
|
|
74
|
+
performed_by_user_id: userId,
|
|
75
|
+
note: null,
|
|
76
|
+
source,
|
|
77
|
+
move_started_at: new Date().toISOString(),
|
|
78
|
+
move_accepted_at: null,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
}, serverKnowledge);
|
|
82
|
+
const calcMap = buildSubcategoryCalcMap(result.changed_entities?.be_monthly_subcategory_budget_calculations ?? []);
|
|
83
|
+
// Prefer the server's echoed values — if a concurrent update from another
|
|
84
|
+
// client merged in, that change shows up here. Fall back to our local
|
|
85
|
+
// entries for any that the server didn't echo.
|
|
86
|
+
const budgetMap = buildSubcategoryBudgetMap(result.changed_entities?.be_monthly_subcategory_budgets ?? []);
|
|
87
|
+
for (const e of budgetEntries) {
|
|
88
|
+
const key = `${monthKey}/${e.entities_subcategory_id}`;
|
|
89
|
+
if (!budgetMap.has(key))
|
|
90
|
+
budgetMap.set(key, e);
|
|
91
|
+
}
|
|
92
|
+
const categories = [];
|
|
93
|
+
if (fromCategory)
|
|
94
|
+
categories.push(mapCategoryForMonth(fromCategory, budgetMap, calcMap, monthKey));
|
|
95
|
+
if (toCategory)
|
|
96
|
+
categories.push(mapCategoryForMonth(toCategory, budgetMap, calcMap, monthKey));
|
|
97
|
+
return { categories };
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=move-category-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"move-category-budget.js","sourceRoot":"","sources":["../../src/tools/move-category-budget.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/schemas.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const formatMilliunits: (milliunits: number) => string;
|
|
3
|
+
export declare const toMilliunits: (amount: number) => number;
|
|
4
|
+
export declare const notTombstone: <T extends {
|
|
5
|
+
is_tombstone?: boolean;
|
|
6
|
+
}>(x: T) => x is T & {
|
|
7
|
+
is_tombstone?: false | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare const findCategory: (entities: BudgetEntities | undefined, id: string) => RawCategory;
|
|
10
|
+
export declare const findCategoryGroup: (entities: BudgetEntities | undefined, id: string) => RawCategoryGroup;
|
|
11
|
+
export declare const assertCategoryGroupDeletable: (group: RawCategoryGroup) => void;
|
|
12
|
+
export declare const assertCategoryDeletable: (category: RawCategory) => void;
|
|
13
|
+
export declare const nextTopSortableIndex: (rows: {
|
|
14
|
+
sortable_index?: number;
|
|
15
|
+
}[], step?: number) => number;
|
|
3
16
|
export declare const userSchema: z.ZodObject<{
|
|
4
17
|
id: z.ZodString;
|
|
5
18
|
first_name: z.ZodString;
|
|
@@ -59,7 +72,6 @@ export declare const transactionSchema: z.ZodObject<{
|
|
|
59
72
|
cleared: z.ZodString;
|
|
60
73
|
approved: z.ZodBoolean;
|
|
61
74
|
flag_color: z.ZodString;
|
|
62
|
-
flag_name: z.ZodString;
|
|
63
75
|
account_id: z.ZodString;
|
|
64
76
|
account_name: z.ZodString;
|
|
65
77
|
payee_id: z.ZodString;
|
|
@@ -67,7 +79,8 @@ export declare const transactionSchema: z.ZodObject<{
|
|
|
67
79
|
category_id: z.ZodString;
|
|
68
80
|
category_name: z.ZodString;
|
|
69
81
|
transfer_account_id: z.ZodString;
|
|
70
|
-
|
|
82
|
+
imported_payee: z.ZodString;
|
|
83
|
+
original_imported_payee: z.ZodString;
|
|
71
84
|
deleted: z.ZodBoolean;
|
|
72
85
|
}, z.core.$strip>;
|
|
73
86
|
export declare const subtransactionSchema: z.ZodObject<{
|
|
@@ -93,7 +106,7 @@ export declare const monthSchema: z.ZodObject<{
|
|
|
93
106
|
budgeted_milliunits: z.ZodNumber;
|
|
94
107
|
activity_milliunits: z.ZodNumber;
|
|
95
108
|
to_be_budgeted_milliunits: z.ZodNumber;
|
|
96
|
-
age_of_money: z.ZodNumber
|
|
109
|
+
age_of_money: z.ZodNullable<z.ZodNumber>;
|
|
97
110
|
}, z.core.$strip>;
|
|
98
111
|
export declare const scheduledTransactionSchema: z.ZodObject<{
|
|
99
112
|
id: z.ZodString;
|
|
@@ -145,19 +158,37 @@ export interface RawCategoryGroup {
|
|
|
145
158
|
id?: string;
|
|
146
159
|
name?: string;
|
|
147
160
|
is_hidden?: boolean | null;
|
|
161
|
+
internal_name?: string | null;
|
|
162
|
+
deletable?: boolean;
|
|
163
|
+
sortable_index?: number;
|
|
164
|
+
note?: string | null;
|
|
148
165
|
is_tombstone?: boolean;
|
|
149
166
|
}
|
|
150
167
|
export interface RawCategory {
|
|
151
168
|
id?: string;
|
|
152
169
|
entities_master_category_id?: string;
|
|
170
|
+
entities_account_id?: string | null;
|
|
171
|
+
internal_name?: string | null;
|
|
172
|
+
sortable_index?: number;
|
|
153
173
|
name?: string;
|
|
174
|
+
type?: string;
|
|
154
175
|
is_hidden?: boolean | null;
|
|
155
176
|
budgeted?: number;
|
|
156
177
|
activity?: number;
|
|
157
178
|
balance?: number;
|
|
158
179
|
goal_type?: string | null;
|
|
159
180
|
goal_target?: number | null;
|
|
181
|
+
goal_target_amount?: number | null;
|
|
182
|
+
goal_target_date?: string | null;
|
|
183
|
+
goal_created_on?: string | null;
|
|
184
|
+
goal_needs_whole_amount?: boolean | null;
|
|
185
|
+
goal_cadence?: number | null;
|
|
186
|
+
goal_cadence_frequency?: number | null;
|
|
187
|
+
goal_day?: number | null;
|
|
188
|
+
monthly_funding?: number | null;
|
|
160
189
|
goal_percentage_complete?: number | null;
|
|
190
|
+
pinned_index?: number | null;
|
|
191
|
+
pinned_goal_index?: number | null;
|
|
161
192
|
is_tombstone?: boolean;
|
|
162
193
|
note?: string | null;
|
|
163
194
|
}
|
|
@@ -165,6 +196,15 @@ export interface RawPayee {
|
|
|
165
196
|
id?: string;
|
|
166
197
|
name?: string;
|
|
167
198
|
entities_account_id?: string | null;
|
|
199
|
+
internal_name?: string | null;
|
|
200
|
+
enabled?: boolean;
|
|
201
|
+
auto_fill_subcategory_id?: string | null;
|
|
202
|
+
auto_fill_memo?: string | null;
|
|
203
|
+
auto_fill_amount?: number;
|
|
204
|
+
auto_fill_subcategory_enabled?: boolean;
|
|
205
|
+
auto_fill_memo_enabled?: boolean;
|
|
206
|
+
auto_fill_amount_enabled?: boolean;
|
|
207
|
+
rename_on_import_enabled?: boolean;
|
|
168
208
|
is_tombstone?: boolean;
|
|
169
209
|
}
|
|
170
210
|
export interface RawTransaction {
|
|
@@ -173,17 +213,17 @@ export interface RawTransaction {
|
|
|
173
213
|
amount?: number;
|
|
174
214
|
memo?: string | null;
|
|
175
215
|
cleared?: string;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
flag_name?: string | null;
|
|
216
|
+
accepted?: boolean;
|
|
217
|
+
flag?: string | null;
|
|
179
218
|
entities_account_id?: string;
|
|
180
|
-
account_name?: string;
|
|
181
219
|
entities_payee_id?: string | null;
|
|
182
|
-
payee_name?: string | null;
|
|
183
220
|
entities_subcategory_id?: string | null;
|
|
184
|
-
|
|
221
|
+
entities_scheduled_transaction_id?: string | null;
|
|
185
222
|
transfer_account_id?: string | null;
|
|
186
|
-
|
|
223
|
+
imported_payee?: string | null;
|
|
224
|
+
original_imported_payee?: string | null;
|
|
225
|
+
ynab_id?: string | null;
|
|
226
|
+
source?: string | null;
|
|
187
227
|
is_tombstone?: boolean;
|
|
188
228
|
}
|
|
189
229
|
export interface RawSubtransaction {
|
|
@@ -192,9 +232,7 @@ export interface RawSubtransaction {
|
|
|
192
232
|
amount?: number;
|
|
193
233
|
memo?: string | null;
|
|
194
234
|
entities_payee_id?: string | null;
|
|
195
|
-
payee_name?: string | null;
|
|
196
235
|
entities_subcategory_id?: string | null;
|
|
197
|
-
category_name?: string | null;
|
|
198
236
|
transfer_account_id?: string | null;
|
|
199
237
|
is_tombstone?: boolean;
|
|
200
238
|
}
|
|
@@ -211,31 +249,150 @@ export interface RawMonthlyBudgetCalc {
|
|
|
211
249
|
available_to_budget?: number;
|
|
212
250
|
age_of_money?: number | null;
|
|
213
251
|
}
|
|
252
|
+
export interface RawMonthlySubcategoryBudget {
|
|
253
|
+
id?: string;
|
|
254
|
+
entities_monthly_budget_id?: string;
|
|
255
|
+
entities_subcategory_id?: string;
|
|
256
|
+
budgeted?: number;
|
|
257
|
+
goal_snoozed_at?: string | null;
|
|
258
|
+
is_tombstone?: boolean;
|
|
259
|
+
}
|
|
214
260
|
export interface RawMonthlySubcategoryBudgetCalc {
|
|
215
261
|
entities_monthly_subcategory_budget_id?: string;
|
|
216
|
-
budgeted?: number;
|
|
217
|
-
activity?: number;
|
|
218
262
|
balance?: number;
|
|
219
|
-
|
|
220
|
-
|
|
263
|
+
cash_outflows?: number;
|
|
264
|
+
credit_outflows?: number;
|
|
221
265
|
goal_percentage_complete?: number | null;
|
|
222
266
|
}
|
|
223
267
|
export interface RawScheduledTransaction {
|
|
224
268
|
id?: string;
|
|
225
|
-
|
|
226
|
-
date_next?: string;
|
|
269
|
+
date?: string;
|
|
227
270
|
frequency?: string;
|
|
228
271
|
amount?: number;
|
|
229
272
|
memo?: string | null;
|
|
230
|
-
|
|
273
|
+
flag?: string | null;
|
|
231
274
|
entities_account_id?: string;
|
|
232
|
-
account_name?: string;
|
|
233
275
|
entities_payee_id?: string | null;
|
|
234
|
-
payee_name?: string | null;
|
|
235
276
|
entities_subcategory_id?: string | null;
|
|
236
|
-
|
|
277
|
+
transfer_account_id?: string | null;
|
|
278
|
+
upcoming_instances?: string[];
|
|
237
279
|
is_tombstone?: boolean;
|
|
238
280
|
}
|
|
281
|
+
export type ClearedStatus = 'cleared' | 'uncleared' | 'reconciled';
|
|
282
|
+
export type FlagColor = 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'purple';
|
|
283
|
+
export declare const MONEY_MOVEMENT_SOURCE: {
|
|
284
|
+
/** RTA ↔ category (in either direction). */
|
|
285
|
+
readonly ASSIGN: "manual_assign";
|
|
286
|
+
/** Category-to-category transfer. */
|
|
287
|
+
readonly MOVEMENT: "manual_movement";
|
|
288
|
+
};
|
|
289
|
+
export declare const GOAL_TYPE: {
|
|
290
|
+
/** "Set aside" or "Refill" — `goal_needs_whole_amount` differentiates. */
|
|
291
|
+
readonly NEED: "NEED";
|
|
292
|
+
/** "Have a balance of" — no date, no cadence. */
|
|
293
|
+
readonly TARGET_BALANCE: "TB";
|
|
294
|
+
/** "Have a balance of by date" — one-shot with `goal_target_date`. */
|
|
295
|
+
readonly TARGET_BY_DATE: "TBD";
|
|
296
|
+
/** Debt payment goals on debt-account categories. */
|
|
297
|
+
readonly DEBT: "DEBT";
|
|
298
|
+
/** Legacy "Monthly Funding". The modern UI no longer creates these but they
|
|
299
|
+
still exist on older categories and the API still honors them. */
|
|
300
|
+
readonly MONTHLY_FUNDING: "MF";
|
|
301
|
+
};
|
|
302
|
+
/** YNAB's default category type for non-credit-card categories. */
|
|
303
|
+
export declare const CATEGORY_TYPE_DEFAULT = "DFT";
|
|
304
|
+
export declare const toMonthKey: (month: string) => string;
|
|
305
|
+
export declare const currentMonthKey: () => string;
|
|
306
|
+
export declare const formatSubcategoryBudgetId: (monthKey: string, categoryId: string) => string;
|
|
307
|
+
export declare const formatMonthlyBudgetId: (monthKey: string, planId: string) => string;
|
|
308
|
+
export declare const CLEARED_MAP: Record<ClearedStatus, string>;
|
|
309
|
+
export declare const FLAG_MAP: Record<FlagColor, string>;
|
|
310
|
+
export type GoalCadence = 'weekly' | 'monthly' | 'yearly';
|
|
311
|
+
export declare const goalSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
312
|
+
target: z.ZodNumber;
|
|
313
|
+
cadence: z.ZodOptional<z.ZodEnum<{
|
|
314
|
+
weekly: "weekly";
|
|
315
|
+
monthly: "monthly";
|
|
316
|
+
yearly: "yearly";
|
|
317
|
+
}>>;
|
|
318
|
+
every: z.ZodOptional<z.ZodNumber>;
|
|
319
|
+
day: z.ZodOptional<z.ZodNumber>;
|
|
320
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
321
|
+
type: z.ZodLiteral<"set_aside">;
|
|
322
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
323
|
+
target: z.ZodNumber;
|
|
324
|
+
cadence: z.ZodOptional<z.ZodEnum<{
|
|
325
|
+
weekly: "weekly";
|
|
326
|
+
monthly: "monthly";
|
|
327
|
+
yearly: "yearly";
|
|
328
|
+
}>>;
|
|
329
|
+
every: z.ZodOptional<z.ZodNumber>;
|
|
330
|
+
day: z.ZodOptional<z.ZodNumber>;
|
|
331
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
332
|
+
type: z.ZodLiteral<"refill">;
|
|
333
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
334
|
+
type: z.ZodLiteral<"target_balance">;
|
|
335
|
+
target: z.ZodNumber;
|
|
336
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
337
|
+
type: z.ZodLiteral<"target_by_date">;
|
|
338
|
+
target: z.ZodNumber;
|
|
339
|
+
date: z.ZodString;
|
|
340
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
341
|
+
type: z.ZodLiteral<"debt">;
|
|
342
|
+
target: z.ZodNumber;
|
|
343
|
+
day: z.ZodOptional<z.ZodNumber>;
|
|
344
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
345
|
+
type: z.ZodLiteral<"none">;
|
|
346
|
+
}, z.core.$strict>], "type">;
|
|
347
|
+
export type GoalSpec = z.infer<typeof goalSpecSchema>;
|
|
348
|
+
export declare const buildGoalFields: (goal: GoalSpec | undefined) => Partial<RawCategory>;
|
|
349
|
+
export interface BudgetEntities {
|
|
350
|
+
be_transactions?: RawTransaction[];
|
|
351
|
+
be_subtransactions?: RawSubtransaction[];
|
|
352
|
+
be_payees?: RawPayee[];
|
|
353
|
+
be_accounts?: RawAccount[];
|
|
354
|
+
be_account_calculations?: RawAccountCalculation[];
|
|
355
|
+
be_subcategories?: RawCategory[];
|
|
356
|
+
be_master_categories?: RawCategoryGroup[];
|
|
357
|
+
be_monthly_budgets?: RawMonth[];
|
|
358
|
+
be_monthly_budget_calculations?: RawMonthlyBudgetCalc[];
|
|
359
|
+
be_monthly_subcategory_budgets?: RawMonthlySubcategoryBudget[];
|
|
360
|
+
be_monthly_subcategory_budget_calculations?: RawMonthlySubcategoryBudgetCalc[];
|
|
361
|
+
be_scheduled_transactions?: RawScheduledTransaction[];
|
|
362
|
+
}
|
|
363
|
+
export declare const resolvePayee: (existingPayees: RawPayee[], payeeName: string) => {
|
|
364
|
+
payeeId: string;
|
|
365
|
+
newPayee?: RawPayee;
|
|
366
|
+
};
|
|
367
|
+
export declare const buildAccountCalcMap: (entities: BudgetEntities) => Map<string | undefined, RawAccountCalculation>;
|
|
368
|
+
export declare const buildMonthlyBudgetCalcMap: (calcs: RawMonthlyBudgetCalc[]) => Map<string, RawMonthlyBudgetCalc>;
|
|
369
|
+
export declare const buildSubcategoryCalcMap: (calcs: RawMonthlySubcategoryBudgetCalc[]) => Map<string, RawMonthlySubcategoryBudgetCalc>;
|
|
370
|
+
export declare const buildSubcategoryBudgetMap: (budgets: RawMonthlySubcategoryBudget[]) => Map<string, RawMonthlySubcategoryBudget>;
|
|
371
|
+
export declare const mapCategoryForMonth: (c: RawCategory, budgetMap: Map<string, RawMonthlySubcategoryBudget>, calcMap: Map<string, RawMonthlySubcategoryBudgetCalc>, month: string) => {
|
|
372
|
+
id: string;
|
|
373
|
+
category_group_id: string;
|
|
374
|
+
name: string;
|
|
375
|
+
hidden: boolean;
|
|
376
|
+
budgeted: string;
|
|
377
|
+
activity: string;
|
|
378
|
+
balance: string;
|
|
379
|
+
budgeted_milliunits: number;
|
|
380
|
+
activity_milliunits: number;
|
|
381
|
+
balance_milliunits: number;
|
|
382
|
+
goal_type: string;
|
|
383
|
+
goal_target: string;
|
|
384
|
+
goal_percentage_complete: number;
|
|
385
|
+
};
|
|
386
|
+
export interface EntityLookups {
|
|
387
|
+
payees: Map<string, string>;
|
|
388
|
+
accounts: Map<string, string>;
|
|
389
|
+
categories: Map<string, string>;
|
|
390
|
+
}
|
|
391
|
+
export declare const buildLookups: (entities: {
|
|
392
|
+
be_payees?: RawPayee[];
|
|
393
|
+
be_accounts?: RawAccount[];
|
|
394
|
+
be_subcategories?: RawCategory[];
|
|
395
|
+
}) => EntityLookups;
|
|
239
396
|
export declare const mapUser: (u: RawUser) => {
|
|
240
397
|
id: string;
|
|
241
398
|
first_name: string;
|
|
@@ -286,7 +443,7 @@ export declare const mapPayee: (p: RawPayee) => {
|
|
|
286
443
|
name: string;
|
|
287
444
|
transfer_account_id: string;
|
|
288
445
|
};
|
|
289
|
-
export declare const mapTransaction: (t: RawTransaction) => {
|
|
446
|
+
export declare const mapTransaction: (t: RawTransaction, lookups?: EntityLookups) => {
|
|
290
447
|
id: string;
|
|
291
448
|
date: string;
|
|
292
449
|
amount: string;
|
|
@@ -295,7 +452,6 @@ export declare const mapTransaction: (t: RawTransaction) => {
|
|
|
295
452
|
cleared: string;
|
|
296
453
|
approved: boolean;
|
|
297
454
|
flag_color: string;
|
|
298
|
-
flag_name: string;
|
|
299
455
|
account_id: string;
|
|
300
456
|
account_name: string;
|
|
301
457
|
payee_id: string;
|
|
@@ -303,10 +459,11 @@ export declare const mapTransaction: (t: RawTransaction) => {
|
|
|
303
459
|
category_id: string;
|
|
304
460
|
category_name: string;
|
|
305
461
|
transfer_account_id: string;
|
|
306
|
-
|
|
462
|
+
imported_payee: string;
|
|
463
|
+
original_imported_payee: string;
|
|
307
464
|
deleted: boolean;
|
|
308
465
|
};
|
|
309
|
-
export declare const mapSubtransaction: (s: RawSubtransaction) => {
|
|
466
|
+
export declare const mapSubtransaction: (s: RawSubtransaction, lookups?: EntityLookups) => {
|
|
310
467
|
id: string;
|
|
311
468
|
transaction_id: string;
|
|
312
469
|
amount: string;
|
|
@@ -329,9 +486,9 @@ export declare const mapMonth: (m: RawMonth, calc?: RawMonthlyBudgetCalc) => {
|
|
|
329
486
|
budgeted_milliunits: number;
|
|
330
487
|
activity_milliunits: number;
|
|
331
488
|
to_be_budgeted_milliunits: number;
|
|
332
|
-
age_of_money: number;
|
|
489
|
+
age_of_money: number | null;
|
|
333
490
|
};
|
|
334
|
-
export declare const mapScheduledTransaction: (s: RawScheduledTransaction) => {
|
|
491
|
+
export declare const mapScheduledTransaction: (s: RawScheduledTransaction, lookups?: EntityLookups) => {
|
|
335
492
|
id: string;
|
|
336
493
|
date_first: string;
|
|
337
494
|
date_next: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
|