arcli 1.1.0 → 1.3.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 (190) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +9 -3
  3. package/dist/cli/commands/billing.command.interactive-preview.d.ts +1 -0
  4. package/dist/cli/commands/billing.command.interactive-preview.js +5 -1
  5. package/dist/cli/commands/billing.command.interactive-preview.js.map +1 -1
  6. package/dist/cli/commands/billing.command.options.js +17 -1
  7. package/dist/cli/commands/billing.command.options.js.map +1 -1
  8. package/dist/cli/commands/billing.command.parser.d.ts +3 -0
  9. package/dist/cli/commands/billing.command.parser.js +36 -2
  10. package/dist/cli/commands/billing.command.parser.js.map +1 -1
  11. package/dist/cli/commands/billing.command.shared.js +26 -5
  12. package/dist/cli/commands/billing.command.shared.js.map +1 -1
  13. package/dist/cli/commands/config.command.d.ts +5 -0
  14. package/dist/cli/commands/config.command.js +3 -3
  15. package/dist/cli/commands/config.command.js.map +1 -1
  16. package/dist/cli/commands/fce-obligation.command.d.ts +2 -0
  17. package/dist/cli/commands/fce-obligation.command.js +51 -0
  18. package/dist/cli/commands/fce-obligation.command.js.map +1 -0
  19. package/dist/cli/commands/interactive.command.d.ts +3 -0
  20. package/dist/cli/commands/interactive.command.js +22 -0
  21. package/dist/cli/commands/interactive.command.js.map +1 -0
  22. package/dist/cli/commands/storybook.command.js +3 -2
  23. package/dist/cli/commands/storybook.command.js.map +1 -1
  24. package/dist/cli/help.d.ts +1 -0
  25. package/dist/cli/help.js +65 -3
  26. package/dist/cli/help.js.map +1 -1
  27. package/dist/cli/index.js +3 -1
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/interactive/history.flow.d.ts +2 -0
  30. package/dist/cli/interactive/history.flow.js +31 -0
  31. package/dist/cli/interactive/history.flow.js.map +1 -0
  32. package/dist/cli/interactive/interactive-mode.d.ts +3 -0
  33. package/dist/cli/interactive/interactive-mode.js +92 -0
  34. package/dist/cli/interactive/interactive-mode.js.map +1 -0
  35. package/dist/cli/interactive/invoice.flow.d.ts +2 -0
  36. package/dist/cli/interactive/invoice.flow.js +54 -0
  37. package/dist/cli/interactive/invoice.flow.js.map +1 -0
  38. package/dist/cli/interactive/note.flow.d.ts +2 -0
  39. package/dist/cli/interactive/note.flow.js +99 -0
  40. package/dist/cli/interactive/note.flow.js.map +1 -0
  41. package/dist/cli/interactive/prompts.d.ts +13 -0
  42. package/dist/cli/interactive/prompts.js +24 -0
  43. package/dist/cli/interactive/prompts.js.map +1 -0
  44. package/dist/cli/interactive/session.d.ts +22 -0
  45. package/dist/cli/interactive/session.js +86 -0
  46. package/dist/cli/interactive/session.js.map +1 -0
  47. package/dist/cli/interactive/validators.d.ts +5 -0
  48. package/dist/cli/interactive/validators.js +17 -0
  49. package/dist/cli/interactive/validators.js.map +1 -0
  50. package/dist/cli/interactive/voucher-format.d.ts +4 -0
  51. package/dist/cli/interactive/voucher-format.js +28 -0
  52. package/dist/cli/interactive/voucher-format.js.map +1 -0
  53. package/dist/cli/program.js +4 -0
  54. package/dist/cli/program.js.map +1 -1
  55. package/dist/cli/spinner.d.ts +8 -0
  56. package/dist/cli/spinner.js +14 -0
  57. package/dist/cli/spinner.js.map +1 -0
  58. package/dist/cli/version.d.ts +1 -1
  59. package/dist/cli/version.js +1 -1
  60. package/dist/lib/dates/arca-date.d.ts +4 -0
  61. package/dist/lib/dates/arca-date.js +18 -1
  62. package/dist/lib/dates/arca-date.js.map +1 -1
  63. package/dist/modules/billing/billing.amounts.d.ts +12 -2
  64. package/dist/modules/billing/billing.amounts.js +52 -10
  65. package/dist/modules/billing/billing.amounts.js.map +1 -1
  66. package/dist/modules/billing/billing.associated-period.d.ts +8 -0
  67. package/dist/modules/billing/billing.associated-period.js +40 -0
  68. package/dist/modules/billing/billing.associated-period.js.map +1 -0
  69. package/dist/modules/billing/billing.associated-vouchers.d.ts +2 -0
  70. package/dist/modules/billing/billing.associated-vouchers.js +29 -7
  71. package/dist/modules/billing/billing.associated-vouchers.js.map +1 -1
  72. package/dist/modules/billing/billing.currency.d.ts +18 -0
  73. package/dist/modules/billing/billing.currency.js +53 -0
  74. package/dist/modules/billing/billing.currency.js.map +1 -0
  75. package/dist/modules/billing/billing.date-range.d.ts +5 -4
  76. package/dist/modules/billing/billing.date-range.js +34 -27
  77. package/dist/modules/billing/billing.date-range.js.map +1 -1
  78. package/dist/modules/billing/billing.display.js +30 -4
  79. package/dist/modules/billing/billing.display.js.map +1 -1
  80. package/dist/modules/billing/billing.fce.d.ts +21 -0
  81. package/dist/modules/billing/billing.fce.js +59 -0
  82. package/dist/modules/billing/billing.fce.js.map +1 -0
  83. package/dist/modules/billing/billing.iva-receptor.d.ts +8 -0
  84. package/dist/modules/billing/billing.iva-receptor.js +61 -0
  85. package/dist/modules/billing/billing.iva-receptor.js.map +1 -0
  86. package/dist/modules/billing/billing.labels.js +1 -1
  87. package/dist/modules/billing/billing.mappers.js +2 -1
  88. package/dist/modules/billing/billing.mappers.js.map +1 -1
  89. package/dist/modules/billing/billing.schemas.d.ts +40 -7
  90. package/dist/modules/billing/billing.schemas.js +38 -1
  91. package/dist/modules/billing/billing.schemas.js.map +1 -1
  92. package/dist/modules/billing/billing.serialize.js +2 -0
  93. package/dist/modules/billing/billing.serialize.js.map +1 -1
  94. package/dist/modules/billing/billing.service.d.ts +12 -0
  95. package/dist/modules/billing/billing.service.js +68 -10
  96. package/dist/modules/billing/billing.service.js.map +1 -1
  97. package/dist/modules/billing/billing.text.js +20 -8
  98. package/dist/modules/billing/billing.text.js.map +1 -1
  99. package/dist/modules/billing/billing.types.internal.d.ts +2 -0
  100. package/dist/modules/billing/billing.validation.d.ts +4 -2
  101. package/dist/modules/billing/billing.validation.js +36 -1
  102. package/dist/modules/billing/billing.validation.js.map +1 -1
  103. package/dist/modules/config/config-value-parser.d.ts +1 -1
  104. package/dist/modules/config/config-value-parser.js +29 -1
  105. package/dist/modules/config/config-value-parser.js.map +1 -1
  106. package/dist/modules/config/config.presenter.js +10 -2
  107. package/dist/modules/config/config.presenter.js.map +1 -1
  108. package/dist/modules/config/config.schemas.d.ts +26 -3
  109. package/dist/modules/config/config.schemas.js +19 -0
  110. package/dist/modules/config/config.schemas.js.map +1 -1
  111. package/dist/modules/config/config.service.js +4 -0
  112. package/dist/modules/config/config.service.js.map +1 -1
  113. package/dist/modules/examples/examples.d.ts +1 -1
  114. package/dist/modules/examples/examples.js +62 -38
  115. package/dist/modules/examples/examples.js.map +1 -1
  116. package/dist/modules/fce/fce-obligation.d.ts +20 -0
  117. package/dist/modules/fce/fce-obligation.js +33 -0
  118. package/dist/modules/fce/fce-obligation.js.map +1 -0
  119. package/dist/modules/fce/fce-obligation.presenter.d.ts +9 -0
  120. package/dist/modules/fce/fce-obligation.presenter.js +32 -0
  121. package/dist/modules/fce/fce-obligation.presenter.js.map +1 -0
  122. package/dist/modules/interactive/amount-input.d.ts +6 -0
  123. package/dist/modules/interactive/amount-input.js +29 -0
  124. package/dist/modules/interactive/amount-input.js.map +1 -0
  125. package/dist/modules/interactive/choices.d.ts +13 -0
  126. package/dist/modules/interactive/choices.js +56 -0
  127. package/dist/modules/interactive/choices.js.map +1 -0
  128. package/dist/modules/interactive/equivalent-command.d.ts +8 -0
  129. package/dist/modules/interactive/equivalent-command.js +85 -0
  130. package/dist/modules/interactive/equivalent-command.js.map +1 -0
  131. package/dist/modules/interactive/voucher-history.d.ts +25 -0
  132. package/dist/modules/interactive/voucher-history.js +42 -0
  133. package/dist/modules/interactive/voucher-history.js.map +1 -0
  134. package/dist/modules/storybook/showcase.d.ts +1 -1
  135. package/dist/modules/storybook/showcase.js +50 -6
  136. package/dist/modules/storybook/showcase.js.map +1 -1
  137. package/dist/modules/update-check/update-check.presenter.js +1 -1
  138. package/dist/modules/update-check/update-check.presenter.js.map +1 -1
  139. package/dist/services/arca/arca-billing.gateway.d.ts +1 -0
  140. package/dist/services/arca/arca-billing.gateway.js +12 -0
  141. package/dist/services/arca/arca-billing.gateway.js.map +1 -1
  142. package/dist/services/arca/arca-fce-obligation.gateway.d.ts +7 -0
  143. package/dist/services/arca/arca-fce-obligation.gateway.js +36 -0
  144. package/dist/services/arca/arca-fce-obligation.gateway.js.map +1 -0
  145. package/dist/services/arca/arca-voucher-history.gateway.d.ts +8 -0
  146. package/dist/services/arca/arca-voucher-history.gateway.js +28 -0
  147. package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
  148. package/dist/ui/components/contentPanel.d.ts +2 -2
  149. package/dist/ui/components/contentPanel.js +2 -1
  150. package/dist/ui/components/contentPanel.js.map +1 -1
  151. package/dist/ui/components/errorPanel.js +3 -3
  152. package/dist/ui/components/errorPanel.js.map +1 -1
  153. package/dist/ui/components/index.d.ts +3 -0
  154. package/dist/ui/components/index.js +3 -0
  155. package/dist/ui/components/index.js.map +1 -1
  156. package/dist/ui/components/keyValuePanel.d.ts +2 -2
  157. package/dist/ui/components/keyValuePanel.js +2 -1
  158. package/dist/ui/components/keyValuePanel.js.map +1 -1
  159. package/dist/ui/components/rawPanel.js +1 -1
  160. package/dist/ui/components/rawPanel.js.map +1 -1
  161. package/dist/ui/components/sectionHeading.d.ts +3 -0
  162. package/dist/ui/components/sectionHeading.js +13 -0
  163. package/dist/ui/components/sectionHeading.js.map +1 -0
  164. package/dist/ui/components/statusBar.d.ts +6 -0
  165. package/dist/ui/components/statusBar.js +24 -0
  166. package/dist/ui/components/statusBar.js.map +1 -0
  167. package/dist/ui/components/statusPanel.d.ts +2 -2
  168. package/dist/ui/components/statusPanel.js +2 -1
  169. package/dist/ui/components/statusPanel.js.map +1 -1
  170. package/dist/ui/components/testingBanner.d.ts +2 -0
  171. package/dist/ui/components/testingBanner.js +6 -0
  172. package/dist/ui/components/testingBanner.js.map +1 -0
  173. package/dist/ui/presenters/errors.zod-presenter.js +22 -1
  174. package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
  175. package/dist/ui/primitives/renderLogo.js +5 -0
  176. package/dist/ui/primitives/renderLogo.js.map +1 -1
  177. package/dist/ui/primitives/renderPanel.d.ts +3 -1
  178. package/dist/ui/primitives/renderPanel.js +68 -21
  179. package/dist/ui/primitives/renderPanel.js.map +1 -1
  180. package/dist/ui/primitives/terminalWidth.d.ts +4 -0
  181. package/dist/ui/primitives/terminalWidth.js +11 -0
  182. package/dist/ui/primitives/terminalWidth.js.map +1 -0
  183. package/dist/ui/primitives/text.d.ts +5 -0
  184. package/dist/ui/primitives/text.js +91 -29
  185. package/dist/ui/primitives/text.js.map +1 -1
  186. package/dist/ui/theme/theme.d.ts +45 -4
  187. package/dist/ui/theme/theme.js +183 -5
  188. package/dist/ui/theme/theme.js.map +1 -1
  189. package/llms.txt +17 -5
  190. package/package.json +17 -14
