bkper 4.31.3 → 5.1.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.
Files changed (148) hide show
  1. package/README.md +12 -5
  2. package/lib/agent/startup-maintenance.d.ts +7 -4
  3. package/lib/agent/startup-maintenance.d.ts.map +1 -1
  4. package/lib/agent/startup-maintenance.js +13 -29
  5. package/lib/agent/startup-maintenance.js.map +1 -1
  6. package/lib/cli.js +8 -4
  7. package/lib/cli.js.map +1 -1
  8. package/lib/commands/accounts/batch-create.d.ts +1 -1
  9. package/lib/commands/accounts/batch-create.d.ts.map +1 -1
  10. package/lib/commands/accounts/batch-create.js +3 -3
  11. package/lib/commands/accounts/batch-create.js.map +1 -1
  12. package/lib/commands/accounts/list.d.ts +2 -3
  13. package/lib/commands/accounts/list.d.ts.map +1 -1
  14. package/lib/commands/accounts/list.js +2 -12
  15. package/lib/commands/accounts/list.js.map +1 -1
  16. package/lib/commands/accounts/register.js +13 -13
  17. package/lib/commands/accounts/register.js.map +1 -1
  18. package/lib/commands/action.d.ts +2 -3
  19. package/lib/commands/action.d.ts.map +1 -1
  20. package/lib/commands/action.js +2 -3
  21. package/lib/commands/action.js.map +1 -1
  22. package/lib/commands/apps/list.d.ts +2 -3
  23. package/lib/commands/apps/list.d.ts.map +1 -1
  24. package/lib/commands/apps/list.js +2 -14
  25. package/lib/commands/apps/list.js.map +1 -1
  26. package/lib/commands/apps/register.js +10 -10
  27. package/lib/commands/apps/register.js.map +1 -1
  28. package/lib/commands/balances/list.d.ts +0 -2
  29. package/lib/commands/balances/list.d.ts.map +1 -1
  30. package/lib/commands/balances/list.js +9 -17
  31. package/lib/commands/balances/list.js.map +1 -1
  32. package/lib/commands/balances/register.d.ts.map +1 -1
  33. package/lib/commands/balances/register.js +3 -4
  34. package/lib/commands/balances/register.js.map +1 -1
  35. package/lib/commands/books/list.d.ts +2 -4
  36. package/lib/commands/books/list.d.ts.map +1 -1
  37. package/lib/commands/books/list.js +2 -30
  38. package/lib/commands/books/list.js.map +1 -1
  39. package/lib/commands/books/register.js +12 -12
  40. package/lib/commands/books/register.js.map +1 -1
  41. package/lib/commands/cli-helpers.d.ts +9 -4
  42. package/lib/commands/cli-helpers.d.ts.map +1 -1
  43. package/lib/commands/cli-helpers.js +18 -12
  44. package/lib/commands/cli-helpers.js.map +1 -1
  45. package/lib/commands/collections/list.d.ts +2 -3
  46. package/lib/commands/collections/list.d.ts.map +1 -1
  47. package/lib/commands/collections/list.js +2 -14
  48. package/lib/commands/collections/list.js.map +1 -1
  49. package/lib/commands/collections/register.d.ts.map +1 -1
  50. package/lib/commands/collections/register.js +15 -25
  51. package/lib/commands/collections/register.js.map +1 -1
  52. package/lib/commands/events/event-json.d.ts +13 -0
  53. package/lib/commands/events/event-json.d.ts.map +1 -0
  54. package/lib/commands/events/event-json.js +33 -0
  55. package/lib/commands/events/event-json.js.map +1 -0
  56. package/lib/commands/events/list.d.ts +4 -3
  57. package/lib/commands/events/list.d.ts.map +1 -1
  58. package/lib/commands/events/list.js +15 -66
  59. package/lib/commands/events/list.js.map +1 -1
  60. package/lib/commands/events/register.d.ts.map +1 -1
  61. package/lib/commands/events/register.js +7 -6
  62. package/lib/commands/events/register.js.map +1 -1
  63. package/lib/commands/files/list.d.ts +3 -2
  64. package/lib/commands/files/list.d.ts.map +1 -1
  65. package/lib/commands/files/list.js +13 -42
  66. package/lib/commands/files/list.js.map +1 -1
  67. package/lib/commands/files/register.d.ts.map +1 -1
  68. package/lib/commands/files/register.js +13 -10
  69. package/lib/commands/files/register.js.map +1 -1
  70. package/lib/commands/groups/list.d.ts +2 -3
  71. package/lib/commands/groups/list.d.ts.map +1 -1
  72. package/lib/commands/groups/list.js +2 -12
  73. package/lib/commands/groups/list.js.map +1 -1
  74. package/lib/commands/groups/register.js +12 -12
  75. package/lib/commands/groups/register.js.map +1 -1
  76. package/lib/commands/transactions/batch-create.d.ts +1 -1
  77. package/lib/commands/transactions/batch-create.d.ts.map +1 -1
  78. package/lib/commands/transactions/batch-create.js +4 -3
  79. package/lib/commands/transactions/batch-create.js.map +1 -1
  80. package/lib/commands/transactions/batch-update.d.ts +1 -1
  81. package/lib/commands/transactions/batch-update.d.ts.map +1 -1
  82. package/lib/commands/transactions/batch-update.js +4 -3
  83. package/lib/commands/transactions/batch-update.js.map +1 -1
  84. package/lib/commands/transactions/list.d.ts +4 -7
  85. package/lib/commands/transactions/list.d.ts.map +1 -1
  86. package/lib/commands/transactions/list.js +15 -32
  87. package/lib/commands/transactions/list.js.map +1 -1
  88. package/lib/commands/transactions/register.d.ts +1 -1
  89. package/lib/commands/transactions/register.d.ts.map +1 -1
  90. package/lib/commands/transactions/register.js +27 -26
  91. package/lib/commands/transactions/register.js.map +1 -1
  92. package/lib/commands/transactions/transaction-json.d.ts +23 -0
  93. package/lib/commands/transactions/transaction-json.d.ts.map +1 -0
  94. package/lib/commands/transactions/transaction-json.js +56 -0
  95. package/lib/commands/transactions/transaction-json.js.map +1 -0
  96. package/lib/commands/upgrade.d.ts.map +1 -1
  97. package/lib/commands/upgrade.js +2 -3
  98. package/lib/commands/upgrade.js.map +1 -1
  99. package/lib/docs/apps/ai.md +2 -2
  100. package/lib/docs/apps/event-handlers.md +12 -0
  101. package/lib/docs/cli/app-management.md +1 -1
  102. package/lib/docs/cli/data-management.md +56 -54
  103. package/lib/docs/index.md +1 -1
  104. package/lib/docs/sdk/bkper-api-types.md +4 -2
  105. package/lib/docs/sdk/bkper-js.md +1 -0
  106. package/lib/docs-compliance/live-readme.d.ts.map +1 -1
  107. package/lib/docs-compliance/live-readme.js +0 -3
  108. package/lib/docs-compliance/live-readme.js.map +1 -1
  109. package/lib/docs-compliance/rules.d.ts.map +1 -1
  110. package/lib/docs-compliance/rules.js +9 -0
  111. package/lib/docs-compliance/rules.js.map +1 -1
  112. package/lib/render/index.d.ts +2 -4
  113. package/lib/render/index.d.ts.map +1 -1
  114. package/lib/render/index.js +1 -3
  115. package/lib/render/index.js.map +1 -1
  116. package/lib/render/output.d.ts +42 -22
  117. package/lib/render/output.d.ts.map +1 -1
  118. package/lib/render/output.js +62 -42
  119. package/lib/render/output.js.map +1 -1
  120. package/lib/upgrade/index.d.ts +5 -4
  121. package/lib/upgrade/index.d.ts.map +1 -1
  122. package/lib/upgrade/index.js +3 -2
  123. package/lib/upgrade/index.js.map +1 -1
  124. package/lib/upgrade/installation.d.ts +54 -20
  125. package/lib/upgrade/installation.d.ts.map +1 -1
  126. package/lib/upgrade/installation.js +222 -122
  127. package/lib/upgrade/installation.js.map +1 -1
  128. package/lib/upgrade/update-check.d.ts +69 -0
  129. package/lib/upgrade/update-check.d.ts.map +1 -0
  130. package/lib/upgrade/update-check.js +253 -0
  131. package/lib/upgrade/update-check.js.map +1 -0
  132. package/lib/upgrade/update-worker.d.ts +2 -0
  133. package/lib/upgrade/update-worker.d.ts.map +1 -0
  134. package/lib/upgrade/update-worker.js +6 -0
  135. package/lib/upgrade/update-worker.js.map +1 -0
  136. package/lib/upgrade/upgrade.d.ts +11 -28
  137. package/lib/upgrade/upgrade.d.ts.map +1 -1
  138. package/lib/upgrade/upgrade.js +49 -96
  139. package/lib/upgrade/upgrade.js.map +1 -1
  140. package/package.json +1 -1
  141. package/lib/render/csv-formatter.d.ts +0 -15
  142. package/lib/render/csv-formatter.d.ts.map +0 -1
  143. package/lib/render/csv-formatter.js +0 -37
  144. package/lib/render/csv-formatter.js.map +0 -1
  145. package/lib/render/table-formatter.d.ts +0 -34
  146. package/lib/render/table-formatter.d.ts.map +0 -1
  147. package/lib/render/table-formatter.js +0 -239
  148. package/lib/render/table-formatter.js.map +0 -1
