table 6.9.5 → 6.10.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/README.md +46 -10
- package/dist/src/alignSpanningCell.js +1 -5
- package/dist/src/alignSpanningCell.js.map +1 -1
- package/dist/src/alignString.js +1 -5
- package/dist/src/alignString.js.map +1 -1
- package/dist/src/calculateMaximumColumnWidths.js +1 -5
- package/dist/src/calculateMaximumColumnWidths.js.map +1 -1
- package/dist/src/createStream.js +14 -0
- package/dist/src/createStream.js.map +1 -1
- package/dist/src/truncateTableData.js +2 -4
- package/dist/src/truncateTableData.js.map +1 -1
- package/dist/src/types/api.d.ts +5 -0
- package/dist/src/utils.js +94 -3
- package/dist/src/utils.js.map +1 -1
- package/dist/src/wrapString.js +4 -10
- package/dist/src/wrapString.js.map +1 -1
- package/dist/src/wrapWord.js +2 -7
- package/dist/src/wrapWord.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<a name="user-content-table"></a>
|
|
1
2
|
<a name="table"></a>
|
|
2
3
|
# Table
|
|
3
4
|
|
|
@@ -9,18 +10,19 @@
|
|
|
9
10
|
[](https://github.com/gajus/canonical)
|
|
10
11
|
[](https://twitter.com/kuizinas)
|
|
11
12
|
|
|
12
|
-
* [Table](#table)
|
|
13
|
-
* [Features](#table-features)
|
|
14
|
-
* [Install](#table-install)
|
|
15
|
-
* [Usage](#table-usage)
|
|
16
|
-
* [API](#table-api)
|
|
17
|
-
* [table](#table-api-table-1)
|
|
18
|
-
* [createStream](#table-api-createstream)
|
|
19
|
-
* [getBorderCharacters](#table-api-getbordercharacters)
|
|
13
|
+
* [Table](#user-content-table)
|
|
14
|
+
* [Features](#user-content-table-features)
|
|
15
|
+
* [Install](#user-content-table-install)
|
|
16
|
+
* [Usage](#user-content-table-usage)
|
|
17
|
+
* [API](#user-content-table-api)
|
|
18
|
+
* [table](#user-content-table-api-table-1)
|
|
19
|
+
* [createStream](#user-content-table-api-createstream)
|
|
20
|
+
* [getBorderCharacters](#user-content-table-api-getbordercharacters)
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|

|
|
23
24
|
|
|
25
|
+
<a name="user-content-table-features"></a>
|
|
24
26
|
<a name="table-features"></a>
|
|
25
27
|
## Features
|
|
26
28
|
|
|
@@ -32,6 +34,7 @@
|
|
|
32
34
|
* Configurable column width.
|
|
33
35
|
* Text wrapping.
|
|
34
36
|
|
|
37
|
+
<a name="user-content-table-install"></a>
|
|
35
38
|
<a name="table-install"></a>
|
|
36
39
|
## Install
|
|
37
40
|
|
|
@@ -43,6 +46,7 @@ npm install table
|
|
|
43
46
|
[](https://www.patreon.com/gajus)
|
|
44
47
|
|
|
45
48
|
|
|
49
|
+
<a name="user-content-table-usage"></a>
|
|
46
50
|
<a name="table-usage"></a>
|
|
47
51
|
## Usage
|
|
48
52
|
|
|
@@ -73,9 +77,11 @@ console.log(table(data));
|
|
|
73
77
|
```
|
|
74
78
|
|
|
75
79
|
|
|
80
|
+
<a name="user-content-table-api"></a>
|
|
76
81
|
<a name="table-api"></a>
|
|
77
82
|
## API
|
|
78
83
|
|
|
84
|
+
<a name="user-content-table-api-table-1"></a>
|
|
79
85
|
<a name="table-api-table-1"></a>
|
|
80
86
|
### table
|
|
81
87
|
|
|
@@ -90,11 +96,12 @@ Returns the string in the table format
|
|
|
90
96
|
- Type: `object`
|
|
91
97
|
- Required: `false`
|
|
92
98
|
|
|
99
|
+
<a name="user-content-table-api-table-1-config-border"></a>
|
|
93
100
|
<a name="table-api-table-1-config-border"></a>
|
|
94
101
|
##### config.border
|
|
95
102
|
|
|
96
103
|
Type: `{ [type: string]: string }`\
|
|
97
|
-
Default: `honeywell` [template](#getbordercharacters)
|
|
104
|
+
Default: `honeywell` [template](#user-content-getbordercharacters)
|
|
98
105
|
|
|
99
106
|
Custom borders. The keys are any of:
|
|
100
107
|
- `topLeft`, `topRight`, `topBody`,`topJoin`
|
|
@@ -146,6 +153,7 @@ console.log(table(data, config));
|
|
|
146
153
|
└────┴────┴────┘
|
|
147
154
|
```
|
|
148
155
|
|
|
156
|
+
<a name="user-content-table-api-table-1-config-drawverticalline"></a>
|
|
149
157
|
<a name="table-api-table-1-config-drawverticalline"></a>
|
|
150
158
|
##### config.drawVerticalLine
|
|
151
159
|
|
|
@@ -189,6 +197,7 @@ console.log(table(data, config));
|
|
|
189
197
|
|
|
190
198
|
```
|
|
191
199
|
|
|
200
|
+
<a name="user-content-table-api-table-1-config-drawhorizontalline"></a>
|
|
192
201
|
<a name="table-api-table-1-config-drawhorizontalline"></a>
|
|
193
202
|
##### config.drawHorizontalLine
|
|
194
203
|
|
|
@@ -231,6 +240,7 @@ console.log(table(data, config));
|
|
|
231
240
|
|
|
232
241
|
```
|
|
233
242
|
|
|
243
|
+
<a name="user-content-table-api-table-1-config-singleline"></a>
|
|
234
244
|
<a name="table-api-table-1-config-singleline"></a>
|
|
235
245
|
##### config.singleLine
|
|
236
246
|
|
|
@@ -272,6 +282,7 @@ console.log(table(data, config));
|
|
|
272
282
|
```
|
|
273
283
|
|
|
274
284
|
|
|
285
|
+
<a name="user-content-table-api-table-1-config-columns"></a>
|
|
275
286
|
<a name="table-api-table-1-config-columns"></a>
|
|
276
287
|
##### config.columns
|
|
277
288
|
|
|
@@ -279,6 +290,7 @@ Type: `Column[] | { [columnIndex: number]: Column }`
|
|
|
279
290
|
|
|
280
291
|
Column specific configurations.
|
|
281
292
|
|
|
293
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-width"></a>
|
|
282
294
|
<a name="table-api-table-1-config-columns-config-columns-width"></a>
|
|
283
295
|
###### config.columns[*].width
|
|
284
296
|
|
|
@@ -314,6 +326,7 @@ console.log(table(data, config));
|
|
|
314
326
|
╚════╧════════════╧════╝
|
|
315
327
|
```
|
|
316
328
|
|
|
329
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-alignment"></a>
|
|
317
330
|
<a name="table-api-table-1-config-columns-config-columns-alignment"></a>
|
|
318
331
|
###### config.columns[*].alignment
|
|
319
332
|
|
|
@@ -354,6 +367,7 @@ console.log(table(data, config));
|
|
|
354
367
|
╚════════════╧════════════╧════════════╧════════════╝
|
|
355
368
|
```
|
|
356
369
|
|
|
370
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-verticalalignment"></a>
|
|
357
371
|
<a name="table-api-table-1-config-columns-config-columns-verticalalignment"></a>
|
|
358
372
|
###### config.columns[*].verticalAlignment
|
|
359
373
|
|
|
@@ -389,6 +403,7 @@ console.log(table(data, config));
|
|
|
389
403
|
╚═══╧═══╧═══╧═══╝
|
|
390
404
|
```
|
|
391
405
|
|
|
406
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-paddingleft"></a>
|
|
392
407
|
<a name="table-api-table-1-config-columns-config-columns-paddingleft"></a>
|
|
393
408
|
###### config.columns[*].paddingLeft
|
|
394
409
|
|
|
@@ -397,6 +412,7 @@ Default: `1`
|
|
|
397
412
|
|
|
398
413
|
The number of whitespaces used to pad the content on the left.
|
|
399
414
|
|
|
415
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-paddingright"></a>
|
|
400
416
|
<a name="table-api-table-1-config-columns-config-columns-paddingright"></a>
|
|
401
417
|
###### config.columns[*].paddingRight
|
|
402
418
|
|
|
@@ -442,6 +458,7 @@ console.log(table(data, config));
|
|
|
442
458
|
╚══════╧══════╧════╝
|
|
443
459
|
```
|
|
444
460
|
|
|
461
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-truncate"></a>
|
|
445
462
|
<a name="table-api-table-1-config-columns-config-columns-truncate"></a>
|
|
446
463
|
###### config.columns[*].truncate
|
|
447
464
|
|
|
@@ -449,7 +466,7 @@ Type: `number`\
|
|
|
449
466
|
Default: `Infinity`
|
|
450
467
|
|
|
451
468
|
The number of characters is which the content will be truncated.
|
|
452
|
-
To handle a content that overflows the container width, `table` package implements [text wrapping](#config.columns[*].wrapWord). However, sometimes you may want to truncate content that is too long to be displayed in the table.
|
|
469
|
+
To handle a content that overflows the container width, `table` package implements [text wrapping](#user-content-config.columns[*].wrapWord). However, sometimes you may want to truncate content that is too long to be displayed in the table.
|
|
453
470
|
|
|
454
471
|
```js
|
|
455
472
|
const data = [
|
|
@@ -478,6 +495,7 @@ console.log(table(data, config));
|
|
|
478
495
|
╚══════════════════════╝
|
|
479
496
|
```
|
|
480
497
|
|
|
498
|
+
<a name="user-content-table-api-table-1-config-columns-config-columns-wrapword"></a>
|
|
481
499
|
<a name="table-api-table-1-config-columns-config-columns-wrapword"></a>
|
|
482
500
|
###### config.columns[*].wrapWord
|
|
483
501
|
|
|
@@ -532,6 +550,7 @@ When `wrapWord` is `true`:
|
|
|
532
550
|
```
|
|
533
551
|
|
|
534
552
|
|
|
553
|
+
<a name="user-content-table-api-table-1-config-columndefault"></a>
|
|
535
554
|
<a name="table-api-table-1-config-columndefault"></a>
|
|
536
555
|
##### config.columnDefault
|
|
537
556
|
|
|
@@ -541,6 +560,7 @@ Default: `{}`
|
|
|
541
560
|
The default configuration for all columns. Column-specific settings will overwrite the default values.
|
|
542
561
|
|
|
543
562
|
|
|
563
|
+
<a name="user-content-table-api-table-1-config-header"></a>
|
|
544
564
|
<a name="table-api-table-1-config-header"></a>
|
|
545
565
|
##### config.header
|
|
546
566
|
|
|
@@ -591,6 +611,7 @@ console.log(table(data, config));
|
|
|
591
611
|
```
|
|
592
612
|
|
|
593
613
|
|
|
614
|
+
<a name="user-content-table-api-table-1-config-spanningcells"></a>
|
|
594
615
|
<a name="table-api-table-1-config-spanningcells"></a>
|
|
595
616
|
##### config.spanningCells
|
|
596
617
|
|
|
@@ -667,6 +688,7 @@ console.log(table(data, config));
|
|
|
667
688
|
```
|
|
668
689
|
|
|
669
690
|
|
|
691
|
+
<a name="user-content-table-api-createstream"></a>
|
|
670
692
|
<a name="table-api-createstream"></a>
|
|
671
693
|
### createStream
|
|
672
694
|
|
|
@@ -699,6 +721,18 @@ setInterval(() => {
|
|
|
699
721
|
|
|
700
722
|
The underlying implementation is explained in this [Stack Overflow answer](http://stackoverflow.com/a/32938658/368691).
|
|
701
723
|
|
|
724
|
+
The cursor stays at the end of the table after each row, so that the next row can replace the bottom border. Call `stream.end()` after the last row to move the cursor below the table, so that whatever is printed next does not overwrite it. A stream cannot be written to after it has ended.
|
|
725
|
+
|
|
726
|
+
```js
|
|
727
|
+
const stream = createStream(config);
|
|
728
|
+
|
|
729
|
+
for (const row of rows) {
|
|
730
|
+
stream.write(row);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
stream.end();
|
|
734
|
+
```
|
|
735
|
+
|
|
702
736
|
Streaming supports all of the configuration properties and functionality of a static table (such as auto text wrapping, alignment and padding), e.g.
|
|
703
737
|
|
|
704
738
|
```js
|
|
@@ -738,6 +772,7 @@ setInterval(() => {
|
|
|
738
772
|

|
|
739
773
|
|
|
740
774
|
|
|
775
|
+
<a name="user-content-table-api-getbordercharacters"></a>
|
|
741
776
|
<a name="table-api-getbordercharacters"></a>
|
|
742
777
|
### getBorderCharacters
|
|
743
778
|
|
|
@@ -807,6 +842,7 @@ console.log(table(data, config));
|
|
|
807
842
|
|
|
808
843
|
Raise [an issue](https://github.com/gajus/table/issues) if you'd like to contribute a new border template.
|
|
809
844
|
|
|
845
|
+
<a name="user-content-table-api-getbordercharacters-borderless-table"></a>
|
|
810
846
|
<a name="table-api-getbordercharacters-borderless-table"></a>
|
|
811
847
|
#### Borderless Table
|
|
812
848
|
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;
|
|
7
|
-
const string_width_1 = __importDefault(require("string-width"));
|
|
8
4
|
const alignString_1 = require("./alignString");
|
|
9
5
|
const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
|
|
10
6
|
const padTableData_1 = require("./padTableData");
|
|
@@ -39,7 +35,7 @@ const alignVerticalRangeContent = (range, content, context) => {
|
|
|
39
35
|
const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;
|
|
40
36
|
return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {
|
|
41
37
|
if (line.length === 0) {
|
|
42
|
-
return ' '.repeat((0,
|
|
38
|
+
return ' '.repeat((0, utils_1.stringWidth)(content[0]));
|
|
43
39
|
}
|
|
44
40
|
return line;
|
|
45
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignSpanningCell.js","sourceRoot":"","sources":["../../src/alignSpanningCell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alignSpanningCell.js","sourceRoot":"","sources":["../../src/alignSpanningCell.ts"],"names":[],"mappings":";;;AAAA,+CAEuB;AACvB,qEAEkC;AAClC,iDAEwB;AAIxB,2DAE6B;AAI7B,mCAEiB;AACjB,yCAEoB;AAEpB;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,WAAwB,EAAE,UAAkB,EAAE,OAA4B,EAAY,EAAE;IACvH,MAAM,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,GAAG,WAAW,CAAC;IAExF,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;IAE7D,OAAO,IAAA,mBAAQ,EAAC,IAAA,kCAAc,EAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9F,MAAM,WAAW,GAAG,IAAA,yBAAW,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAE/D,OAAO,IAAA,wBAAS,EAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B;AAEK,MAAM,yBAAyB,GAAG,CAAC,KAAkB,EAAE,OAAiB,EAAE,OAA4B,EAAE,EAAE;IAC/G,MAAM,EAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAC,GAAG,OAAO,CAAC;IACvD,MAAM,EAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAC,GAAG,KAAK,CAAC;IAExD,yDAAyD;IACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,eAAe,GAAG,IAAA,gBAAQ,EAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxD,MAAM,2BAA2B,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,EAAE;QAC9G,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEV,MAAM,oBAAoB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CAAC;IAE/F,OAAO,IAAA,0CAAiB,EAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAxBW,QAAA,yBAAyB,6BAwBpC"}
|
package/dist/src/alignString.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.alignString = void 0;
|
|
7
|
-
const string_width_1 = __importDefault(require("string-width"));
|
|
8
4
|
const utils_1 = require("./utils");
|
|
9
5
|
const alignLeft = (subject, width) => {
|
|
10
6
|
return subject + ' '.repeat(width);
|
|
@@ -34,7 +30,7 @@ const alignJustify = (subject, width) => {
|
|
|
34
30
|
* text in a desired alignment within a container.
|
|
35
31
|
*/
|
|
36
32
|
const alignString = (subject, containerWidth, alignment) => {
|
|
37
|
-
const subjectWidth = (0,
|
|
33
|
+
const subjectWidth = (0, utils_1.stringWidth)(subject);
|
|
38
34
|
if (subjectWidth === containerWidth) {
|
|
39
35
|
return subject;
|
|
40
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignString.js","sourceRoot":"","sources":["../../src/alignString.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alignString.js","sourceRoot":"","sources":["../../src/alignString.ts"],"names":[],"mappings":";;;AAGA,mCAEiB;AAEjB,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE;IAC3D,OAAO,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE;IAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE;IAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE;IAC9D,MAAM,kBAAkB,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;IAEvD,IAAI,kBAAkB,KAAK,CAAC,EAAE;QAC5B,OAAO,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAClC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAkB,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAEnE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE;QACjC,OAAO,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAClC;IAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE;QAC5C,OAAO,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,cAAsB,EAAE,SAAoB,EAAU,EAAE;IACnG,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,YAAY,KAAK,cAAc,EAAE;QACnC,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,YAAY,GAAG,cAAc,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;KAC9F;IAED,IAAI,YAAY,KAAK,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACnC;IAED,MAAM,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC;IAErD,IAAI,SAAS,KAAK,MAAM,EAAE;QACxB,OAAO,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAC3C;IAED,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAC5C;IAED,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAC9C;IAED,OAAO,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAC9C,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;
|
|
7
|
-
const string_width_1 = __importDefault(require("string-width"));
|
|
8
4
|
const utils_1 = require("./utils");
|
|
9
5
|
const calculateMaximumCellWidth = (cell) => {
|
|
10
|
-
return Math.max(...cell.split('\n').map(
|
|
6
|
+
return Math.max(...cell.split('\n').map(utils_1.stringWidth));
|
|
11
7
|
};
|
|
12
8
|
exports.calculateMaximumCellWidth = calculateMaximumCellWidth;
|
|
13
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateMaximumColumnWidths.js","sourceRoot":"","sources":["../../src/calculateMaximumColumnWidths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calculateMaximumColumnWidths.js","sourceRoot":"","sources":["../../src/calculateMaximumColumnWidths.ts"],"names":[],"mappings":";;;AAOA,mCAEiB;AAEV,MAAM,yBAAyB,GAAG,CAAC,IAAU,EAAU,EAAE;IAC9D,OAAO,IAAI,CAAC,GAAG,CACb,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,mBAAW,CAAC,CACrC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,yBAAyB,6BAIpC;AAEF;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAAC,IAAW,EAAE,sBAA4C,EAAE,EAAY,EAAE;IACpH,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,gCAAwB,CAAC,CAAC;IAE3E,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;gBACtD,OAAO,IAAA,qBAAa,EAAC,EAAC,GAAG,EAAE,SAAS;oBAClC,GAAG,EAAE,QAAQ,EAAC,EAAE,eAAe,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE;gBAC5F,OAAO;aACR;YACD,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAA,iCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAnBW,QAAA,4BAA4B,gCAmBvC"}
|
package/dist/src/createStream.js
CHANGED
|
@@ -55,8 +55,22 @@ const createStream = (userConfig) => {
|
|
|
55
55
|
return column.width + column.paddingLeft + column.paddingRight;
|
|
56
56
|
});
|
|
57
57
|
let empty = true;
|
|
58
|
+
let ended = false;
|
|
58
59
|
return {
|
|
60
|
+
end: () => {
|
|
61
|
+
if (ended) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
ended = true;
|
|
65
|
+
// Rows are written without a trailing newline, so that the next row can replace the bottom border.
|
|
66
|
+
if (!empty) {
|
|
67
|
+
process.stdout.write('\n');
|
|
68
|
+
}
|
|
69
|
+
},
|
|
59
70
|
write: (row) => {
|
|
71
|
+
if (ended) {
|
|
72
|
+
throw new Error('Cannot write to a stream that has ended.');
|
|
73
|
+
}
|
|
60
74
|
if (row.length !== config.columnCount) {
|
|
61
75
|
throw new Error('Row cell count does not match the config.columnCount.');
|
|
62
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStream.js","sourceRoot":"","sources":["../../src/createStream.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"createStream.js","sourceRoot":"","sources":["../../src/createStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.truncateTableData = exports.truncateString = void 0;
|
|
7
7
|
const lodash_truncate_1 = __importDefault(require("lodash.truncate"));
|
|
8
|
-
const slice_ansi_1 = __importDefault(require("slice-ansi"));
|
|
9
|
-
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
10
8
|
const utils_1 = require("./utils");
|
|
11
9
|
const omission = '…';
|
|
12
10
|
const truncateString = (input, length) => {
|
|
@@ -15,7 +13,7 @@ const truncateString = (input, length) => {
|
|
|
15
13
|
return input;
|
|
16
14
|
}
|
|
17
15
|
// Truncate the visible text, so that ANSI escape codes do not count towards the length.
|
|
18
|
-
const visible = (0,
|
|
16
|
+
const visible = (0, utils_1.stripAnsi)(input);
|
|
19
17
|
const truncated = (0, lodash_truncate_1.default)(visible, { length,
|
|
20
18
|
omission });
|
|
21
19
|
if (truncated === visible) {
|
|
@@ -24,7 +22,7 @@ const truncateString = (input, length) => {
|
|
|
24
22
|
// Cut the input after the same characters, which keeps its ANSI escape codes and closes any that
|
|
25
23
|
// are still open, so that styles do not leak past the cell.
|
|
26
24
|
const kept = truncated.slice(0, -omission.length);
|
|
27
|
-
return (0,
|
|
25
|
+
return (0, utils_1.sliceAnsi)(input, 0, (0, utils_1.calculateSliceLength)(kept, Number.POSITIVE_INFINITY)) + omission;
|
|
28
26
|
};
|
|
29
27
|
exports.truncateString = truncateString;
|
|
30
28
|
const truncateTableData = (rows, truncates) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncateTableData.js","sourceRoot":"","sources":["../../src/truncateTableData.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAuC;
|
|
1
|
+
{"version":3,"file":"truncateTableData.js","sourceRoot":"","sources":["../../src/truncateTableData.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAuC;AAIvC,mCAEiB;AAEjB,MAAM,QAAQ,GAAG,GAAG,CAAC;AAEd,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE;IACtE,qEAAqE;IACrE,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,wFAAwF;IACxF,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,IAAA,yBAAQ,EAAC,OAAO,EAAE,EAAC,MAAM;QACzC,QAAQ,EAAC,CAAC,CAAC;IAEb,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IAED,iGAAiG;IACjG,4DAA4D;IAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElD,OAAO,IAAA,iBAAS,EAAC,KAAK,EAAE,CAAC,EAAE,IAAA,4BAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC9F,CAAC,CAAC;AApBW,QAAA,cAAc,kBAoBzB;AAEK,MAAM,iBAAiB,GAAG,CAAC,IAAW,EAAE,SAAmB,EAAS,EAAE;IAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YACnC,OAAO,IAAA,sBAAc,EAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B"}
|
package/dist/src/types/api.d.ts
CHANGED
|
@@ -123,6 +123,11 @@ export declare type StreamUserConfig = BaseUserConfig & {
|
|
|
123
123
|
};
|
|
124
124
|
};
|
|
125
125
|
export declare type WritableStream = {
|
|
126
|
+
/**
|
|
127
|
+
* Finishes the table by moving the cursor below it, so that whatever is printed next does not
|
|
128
|
+
* overwrite its bottom border. The stream cannot be written to afterwards.
|
|
129
|
+
*/
|
|
130
|
+
readonly end: () => void;
|
|
126
131
|
readonly write: (rows: string[]) => void;
|
|
127
132
|
};
|
|
128
133
|
export declare type Indexable<T> = {
|
package/dist/src/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = exports.calculateSliceLength = exports.splitGraphemes = void 0;
|
|
6
|
+
exports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = exports.sliceAnsi = exports.stringWidth = exports.stripAnsi = exports.calculateSliceLength = exports.splitGraphemes = void 0;
|
|
7
7
|
const slice_ansi_1 = __importDefault(require("slice-ansi"));
|
|
8
8
|
const string_width_1 = __importDefault(require("string-width"));
|
|
9
9
|
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
@@ -96,6 +96,97 @@ const calculateSliceLength = (subject, maximumWidth) => {
|
|
|
96
96
|
return positions;
|
|
97
97
|
};
|
|
98
98
|
exports.calculateSliceLength = calculateSliceLength;
|
|
99
|
+
/**
|
|
100
|
+
* A terminal hyperlink (OSC 8) sequence. An opening sequence carries the parameters and the URI of the
|
|
101
|
+
* link that the text after it belongs to; a closing sequence has an empty URI.
|
|
102
|
+
*/
|
|
103
|
+
// eslint-disable-next-line no-control-regex
|
|
104
|
+
const hyperlinkRegex = /(\u001B\]|\u009D)8;[^\u0007\u001B\u009C;]*;([^\u0007\u001B\u009C]*)(\u0007|\u001B\\|\u009C)/gu;
|
|
105
|
+
const containsHyperlink = (input) => {
|
|
106
|
+
return input.includes(']8;') || input.includes('\u009D8;');
|
|
107
|
+
};
|
|
108
|
+
const removeHyperlinks = (input) => {
|
|
109
|
+
return containsHyperlink(input) ? input.replace(hyperlinkRegex, '') : input;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Like strip-ansi, but also removes terminal hyperlinks, whatever their URI and terminator.
|
|
113
|
+
*
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
const stripAnsi = (input) => {
|
|
117
|
+
return (0, strip_ansi_1.default)(removeHyperlinks(input));
|
|
118
|
+
};
|
|
119
|
+
exports.stripAnsi = stripAnsi;
|
|
120
|
+
/**
|
|
121
|
+
* Like string-width, but also ignores terminal hyperlinks, whatever their URI and terminator.
|
|
122
|
+
*
|
|
123
|
+
* @internal
|
|
124
|
+
*/
|
|
125
|
+
const stringWidth = (input) => {
|
|
126
|
+
return (0, string_width_1.default)(removeHyperlinks(input));
|
|
127
|
+
};
|
|
128
|
+
exports.stringWidth = stringWidth;
|
|
129
|
+
/**
|
|
130
|
+
* Separates the terminal hyperlinks from the rest of the input, and divides its text into runs, measured
|
|
131
|
+
* in slice-ansi positions, that each belong to one hyperlink or to none.
|
|
132
|
+
*/
|
|
133
|
+
const splitHyperlinks = (input) => {
|
|
134
|
+
// A copy, so that this loop has its own lastIndex.
|
|
135
|
+
const regex = new RegExp(hyperlinkRegex);
|
|
136
|
+
const runs = [];
|
|
137
|
+
let plain = '';
|
|
138
|
+
let position = 0;
|
|
139
|
+
let start = 0;
|
|
140
|
+
let link;
|
|
141
|
+
let lastIndex = 0;
|
|
142
|
+
const appendText = (text) => {
|
|
143
|
+
plain += text;
|
|
144
|
+
position += (0, exports.calculateSliceLength)((0, strip_ansi_1.default)(text), Number.POSITIVE_INFINITY);
|
|
145
|
+
if (position > start) {
|
|
146
|
+
runs.push({ end: position,
|
|
147
|
+
link,
|
|
148
|
+
start });
|
|
149
|
+
start = position;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
for (let match = regex.exec(input); match; match = regex.exec(input)) {
|
|
153
|
+
appendText(input.slice(lastIndex, match.index));
|
|
154
|
+
const [escapeSequence, introducer, uri, terminator] = match;
|
|
155
|
+
link = uri ? { close: introducer + '8;;' + terminator,
|
|
156
|
+
open: escapeSequence } : undefined;
|
|
157
|
+
lastIndex = regex.lastIndex;
|
|
158
|
+
}
|
|
159
|
+
appendText(input.slice(lastIndex));
|
|
160
|
+
return { plain,
|
|
161
|
+
runs };
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Like slice-ansi, but keeps terminal hyperlinks: each part of the result that belongs to a hyperlink is
|
|
165
|
+
* wrapped in its own opening and closing sequences.
|
|
166
|
+
*
|
|
167
|
+
* @internal
|
|
168
|
+
*/
|
|
169
|
+
const sliceAnsi = (input, begin, end) => {
|
|
170
|
+
if (!containsHyperlink(input)) {
|
|
171
|
+
return (0, slice_ansi_1.default)(input, begin, end);
|
|
172
|
+
}
|
|
173
|
+
const { plain, runs } = splitHyperlinks(input);
|
|
174
|
+
if (!runs.some(({ link }) => {
|
|
175
|
+
return link;
|
|
176
|
+
})) {
|
|
177
|
+
return (0, slice_ansi_1.default)(plain, begin, end);
|
|
178
|
+
}
|
|
179
|
+
return runs.map(({ end: runEnd, link, start }) => {
|
|
180
|
+
const from = Math.max(begin, start);
|
|
181
|
+
const to = Math.min(end !== null && end !== void 0 ? end : Number.POSITIVE_INFINITY, runEnd);
|
|
182
|
+
if (from >= to) {
|
|
183
|
+
return '';
|
|
184
|
+
}
|
|
185
|
+
const text = (0, slice_ansi_1.default)(plain, from, to);
|
|
186
|
+
return link ? link.open + text + link.close : text;
|
|
187
|
+
}).join('');
|
|
188
|
+
};
|
|
189
|
+
exports.sliceAnsi = sliceAnsi;
|
|
99
190
|
/**
|
|
100
191
|
* Converts Windows-style newline to Unix-style
|
|
101
192
|
*
|
|
@@ -112,13 +203,13 @@ exports.normalizeString = normalizeString;
|
|
|
112
203
|
*/
|
|
113
204
|
const splitAnsi = (input) => {
|
|
114
205
|
// Line lengths in slice-ansi positions, which differ from display widths for emoji.
|
|
115
|
-
const lengths = (0,
|
|
206
|
+
const lengths = (0, exports.stripAnsi)(input).split('\n').map((line) => {
|
|
116
207
|
return (0, exports.calculateSliceLength)(line, Number.POSITIVE_INFINITY);
|
|
117
208
|
});
|
|
118
209
|
const result = [];
|
|
119
210
|
let startIndex = 0;
|
|
120
211
|
lengths.forEach((length) => {
|
|
121
|
-
result.push(length === 0 ? '' : (0,
|
|
212
|
+
result.push(length === 0 ? '' : (0, exports.sliceAnsi)(input, startIndex, startIndex + length));
|
|
122
213
|
// Plus 1 for the newline character itself
|
|
123
214
|
startIndex += length + 1;
|
|
124
215
|
});
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/wrapString.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.wrapString = void 0;
|
|
7
|
-
const slice_ansi_1 = __importDefault(require("slice-ansi"));
|
|
8
|
-
const string_width_1 = __importDefault(require("string-width"));
|
|
9
|
-
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
10
4
|
const utils_1 = require("./utils");
|
|
11
5
|
/**
|
|
12
6
|
* Creates an array of strings split into groups of at most size terminal columns.
|
|
@@ -19,10 +13,10 @@ const wrapString = (subject, size) => {
|
|
|
19
13
|
let subjectSlice = subject;
|
|
20
14
|
const chunks = [];
|
|
21
15
|
do {
|
|
22
|
-
const chunkLength = (0, utils_1.calculateSliceLength)((0,
|
|
23
|
-
chunks.push((0,
|
|
24
|
-
subjectSlice = (0,
|
|
25
|
-
} while ((0,
|
|
16
|
+
const chunkLength = (0, utils_1.calculateSliceLength)((0, utils_1.stripAnsi)(subjectSlice), size);
|
|
17
|
+
chunks.push((0, utils_1.sliceAnsi)(subjectSlice, 0, chunkLength));
|
|
18
|
+
subjectSlice = (0, utils_1.sliceAnsi)(subjectSlice, chunkLength).trim();
|
|
19
|
+
} while ((0, utils_1.stringWidth)(subjectSlice));
|
|
26
20
|
return chunks;
|
|
27
21
|
};
|
|
28
22
|
exports.wrapString = wrapString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapString.js","sourceRoot":"","sources":["../../src/wrapString.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wrapString.js","sourceRoot":"","sources":["../../src/wrapString.ts"],"names":[],"mappings":";;;AAAA,mCAEiB;AAEjB;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAY,EAAE;IACpE,IAAI,YAAY,GAAG,OAAO,CAAC;IAE3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,GAAG;QACD,MAAM,WAAW,GAAG,IAAA,4BAAoB,EAAC,IAAA,iBAAS,EAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;QAExE,MAAM,CAAC,IAAI,CAAC,IAAA,iBAAS,EAAC,YAAY,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAErD,YAAY,GAAG,IAAA,iBAAS,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;KAC5D,QAAQ,IAAA,mBAAW,EAAC,YAAY,CAAC,EAAE;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,UAAU,cAcrB"}
|
package/dist/src/wrapWord.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.wrapWord = void 0;
|
|
7
|
-
const slice_ansi_1 = __importDefault(require("slice-ansi"));
|
|
8
|
-
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
9
4
|
const utils_1 = require("./utils");
|
|
10
5
|
/**
|
|
11
6
|
* Number of characters standing in for a grapheme in the wrapping expression: one per terminal column,
|
|
@@ -19,7 +14,7 @@ const countColumns = (grapheme) => {
|
|
|
19
14
|
* column, and reports each line length and the whitespace that follows it in slice-ansi positions.
|
|
20
15
|
*/
|
|
21
16
|
const calculateStringLengths = (input, size) => {
|
|
22
|
-
const graphemes = (0, utils_1.splitGraphemes)((0,
|
|
17
|
+
const graphemes = (0, utils_1.splitGraphemes)((0, utils_1.stripAnsi)(input));
|
|
23
18
|
const width = Math.max(size, 1);
|
|
24
19
|
// https://regex101.com/r/gY5kZ1/1
|
|
25
20
|
const re = new RegExp('(^.{1,' + String(width) + '}(\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\|/|_|\\.|,|;|-))');
|
|
@@ -66,7 +61,7 @@ const wrapWord = (input, size) => {
|
|
|
66
61
|
const result = [];
|
|
67
62
|
let startIndex = 0;
|
|
68
63
|
calculateStringLengths(input, size).forEach(([length, offset]) => {
|
|
69
|
-
result.push((0,
|
|
64
|
+
result.push((0, utils_1.sliceAnsi)(input, startIndex, startIndex + length));
|
|
70
65
|
startIndex += length + offset;
|
|
71
66
|
});
|
|
72
67
|
return result;
|
package/dist/src/wrapWord.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapWord.js","sourceRoot":"","sources":["../../src/wrapWord.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wrapWord.js","sourceRoot":"","sources":["../../src/wrapWord.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED