arcli 1.2.0 → 1.4.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 +79 -1
- package/README.md +4 -3
- package/dist/cli/commands/billing.command.batch.d.ts +22 -0
- package/dist/cli/commands/billing.command.batch.js +51 -0
- package/dist/cli/commands/billing.command.batch.js.map +1 -0
- package/dist/cli/commands/billing.command.options.js +1 -1
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.d.ts +7 -0
- package/dist/cli/commands/billing.command.parser.js +82 -11
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.shared.js +16 -13
- 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.js +2 -2
- package/dist/cli/commands/fce-obligation.command.js.map +1 -1
- 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/commands/vouchers.command.d.ts +2 -0
- package/dist/cli/commands/vouchers.command.js +96 -0
- package/dist/cli/commands/vouchers.command.js.map +1 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +23 -1
- 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/advanced-options.d.ts +14 -0
- package/dist/cli/interactive/advanced-options.js +126 -0
- package/dist/cli/interactive/advanced-options.js.map +1 -0
- package/dist/cli/interactive/history.flow.d.ts +2 -0
- package/dist/cli/interactive/history.flow.js +22 -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 +93 -0
- package/dist/cli/interactive/interactive-mode.js.map +1 -0
- package/dist/cli/interactive/invoice.flow.d.ts +22 -0
- package/dist/cli/interactive/invoice.flow.js +132 -0
- package/dist/cli/interactive/invoice.flow.js.map +1 -0
- package/dist/cli/interactive/note.flow.d.ts +26 -0
- package/dist/cli/interactive/note.flow.js +236 -0
- package/dist/cli/interactive/note.flow.js.map +1 -0
- package/dist/cli/interactive/prompts.d.ts +21 -0
- package/dist/cli/interactive/prompts.js +46 -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 +88 -0
- package/dist/cli/interactive/session.js.map +1 -0
- package/dist/cli/interactive/validators.d.ts +9 -0
- package/dist/cli/interactive/validators.js +35 -0
- package/dist/cli/interactive/validators.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/modules/billing/billing.amounts.d.ts +1 -1
- package/dist/modules/billing/billing.amounts.js +34 -13
- package/dist/modules/billing/billing.amounts.js.map +1 -1
- package/dist/modules/billing/billing.batch.d.ts +23 -0
- package/dist/modules/billing/billing.batch.js +43 -0
- package/dist/modules/billing/billing.batch.js.map +1 -0
- package/dist/modules/billing/billing.display.js +16 -7
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.iva-receptor.d.ts +1 -0
- package/dist/modules/billing/billing.iva-receptor.js +3 -0
- package/dist/modules/billing/billing.iva-receptor.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +35 -4
- package/dist/modules/billing/billing.schemas.js +26 -6
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.text.js +10 -6
- package/dist/modules/billing/billing.text.js.map +1 -1
- package/dist/modules/config/config-value-parser.js +2 -1
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.presenter.js +2 -2
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +2 -2
- package/dist/modules/examples/examples.js +2 -13
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js.map +1 -1
- 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 +98 -0
- package/dist/modules/interactive/equivalent-command.js.map +1 -0
- package/dist/modules/interactive/wizard.d.ts +16 -0
- package/dist/modules/interactive/wizard.js +33 -0
- package/dist/modules/interactive/wizard.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/modules/vouchers/voucher-history.d.ts +34 -0
- package/dist/modules/vouchers/voucher-history.js +43 -0
- package/dist/modules/vouchers/voucher-history.js.map +1 -0
- package/dist/modules/vouchers/voucher-history.presenter.d.ts +22 -0
- package/dist/modules/vouchers/voucher-history.presenter.js +108 -0
- package/dist/modules/vouchers/voucher-history.presenter.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 +36 -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.presenter.js +11 -1
- package/dist/ui/presenters/errors.presenter.js.map +1 -1
- package/dist/ui/presenters/errors.zod-presenter.d.ts +2 -0
- package/dist/ui/presenters/errors.zod-presenter.js +4 -0
- package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
- package/dist/ui/presenters/index.d.ts +1 -0
- package/dist/ui/presenters/index.js +1 -0
- package/dist/ui/presenters/index.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 +10 -0
- package/dist/ui/primitives/text.js +101 -30
- 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 +15 -2
- package/package.json +15 -13
|
@@ -82,6 +82,10 @@ function formatPublicIssuePath(path) {
|
|
|
82
82
|
const pathKey = formatZodIssuePath(path);
|
|
83
83
|
return ZOD_PUBLIC_PATHS[pathKey] ?? path.map((segment) => String(segment));
|
|
84
84
|
}
|
|
85
|
+
/** Resumen de una linea, para listar errores por item (por ejemplo, en un lote). */
|
|
86
|
+
export function summarizeZodError(error) {
|
|
87
|
+
return error.issues.map((issue) => humanizeZodIssue(issue)).join(' ');
|
|
88
|
+
}
|
|
85
89
|
export function formatZodError(error, useJson) {
|
|
86
90
|
if (useJson) {
|
|
87
91
|
return renderJson({
|
|
@@ -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,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,sBAAsB;IACzC,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,WAAW;IACzB,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,eAAe;IACzB,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,gBAAgB;IAC9B,OAAO,EAAE,iBAAiB;IAC1B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,qBAAqB;IACrC,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,oBAAoB;CACpC,CAAC;AAEF,MAAM,gBAAgB,GAA6B;IACjD,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,CAAC,qBAAqB,CAAC;IAC1C,WAAW,EAAE,CAAC,kBAAkB,CAAC;IACjC,YAAY,EAAE,CAAC,WAAW,CAAC;IAC3B,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,YAAY,EAAE,CAAC,cAAc,CAAC;IAC9B,cAAc,EAAE,CAAC,iBAAiB,CAAC;IACnC,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,YAAY,EAAE,CAAC,kBAAkB,CAAC;IAClC,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,YAAY,EAAE,CAAC,aAAa,CAAC;IAC7B,cAAc,EAAE,CAAC,iBAAiB,CAAC;IACnC,WAAW,EAAE,CAAC,YAAY,CAAC;IAC3B,YAAY,EAAE,CAAC,aAAa,CAAC;IAC7B,cAAc,EAAE,CAAC,eAAe,CAAC;IACjC,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,WAAW,EAAE,CAAC,YAAY,CAAC;IAC3B,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,aAAa,EAAE,CAAC,kBAAkB,CAAC;CACpC,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAmB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiC;IACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IAElD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,SAAS,KAAK,GAAG,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpE,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC9B,OAAO,8BAA8B,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,OAAO,GAAG,CAAC;IAChG,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,kDAAkD,aAAa,GAAG,CAAC;IAC7H,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC;IACxF,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAmB;IAChD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,OAAgB;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC;YAChB,MAAM,EAAE,wBAAwB;YAChC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;gBAChC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;aACxC,CAAC,CAAC;YACH,KAAK,EAAE,uDAAuD;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;QAElD,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CACf,kBAAkB,EAClB,uDAAuD,EACvD,WAAW,EACX,qEAAqE,CACtE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.zod-presenter.js","sourceRoot":"","sources":["../../../src/ui/presenters/errors.zod-presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/presenters/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/presenters/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,cAAc,sBAAsB,CAAC"}
|
|
@@ -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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { type UiColorToken } from '../theme/theme';
|
|
2
2
|
export type OutputTarget = 'stderr' | 'stdout';
|
|
3
3
|
export type UiTextColor = UiColorToken | string;
|
|
4
|
+
/**
|
|
5
|
+
* Colores solo en una terminal real. Con la salida redirigida (pipe, archivo, `| jq`) `isTTY` es
|
|
6
|
+
* `undefined`: antes se trataba como terminal y el JSON salia con codigos ANSI que lo rompian.
|
|
7
|
+
* `NO_COLOR` los apaga siempre; `FORCE_COLOR` los fuerza aunque no haya terminal.
|
|
8
|
+
*/
|
|
4
9
|
export declare function shouldUseColor(target?: OutputTarget): boolean;
|
|
5
10
|
export declare function supportsColor(target?: OutputTarget): boolean;
|
|
6
11
|
export declare function resolveTextColor(color: UiTextColor): string;
|
|
@@ -11,6 +16,11 @@ export declare function toneText(value: string, color: UiTextColor): string;
|
|
|
11
16
|
export declare function stripAnsi(value: string): string;
|
|
12
17
|
export declare function flattenVisibleLines(lines: readonly string[]): string[];
|
|
13
18
|
export declare function wrapPlainText(value: string, width: number): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Parte lineas que no entran en `width` respetando su sangria.
|
|
21
|
+
* Si la linea es una fila etiqueta/valor, el valor sigue debajo de su propia columna en vez de
|
|
22
|
+
* pegarse a la etiqueta, asi la tabla no se desarma en terminales angostas.
|
|
23
|
+
*/
|
|
14
24
|
export declare function wrapIndentedPlainText(value: string, width: number): string[];
|
|
15
25
|
export declare function maxVisibleWidth(lines: readonly string[]): number;
|
|
16
26
|
export declare function centerText(value: string, width: number): string;
|
|
@@ -5,12 +5,22 @@ 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';
|
|
9
|
+
/**
|
|
10
|
+
* Colores solo en una terminal real. Con la salida redirigida (pipe, archivo, `| jq`) `isTTY` es
|
|
11
|
+
* `undefined`: antes se trataba como terminal y el JSON salia con codigos ANSI que lo rompian.
|
|
12
|
+
* `NO_COLOR` los apaga siempre; `FORCE_COLOR` los fuerza aunque no haya terminal.
|
|
13
|
+
*/
|
|
8
14
|
export function shouldUseColor(target = 'stdout') {
|
|
9
15
|
if (process.env.NO_COLOR) {
|
|
10
16
|
return false;
|
|
11
17
|
}
|
|
18
|
+
const forceColor = process.env.FORCE_COLOR;
|
|
19
|
+
if (forceColor !== undefined && forceColor !== '') {
|
|
20
|
+
return forceColor !== '0' && forceColor.toLowerCase() !== 'false';
|
|
21
|
+
}
|
|
12
22
|
const stream = target === 'stderr' ? process.stderr : process.stdout;
|
|
13
|
-
return stream.isTTY
|
|
23
|
+
return stream.isTTY === true;
|
|
14
24
|
}
|
|
15
25
|
export function supportsColor(target = 'stdout') {
|
|
16
26
|
return shouldUseColor(target);
|
|
@@ -32,7 +42,10 @@ export function colorize(value, color, target = 'stdout') {
|
|
|
32
42
|
if (!shouldUseColor(target)) {
|
|
33
43
|
return value;
|
|
34
44
|
}
|
|
35
|
-
|
|
45
|
+
const open = resolveTextColor(color);
|
|
46
|
+
// El atenuado (muted) no se apaga con COLOR_OFF: si se cerrara asi quedaria prendido y
|
|
47
|
+
// apagaria todo lo que se imprime despues. Se cierra igual que la negrita.
|
|
48
|
+
return wrapLines(value, open, open === DIM ? BOLD_OFF : COLOR_OFF);
|
|
36
49
|
}
|
|
37
50
|
export function bold(value, target = 'stdout') {
|
|
38
51
|
if (!shouldUseColor(target)) {
|
|
@@ -90,6 +103,74 @@ export function wrapPlainText(value, width) {
|
|
|
90
103
|
return wrapped.length > 0 ? wrapped : [''];
|
|
91
104
|
});
|
|
92
105
|
}
|
|
106
|
+
// Reparte palabras en lineas de `width` columnas visibles. La primera linea arranca con `firstPrefix`
|
|
107
|
+
// y las siguientes con `continuationPrefix`; las palabras mas largas que el espacio se cortan.
|
|
108
|
+
function wrapWords(words, firstPrefix, continuationPrefix, width) {
|
|
109
|
+
const availableWidth = Math.max(1, width - stripAnsi(continuationPrefix).length);
|
|
110
|
+
const wrapped = [];
|
|
111
|
+
let currentLine = firstPrefix;
|
|
112
|
+
let currentHasWords = false;
|
|
113
|
+
for (const word of words) {
|
|
114
|
+
const candidate = currentHasWords ? `${currentLine} ${word}` : `${currentLine}${word}`;
|
|
115
|
+
if (stripAnsi(candidate).length <= width) {
|
|
116
|
+
currentLine = candidate;
|
|
117
|
+
currentHasWords = true;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (currentHasWords) {
|
|
121
|
+
wrapped.push(currentLine);
|
|
122
|
+
}
|
|
123
|
+
let remaining = word;
|
|
124
|
+
while (stripAnsi(remaining).length > availableWidth) {
|
|
125
|
+
wrapped.push(`${continuationPrefix}${remaining.slice(0, availableWidth)}`);
|
|
126
|
+
remaining = remaining.slice(availableWidth);
|
|
127
|
+
}
|
|
128
|
+
currentLine = `${continuationPrefix}${remaining}`;
|
|
129
|
+
currentHasWords = true;
|
|
130
|
+
}
|
|
131
|
+
if (currentHasWords) {
|
|
132
|
+
wrapped.push(currentLine);
|
|
133
|
+
}
|
|
134
|
+
return wrapped;
|
|
135
|
+
}
|
|
136
|
+
// eslint-disable-next-line no-control-regex
|
|
137
|
+
const ANSI_SEQUENCE = /^\u001B\[[0-9;]*m/;
|
|
138
|
+
// Corta `line` en la columna visible `column`, sin partir secuencias ANSI: los codigos que caen
|
|
139
|
+
// antes de esa columna (por ejemplo el cierre de una etiqueta en negrita) quedan en la primera parte.
|
|
140
|
+
function splitAtVisibleColumn(line, column) {
|
|
141
|
+
let visible = 0;
|
|
142
|
+
let index = 0;
|
|
143
|
+
while (index < line.length && visible < column) {
|
|
144
|
+
const ansi = ANSI_SEQUENCE.exec(line.slice(index));
|
|
145
|
+
if (ansi) {
|
|
146
|
+
index += ansi[0].length;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
visible += 1;
|
|
150
|
+
index += 1;
|
|
151
|
+
}
|
|
152
|
+
// Los codigos ANSI pegados al corte tambien van con la primera parte.
|
|
153
|
+
for (let ansi = ANSI_SEQUENCE.exec(line.slice(index)); ansi; ansi = ANSI_SEQUENCE.exec(line.slice(index))) {
|
|
154
|
+
index += ansi[0].length;
|
|
155
|
+
}
|
|
156
|
+
return [line.slice(0, index), line.slice(index)];
|
|
157
|
+
}
|
|
158
|
+
// Saca los espacios del final sin perder los codigos ANSI que haya entre ellos (el cierre de una negrita).
|
|
159
|
+
function trimTrailingSpaces(value) {
|
|
160
|
+
// eslint-disable-next-line no-control-regex
|
|
161
|
+
const codes = value.match(/(?:\u001B\[[0-9;]*m)+\s*$/)?.[0]?.replace(/\s/g, '') ?? '';
|
|
162
|
+
// eslint-disable-next-line no-control-regex
|
|
163
|
+
return `${value.replace(/(?:\s|\u001B\[[0-9;]*m)+$/, '')}${codes}`;
|
|
164
|
+
}
|
|
165
|
+
// Filas "etiqueta + 2 o mas espacios + valor", como las de las tablas de los paneles.
|
|
166
|
+
const LABEL_VALUE_LINE = /^(\s*\S(?:.*?\S)?\s{2,})(\S.*)$/;
|
|
167
|
+
// Espacio minimo para el valor; con menos, conviene partir la linea entera.
|
|
168
|
+
const MIN_VALUE_COLUMN_WIDTH = 12;
|
|
169
|
+
/**
|
|
170
|
+
* Parte lineas que no entran en `width` respetando su sangria.
|
|
171
|
+
* Si la linea es una fila etiqueta/valor, el valor sigue debajo de su propia columna en vez de
|
|
172
|
+
* pegarse a la etiqueta, asi la tabla no se desarma en terminales angostas.
|
|
173
|
+
*/
|
|
93
174
|
export function wrapIndentedPlainText(value, width) {
|
|
94
175
|
if (width <= 0) {
|
|
95
176
|
return [value];
|
|
@@ -98,39 +179,29 @@ export function wrapIndentedPlainText(value, width) {
|
|
|
98
179
|
if (stripAnsi(line).length <= width) {
|
|
99
180
|
return [line];
|
|
100
181
|
}
|
|
182
|
+
// La columna se busca sobre el texto visible: con ANSI (etiquetas en negrita) la regex cortaria mal.
|
|
183
|
+
const columnMatch = LABEL_VALUE_LINE.exec(stripAnsi(line));
|
|
184
|
+
const prefixWidth = columnMatch?.[1]?.length ?? 0;
|
|
185
|
+
if (columnMatch) {
|
|
186
|
+
const [prefix, rest] = splitAtVisibleColumn(line, prefixWidth);
|
|
187
|
+
const values = rest.split(/\s+/);
|
|
188
|
+
if (width - prefixWidth >= MIN_VALUE_COLUMN_WIDTH) {
|
|
189
|
+
return wrapWords(values, prefix, ' '.repeat(prefixWidth), width);
|
|
190
|
+
}
|
|
191
|
+
// Sin lugar para la columna: etiqueta en una linea y el valor debajo, con sangria.
|
|
192
|
+
const indent = columnMatch[1]?.match(/^\s*/)?.[0] ?? '';
|
|
193
|
+
const valueIndent = `${indent} `;
|
|
194
|
+
return [
|
|
195
|
+
...wrapWords([trimTrailingSpaces(prefix)], '', indent, width),
|
|
196
|
+
...wrapWords(values, valueIndent, valueIndent, width),
|
|
197
|
+
];
|
|
198
|
+
}
|
|
101
199
|
const indent = line.match(/^\s*/)?.[0] ?? '';
|
|
102
200
|
const content = line.slice(indent.length).trimStart();
|
|
103
|
-
const continuationIndent = indent;
|
|
104
|
-
const availableWidth = Math.max(1, width - stripAnsi(continuationIndent).length);
|
|
105
201
|
if (!content) {
|
|
106
202
|
return [line];
|
|
107
203
|
}
|
|
108
|
-
const
|
|
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
|
-
}
|
|
204
|
+
const wrapped = wrapWords(content.split(/\s+/), indent, indent, width);
|
|
134
205
|
return wrapped.length > 0 ? wrapped : [line];
|
|
135
206
|
});
|
|
136
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui/primitives/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAE7D,MAAM,IAAI,GAAG,WAAW,CAAC;AACzB,6EAA6E;AAC7E,0EAA0E;AAC1E,8BAA8B;AAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC9B,MAAM,SAAS,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui/primitives/text.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/theme/theme.d.ts
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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: {
|