@@ -1,34 +0,0 @@
1
- /**
2
- * Formats a 2D matrix (row 0 = headers) into an aligned, human-readable table string.
3
- *
4
- * Output format:
5
- * Name Type Parent
6
- * ____________________________
7
- * Revenue INCOMING
8
- * Expenses OUTGOING
9
- *
10
- * @param matrix - 2D array where row 0 is headers and rows 1+ are data
11
- * @returns Formatted table string
12
- */
13
- export declare function formatTable(matrix: unknown[][]): string;
14
- /**
15
- * Formats a record as vertically aligned key-value pairs with recursive
16
- * indented rendering for nested objects and arrays.
17
- *
18
- * Output format:
19
- * name: Checking
20
- * type: ASSET
21
- * collection:
22
- * id: col-123
23
- * name: My Collection
24
- * properties:
25
- * key: value
26
- * tags:
27
- * - tag1
28
- * - tag2
29
- *
30
- * @param item - Record to format
31
- * @returns Formatted key-value string
32
- */
33
- export declare function formatItem(item: Record<string, unknown>): string;
34
- //# sourceMappingURL=table-formatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-formatter.d.ts","sourceRoot":"","sources":["../../src/render/table-formatter.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAkEvD;AAoID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAUhE"}
@@ -1,239 +0,0 @@
1
- /**
2
- * Maximum width for any single cell value.
3
- * Values exceeding this width are truncated with an ellipsis (…).
4
- * Header cells and ID columns are never truncated.
5
- */
6
- const MAX_CELL_WIDTH = 40;
7
- /**
8
- * Checks whether a column header indicates an ID column.
9
- * ID columns should never be truncated so users can copy-paste values into subsequent commands.
10
- */
11
- function isIdColumn(header) {
12
- return header === 'ID' || header.endsWith(' Id') || header.endsWith('Id');
13
- }
14
- /**
15
- * Truncates a string to maxWidth, appending '…' if it exceeds the limit.
16
- */
17
- function truncateCell(value, maxWidth) {
18
- if (value.length <= maxWidth) {
19
- return value;
20
- }
21
- return value.slice(0, maxWidth - 1) + '…';
22
- }
23
- /**
24
- * Formats a 2D matrix (row 0 = headers) into an aligned, human-readable table string.
25
- *
26
- * Output format:
27
- * Name Type Parent
28
- * ____________________________
29
- * Revenue INCOMING
30
- * Expenses OUTGOING
31
- *
32
- * @param matrix - 2D array where row 0 is headers and rows 1+ are data
33
- * @returns Formatted table string
34
- */
35
- export function formatTable(matrix) {
36
- if (!matrix || matrix.length === 0) {
37
- return '';
38
- }
39
- const COL_GAP = ' ';
40
- // Determine which columns are ID columns (never truncated)
41
- const headerRow = matrix[0];
42
- const noTruncateCols = new Set();
43
- for (let i = 0; i < headerRow.length; i++) {
44
- const header = headerRow[i] == null ? '' : String(headerRow[i]);
45
- if (isIdColumn(header)) {
46
- noTruncateCols.add(i);
47
- }
48
- }
49
- // Convert all cells to strings
50
- const rows = matrix.map((row, rowIndex) => row.map((cell, colIndex) => {
51
- const str = cell == null ? '' : String(cell);
52
- // Don't truncate header row or ID columns
53
- return rowIndex === 0 || noTruncateCols.has(colIndex)
54
- ? str
55
- : truncateCell(str, MAX_CELL_WIDTH);
56
- }));
57
- const headers = rows[0];
58
- const dataRows = rows.slice(1);
59
- const colCount = headers.length;
60
- // Calculate max width per column
61
- const colWidths = new Array(colCount).fill(0);
62
- for (const row of rows) {
63
- for (let i = 0; i < colCount; i++) {
64
- const cellLen = (row[i] || '').length;
65
- if (cellLen > colWidths[i]) {
66
- colWidths[i] = cellLen;
67
- }
68
- }
69
- }
70
- // Build a row string
71
- const formatRow = (row) => {
72
- return row
73
- .map((cell, i) => {
74
- // Don't pad the last column
75
- if (i === colCount - 1) {
76
- return cell;
77
- }
78
- return cell.padEnd(colWidths[i]);
79
- })
80
- .join(COL_GAP)
81
- .trimEnd();
82
- };
83
- const headerLine = formatRow(headers);
84
- const dividerLine = '_'.repeat(headerLine.length);
85
- const lines = [headerLine, dividerLine];
86
- for (const row of dataRows) {
87
- lines.push(formatRow(row));
88
- }
89
- return lines.join('\n');
90
- }
91
- /**
92
- * Checks whether a value is empty (null, undefined, empty array, or empty object).
93
- */
94
- function isEmpty(value) {
95
- if (value == null)
96
- return true;
97
- if (Array.isArray(value) && value.length === 0)
98
- return true;
99
- if (typeof value === 'object' &&
100
- !Array.isArray(value) &&
101
- Object.keys(value).length === 0)
102
- return true;
103
- return false;
104
- }
105
- /**
106
- * Checks whether a value is a primitive (not an object or array, or is null).
107
- */
108
- function isPrimitive(value) {
109
- return value === null || typeof value !== 'object';
110
- }
111
- /**
112
- * Renders key-value pairs of an object as aligned lines at the given indent level.
113
- *
114
- * - Primitive values are rendered inline: `key: value`
115
- * - Nested objects get `key:` on its own line, then recursively indented content
116
- * - Arrays of primitives get `key:` then each item with `- ` prefix
117
- * - Arrays of objects get `key:` then each element as `- firstKey: value` block
118
- *
119
- * @param entries - Filtered [key, value] pairs to render
120
- * @param indent - Current indentation string (e.g., '', ' ', ' ')
121
- * @returns Array of formatted lines
122
- */
123
- function formatEntries(entries, indent) {
124
- const lines = [];
125
- // Find max key length for alignment at this indent level
126
- const maxKeyLen = Math.max(...entries.map(([key]) => key.length));
127
- for (const [key, value] of entries) {
128
- if (isPrimitive(value)) {
129
- const label = `${key}:`.padEnd(maxKeyLen + 2);
130
- lines.push(`${indent}${label} ${String(value)}`);
131
- }
132
- else if (Array.isArray(value)) {
133
- lines.push(`${indent}${key}:`);
134
- const childIndent = indent + ' ';
135
- for (const element of value) {
136
- if (isPrimitive(element)) {
137
- lines.push(`${childIndent}- ${String(element)}`);
138
- }
139
- else {
140
- // Object element in array — render with `- ` prefix on first field
141
- const objEntries = Object.entries(element).filter(([, v]) => !isEmpty(v));
142
- if (objEntries.length === 0)
143
- continue;
144
- // First field gets `- ` prefix
145
- const [firstKey, firstValue] = objEntries[0];
146
- const remainingEntries = objEntries.slice(1);
147
- // Align keys within the array element block
148
- const elementMaxKeyLen = Math.max(...objEntries.map(([k]) => k.length));
149
- const firstLabel = `${firstKey}:`.padEnd(elementMaxKeyLen + 2);
150
- if (isPrimitive(firstValue)) {
151
- lines.push(`${childIndent}- ${firstLabel} ${String(firstValue)}`);
152
- }
153
- else {
154
- lines.push(`${childIndent}- ${firstKey}:`);
155
- // Indent nested value under the `- ` block
156
- const nestedLines = formatNestedValue(firstValue, childIndent + ' ');
157
- lines.push(...nestedLines);
158
- }
159
- // Remaining fields aligned under the `- ` prefix (indented by 2 more to match)
160
- const fieldIndent = childIndent + ' ';
161
- for (const [rKey, rValue] of remainingEntries) {
162
- if (isEmpty(rValue))
163
- continue;
164
- if (isPrimitive(rValue)) {
165
- const rLabel = `${rKey}:`.padEnd(elementMaxKeyLen + 2);
166
- lines.push(`${fieldIndent}${rLabel} ${String(rValue)}`);
167
- }
168
- else {
169
- lines.push(`${fieldIndent}${rKey}:`);
170
- const nestedLines = formatNestedValue(rValue, fieldIndent + ' ');
171
- lines.push(...nestedLines);
172
- }
173
- }
174
- }
175
- }
176
- }
177
- else {
178
- // Nested object
179
- lines.push(`${indent}${key}:`);
180
- const nestedLines = formatNestedValue(value, indent + ' ');
181
- lines.push(...nestedLines);
182
- }
183
- }
184
- return lines;
185
- }
186
- /**
187
- * Renders a nested value (object or array) at the given indent level.
188
- */
189
- function formatNestedValue(value, indent) {
190
- if (Array.isArray(value)) {
191
- const lines = [];
192
- for (const element of value) {
193
- if (isPrimitive(element)) {
194
- lines.push(`${indent}- ${String(element)}`);
195
- }
196
- else {
197
- const objEntries = Object.entries(element).filter(([, v]) => !isEmpty(v));
198
- const nestedLines = formatEntries(objEntries, indent + ' ');
199
- if (nestedLines.length > 0) {
200
- // Replace leading spaces of first line with `- ` prefix
201
- nestedLines[0] = `${indent}- ${nestedLines[0].trimStart()}`;
202
- lines.push(...nestedLines);
203
- }
204
- }
205
- }
206
- return lines;
207
- }
208
- const objEntries = Object.entries(value).filter(([, v]) => !isEmpty(v));
209
- return formatEntries(objEntries, indent);
210
- }
211
- /**
212
- * Formats a record as vertically aligned key-value pairs with recursive
213
- * indented rendering for nested objects and arrays.
214
- *
215
- * Output format:
216
- * name: Checking
217
- * type: ASSET
218
- * collection:
219
- * id: col-123
220
- * name: My Collection
221
- * properties:
222
- * key: value
223
- * tags:
224
- * - tag1
225
- * - tag2
226
- *
227
- * @param item - Record to format
228
- * @returns Formatted key-value string
229
- */
230
- export function formatItem(item) {
231
- // Filter out null/undefined and empty values
232
- const entries = Object.entries(item).filter(([, value]) => !isEmpty(value));
233
- if (entries.length === 0) {
234
- return '';
235
- }
236
- const lines = formatEntries(entries, '');
237
- return lines.join('\n');
238
- }
239
- //# sourceMappingURL=table-formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-formatter.js","sourceRoot":"","sources":["../../src/render/table-formatter.ts"],"names":[],"mappings":"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"}