@@ -5,6 +5,7 @@ const BOLD = '\u001B[1m';
5
5
  // coloreado que dibuja boxen.
6
6
  const BOLD_OFF = '\u001B[22m';
7
7
  const COLOR_OFF = '\u001B[39m';
8
+ const DIM = '\u001B[2m';
8
9
  export function shouldUseColor(target = 'stdout') {
9
10
  if (process.env.NO_COLOR) {
10
11
  return false;
@@ -32,7 +33,10 @@ export function colorize(value, color, target = 'stdout') {
32
33
  if (!shouldUseColor(target)) {
33
34
  return value;
34
35
  }
35
- return wrapLines(value, resolveTextColor(color), COLOR_OFF);
36
+ const open = resolveTextColor(color);
37
+ // El atenuado (muted) no se apaga con COLOR_OFF: si se cerrara asi quedaria prendido y
38
+ // apagaria todo lo que se imprime despues. Se cierra igual que la negrita.
39
+ return wrapLines(value, open, open === DIM ? BOLD_OFF : COLOR_OFF);
36
40
  }
37
41
  export function bold(value, target = 'stdout') {
38
42
  if (!shouldUseColor(target)) {
@@ -90,6 +94,74 @@ export function wrapPlainText(value, width) {
90
94
  return wrapped.length > 0 ? wrapped : [''];
91
95
  });
92
96
  }
97
+ // Reparte palabras en lineas de `width` columnas visibles. La primera linea arranca con `firstPrefix`
98
+ // y las siguientes con `continuationPrefix`; las palabras mas largas que el espacio se cortan.
99
+ function wrapWords(words, firstPrefix, continuationPrefix, width) {
100
+ const availableWidth = Math.max(1, width - stripAnsi(continuationPrefix).length);
101
+ const wrapped = [];
102
+ let currentLine = firstPrefix;
103
+ let currentHasWords = false;
104
+ for (const word of words) {
105
+ const candidate = currentHasWords ? `${currentLine} ${word}` : `${currentLine}${word}`;
106
+ if (stripAnsi(candidate).length <= width) {
107
+ currentLine = candidate;
108
+ currentHasWords = true;
109
+ continue;
110
+ }
111
+ if (currentHasWords) {
112
+ wrapped.push(currentLine);
113
+ }
114
+ let remaining = word;
115
+ while (stripAnsi(remaining).length > availableWidth) {
116
+ wrapped.push(`${continuationPrefix}${remaining.slice(0, availableWidth)}`);
117
+ remaining = remaining.slice(availableWidth);
118
+ }
119
+ currentLine = `${continuationPrefix}${remaining}`;
120
+ currentHasWords = true;
121
+ }
122
+ if (currentHasWords) {
123
+ wrapped.push(currentLine);
124
+ }
125
+ return wrapped;
126
+ }
127
+ // eslint-disable-next-line no-control-regex
128
+ const ANSI_SEQUENCE = /^\u001B\[[0-9;]*m/;
129
+ // Corta `line` en la columna visible `column`, sin partir secuencias ANSI: los codigos que caen
130
+ // antes de esa columna (por ejemplo el cierre de una etiqueta en negrita) quedan en la primera parte.
131
+ function splitAtVisibleColumn(line, column) {
132
+ let visible = 0;
133
+ let index = 0;
134
+ while (index < line.length && visible < column) {
135
+ const ansi = ANSI_SEQUENCE.exec(line.slice(index));
136
+ if (ansi) {
137
+ index += ansi[0].length;
138
+ continue;
139
+ }
140
+ visible += 1;
141
+ index += 1;
142
+ }
143
+ // Los codigos ANSI pegados al corte tambien van con la primera parte.
144
+ for (let ansi = ANSI_SEQUENCE.exec(line.slice(index)); ansi; ansi = ANSI_SEQUENCE.exec(line.slice(index))) {
145
+ index += ansi[0].length;
146
+ }
147
+ return [line.slice(0, index), line.slice(index)];
148
+ }
149
+ // Saca los espacios del final sin perder los codigos ANSI que haya entre ellos (el cierre de una negrita).
150
+ function trimTrailingSpaces(value) {
151
+ // eslint-disable-next-line no-control-regex
152
+ const codes = value.match(/(?:\u001B\[[0-9;]*m)+\s*$/)?.[0]?.replace(/\s/g, '') ?? '';
153
+ // eslint-disable-next-line no-control-regex
154
+ return `${value.replace(/(?:\s|\u001B\[[0-9;]*m)+$/, '')}${codes}`;
155
+ }
156
+ // Filas "etiqueta + 2 o mas espacios + valor", como las de las tablas de los paneles.
157
+ const LABEL_VALUE_LINE = /^(\s*\S(?:.*?\S)?\s{2,})(\S.*)$/;
158
+ // Espacio minimo para el valor; con menos, conviene partir la linea entera.
159
+ const MIN_VALUE_COLUMN_WIDTH = 12;
160
+ /**
161
+ * Parte lineas que no entran en `width` respetando su sangria.
162
+ * Si la linea es una fila etiqueta/valor, el valor sigue debajo de su propia columna en vez de
163
+ * pegarse a la etiqueta, asi la tabla no se desarma en terminales angostas.
164
+ */
93
165
  export function wrapIndentedPlainText(value, width) {
94
166
  if (width <= 0) {
95
167
  return [value];
@@ -98,39 +170,29 @@ export function wrapIndentedPlainText(value, width) {
98
170
  if (stripAnsi(line).length <= width) {
99
171
  return [line];
100
172
  }
173
+ // La columna se busca sobre el texto visible: con ANSI (etiquetas en negrita) la regex cortaria mal.
174
+ const columnMatch = LABEL_VALUE_LINE.exec(stripAnsi(line));
175
+ const prefixWidth = columnMatch?.[1]?.length ?? 0;
176
+ if (columnMatch) {
177
+ const [prefix, rest] = splitAtVisibleColumn(line, prefixWidth);
178
+ const values = rest.split(/\s+/);
179
+ if (width - prefixWidth >= MIN_VALUE_COLUMN_WIDTH) {
180
+ return wrapWords(values, prefix, ' '.repeat(prefixWidth), width);
181
+ }
182
+ // Sin lugar para la columna: etiqueta en una linea y el valor debajo, con sangria.
183
+ const indent = columnMatch[1]?.match(/^\s*/)?.[0] ?? '';
184
+ const valueIndent = `${indent} `;
185
+ return [
186
+ ...wrapWords([trimTrailingSpaces(prefix)], '', indent, width),
187
+ ...wrapWords(values, valueIndent, valueIndent, width),
188
+ ];
189
+ }
101
190
  const indent = line.match(/^\s*/)?.[0] ?? '';
102
191
  const content = line.slice(indent.length).trimStart();
103
- const continuationIndent = indent;
104
- const availableWidth = Math.max(1, width - stripAnsi(continuationIndent).length);
105
192
  if (!content) {
106
193
  return [line];
107
194
  }
108
- const words = content.split(/\s+/);
109
- const wrapped = [];
110
- let currentLine = indent;
111
- for (const word of words) {
112
- const candidate = currentLine.trim().length > 0 ? `${currentLine} ${word}` : `${indent}${word}`;
113
- if (stripAnsi(candidate).length <= width) {
114
- currentLine = candidate;
115
- continue;
116
- }
117
- if (currentLine.trim().length > 0) {
118
- wrapped.push(currentLine);
119
- }
120
- if (stripAnsi(word).length <= availableWidth) {
121
- currentLine = `${continuationIndent}${word}`;
122
- continue;
123
- }
124
- let remaining = word;
125
- while (stripAnsi(remaining).length > availableWidth) {
126
- wrapped.push(`${continuationIndent}${remaining.slice(0, availableWidth)}`);
127
- remaining = remaining.slice(availableWidth);
128
- }
129
- currentLine = `${continuationIndent}${remaining}`;
130
- }
131
- if (currentLine.trim().length > 0) {
132
- wrapped.push(currentLine);
133
- }
195
+ const wrapped = wrapWords(content.split(/\s+/), indent, indent, width);
134
196
  return wrapped.length > 0 ? wrapped : [line];
135
197
  });
136
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui/primitives/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui/primitives/text.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,40 @@
1
- import type { Options as BoxenOptions, Spacing as BoxenSpacing } from 'boxen';
2
- export type UiBorderType = 'arrow' | 'common' | 'debug' | 'note';
3
- export type UiColorToken = 'danger' | 'debug' | 'info' | 'muted' | 'neutral' | 'success' | 'warning';
1
+ import type { Spacing as BoxenSpacing } from 'boxen';
2
+ /**
3
+ * Tipo de borde segun lo que se muestra:
4
+ * - common: paneles de contenido (configuracion, observaciones, sugerencias, avisos FCE)
5
+ * - ticket: comprobante, como common pero con la linea de corte punteada antes del estado
6
+ * - error: errores del CLI o de ARCA (redondeado con franja gruesa a la izquierda)
7
+ * - attention: observaciones y avisos (como error, con la franja a trazos)
8
+ * - tip: sugerencias (como error, con la franja fina punteada)
9
+ * - sheet: fichas de consulta, como configuracion o regimen FCE (titulo a la izquierda)
10
+ * - checklist: revision de configuracion (doble lateral, veredicto en el pie)
11
+ * - listing: listados en tabla, como los ultimos comprobantes (solo reglas arriba y abajo)
12
+ * - note: avisos simples de una linea (solo esquinas)
13
+ * - warning: banner del entorno de testing
14
+ * - info: aviso de nueva version
15
+ * - data: JSON y respuestas crudas
16
+ * - command: comandos para copiar (solo barra a la izquierda, sin borde derecho)
17
+ * - debug: storybook
18
+ */
19
+ export type UiBorderType = 'attention' | 'checklist' | 'command' | 'common' | 'data' | 'debug' | 'error' | 'info' | 'listing' | 'note' | 'sheet' | 'ticket' | 'tip' | 'warning';
20
+ export interface UiBoxBorder {
21
+ readonly bottom: string;
22
+ readonly bottomLeft: string;
23
+ readonly bottomRight: string;
24
+ readonly left: string;
25
+ readonly right: string;
26
+ readonly top: string;
27
+ readonly topLeft: string;
28
+ readonly topRight: string;
29
+ }
30
+ export interface UiBorderStyle {
31
+ readonly box: UiBoxBorder;
32
+ /** Linea divisoria unida al borde: [izquierda, relleno, derecha]. Sin junction, el divisor va por adentro. */
33
+ readonly junction?: readonly [left: string, fill: string, right: string];
34
+ /** Alineacion del titulo sobre el borde; por defecto, centrado. */
35
+ readonly titleAlignment?: 'center' | 'left';
36
+ }
37
+ export type UiColorToken = 'danger' | 'debug' | 'info' | 'muted' | 'neutral' | 'subtle' | 'success' | 'warning';
4
38
  export type UiWidthPreset = 'compact' | 'standard' | 'wide';
5
39
  export interface UiWidthRange {
6
40
  readonly max: number;
@@ -8,7 +42,14 @@ export interface UiWidthRange {
8
42
  }
9
43
  export interface UiTheme {
10
44
  readonly badgeBrackets: readonly [left: string, right: string];
11
- readonly borderStyles: Readonly<Record<UiBorderType, BoxenOptions['borderStyle']>>;
45
+ /** Bordes Unicode por tipo; `command` no dibuja caja, solo la barra de `commandBar`. */
46
+ readonly borderStyles: Readonly<Record<Exclude<UiBorderType, 'command'>, UiBorderStyle>>;
47
+ /** Respaldo para terminales sin caracteres de caja (ARCLI_ASCII=1). */
48
+ readonly asciiBorderStyle: UiBorderStyle;
49
+ readonly commandBar: {
50
+ readonly ascii: string;
51
+ readonly unicode: string;
52
+ };
12
53
  readonly colors: Readonly<Record<UiColorToken, string>>;
13
54
  readonly headingLineMinWidth: number;
14
55
  readonly spacing: {
@@ -1,17 +1,195 @@
1
1
  export const UI_THEME = {
2
2
  badgeBrackets: ['[', ']'],
3
+ asciiBorderStyle: {
4
+ box: {
5
+ bottom: '-',
6
+ bottomLeft: '+',
7
+ bottomRight: '+',
8
+ left: '|',
9
+ right: '|',
10
+ top: '-',
11
+ topLeft: '+',
12
+ topRight: '+',
13
+ },
14
+ junction: ['+', '-', '+'],
15
+ },
3
16
  borderStyles: {
4
- arrow: 'arrow',
5
- common: 'doubleSingle',
6
- debug: 'single',
7
- note: 'classic',
17
+ attention: {
18
+ box: {
19
+ bottom: '─',
20
+ bottomLeft: '╰',
21
+ bottomRight: '╯',
22
+ left: '╏',
23
+ right: '│',
24
+ top: '─',
25
+ topLeft: '╭',
26
+ topRight: '╮',
27
+ },
28
+ },
29
+ checklist: {
30
+ box: {
31
+ bottom: '─',
32
+ bottomLeft: '╙',
33
+ bottomRight: '╜',
34
+ left: '║',
35
+ right: '║',
36
+ top: '─',
37
+ topLeft: '╓',
38
+ topRight: '╖',
39
+ },
40
+ junction: ['╟', '─', '╢'],
41
+ },
42
+ common: {
43
+ box: {
44
+ bottom: '═',
45
+ bottomLeft: '╘',
46
+ bottomRight: '╛',
47
+ left: '│',
48
+ right: '│',
49
+ top: '═',
50
+ topLeft: '╒',
51
+ topRight: '╕',
52
+ },
53
+ },
54
+ data: {
55
+ box: {
56
+ bottom: '┈',
57
+ bottomLeft: '└',
58
+ bottomRight: '┘',
59
+ left: '┊',
60
+ right: '┊',
61
+ top: '┈',
62
+ topLeft: '┌',
63
+ topRight: '┐',
64
+ },
65
+ junction: ['├', '┈', '┤'],
66
+ },
67
+ debug: {
68
+ box: {
69
+ bottom: '─',
70
+ bottomLeft: '└',
71
+ bottomRight: '┘',
72
+ left: '│',
73
+ right: '│',
74
+ top: '─',
75
+ topLeft: '┌',
76
+ topRight: '┐',
77
+ },
78
+ },
79
+ error: {
80
+ box: {
81
+ bottom: '─',
82
+ bottomLeft: '╰',
83
+ bottomRight: '╯',
84
+ left: '┃',
85
+ right: '│',
86
+ top: '─',
87
+ topLeft: '╭',
88
+ topRight: '╮',
89
+ },
90
+ },
91
+ info: {
92
+ box: {
93
+ bottom: '─',
94
+ bottomLeft: '╰',
95
+ bottomRight: '╯',
96
+ left: '│',
97
+ right: '│',
98
+ top: '─',
99
+ topLeft: '╭',
100
+ topRight: '╮',
101
+ },
102
+ junction: ['├', '─', '┤'],
103
+ },
104
+ listing: {
105
+ box: {
106
+ bottom: '═',
107
+ bottomLeft: '═',
108
+ bottomRight: '═',
109
+ left: ' ',
110
+ right: ' ',
111
+ top: '═',
112
+ topLeft: '═',
113
+ topRight: '═',
114
+ },
115
+ titleAlignment: 'left',
116
+ },
117
+ note: {
118
+ box: {
119
+ bottom: ' ',
120
+ bottomLeft: '└',
121
+ bottomRight: '┘',
122
+ left: ' ',
123
+ right: ' ',
124
+ top: ' ',
125
+ topLeft: '┌',
126
+ topRight: '┐',
127
+ },
128
+ },
129
+ sheet: {
130
+ box: {
131
+ bottom: '─',
132
+ bottomLeft: '└',
133
+ bottomRight: '┘',
134
+ left: '│',
135
+ right: '│',
136
+ top: '─',
137
+ topLeft: '┌',
138
+ topRight: '┐',
139
+ },
140
+ junction: ['├', '─', '┤'],
141
+ titleAlignment: 'left',
142
+ },
143
+ ticket: {
144
+ box: {
145
+ bottom: '═',
146
+ bottomLeft: '╘',
147
+ bottomRight: '╛',
148
+ left: '│',
149
+ right: '│',
150
+ top: '═',
151
+ topLeft: '╒',
152
+ topRight: '╕',
153
+ },
154
+ junction: ['├', '┄', '┤'],
155
+ },
156
+ tip: {
157
+ box: {
158
+ bottom: '─',
159
+ bottomLeft: '╰',
160
+ bottomRight: '╯',
161
+ left: '┆',
162
+ right: '│',
163
+ top: '─',
164
+ topLeft: '╭',
165
+ topRight: '╮',
166
+ },
167
+ },
168
+ warning: {
169
+ box: {
170
+ bottom: '╌',
171
+ bottomLeft: '└',
172
+ bottomRight: '┘',
173
+ left: '╎',
174
+ right: '╎',
175
+ top: '╌',
176
+ topLeft: '┌',
177
+ topRight: '┐',
178
+ },
179
+ junction: ['├', '╌', '┤'],
180
+ },
8
181
  },
182
+ commandBar: { ascii: '| ', unicode: '▎ ' },
9
183
  colors: {
10
184
  danger: '\u001B[31m',
11
185
  debug: '\u001B[95m',
12
186
  info: '\u001B[36m',
13
187
  muted: '\u001B[2m',
14
- neutral: '\u001B[37m',
188
+ // Color por defecto de la terminal: claro en fondos oscuros y oscuro en fondos claros.
189
+ // Un blanco fijo (\u001B[37m) casi no se leia en terminales con fondo claro.
190
+ neutral: '\u001B[39m',
191
+ // Gris (bright black): para titulos de datos crudos, que tienen que verse pero sin competir.
192
+ subtle: '\u001B[90m',
15
193
  success: '\u001B[32m',
16
194
  warning: '\u001B[33m',
17
195
  },
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,YAAY;KACtB;IACD,mBAAmB,EAAE,EAAE;IACvB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;SACX;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;SACR;KACF;IACD,KAAK,EAAE;QACL,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,EAAE;KACf;IACD,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC7B,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAC/B,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;KAC5B;CACF,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -23,6 +23,14 @@ Sin `cuit`, `cert.<entorno>`, `key.<entorno>` y `puntoVenta` configurados (o pas
23
23
  flag), cualquier comando de facturación falla con `ConfigurationError` antes de contactar
24
24
  ARCA. `--testing` es el entorno por defecto; `--produccion` cambia a real.
25
25
 
26
+ ## Salida humana
27
+
28
+ `NO_COLOR` desactiva colores y `ARCLI_ASCII=1` dibuja los paneles en ASCII puro. Ninguna de las dos cambia `--json`; para parsear, usar siempre `--json`.
29
+
30
+ ## Modo interactivo (no usar desde un agente)
31
+
32
+ `arcli` sin argumentos en una TTY abre un asistente con prompts (`arcli interactivo` lo abre explícito). Sin TTY o con `--json`, `arcli` sin argumentos muestra la ayuda y `arcli interactivo` falla. Un agente siempre tiene que usar los comandos con flags de abajo.
33
+
26
34
  ## Comandos de facturación (shortcut de 2-4 letras)
27
35
 
28
36
  ```
@@ -46,11 +54,15 @@ Shortcuts (`family` = comando alternativo `arcli <family> <letra>`, ej. `arcli f
46
54
  - Concepto: `--concepto <tipo>` (`productos`/`servicios`/`productos-servicios`) o atajos `--cs` `--cp` `--csp`. Uno solo, no combinar `--concepto` con un atajo.
47
55
  - IVA receptor: `--iva-receptor <tipo>` / `--ir <tipo>` (alias) o un atajo `--ir-ce|--ir-cf|--ir-il|--ir-ina|--ir-ms|--ir-mtip|--ir-pe|--ir-ri|--ir-rm|--ir-se|--ir-snc`. Usar exactamente una forma.
48
56
  Valores válidos: `cliente-del-exterior`, `consumidor-final`, `iva-liberado`, `iva-no-alcanzado`, `monotributista-social`, `monotributo-trabajador-independiente-promovido`, `proveedor-del-exterior`, `responsable-inscripto`, `responsable-monotributo`, `sujeto-exento`, `sujeto-no-categorizado`.
49
- - Identidad del receptor: `--cuit <n>` / `--cuil <n>` / `--dni <n>` / `--consumidor-final` (alias `--cfinal`, documento 0). Usar como máximo una.
57
+ El IVA receptor tiene que ser válido para la letra: `A` solo admite `responsable-inscripto`, `responsable-monotributo`, `monotributista-social` y `monotributo-trabajador-independiente-promovido`; `B` admite el resto; `C` admite todos. Letras `A` y `B` siempre discriminan IVA al 21%.
58
+ - IVA (solo letras A y B): `--alicuota 0|2.5|5|10.5|21|27` (default `config.alicuota` o 21; la config no aplica a C), `--exento <monto>` y `--nogravado <monto>` (sin guion). `--monto` es siempre el total; exento y no gravado se descuentan y el IVA se calcula sobre el resto. En letra C esos flags dan error.
59
+ - Identidad del receptor: `--cuit <n>` / `--cuil <n>` / `--dni <n>` / `--consumidor-final` (alias `--cfinal`, documento 0). Usar como máximo una. Desde $10.000.000 (total × cotización) no se puede usar `--consumidor-final`: identificar con `--dni`/`--cuit`/`--cuil` y `--ir-cf`.
50
60
  - Punto de venta: `--punto-venta <n>` (alias `--pv`). Si no se pasa, usa el default de config.
51
- - Moneda: `--moneda <codigo>` (alias `--mda`, ej. `ARS`/`USD`) y `--cotizacion-moneda <n>` (alias `--cm`).
52
- - Fechas: `-f, --fecha <fecha>` acepta formato argentino día-primero: `D`, `DD`, `D/M`, `DD/MM`, `D-M-YY`, `DD-MM-YYYY` (con `-` o `/`); si se omiten mes/año usa los actuales. También `--servicio-desde`/`--sd` y `--servicio-hasta`/`--sh`, y `-d, --dia <n>` (día de vencimiento).
53
- - Comprobante asociado (obligatorio en notas de crédito/débito): `--ac <shortcut>` (ej. `fc`), `--apv <n>` (punto de venta, alias `--asociado-punto-venta`), `--ar <n>` (número), `--acuit <n>`, `--at <n>` (tipo ARCA, alternativa a `--ac`; no combinar ambos).
61
+ - Moneda: `--moneda <codigo>` (alias `--mda`, ej. `ARS`/`USD`; `USD` se envía como `DOL`) y `--cotizacion-moneda <n>` (alias `--cm`). En moneda extranjera la cotización es obligatoria y no puede ser 1; si el pago es en la misma moneda extranjera, usar `--misma-moneda` en lugar de `--cm` (consulta la cotización oficial a ARCA). En pesos no pasar cotización distinta de 1.
62
+ - Fechas: `-f, --fecha <fecha>` acepta formato argentino día-primero: `D`, `DD`, `D/M`, `DD/MM`, `D-M-YY`, `DD-MM-YYYY` (con `-` o `/`); si se omiten mes/año usa los actuales. También `--servicio-desde`/`--sd` y `--servicio-hasta`/`--sh`, y `-d, --dia <n>` (día de vencimiento). `--vencimiento <fecha>` (alias `--vto`) fija `FchVtoPago` aparte del período de servicio (servicios y facturas FCE; no en productos ni NC/ND FCE). Ventana de `--fecha` respecto de hoy: productos ±5 días, servicios ±10, FCE −5/+1; en productos y FCE una fecha futura tiene que caer en el mes actual.
63
+ - Comprobante asociado (obligatorio en notas de crédito/débito): `--ac <shortcut>` (ej. `fc`), `--apv <n>` (punto de venta, alias `--asociado-punto-venta`), `--ar <n>` (número), `--acuit <n>`, `--at <n>` (tipo ARCA, alternativa a `--ac`; no combinar ambos), `--afecha <fecha>` (fecha del asociado, opcional salvo en NC/ND FCE). En notas comunes, en lugar del bloque `--ac` se puede usar un período: `--periodo-desde <fecha>` y `--periodo-hasta <fecha>` (alias `--pd`/`--ph`); no se combinan con `--ac`/`--at`, no aplican a FCE y el período no puede terminar después de la nota.
64
+ - Crédito electrónico (FCE): las facturas `fcea/fceb/fcec` requieren `--cbu <22 dígitos>` (o `arcli config establecer cbu ...`); opcionales `--alias <alias>` y `--transferencia sca|adc` (default `sca`). Las NC/ND FCE (`ncea`…`ndec`) requieren `--afecha`, aceptan `--anulacion`, toman `--acuit` del CUIT emisor si se omite y no aceptan `--cbu`/`--alias`/`--transferencia`. Fuera de FCE esos flags dan error.
65
+ - Régimen FCE: `arcli fce-obligado <cuit> [--fecha <fecha>] [--json]` consulta en ARCA (`wsfecred`) si el receptor está obligado a recibir FCE y desde qué monto. Con `arcli config establecer verificarFce true`, cada factura con CUIT hace esa consulta y devuelve avisos en `avisos` (JSON) sin bloquear. Requiere autorizar `wsfecred` en ARCA además de `wsfe`.
54
66
  - Ejecución: `--previsualizar` (default si no se especifica nada) vs `--emitir` (real contra ARCA) — son mutuamente excluyentes. En producción hace falta `--produccion --emitir` juntos — no hay un flag de confirmación adicional, así que esa combinación emite de verdad.
55
67
  - Salida: `--json` (estructurada, para scripts/agentes — desactiva el aviso de nueva versión), `--bruto` (incluye la respuesta cruda de ARCA).
56
68
  - `--cargar <path.json>`: carga uno o un array de comprobantes desde un JSON en vez de flags (ver forma abajo). Los flags pisan lo que venga del archivo.
@@ -133,7 +145,7 @@ arcli config establecer <clave> <valor>
133
145
  arcli config eliminar <clave>
134
146
  ```
135
147
 
136
- Claves válidas: `cuit`, `puntoVenta`, `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
148
+ Claves válidas: `cuit`, `cbu`, `aliasCbu` (solo facturas FCE), `verificarFce`, `alicuota`, `puntoVenta`, `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
137
149
  `entorno` (`testing`/`produccion`), `emitir`, `json`, `bruto` (booleanos: `true/false`,
138
150
  `si/no`, `1/0`), `cert.testing`, `cert.produccion`, `key.testing`, `key.produccion`
139
151
  (rutas a archivos PEM, se validan al guardar), `ticketPath` (carpeta donde se cachea el
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcli",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "CLI para previsualizar y emitir comprobantes ARCA desde terminal, con validaciones claras y salida lista para automatizar",
5
5
  "keywords": [
6
6
  "arca",
@@ -38,6 +38,7 @@
38
38
  "dist",
39
39
  "LICENSE",
40
40
  "README.md",
41
+ "CHANGELOG.md",
41
42
  "llms.txt"
42
43
  ],
43
44
  "scripts": {
@@ -70,35 +71,37 @@
70
71
  ]
71
72
  },
72
73
  "dependencies": {
73
- "@arcasdk/core": "2.0.0",
74
- "@inquirer/select": "5.2.2",
74
+ "@arcasdk/core": "2.0.2",
75
+ "@inquirer/input": "5.1.6",
76
+ "@inquirer/select": "5.2.5",
75
77
  "big.js": "7.0.1",
76
- "boxen": "8.0.1",
78
+ "boxen": "9.0.0",
77
79
  "commander": "15.0.0",
78
80
  "conf": "15.1.0",
79
81
  "ora": "9.4.1",
80
- "zod": "4.4.3"
82
+ "zod": "4.6.5"
81
83
  },
82
84
  "devDependencies": {
83
85
  "@eslint/js": "10.0.1",
84
- "@eslint/json": "2.0.1",
86
+ "@eslint/json": "2.1.0",
85
87
  "@types/big.js": "7.0.0",
86
88
  "@types/node": "22.20.1",
87
- "@typescript-eslint/parser": "8.67.0",
88
- "@vitest/coverage-v8": "4.1.11",
89
- "eslint": "10.9.0",
89
+ "@typescript-eslint/parser": "8.71.0",
90
+ "@vitest/coverage-v8": "5.0.3",
91
+ "eslint": "10.11.0",
90
92
  "eslint-config-prettier": "10.1.8",
91
93
  "eslint-plugin-jsonc": "3.4.2",
92
94
  "eslint-plugin-prettier": "5.5.6",
93
95
  "eslint-plugin-simple-import-sort": "14.0.0",
94
96
  "husky": "9.1.7",
95
- "lint-staged": "17.3.0",
96
- "prettier": "3.9.6",
97
+ "lint-staged": "17.6.0",
98
+ "prettier": "3.9.9",
97
99
  "tsc-files": "1.1.4",
98
- "tsx": "4.23.12",
100
+ "tsx": "4.23.15",
99
101
  "typescript": "6.0.3",
100
- "typescript-eslint": "8.67.0",
101
- "vitest": "4.1.11"
102
+ "typescript-eslint": "8.71.0",
103
+ "vite": "8.3.2",
104
+ "vitest": "5.0.3"
102
105
  },
103
106
  "engines": {
104
107
  "node": ">=22.22.1"