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.
- package/CHANGELOG.md +126 -0
- package/README.md +9 -3
- package/dist/cli/commands/billing.command.interactive-preview.d.ts +1 -0
- package/dist/cli/commands/billing.command.interactive-preview.js +5 -1
- package/dist/cli/commands/billing.command.interactive-preview.js.map +1 -1
- package/dist/cli/commands/billing.command.options.js +17 -1
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.d.ts +3 -0
- package/dist/cli/commands/billing.command.parser.js +36 -2
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.shared.js +26 -5
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/config.command.d.ts +5 -0
- package/dist/cli/commands/config.command.js +3 -3
- package/dist/cli/commands/config.command.js.map +1 -1
- package/dist/cli/commands/fce-obligation.command.d.ts +2 -0
- package/dist/cli/commands/fce-obligation.command.js +51 -0
- package/dist/cli/commands/fce-obligation.command.js.map +1 -0
- package/dist/cli/commands/interactive.command.d.ts +3 -0
- package/dist/cli/commands/interactive.command.js +22 -0
- package/dist/cli/commands/interactive.command.js.map +1 -0
- package/dist/cli/commands/storybook.command.js +3 -2
- package/dist/cli/commands/storybook.command.js.map +1 -1
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +65 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive/history.flow.d.ts +2 -0
- package/dist/cli/interactive/history.flow.js +31 -0
- package/dist/cli/interactive/history.flow.js.map +1 -0
- package/dist/cli/interactive/interactive-mode.d.ts +3 -0
- package/dist/cli/interactive/interactive-mode.js +92 -0
- package/dist/cli/interactive/interactive-mode.js.map +1 -0
- package/dist/cli/interactive/invoice.flow.d.ts +2 -0
- package/dist/cli/interactive/invoice.flow.js +54 -0
- package/dist/cli/interactive/invoice.flow.js.map +1 -0
- package/dist/cli/interactive/note.flow.d.ts +2 -0
- package/dist/cli/interactive/note.flow.js +99 -0
- package/dist/cli/interactive/note.flow.js.map +1 -0
- package/dist/cli/interactive/prompts.d.ts +13 -0
- package/dist/cli/interactive/prompts.js +24 -0
- package/dist/cli/interactive/prompts.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +22 -0
- package/dist/cli/interactive/session.js +86 -0
- package/dist/cli/interactive/session.js.map +1 -0
- package/dist/cli/interactive/validators.d.ts +5 -0
- package/dist/cli/interactive/validators.js +17 -0
- package/dist/cli/interactive/validators.js.map +1 -0
- package/dist/cli/interactive/voucher-format.d.ts +4 -0
- package/dist/cli/interactive/voucher-format.js +28 -0
- package/dist/cli/interactive/voucher-format.js.map +1 -0
- package/dist/cli/program.js +4 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/spinner.d.ts +8 -0
- package/dist/cli/spinner.js +14 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/lib/dates/arca-date.d.ts +4 -0
- package/dist/lib/dates/arca-date.js +18 -1
- package/dist/lib/dates/arca-date.js.map +1 -1
- package/dist/modules/billing/billing.amounts.d.ts +12 -2
- package/dist/modules/billing/billing.amounts.js +52 -10
- package/dist/modules/billing/billing.amounts.js.map +1 -1
- package/dist/modules/billing/billing.associated-period.d.ts +8 -0
- package/dist/modules/billing/billing.associated-period.js +40 -0
- package/dist/modules/billing/billing.associated-period.js.map +1 -0
- package/dist/modules/billing/billing.associated-vouchers.d.ts +2 -0
- package/dist/modules/billing/billing.associated-vouchers.js +29 -7
- package/dist/modules/billing/billing.associated-vouchers.js.map +1 -1
- package/dist/modules/billing/billing.currency.d.ts +18 -0
- package/dist/modules/billing/billing.currency.js +53 -0
- package/dist/modules/billing/billing.currency.js.map +1 -0
- package/dist/modules/billing/billing.date-range.d.ts +5 -4
- package/dist/modules/billing/billing.date-range.js +34 -27
- package/dist/modules/billing/billing.date-range.js.map +1 -1
- package/dist/modules/billing/billing.display.js +30 -4
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.fce.d.ts +21 -0
- package/dist/modules/billing/billing.fce.js +59 -0
- package/dist/modules/billing/billing.fce.js.map +1 -0
- package/dist/modules/billing/billing.iva-receptor.d.ts +8 -0
- package/dist/modules/billing/billing.iva-receptor.js +61 -0
- package/dist/modules/billing/billing.iva-receptor.js.map +1 -0
- package/dist/modules/billing/billing.labels.js +1 -1
- package/dist/modules/billing/billing.mappers.js +2 -1
- package/dist/modules/billing/billing.mappers.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +40 -7
- package/dist/modules/billing/billing.schemas.js +38 -1
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.serialize.js +2 -0
- package/dist/modules/billing/billing.serialize.js.map +1 -1
- package/dist/modules/billing/billing.service.d.ts +12 -0
- package/dist/modules/billing/billing.service.js +68 -10
- package/dist/modules/billing/billing.service.js.map +1 -1
- package/dist/modules/billing/billing.text.js +20 -8
- package/dist/modules/billing/billing.text.js.map +1 -1
- package/dist/modules/billing/billing.types.internal.d.ts +2 -0
- package/dist/modules/billing/billing.validation.d.ts +4 -2
- package/dist/modules/billing/billing.validation.js +36 -1
- package/dist/modules/billing/billing.validation.js.map +1 -1
- package/dist/modules/config/config-value-parser.d.ts +1 -1
- package/dist/modules/config/config-value-parser.js +29 -1
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.presenter.js +10 -2
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +26 -3
- package/dist/modules/config/config.schemas.js +19 -0
- package/dist/modules/config/config.schemas.js.map +1 -1
- package/dist/modules/config/config.service.js +4 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/examples/examples.d.ts +1 -1
- package/dist/modules/examples/examples.js +62 -38
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/fce/fce-obligation.d.ts +20 -0
- package/dist/modules/fce/fce-obligation.js +33 -0
- package/dist/modules/fce/fce-obligation.js.map +1 -0
- package/dist/modules/fce/fce-obligation.presenter.d.ts +9 -0
- package/dist/modules/fce/fce-obligation.presenter.js +32 -0
- package/dist/modules/fce/fce-obligation.presenter.js.map +1 -0
- package/dist/modules/interactive/amount-input.d.ts +6 -0
- package/dist/modules/interactive/amount-input.js +29 -0
- package/dist/modules/interactive/amount-input.js.map +1 -0
- package/dist/modules/interactive/choices.d.ts +13 -0
- package/dist/modules/interactive/choices.js +56 -0
- package/dist/modules/interactive/choices.js.map +1 -0
- package/dist/modules/interactive/equivalent-command.d.ts +8 -0
- package/dist/modules/interactive/equivalent-command.js +85 -0
- package/dist/modules/interactive/equivalent-command.js.map +1 -0
- package/dist/modules/interactive/voucher-history.d.ts +25 -0
- package/dist/modules/interactive/voucher-history.js +42 -0
- package/dist/modules/interactive/voucher-history.js.map +1 -0
- package/dist/modules/storybook/showcase.d.ts +1 -1
- package/dist/modules/storybook/showcase.js +50 -6
- package/dist/modules/storybook/showcase.js.map +1 -1
- package/dist/modules/update-check/update-check.presenter.js +1 -1
- package/dist/modules/update-check/update-check.presenter.js.map +1 -1
- package/dist/services/arca/arca-billing.gateway.d.ts +1 -0
- package/dist/services/arca/arca-billing.gateway.js +12 -0
- package/dist/services/arca/arca-billing.gateway.js.map +1 -1
- package/dist/services/arca/arca-fce-obligation.gateway.d.ts +7 -0
- package/dist/services/arca/arca-fce-obligation.gateway.js +36 -0
- package/dist/services/arca/arca-fce-obligation.gateway.js.map +1 -0
- package/dist/services/arca/arca-voucher-history.gateway.d.ts +8 -0
- package/dist/services/arca/arca-voucher-history.gateway.js +28 -0
- package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
- package/dist/ui/components/contentPanel.d.ts +2 -2
- package/dist/ui/components/contentPanel.js +2 -1
- package/dist/ui/components/contentPanel.js.map +1 -1
- package/dist/ui/components/errorPanel.js +3 -3
- package/dist/ui/components/errorPanel.js.map +1 -1
- package/dist/ui/components/index.d.ts +3 -0
- package/dist/ui/components/index.js +3 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/components/keyValuePanel.d.ts +2 -2
- package/dist/ui/components/keyValuePanel.js +2 -1
- package/dist/ui/components/keyValuePanel.js.map +1 -1
- package/dist/ui/components/rawPanel.js +1 -1
- package/dist/ui/components/rawPanel.js.map +1 -1
- package/dist/ui/components/sectionHeading.d.ts +3 -0
- package/dist/ui/components/sectionHeading.js +13 -0
- package/dist/ui/components/sectionHeading.js.map +1 -0
- package/dist/ui/components/statusBar.d.ts +6 -0
- package/dist/ui/components/statusBar.js +24 -0
- package/dist/ui/components/statusBar.js.map +1 -0
- package/dist/ui/components/statusPanel.d.ts +2 -2
- package/dist/ui/components/statusPanel.js +2 -1
- package/dist/ui/components/statusPanel.js.map +1 -1
- package/dist/ui/components/testingBanner.d.ts +2 -0
- package/dist/ui/components/testingBanner.js +6 -0
- package/dist/ui/components/testingBanner.js.map +1 -0
- package/dist/ui/presenters/errors.zod-presenter.js +22 -1
- package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
- package/dist/ui/primitives/renderLogo.js +5 -0
- package/dist/ui/primitives/renderLogo.js.map +1 -1
- package/dist/ui/primitives/renderPanel.d.ts +3 -1
- package/dist/ui/primitives/renderPanel.js +68 -21
- package/dist/ui/primitives/renderPanel.js.map +1 -1
- package/dist/ui/primitives/terminalWidth.d.ts +4 -0
- package/dist/ui/primitives/terminalWidth.js +11 -0
- package/dist/ui/primitives/terminalWidth.js.map +1 -0
- package/dist/ui/primitives/text.d.ts +5 -0
- package/dist/ui/primitives/text.js +91 -29
- package/dist/ui/primitives/text.js.map +1 -1
- package/dist/ui/theme/theme.d.ts +45 -4
- package/dist/ui/theme/theme.js +183 -5
- package/dist/ui/theme/theme.js.map +1 -1
- package/llms.txt +17 -5
- package/package.json +17 -14
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export class ArcaVoucherHistoryGateway {
|
|
2
|
+
arca;
|
|
3
|
+
constructor(arca) {
|
|
4
|
+
this.arca = arca;
|
|
5
|
+
}
|
|
6
|
+
async getLastNumber(pointOfSale, voucherType) {
|
|
7
|
+
const result = await this.arca.electronicBillingService.getLastVoucher(pointOfSale, voucherType);
|
|
8
|
+
return result.cbteNro ?? 0;
|
|
9
|
+
}
|
|
10
|
+
async getVoucher(number, pointOfSale, voucherType) {
|
|
11
|
+
const info = await this.arca.electronicBillingService.getVoucherInfo(number, pointOfSale, voucherType);
|
|
12
|
+
if (!info?.cbteFch || info.resultado !== 'A') {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
cae: info.codAutorizacion,
|
|
17
|
+
concept: info.concepto,
|
|
18
|
+
date: info.cbteFch,
|
|
19
|
+
documentNumber: info.docNro ?? 0,
|
|
20
|
+
documentTypeCode: info.docTipo ?? 99,
|
|
21
|
+
ivaAmount: info.impIVA ?? 0,
|
|
22
|
+
netAmount: info.impNeto ?? 0,
|
|
23
|
+
number,
|
|
24
|
+
total: info.impTotal ?? 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=arca-voucher-history.gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arca-voucher-history.gateway.js","sourceRoot":"","sources":["../../../src/services/arca/arca-voucher-history.gateway.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,yBAAyB;IACA;IAApC,YAAoC,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAAG,CAAC;IAE3C,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,WAAmB;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAEjG,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,MAAc,EACd,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAEvG,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,eAAe;YACzB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,cAAc,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;YAChC,gBAAgB,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YACpC,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;YAC5B,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { UiTextColor } from '../primitives/text';
|
|
2
|
-
import type { UiWidthPreset } from '../theme/theme';
|
|
2
|
+
import type { UiBorderType, UiWidthPreset } from '../theme/theme';
|
|
3
3
|
type ContentPanelAlignment = 'block-center' | 'center' | 'left';
|
|
4
|
-
export declare function contentPanel(title: string, content: string, width?: UiWidthPreset, titleColor?: UiTextColor, contentAlign?: ContentPanelAlignment): string;
|
|
4
|
+
export declare function contentPanel(title: string, content: string, width?: UiWidthPreset, titleColor?: UiTextColor, contentAlign?: ContentPanelAlignment, borderType?: UiBorderType): string;
|
|
5
5
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { renderPanel } from '../primitives/renderPanel.js';
|
|
2
|
-
export function contentPanel(title, content, width = 'wide', titleColor, contentAlign = 'left') {
|
|
2
|
+
export function contentPanel(title, content, width = 'wide', titleColor, contentAlign = 'left', borderType = 'common') {
|
|
3
3
|
return renderPanel({
|
|
4
|
+
borderType,
|
|
4
5
|
content,
|
|
5
6
|
contentAlign,
|
|
6
7
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentPanel.js","sourceRoot":"","sources":["../../../src/ui/components/contentPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,OAAe,EACf,QAAuB,MAAM,EAC7B,UAAwB,EACxB,eAAsC,MAAM;
|
|
1
|
+
{"version":3,"file":"contentPanel.js","sourceRoot":"","sources":["../../../src/ui/components/contentPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,OAAe,EACf,QAAuB,MAAM,EAC7B,UAAwB,EACxB,eAAsC,MAAM,EAC5C,aAA2B,QAAQ;IAEnC,OAAO,WAAW,CAAC;QACjB,UAAU;QACV,OAAO;QACP,YAAY;QACZ,KAAK;QACL,UAAU;QACV,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,11 +3,11 @@ import { contentPanel } from './contentPanel.js';
|
|
|
3
3
|
export function errorPanel(title, message, details = [], hint) {
|
|
4
4
|
const lines = [toneText('Error', 'danger'), message];
|
|
5
5
|
if (details.length > 0) {
|
|
6
|
-
lines.push('', toneText('Detalles', '
|
|
6
|
+
lines.push('', toneText('Detalles', 'info'), ...details);
|
|
7
7
|
}
|
|
8
8
|
if (hint) {
|
|
9
|
-
lines.push('', toneText('Sugerencia', '
|
|
9
|
+
lines.push('', toneText('Sugerencia', 'warning'), hint);
|
|
10
10
|
}
|
|
11
|
-
return contentPanel(title, lines.join('\n'), 'standard', 'danger');
|
|
11
|
+
return contentPanel(title, lines.join('\n'), 'standard', 'danger', 'left', 'error');
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=errorPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorPanel.js","sourceRoot":"","sources":["../../../src/ui/components/errorPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,UAA6B,EAAE,EAAE,IAAa;IACvG,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"errorPanel.js","sourceRoot":"","sources":["../../../src/ui/components/errorPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,UAA6B,EAAE,EAAE,IAAa;IACvG,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -3,5 +3,8 @@ export * from './errorPanel.js';
|
|
|
3
3
|
export * from './keyValuePanel.js';
|
|
4
4
|
export * from './noticePanel.js';
|
|
5
5
|
export * from './rawPanel.js';
|
|
6
|
+
export * from './sectionHeading.js';
|
|
7
|
+
export * from './statusBar.js';
|
|
6
8
|
export * from './statusPanel.js';
|
|
9
|
+
export * from './testingBanner.js';
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { UiTextColor } from '../primitives/text';
|
|
2
|
-
import type { UiWidthPreset } from '../theme/theme';
|
|
3
|
-
export declare function keyValuePanel(title: string, rows: readonly string[], footer?: string, width?: UiWidthPreset, titleColor?: UiTextColor): string;
|
|
2
|
+
import type { UiBorderType, UiWidthPreset } from '../theme/theme';
|
|
3
|
+
export declare function keyValuePanel(title: string, rows: readonly string[], footer?: string, width?: UiWidthPreset, titleColor?: UiTextColor, borderType?: UiBorderType): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { renderPanel } from '../primitives/renderPanel.js';
|
|
2
|
-
export function keyValuePanel(title, rows, footer, width = 'standard', titleColor) {
|
|
2
|
+
export function keyValuePanel(title, rows, footer, width = 'standard', titleColor, borderType = 'common') {
|
|
3
3
|
return renderPanel({
|
|
4
|
+
borderType,
|
|
4
5
|
content: rows,
|
|
5
6
|
contentAlign: 'left',
|
|
6
7
|
footer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyValuePanel.js","sourceRoot":"","sources":["../../../src/ui/components/keyValuePanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,IAAuB,EACvB,MAAe,EACf,QAAuB,UAAU,EACjC,UAAwB;
|
|
1
|
+
{"version":3,"file":"keyValuePanel.js","sourceRoot":"","sources":["../../../src/ui/components/keyValuePanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,IAAuB,EACvB,MAAe,EACf,QAAuB,UAAU,EACjC,UAAwB,EACxB,aAA2B,QAAQ;IAEnC,OAAO,WAAW,CAAC;QACjB,UAAU;QACV,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,MAAM;QACpB,MAAM;QACN,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK;QACL,UAAU;QACV,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawPanel.js","sourceRoot":"","sources":["../../../src/ui/components/rawPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAe;IACrD,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rawPanel.js","sourceRoot":"","sources":["../../../src/ui/components/rawPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAe;IACrD,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { usesAsciiBorders } from '../primitives/renderPanel.js';
|
|
2
|
+
import { fitToTerminal } from '../primitives/terminalWidth.js';
|
|
3
|
+
import { bold, colorize, stripAnsi } from '../primitives/text.js';
|
|
4
|
+
import { UI_THEME } from '../theme/theme.js';
|
|
5
|
+
/** Titulo de seccion de una linea (`── TITULO ─────`), para agrupar contenido sin encerrarlo en una caja. */
|
|
6
|
+
export function sectionHeading(title, color) {
|
|
7
|
+
const fill = usesAsciiBorders() ? '-' : '─';
|
|
8
|
+
const width = fitToTerminal(UI_THEME.widths.standard.min);
|
|
9
|
+
const label = ` ${bold(color ? colorize(title.toUpperCase(), color) : title.toUpperCase())} `;
|
|
10
|
+
const rest = Math.max(2, width - 2 - stripAnsi(label).length);
|
|
11
|
+
return `${colorize(fill.repeat(2), 'muted')}${label}${colorize(fill.repeat(rest), 'muted')}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sectionHeading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sectionHeading.js","sourceRoot":"","sources":["../../../src/ui/components/sectionHeading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,6GAA6G;AAC7G,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAmB;IAC/D,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type UiTextColor } from '../primitives/text';
|
|
2
|
+
/**
|
|
3
|
+
* Barra de una linea con el contexto de la sesion, como la barra de estado de un editor:
|
|
4
|
+
* `━━ TITULO ━━━━━━━━━━━━ estado ━━`. No es una caja: no compite con los paneles de contenido.
|
|
5
|
+
*/
|
|
6
|
+
export declare function statusBar(title: string, status: string, statusColor?: UiTextColor): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { usesAsciiBorders } from '../primitives/renderPanel.js';
|
|
2
|
+
import { fitToTerminal } from '../primitives/terminalWidth.js';
|
|
3
|
+
import { bold, colorize, stripAnsi } from '../primitives/text.js';
|
|
4
|
+
import { UI_THEME } from '../theme/theme.js';
|
|
5
|
+
/**
|
|
6
|
+
* Barra de una linea con el contexto de la sesion, como la barra de estado de un editor:
|
|
7
|
+
* `━━ TITULO ━━━━━━━━━━━━ estado ━━`. No es una caja: no compite con los paneles de contenido.
|
|
8
|
+
*/
|
|
9
|
+
export function statusBar(title, status, statusColor = 'info') {
|
|
10
|
+
const fill = usesAsciiBorders() ? '=' : '━';
|
|
11
|
+
const width = fitToTerminal(UI_THEME.widths.wide.min);
|
|
12
|
+
const left = ` ${bold(title.toUpperCase())} `;
|
|
13
|
+
const right = ` ${colorize(status, statusColor)} `;
|
|
14
|
+
const used = 2 + stripAnsi(left).length + stripAnsi(right).length + 2;
|
|
15
|
+
const middle = Math.max(2, width - used);
|
|
16
|
+
return [
|
|
17
|
+
colorize(fill.repeat(2), 'muted'),
|
|
18
|
+
left,
|
|
19
|
+
colorize(fill.repeat(middle), 'muted'),
|
|
20
|
+
right,
|
|
21
|
+
colorize(fill.repeat(2), 'muted'),
|
|
22
|
+
].join('');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=statusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusBar.js","sourceRoot":"","sources":["../../../src/ui/components/statusBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,cAA2B,MAAM;IACxF,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC;IACnD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACjC,IAAI;QACJ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QACtC,KAAK;QACL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { UiTextColor } from '../primitives/text';
|
|
2
|
-
import type { UiWidthPreset } from '../theme/theme';
|
|
3
|
-
export declare function statusPanel(title: string, rows: readonly string[], footer: string, width?: UiWidthPreset, titleColor?: UiTextColor): string;
|
|
2
|
+
import type { UiBorderType, UiWidthPreset } from '../theme/theme';
|
|
3
|
+
export declare function statusPanel(title: string, rows: readonly string[], footer: string, width?: UiWidthPreset, titleColor?: UiTextColor, borderType?: UiBorderType): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { renderPanel } from '../primitives/renderPanel.js';
|
|
2
|
-
export function statusPanel(title, rows, footer, width = 'standard', titleColor) {
|
|
2
|
+
export function statusPanel(title, rows, footer, width = 'standard', titleColor, borderType = 'common') {
|
|
3
3
|
return renderPanel({
|
|
4
|
+
borderType,
|
|
4
5
|
content: rows,
|
|
5
6
|
contentAlign: 'left',
|
|
6
7
|
footer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusPanel.js","sourceRoot":"","sources":["../../../src/ui/components/statusPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,IAAuB,EACvB,MAAc,EACd,QAAuB,UAAU,EACjC,UAAwB;
|
|
1
|
+
{"version":3,"file":"statusPanel.js","sourceRoot":"","sources":["../../../src/ui/components/statusPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,IAAuB,EACvB,MAAc,EACd,QAAuB,UAAU,EACjC,UAAwB,EACxB,aAA2B,QAAQ;IAEnC,OAAO,WAAW,CAAC;QACjB,UAAU;QACV,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,MAAM;QACpB,MAAM;QACN,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE;YACP,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;SACP;QACD,KAAK;QACL,UAAU;QACV,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { noticePanel } from './noticePanel.js';
|
|
2
|
+
/** Banner del entorno de testing. Unico lugar que lo arma, para que el CLI y el storybook no se desfasen. */
|
|
3
|
+
export function testingBanner() {
|
|
4
|
+
return noticePanel('Estas utilizando el entorno de TESTING', 'warning', 'warning');
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=testingBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingBanner.js","sourceRoot":"","sources":["../../../src/ui/components/testingBanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,6GAA6G;AAC7G,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC,wCAAwC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -2,34 +2,54 @@ import { errorPanel } from '../components/errorPanel.js';
|
|
|
2
2
|
import { renderJson } from '../primitives/renderJson.js';
|
|
3
3
|
import { bold } from '../primitives/text.js';
|
|
4
4
|
const ZOD_PATH_LABELS = {
|
|
5
|
+
associatedPeriod: 'periodo asociado',
|
|
5
6
|
associatedVoucher: 'comprobante asociado',
|
|
6
7
|
billingDate: 'fecha del comprobante',
|
|
8
|
+
cancellation: 'anulacion',
|
|
9
|
+
cbu: 'CBU',
|
|
10
|
+
cbuAlias: 'alias del CBU',
|
|
7
11
|
concept: 'concepto',
|
|
8
12
|
currencyCode: 'moneda',
|
|
9
13
|
documentNumber: 'numero de documento',
|
|
10
14
|
documentType: 'tipo de documento',
|
|
11
15
|
dueDay: 'dia de vencimiento',
|
|
12
16
|
exchangeRate: 'cotizacion',
|
|
17
|
+
exemptAmount: 'importe exento',
|
|
18
|
+
ivaRate: 'alicuota de IVA',
|
|
13
19
|
ivaCondition: 'IVA receptor',
|
|
20
|
+
paymentDueDate: 'vencimiento de pago',
|
|
14
21
|
pointOfSale: 'punto de venta',
|
|
22
|
+
sameCurrency: 'misma moneda',
|
|
15
23
|
serviceEndDate: 'servicio hasta',
|
|
16
24
|
serviceStartDate: 'servicio desde',
|
|
17
25
|
totalAmount: 'monto',
|
|
26
|
+
transferMode: 'modalidad de transferencia',
|
|
27
|
+
untaxedAmount: 'importe no gravado',
|
|
18
28
|
};
|
|
19
29
|
const ZOD_PUBLIC_PATHS = {
|
|
30
|
+
associatedPeriod: ['periodoAsociado'],
|
|
20
31
|
associatedVoucher: ['comprobanteAsociado'],
|
|
21
32
|
billingDate: ['fechaComprobante'],
|
|
33
|
+
cancellation: ['anulacion'],
|
|
34
|
+
cbu: ['cbu'],
|
|
35
|
+
cbuAlias: ['aliasCbu'],
|
|
22
36
|
concept: ['concepto'],
|
|
23
37
|
currencyCode: ['codigoMoneda'],
|
|
24
38
|
documentNumber: ['numeroDocumento'],
|
|
25
39
|
documentType: ['tipoDocumento'],
|
|
26
40
|
dueDay: ['dia'],
|
|
27
41
|
exchangeRate: ['cotizacionMoneda'],
|
|
42
|
+
exemptAmount: ['importeExento'],
|
|
43
|
+
ivaRate: ['alicuotaIva'],
|
|
28
44
|
ivaCondition: ['ivaReceptor'],
|
|
45
|
+
paymentDueDate: ['vencimientoPago'],
|
|
29
46
|
pointOfSale: ['puntoVenta'],
|
|
47
|
+
sameCurrency: ['mismaMoneda'],
|
|
30
48
|
serviceEndDate: ['servicioHasta'],
|
|
31
49
|
serviceStartDate: ['servicioDesde'],
|
|
32
50
|
totalAmount: ['montoTotal'],
|
|
51
|
+
transferMode: ['transferencia'],
|
|
52
|
+
untaxedAmount: ['importeNoGravado'],
|
|
33
53
|
};
|
|
34
54
|
function formatZodIssuePath(path) {
|
|
35
55
|
if (path.length === 0) {
|
|
@@ -50,7 +70,8 @@ function humanizeZodIssue(issue) {
|
|
|
50
70
|
return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} debe ser mayor a ${issue.minimum}.`;
|
|
51
71
|
}
|
|
52
72
|
if (issue.code === 'invalid_value') {
|
|
53
|
-
|
|
73
|
+
const allowedValues = issue.values.map((value) => String(value)).join(', ');
|
|
74
|
+
return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un valor no soportado. Valores validos: ${allowedValues}.`;
|
|
54
75
|
}
|
|
55
76
|
if (issue.code === 'invalid_type') {
|
|
56
77
|
return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un formato invalido.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.zod-presenter.js","sourceRoot":"","sources":["../../../src/ui/presenters/errors.zod-presenter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,eAAe,GAA2B;IAC9C,iBAAiB,EAAE,sBAAsB;IACzC,WAAW,EAAE,uBAAuB;IACpC,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,mBAAmB;IACjC,MAAM,EAAE,oBAAoB;IAC5B,YAAY,EAAE,YAAY;IAC1B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,gBAAgB;IAC7B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"errors.zod-presenter.js","sourceRoot":"","sources":["../../../src/ui/presenters/errors.zod-presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,11 @@ function renderLogoWidth() {
|
|
|
17
17
|
return ARCLI_ASCII_BANNER.split('\n')[0]?.length ?? 0;
|
|
18
18
|
}
|
|
19
19
|
export function renderLogo() {
|
|
20
|
+
const columns = process.stdout.columns;
|
|
21
|
+
// En una terminal mas angosta que el dibujo, cada linea se partiria: se muestra solo el nombre.
|
|
22
|
+
if (columns && columns < renderLogoWidth()) {
|
|
23
|
+
return `\n${colorize('AR', 'info')}${colorize('CLI', 'neutral')}\n`;
|
|
24
|
+
}
|
|
20
25
|
const logo = ARCLI_ASCII_BANNER.split('\n').map((line) => {
|
|
21
26
|
const ar = line.slice(0, ARCLI_BANNER_AR_CLI_SPLIT_COLUMN);
|
|
22
27
|
const cli = line.slice(ARCLI_BANNER_AR_CLI_SPLIT_COLUMN);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderLogo.js","sourceRoot":"","sources":["../../../src/ui/primitives/renderLogo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;CACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,4EAA4E;AAC5E,2EAA2E;AAC3E,qDAAqD;AACrD,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAE5C,SAAS,eAAe;IACtB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEzD,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"renderLogo.js","sourceRoot":"","sources":["../../../src/ui/primitives/renderLogo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;IACtD,sDAAsD;CACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,4EAA4E;AAC5E,2EAA2E;AAC3E,qDAAqD;AACrD,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAE5C,SAAS,eAAe;IACtB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAEvC,gGAAgG;IAChG,IAAI,OAAO,IAAI,OAAO,GAAG,eAAe,EAAE,EAAE,CAAC;QAC3C,OAAO,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEzD,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,CAAC"}
|
|
@@ -9,7 +9,7 @@ export interface RenderPanelProps {
|
|
|
9
9
|
readonly contentAlign?: PanelAlignment;
|
|
10
10
|
readonly footer?: string;
|
|
11
11
|
readonly footerColor?: UiTextColor;
|
|
12
|
-
readonly footerDivider?: boolean
|
|
12
|
+
readonly footerDivider?: boolean;
|
|
13
13
|
readonly maxWidth?: UiWidthPreset | number;
|
|
14
14
|
readonly padding?: Partial<BoxenSpacing>;
|
|
15
15
|
readonly subtitle?: string;
|
|
@@ -19,5 +19,7 @@ export interface RenderPanelProps {
|
|
|
19
19
|
readonly titleColor?: UiTextColor;
|
|
20
20
|
readonly width?: UiWidthPreset | number;
|
|
21
21
|
}
|
|
22
|
+
/** ARCLI_ASCII=1 cambia todos los bordes por ASCII puro, para terminales sin caracteres de caja. */
|
|
23
|
+
export declare function usesAsciiBorders(): boolean;
|
|
22
24
|
export declare function renderPanel(props: RenderPanelProps): string;
|
|
23
25
|
export {};
|
|
@@ -3,7 +3,8 @@ import { UI_THEME } from '../theme/theme.js';
|
|
|
3
3
|
import { renderDivider } from './renderDivider.js';
|
|
4
4
|
import { renderFooter } from './renderFooter.js';
|
|
5
5
|
import { renderSubtitle } from './renderSubtitle.js';
|
|
6
|
-
import {
|
|
6
|
+
import { resolveTerminalColumns } from './terminalWidth.js';
|
|
7
|
+
import { bold, centerLineBlock, centerLines, colorize, flattenVisibleLines, maxVisibleWidth, stripAnsi, wrapIndentedPlainText, } from './text.js';
|
|
7
8
|
function resolvePadding(padding) {
|
|
8
9
|
const base = UI_THEME.spacing.panelPadding;
|
|
9
10
|
return {
|
|
@@ -37,35 +38,84 @@ function alignLines(lines, width, align) {
|
|
|
37
38
|
}
|
|
38
39
|
return centerLines(lines, width);
|
|
39
40
|
}
|
|
41
|
+
// Ancho minimo del panel aunque la terminal sea mas angosta: por debajo de esto el contenido no entra.
|
|
42
|
+
const MIN_PANEL_WIDTH = 24;
|
|
43
|
+
// Marca de la linea divisoria: despues de dibujar la caja se reemplaza por una linea unida al borde
|
|
44
|
+
// (por ejemplo `╟┄┄┄╢`). El caracter NUL no ocupa ancho, asi que no altera el calculo de boxen.
|
|
45
|
+
const DIVIDER_MARKER = '\u0000';
|
|
46
|
+
/** ARCLI_ASCII=1 cambia todos los bordes por ASCII puro, para terminales sin caracteres de caja. */
|
|
47
|
+
export function usesAsciiBorders() {
|
|
48
|
+
const value = process.env.ARCLI_ASCII?.trim().toLowerCase();
|
|
49
|
+
return value === '1' || value === 'true' || value === 'si';
|
|
50
|
+
}
|
|
51
|
+
function resolveBorderStyle(borderType) {
|
|
52
|
+
return usesAsciiBorders() ? UI_THEME.asciiBorderStyle : UI_THEME.borderStyles[borderType];
|
|
53
|
+
}
|
|
54
|
+
function joinDividers(box, junction) {
|
|
55
|
+
const [left, fill, right] = junction;
|
|
56
|
+
return box
|
|
57
|
+
.split('\n')
|
|
58
|
+
.map((line) => {
|
|
59
|
+
if (!line.includes(DIVIDER_MARKER)) {
|
|
60
|
+
return line;
|
|
61
|
+
}
|
|
62
|
+
const width = stripAnsi(line).replace(DIVIDER_MARKER, '').length;
|
|
63
|
+
return `${left}${fill.repeat(Math.max(0, width - 2))}${right}`;
|
|
64
|
+
})
|
|
65
|
+
.join('\n');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Estilo `command`: una barra a la izquierda y nada a la derecha, para que al copiar el comando
|
|
69
|
+
* no venga pegado un borde. Las lineas no se parten: la terminal las ajusta y se copian enteras.
|
|
70
|
+
*/
|
|
71
|
+
function renderCommandBlock(props) {
|
|
72
|
+
const bar = colorize(usesAsciiBorders() ? UI_THEME.commandBar.ascii : UI_THEME.commandBar.unicode, 'info');
|
|
73
|
+
const lines = typeof props.content === 'string' ? props.content.split('\n') : [...props.content];
|
|
74
|
+
const titleLines = props.title ? [formatTitle(props.title, props.titleColor) ?? ''] : [];
|
|
75
|
+
return [...titleLines, ...lines.filter((line) => stripAnsi(line).trim().length > 0)]
|
|
76
|
+
.map((line) => `${bar}${line}`)
|
|
77
|
+
.join('\n');
|
|
78
|
+
}
|
|
40
79
|
function formatTitle(title, color) {
|
|
41
80
|
if (!title) {
|
|
42
81
|
return undefined;
|
|
43
82
|
}
|
|
44
83
|
const normalizedTitle = bold(title.toUpperCase());
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
return normalizedTitle;
|
|
84
|
+
// boxen 9 respeta el estilo que ya trae el titulo, asi que alcanza con colorearlo con el tema.
|
|
85
|
+
return color ? colorize(normalizedTitle, color) : normalizedTitle;
|
|
49
86
|
}
|
|
50
87
|
export function renderPanel(props) {
|
|
88
|
+
const borderType = props.borderType ?? 'common';
|
|
89
|
+
if (borderType === 'command') {
|
|
90
|
+
return renderCommandBlock(props);
|
|
91
|
+
}
|
|
92
|
+
const borderStyle = resolveBorderStyle(borderType);
|
|
51
93
|
const padding = resolvePadding(props.padding);
|
|
52
94
|
const paddingLeft = padding.left ?? 0;
|
|
53
95
|
const paddingRight = padding.right ?? 0;
|
|
54
|
-
const
|
|
96
|
+
const terminalColumns = resolveTerminalColumns();
|
|
97
|
+
// En una terminal angosta el panel se achica para no cortarse: si es mas ancho que la ventana,
|
|
98
|
+
// cada linea se parte y el borde queda roto.
|
|
99
|
+
const terminalLimit = terminalColumns === null ? null : Math.max(MIN_PANEL_WIDTH, terminalColumns);
|
|
100
|
+
const presetMinimumWidth = resolveWidth(props.width);
|
|
101
|
+
const minimumWidth = terminalLimit === null ? presetMinimumWidth : Math.min(presetMinimumWidth, terminalLimit);
|
|
55
102
|
const configuredMaxWidth = props.maxWidth === undefined
|
|
56
103
|
? typeof props.width === 'number'
|
|
57
104
|
? null
|
|
58
105
|
: UI_THEME.widths[props.width ?? 'standard'].max
|
|
59
106
|
: resolveMaxWidth(props.maxWidth);
|
|
60
|
-
const
|
|
107
|
+
const presetMaximumWidth = configuredMaxWidth === null ? Number.POSITIVE_INFINITY : Math.max(minimumWidth, configuredMaxWidth);
|
|
108
|
+
const maximumWidth = terminalLimit === null ? presetMaximumWidth : Math.min(presetMaximumWidth, terminalLimit);
|
|
61
109
|
const contentLines = typeof props.content === 'string' ? props.content.split('\n') : [...props.content];
|
|
62
110
|
const visibleLines = [...contentLines];
|
|
63
111
|
const calculatedWidth = maxVisibleWidth(visibleLines) + paddingLeft + paddingRight + 2;
|
|
64
112
|
const panelWidth = Math.min(maximumWidth, Math.max(minimumWidth, calculatedWidth));
|
|
65
113
|
const innerWidth = Math.max(0, panelWidth - paddingLeft - paddingRight - 2);
|
|
66
|
-
|
|
67
|
-
const footerDividerLine = footerDivider
|
|
68
|
-
?
|
|
114
|
+
// Con junction la linea se une al borde; si no, va por adentro como un divisor `═`.
|
|
115
|
+
const footerDividerLine = props.footerDivider
|
|
116
|
+
? borderStyle.junction
|
|
117
|
+
? DIVIDER_MARKER
|
|
118
|
+
: renderDivider({ character: '═', width: innerWidth })
|
|
69
119
|
: null;
|
|
70
120
|
const footerLine = props.footer
|
|
71
121
|
? renderFooter({
|
|
@@ -77,8 +127,8 @@ export function renderPanel(props) {
|
|
|
77
127
|
const wrappedContentLines = contentLines.flatMap((line) => wrapIndentedPlainText(line, innerWidth));
|
|
78
128
|
const lines = [];
|
|
79
129
|
const hasBodyContent = contentLines.length > 0;
|
|
80
|
-
const hasFooter =
|
|
81
|
-
const hasFooterDivider =
|
|
130
|
+
const hasFooter = footerLine !== null;
|
|
131
|
+
const hasFooterDivider = footerDividerLine !== null;
|
|
82
132
|
if (props.subtitle) {
|
|
83
133
|
lines.push(...renderSubtitle({
|
|
84
134
|
text: props.subtitle,
|
|
@@ -93,22 +143,19 @@ export function renderPanel(props) {
|
|
|
93
143
|
lines.push(...alignLines(wrappedContentLines, innerWidth, props.contentAlign ?? 'left'));
|
|
94
144
|
}
|
|
95
145
|
if (footerDividerLine) {
|
|
96
|
-
lines.push('',
|
|
146
|
+
lines.push('', footerDividerLine);
|
|
97
147
|
}
|
|
98
148
|
if (footerLine) {
|
|
99
|
-
lines.push('',
|
|
100
|
-
text: props.footer ?? '',
|
|
101
|
-
textColor: props.footerColor,
|
|
102
|
-
width: innerWidth,
|
|
103
|
-
}));
|
|
149
|
+
lines.push('', footerLine);
|
|
104
150
|
}
|
|
105
|
-
|
|
151
|
+
const box = boxen(lines.join('\n'), {
|
|
106
152
|
borderColor: props.borderColor,
|
|
107
|
-
borderStyle:
|
|
153
|
+
borderStyle: borderStyle.box,
|
|
108
154
|
padding,
|
|
109
155
|
title: formatTitle(props.title, props.titleColor),
|
|
110
|
-
titleAlignment: props.titleAlignment ?? 'center',
|
|
156
|
+
titleAlignment: props.titleAlignment ?? borderStyle.titleAlignment ?? 'center',
|
|
111
157
|
width: panelWidth,
|
|
112
158
|
});
|
|
159
|
+
return footerDividerLine && borderStyle.junction ? joinDividers(box, borderStyle.junction) : box;
|
|
113
160
|
}
|
|
114
161
|
//# sourceMappingURL=renderPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderPanel.js","sourceRoot":"","sources":["../../../src/ui/primitives/renderPanel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqE,MAAM,OAAO,CAAC;AAE1F,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"renderPanel.js","sourceRoot":"","sources":["../../../src/ui/primitives/renderPanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Columnas de la terminal, o null si no se conocen (pipes, tests, CI). */
|
|
2
|
+
export declare function resolveTerminalColumns(): number | null;
|
|
3
|
+
/** `width` limitado al ancho de la terminal, si se conoce. */
|
|
4
|
+
export declare function fitToTerminal(width: number, minimum?: number): number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Columnas de la terminal, o null si no se conocen (pipes, tests, CI). */
|
|
2
|
+
export function resolveTerminalColumns() {
|
|
3
|
+
const columns = process.stdout.columns || process.stderr.columns;
|
|
4
|
+
return columns && columns > 0 ? columns : null;
|
|
5
|
+
}
|
|
6
|
+
/** `width` limitado al ancho de la terminal, si se conoce. */
|
|
7
|
+
export function fitToTerminal(width, minimum = 24) {
|
|
8
|
+
const columns = resolveTerminalColumns();
|
|
9
|
+
return columns === null ? width : Math.min(width, Math.max(minimum, columns));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=terminalWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminalWidth.js","sourceRoot":"","sources":["../../../src/ui/primitives/terminalWidth.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAEjE,OAAO,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAO,GAAG,EAAE;IACvD,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -11,6 +11,11 @@ export declare function toneText(value: string, color: UiTextColor): string;
|
|
|
11
11
|
export declare function stripAnsi(value: string): string;
|
|
12
12
|
export declare function flattenVisibleLines(lines: readonly string[]): string[];
|
|
13
13
|
export declare function wrapPlainText(value: string, width: number): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Parte lineas que no entran en `width` respetando su sangria.
|
|
16
|
+
* Si la linea es una fila etiqueta/valor, el valor sigue debajo de su propia columna en vez de
|
|
17
|
+
* pegarse a la etiqueta, asi la tabla no se desarma en terminales angostas.
|
|
18
|
+
*/
|
|
14
19
|
export declare function wrapIndentedPlainText(value: string, width: number): string[];
|
|
15
20
|
export declare function maxVisibleWidth(lines: readonly string[]): number;
|
|
16
21
|
export declare function centerText(value: string, width: number): string;
|