bkper 4.1.0 → 4.2.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.
- package/README.md +61 -3
- package/lib/auth/local-auth-service.d.ts.map +1 -1
- package/lib/auth/local-auth-service.js +26 -5
- package/lib/auth/local-auth-service.js.map +1 -1
- package/lib/commands/accounts/batch-create.d.ts +5 -1
- package/lib/commands/accounts/batch-create.d.ts.map +1 -1
- package/lib/commands/accounts/batch-create.js +23 -5
- package/lib/commands/accounts/batch-create.js.map +1 -1
- package/lib/commands/groups/batch-create.d.ts +5 -1
- package/lib/commands/groups/batch-create.d.ts.map +1 -1
- package/lib/commands/groups/batch-create.js +10 -5
- package/lib/commands/groups/batch-create.js.map +1 -1
- package/lib/commands/transactions/batch-create.d.ts +5 -1
- package/lib/commands/transactions/batch-create.d.ts.map +1 -1
- package/lib/commands/transactions/batch-create.js +36 -23
- package/lib/commands/transactions/batch-create.js.map +1 -1
- package/lib/input/index.d.ts +7 -1
- package/lib/input/index.d.ts.map +1 -1
- package/lib/input/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -489,11 +489,69 @@ cat transactions.csv | bkper transaction create -b abc123
|
|
|
489
489
|
python export_bank.py | bkper transaction create -b abc123
|
|
490
490
|
```
|
|
491
491
|
|
|
492
|
-
|
|
492
|
+
Field names follow the [Bkper API Types](https://raw.githubusercontent.com/bkper/bkper-api-types/refs/heads/master/index.d.ts) format. Any unrecognized field is stored as a custom property.
|
|
493
493
|
|
|
494
|
-
|
|
494
|
+
#### Transaction fields
|
|
495
495
|
|
|
496
|
-
|
|
496
|
+
| Field | Type | Required | Description |
|
|
497
|
+
| --------------- | -------- | -------- | --------------------------------------- |
|
|
498
|
+
| `date` | string | yes | ISO date (`YYYY-MM-DD`) |
|
|
499
|
+
| `amount` | string | yes | Numeric value |
|
|
500
|
+
| `description` | string | no | Transaction description |
|
|
501
|
+
| `creditAccount` | string | no | Source account (name or ID) |
|
|
502
|
+
| `debitAccount` | string | no | Destination account (name or ID) |
|
|
503
|
+
| `urls` | string[] | no | Array of URLs |
|
|
504
|
+
| `remoteIds` | string[] | no | Array of remote IDs (for deduplication) |
|
|
505
|
+
| _anything else_ | string | no | Stored as a custom property |
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
# JSON -- field names match the API, arrays are native JSON arrays
|
|
509
|
+
echo '[{
|
|
510
|
+
"date": "2025-01-15",
|
|
511
|
+
"amount": "100.50",
|
|
512
|
+
"creditAccount": "Bank Account",
|
|
513
|
+
"debitAccount": "Office Supplies",
|
|
514
|
+
"description": "Printer paper",
|
|
515
|
+
"urls": ["https://receipt.example.com/123"],
|
|
516
|
+
"remoteIds": ["BANK-TXN-456"],
|
|
517
|
+
"invoice": "INV-001"
|
|
518
|
+
}]' | bkper transaction create -b abc123
|
|
519
|
+
|
|
520
|
+
# CSV -- use comma-separated values for array fields
|
|
521
|
+
# date,amount,creditAccount,debitAccount,description,urls,remoteIds,invoice
|
|
522
|
+
# 2025-01-15,100.50,Bank Account,Office Supplies,Printer paper,https://receipt.example.com/123,BANK-TXN-456,INV-001
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
#### Account fields
|
|
526
|
+
|
|
527
|
+
| Field | Type | Required | Description |
|
|
528
|
+
| --------------- | -------- | -------- | -------------------------------------------- |
|
|
529
|
+
| `name` | string | yes | Account name |
|
|
530
|
+
| `type` | string | no | `ASSET`, `LIABILITY`, `INCOMING`, `OUTGOING` |
|
|
531
|
+
| `groups` | string[] | no | Array of group names |
|
|
532
|
+
| _anything else_ | string | no | Stored as a custom property |
|
|
533
|
+
|
|
534
|
+
#### Group fields
|
|
535
|
+
|
|
536
|
+
| Field | Type | Required | Description |
|
|
537
|
+
| --------------- | ------- | -------- | --------------------------- |
|
|
538
|
+
| `name` | string | yes | Group name |
|
|
539
|
+
| `parent` | string | no | Parent group name or ID |
|
|
540
|
+
| `hidden` | boolean | no | Whether to hide the group |
|
|
541
|
+
| _anything else_ | string | no | Stored as a custom property |
|
|
542
|
+
|
|
543
|
+
#### JSON vs CSV
|
|
544
|
+
|
|
545
|
+
**JSON input** preserves native types -- use real arrays (`["a","b"]`) and booleans (`true`). A single object `{}` or an array `[{}, {}]`.
|
|
546
|
+
|
|
547
|
+
**CSV input** is flat strings -- use comma-separated values within a cell for array fields (e.g., `url1,url2` in a `urls` column). First row is headers.
|
|
548
|
+
|
|
549
|
+
**Batch output:** results are streamed as NDJSON (one JSON object per line), printed as each batch completes:
|
|
550
|
+
|
|
551
|
+
```
|
|
552
|
+
{"id":"tx-abc","date":"2025-01-15","amount":"100.50","creditAccount":{...},...}
|
|
553
|
+
{"id":"tx-def","date":"2025-01-16","amount":"200.00","creditAccount":{...},...}
|
|
554
|
+
```
|
|
497
555
|
|
|
498
556
|
---
|
|
499
557
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-auth-service.d.ts","sourceRoot":"","sources":["../../src/auth/local-auth-service.ts"],"names":[],"mappings":"AAoDA;;;GAGG;AACH,wBAAsB,KAAK,kBAK1B;AAED;;GAEG;AACH,wBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"local-auth-service.d.ts","sourceRoot":"","sources":["../../src/auth/local-auth-service.ts"],"names":[],"mappings":"AAoDA;;;GAGG;AACH,wBAAsB,KAAK,kBAK1B;AAED;;GAEG;AACH,wBAAgB,MAAM,SAGrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,YAEzB;AA6HD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAoCrD"}
|
|
@@ -71,9 +71,7 @@ export function login() {
|
|
|
71
71
|
* Logs out by removing stored OAuth credentials from disk.
|
|
72
72
|
*/
|
|
73
73
|
export function logout() {
|
|
74
|
-
|
|
75
|
-
fs.rmSync(storedCredentialsPath);
|
|
76
|
-
}
|
|
74
|
+
clearCredentials();
|
|
77
75
|
console.log('Bkper logged out.');
|
|
78
76
|
}
|
|
79
77
|
/**
|
|
@@ -214,8 +212,21 @@ export function getOAuthToken() {
|
|
|
214
212
|
storeCredentials(tokens);
|
|
215
213
|
}
|
|
216
214
|
});
|
|
217
|
-
|
|
218
|
-
|
|
215
|
+
try {
|
|
216
|
+
const token = yield localAuth.getAccessToken();
|
|
217
|
+
return token.token || '';
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
// If token refresh fails (e.g., credentials from a different OAuth client,
|
|
221
|
+
// revoked tokens, or expired refresh token), clear stale credentials
|
|
222
|
+
// and re-authenticate
|
|
223
|
+
clearCredentials();
|
|
224
|
+
console.log('Session expired. Re-authenticating...');
|
|
225
|
+
localAuth = yield authenticateLocal();
|
|
226
|
+
storeCredentials(localAuth.credentials);
|
|
227
|
+
const token = yield localAuth.getAccessToken();
|
|
228
|
+
return token.token || '';
|
|
229
|
+
}
|
|
219
230
|
});
|
|
220
231
|
}
|
|
221
232
|
function storeCredentials(credentials) {
|
|
@@ -224,4 +235,14 @@ function storeCredentials(credentials) {
|
|
|
224
235
|
fs.mkdirSync(configDir, { recursive: true });
|
|
225
236
|
fs.writeFileSync(storedCredentialsPath, JSON.stringify(credentials, null, 4), 'utf8');
|
|
226
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Clears stored credentials from memory and disk.
|
|
240
|
+
* Used when credentials become invalid (e.g., revoked, expired, or from a different OAuth client).
|
|
241
|
+
*/
|
|
242
|
+
function clearCredentials() {
|
|
243
|
+
storedCredentials = undefined;
|
|
244
|
+
if (fs.existsSync(storedCredentialsPath)) {
|
|
245
|
+
fs.rmSync(storedCredentialsPath);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
227
248
|
//# sourceMappingURL=local-auth-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-auth-service.js","sourceRoot":"","sources":["../../src/auth/local-auth-service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAe,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG;IACjB,QAAQ,EAAE,0EAA0E;IACpF,YAAY,EAAE,qCAAqC;IACnD,WAAW,EAAE,sCAAsC;CACtD,CAAC;AAEF,IAAI,iBAA8B,CAAC;AAEnC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,0BAA0B,CAAC;AACrE,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAClD,MAAM,qBAAqB,GAAG,GAAG,SAAS,0BAA0B,CAAC;AAErE,sCAAsC;AACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC7E,IAAI,CAAC;QACD,iCAAiC;QACjC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,mCAAmC;QACnC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAChE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC9B,oCAAoC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,oDAAoD;IACxD,CAAC;AACL,CAAC;AAED,IAAI,CAAC;IACD,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACvE,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACpD,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACX,+EAA+E;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAgB,KAAK;;QACvB,IAAI,iBAAiB,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,aAAa,EAAE,CAAC;IAC1B,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IAClB,
|
|
1
|
+
{"version":3,"file":"local-auth-service.js","sourceRoot":"","sources":["../../src/auth/local-auth-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import type { StdinValue } from '../../input/index.js';
|
|
1
2
|
/**
|
|
2
3
|
* Creates multiple accounts from stdin items using the batch API.
|
|
3
4
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
4
5
|
*
|
|
6
|
+
* Stdin field names follow the Bkper API format:
|
|
7
|
+
* name, type, groups
|
|
8
|
+
*
|
|
5
9
|
* @param bookId - Target book ID
|
|
6
10
|
* @param items - Parsed stdin items (field-value maps)
|
|
7
11
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
8
12
|
*/
|
|
9
|
-
export declare function batchCreateAccounts(bookId: string, items: Record<string,
|
|
13
|
+
export declare function batchCreateAccounts(bookId: string, items: Record<string, StdinValue>[], propertyOverrides?: string[]): Promise<void>;
|
|
10
14
|
//# sourceMappingURL=batch-create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/accounts/batch-create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/accounts/batch-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAoBvD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
|
@@ -11,10 +11,28 @@ import { getBkperInstance } from '../../bkper-factory.js';
|
|
|
11
11
|
import { Account, AccountType } from 'bkper-js';
|
|
12
12
|
import { parsePropertyFlag } from '../../utils/properties.js';
|
|
13
13
|
const CHUNK_SIZE = 100;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves a StdinValue that may be a string[] or comma-separated string into a string array.
|
|
16
|
+
*/
|
|
17
|
+
function resolveArray(value) {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
if (typeof value === 'string') {
|
|
22
|
+
return value
|
|
23
|
+
.split(',')
|
|
24
|
+
.map(s => s.trim())
|
|
25
|
+
.filter(Boolean);
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
14
29
|
/**
|
|
15
30
|
* Creates multiple accounts from stdin items using the batch API.
|
|
16
31
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
17
32
|
*
|
|
33
|
+
* Stdin field names follow the Bkper API format:
|
|
34
|
+
* name, type, groups
|
|
35
|
+
*
|
|
18
36
|
* @param bookId - Target book ID
|
|
19
37
|
* @param items - Parsed stdin items (field-value maps)
|
|
20
38
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
@@ -29,17 +47,17 @@ export function batchCreateAccounts(bookId, items, propertyOverrides) {
|
|
|
29
47
|
for (const item of chunk) {
|
|
30
48
|
const account = new Account(book);
|
|
31
49
|
if (item.name)
|
|
32
|
-
account.setName(item.name);
|
|
50
|
+
account.setName(String(item.name));
|
|
33
51
|
if (item.type) {
|
|
34
|
-
const accountType = AccountType[item.type];
|
|
52
|
+
const accountType = AccountType[String(item.type)];
|
|
35
53
|
if (accountType !== undefined)
|
|
36
54
|
account.setType(accountType);
|
|
37
55
|
}
|
|
38
56
|
// Set properties from stdin fields (excluding known fields)
|
|
39
|
-
const knownFields = new Set(['name', 'type', '
|
|
57
|
+
const knownFields = new Set(['name', 'type', 'groups']);
|
|
40
58
|
for (const [key, value] of Object.entries(item)) {
|
|
41
59
|
if (!knownFields.has(key) && value !== '') {
|
|
42
|
-
account.setProperty(key, value);
|
|
60
|
+
account.setProperty(key, String(value));
|
|
43
61
|
}
|
|
44
62
|
}
|
|
45
63
|
// CLI --property flags override stdin
|
|
@@ -55,7 +73,7 @@ export function batchCreateAccounts(bookId, items, propertyOverrides) {
|
|
|
55
73
|
}
|
|
56
74
|
}
|
|
57
75
|
if (item.groups) {
|
|
58
|
-
for (const groupName of item.groups
|
|
76
|
+
for (const groupName of resolveArray(item.groups)) {
|
|
59
77
|
const group = yield book.getGroup(groupName);
|
|
60
78
|
if (group) {
|
|
61
79
|
account.addGroup(group);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/accounts/batch-create.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/accounts/batch-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import type { StdinValue } from '../../input/index.js';
|
|
1
2
|
/**
|
|
2
3
|
* Creates multiple groups from stdin items using the batch API.
|
|
3
4
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
4
5
|
*
|
|
6
|
+
* Stdin field names follow the Bkper API format:
|
|
7
|
+
* name, parent, hidden
|
|
8
|
+
*
|
|
5
9
|
* @param bookId - Target book ID
|
|
6
10
|
* @param items - Parsed stdin items (field-value maps)
|
|
7
11
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
8
12
|
*/
|
|
9
|
-
export declare function batchCreateGroups(bookId: string, items: Record<string,
|
|
13
|
+
export declare function batchCreateGroups(bookId: string, items: Record<string, StdinValue>[], propertyOverrides?: string[]): Promise<void>;
|
|
10
14
|
//# sourceMappingURL=batch-create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/groups/batch-create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/groups/batch-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -15,6 +15,9 @@ const CHUNK_SIZE = 100;
|
|
|
15
15
|
* Creates multiple groups from stdin items using the batch API.
|
|
16
16
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
17
17
|
*
|
|
18
|
+
* Stdin field names follow the Bkper API format:
|
|
19
|
+
* name, parent, hidden
|
|
20
|
+
*
|
|
18
21
|
* @param bookId - Target book ID
|
|
19
22
|
* @param items - Parsed stdin items (field-value maps)
|
|
20
23
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
@@ -29,14 +32,16 @@ export function batchCreateGroups(bookId, items, propertyOverrides) {
|
|
|
29
32
|
for (const item of chunk) {
|
|
30
33
|
const group = new Group(book);
|
|
31
34
|
if (item.name)
|
|
32
|
-
group.setName(item.name);
|
|
33
|
-
if (item.hidden !== undefined)
|
|
34
|
-
|
|
35
|
+
group.setName(String(item.name));
|
|
36
|
+
if (item.hidden !== undefined) {
|
|
37
|
+
const hidden = typeof item.hidden === 'boolean' ? item.hidden : item.hidden === 'true';
|
|
38
|
+
group.setHidden(hidden);
|
|
39
|
+
}
|
|
35
40
|
// Set properties from stdin fields (excluding known fields)
|
|
36
41
|
const knownFields = new Set(['name', 'parent', 'hidden']);
|
|
37
42
|
for (const [key, value] of Object.entries(item)) {
|
|
38
43
|
if (!knownFields.has(key) && value !== '') {
|
|
39
|
-
group.setProperty(key, value);
|
|
44
|
+
group.setProperty(key, String(value));
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
// CLI --property flags override stdin
|
|
@@ -52,7 +57,7 @@ export function batchCreateGroups(bookId, items, propertyOverrides) {
|
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
if (item.parent) {
|
|
55
|
-
const parentGroup = yield book.getGroup(item.parent);
|
|
60
|
+
const parentGroup = yield book.getGroup(String(item.parent));
|
|
56
61
|
if (parentGroup) {
|
|
57
62
|
group.setParent(parentGroup);
|
|
58
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/groups/batch-create.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/groups/batch-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import type { StdinValue } from '../../input/index.js';
|
|
1
2
|
/**
|
|
2
3
|
* Creates multiple transactions from stdin items using the batch API.
|
|
3
4
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
4
5
|
*
|
|
6
|
+
* Stdin field names follow the Bkper API format:
|
|
7
|
+
* date, amount, description, creditAccount, debitAccount, urls, remoteIds
|
|
8
|
+
*
|
|
5
9
|
* @param bookId - Target book ID
|
|
6
10
|
* @param items - Parsed stdin items (field-value maps)
|
|
7
11
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
8
12
|
*/
|
|
9
|
-
export declare function batchCreateTransactions(bookId: string, items: Record<string,
|
|
13
|
+
export declare function batchCreateTransactions(bookId: string, items: Record<string, StdinValue>[], propertyOverrides?: string[]): Promise<void>;
|
|
10
14
|
//# sourceMappingURL=batch-create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/transactions/batch-create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batch-create.d.ts","sourceRoot":"","sources":["../../../src/commands/transactions/batch-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAoBvD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuEf"}
|
|
@@ -11,10 +11,28 @@ import { getBkperInstance } from '../../bkper-factory.js';
|
|
|
11
11
|
import { Transaction } from 'bkper-js';
|
|
12
12
|
import { parsePropertyFlag } from '../../utils/properties.js';
|
|
13
13
|
const CHUNK_SIZE = 100;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves a StdinValue that may be a string[] or comma-separated string into a string array.
|
|
16
|
+
*/
|
|
17
|
+
function resolveArray(value) {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
if (typeof value === 'string') {
|
|
22
|
+
return value
|
|
23
|
+
.split(',')
|
|
24
|
+
.map(s => s.trim())
|
|
25
|
+
.filter(Boolean);
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
14
29
|
/**
|
|
15
30
|
* Creates multiple transactions from stdin items using the batch API.
|
|
16
31
|
* Outputs NDJSON (one JSON object per line) as each chunk completes.
|
|
17
32
|
*
|
|
33
|
+
* Stdin field names follow the Bkper API format:
|
|
34
|
+
* date, amount, description, creditAccount, debitAccount, urls, remoteIds
|
|
35
|
+
*
|
|
18
36
|
* @param bookId - Target book ID
|
|
19
37
|
* @param items - Parsed stdin items (field-value maps)
|
|
20
38
|
* @param propertyOverrides - CLI --property flags that override stdin fields
|
|
@@ -29,32 +47,29 @@ export function batchCreateTransactions(bookId, items, propertyOverrides) {
|
|
|
29
47
|
for (const item of chunk) {
|
|
30
48
|
const tx = new Transaction(book);
|
|
31
49
|
if (item.date)
|
|
32
|
-
tx.setDate(item.date);
|
|
50
|
+
tx.setDate(String(item.date));
|
|
33
51
|
if (item.amount)
|
|
34
|
-
tx.setAmount(item.amount);
|
|
52
|
+
tx.setAmount(String(item.amount));
|
|
35
53
|
if (item.description)
|
|
36
|
-
tx.setDescription(item.description);
|
|
37
|
-
if (item.
|
|
38
|
-
const creditAccount = yield book.getAccount(item.
|
|
54
|
+
tx.setDescription(String(item.description));
|
|
55
|
+
if (item.creditAccount) {
|
|
56
|
+
const creditAccount = yield book.getAccount(String(item.creditAccount));
|
|
39
57
|
if (creditAccount)
|
|
40
58
|
tx.setCreditAccount(creditAccount);
|
|
41
59
|
}
|
|
42
|
-
if (item.
|
|
43
|
-
const debitAccount = yield book.getAccount(item.
|
|
60
|
+
if (item.debitAccount) {
|
|
61
|
+
const debitAccount = yield book.getAccount(String(item.debitAccount));
|
|
44
62
|
if (debitAccount)
|
|
45
63
|
tx.setDebitAccount(debitAccount);
|
|
46
64
|
}
|
|
47
|
-
if (item.
|
|
48
|
-
for (const u of item.
|
|
49
|
-
|
|
50
|
-
tx.addUrl(u);
|
|
65
|
+
if (item.urls) {
|
|
66
|
+
for (const u of resolveArray(item.urls)) {
|
|
67
|
+
tx.addUrl(u);
|
|
51
68
|
}
|
|
52
69
|
}
|
|
53
|
-
if (item.
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
if (r)
|
|
57
|
-
tx.addRemoteId(r);
|
|
70
|
+
if (item.remoteIds) {
|
|
71
|
+
for (const r of resolveArray(item.remoteIds)) {
|
|
72
|
+
tx.addRemoteId(r);
|
|
58
73
|
}
|
|
59
74
|
}
|
|
60
75
|
// Set properties from stdin fields (excluding known fields)
|
|
@@ -62,16 +77,14 @@ export function batchCreateTransactions(bookId, items, propertyOverrides) {
|
|
|
62
77
|
'date',
|
|
63
78
|
'amount',
|
|
64
79
|
'description',
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
'
|
|
68
|
-
'
|
|
69
|
-
'remote-id',
|
|
70
|
-
'Remote Id',
|
|
80
|
+
'creditAccount',
|
|
81
|
+
'debitAccount',
|
|
82
|
+
'urls',
|
|
83
|
+
'remoteIds',
|
|
71
84
|
]);
|
|
72
85
|
for (const [key, value] of Object.entries(item)) {
|
|
73
86
|
if (!knownFields.has(key) && value !== '') {
|
|
74
|
-
tx.setProperty(key, value);
|
|
87
|
+
tx.setProperty(key, String(value));
|
|
75
88
|
}
|
|
76
89
|
}
|
|
77
90
|
// CLI --property flags override stdin
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/transactions/batch-create.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-create.js","sourceRoot":"","sources":["../../../src/commands/transactions/batch-create.ts"],"names":[],"mappings":"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"}
|
package/lib/input/index.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
export { readStdin } from './stdin-reader.js';
|
|
2
2
|
export { InputFormat } from './format-detector.js';
|
|
3
3
|
import { InputFormat } from './format-detector.js';
|
|
4
|
+
/**
|
|
5
|
+
* Value types supported in stdin items.
|
|
6
|
+
* JSON input preserves native types (arrays, booleans, numbers as strings).
|
|
7
|
+
* CSV input produces string values only.
|
|
8
|
+
*/
|
|
9
|
+
export type StdinValue = string | string[] | boolean;
|
|
4
10
|
export interface StdinItems {
|
|
5
|
-
items: Record<string,
|
|
11
|
+
items: Record<string, StdinValue>[];
|
|
6
12
|
format: InputFormat;
|
|
7
13
|
}
|
|
8
14
|
export declare function parseStdinItems(): Promise<StdinItems | null>;
|
package/lib/input/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAqB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtE,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAqB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;IACpC,MAAM,EAAE,WAAW,CAAC;CACvB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAuBlE"}
|
package/lib/input/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAe,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAe,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAc3C,MAAM,UAAgB,eAAe;;QACjC,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,KAAmC,CAAC;QAExC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,KAAK,GAAG,MAAsC,CAAC;YACnD,CAAC;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvD,KAAK,GAAG,CAAC,MAAoC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;CAAA"}
|