Skip to content

Commit

Permalink
fix(cloudformation-diff): string.replace error on cdk context (#2870)
Browse files Browse the repository at this point in the history
`@aws-sdk/cloudformation-diff` depended on version `^2.1.1` of the `string-width`
library in `v0.28.0` of `aws-sdk`. In `v0.29.0`, the dependency was bumped to
`^4.1.0`, which inadvertently broke the `cdk context` command as reported
in: #2854.

The current version of `string-width` executes a [string replacement](sindresorhus/string-width@0bc308a#diff-168726dbe96b3ce427e7fedce31bb0bcR7), which ends up failing
when a non-string (such as the `int` row numbers of the `cdk context`
values). This did not previously occur, as the typecheck for `string`
would cause the function to return early and report zero-length.

The easiest solution here is to cast these values to `string`, which
has the beneficial side effect of ensuring that their character lengths
are taken into consideration rather than being defaulted to `0` as they
had previously been.

Fixes #2854
  • Loading branch information
michaelmoussa authored and RomainMuller committed Jun 14, 2019
1 parent 5cd9609 commit b8a1c8e
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion packages/@aws-cdk/cloudformation-diff/lib/format-table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function calculcateColumnWidths(rows: string[][], terminalWidth: number): number
terminalWidth = Math.max(terminalWidth, 40);

// use 'string-width' to not count ANSI chars as actual character width
const columns = rows[0].map((_, i) => Math.max(...rows.map(row => stringWidth(row[i]))));
const columns = rows[0].map((_, i) => Math.max(...rows.map(row => stringWidth(String(row[i])))));

// If we have no terminal width, do nothing
const contentWidth = terminalWidth - 2 - columns.length * 3;
Expand Down

0 comments on commit b8a1c8e

Please sign in to comment.