table 6.9.0 → 6.9.2
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 +1 -1
- package/dist/src/calculateMaximumColumnWidths.js +5 -7
- package/dist/src/calculateMaximumColumnWidths.js.map +1 -1
- package/dist/src/utils.js +6 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/src/wrapWord.js +82 -12
- package/dist/src/wrapWord.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
> Produces a string that represents array data in a text table.
|
|
5
5
|
|
|
6
|
-
[](https://github.com/gajus/table/actions)
|
|
7
7
|
[](https://coveralls.io/github/gajus/table)
|
|
8
8
|
[](https://www.npmjs.org/package/table)
|
|
9
9
|
[](https://github.com/gajus/canonical)
|
|
@@ -16,15 +16,13 @@ exports.calculateMaximumCellWidth = calculateMaximumCellWidth;
|
|
|
16
16
|
const calculateMaximumColumnWidths = (rows, spanningCellConfigs = []) => {
|
|
17
17
|
const columnWidths = new Array(rows[0].length).fill(0);
|
|
18
18
|
const rangeCoordinates = spanningCellConfigs.map(utils_1.calculateRangeCoordinate);
|
|
19
|
-
const isSpanningCell = (rowIndex, columnIndex) => {
|
|
20
|
-
return rangeCoordinates.some((rangeCoordinate) => {
|
|
21
|
-
return (0, utils_1.isCellInRange)({ col: columnIndex,
|
|
22
|
-
row: rowIndex }, rangeCoordinate);
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
19
|
rows.forEach((row, rowIndex) => {
|
|
26
20
|
row.forEach((cell, cellIndex) => {
|
|
27
|
-
|
|
21
|
+
const range = rangeCoordinates.find((rangeCoordinate) => {
|
|
22
|
+
return (0, utils_1.isCellInRange)({ col: cellIndex,
|
|
23
|
+
row: rowIndex }, rangeCoordinate);
|
|
24
|
+
});
|
|
25
|
+
if (range && (range.topLeft.col !== range.bottomRight.col || range.topLeft.row !== rowIndex)) {
|
|
28
26
|
return;
|
|
29
27
|
}
|
|
30
28
|
columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], (0, exports.calculateMaximumCellWidth)(cell));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateMaximumColumnWidths.js","sourceRoot":"","sources":["../../src/calculateMaximumColumnWidths.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AAQvC,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,sBAAW,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;
|
|
1
|
+
{"version":3,"file":"calculateMaximumColumnWidths.js","sourceRoot":"","sources":["../../src/calculateMaximumColumnWidths.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuC;AAQvC,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,sBAAW,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/utils.js
CHANGED
|
@@ -109,7 +109,12 @@ const extractTruncates = (config) => {
|
|
|
109
109
|
};
|
|
110
110
|
exports.extractTruncates = extractTruncates;
|
|
111
111
|
const flatten = (array) => {
|
|
112
|
-
|
|
112
|
+
const destination = [];
|
|
113
|
+
const arrayLength = array.length;
|
|
114
|
+
for (let index = 0; index < arrayLength; index++) {
|
|
115
|
+
destination.push(...array[index]);
|
|
116
|
+
}
|
|
117
|
+
return destination;
|
|
113
118
|
};
|
|
114
119
|
exports.flatten = flatten;
|
|
115
120
|
const calculateRangeCoordinate = (spanningCellConfig) => {
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,gEAAuC;AACvC,4DAAmC;AACnC,+DAE+B;AAY/B;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,KAAa,EAAU,EAAE;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEF;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,KAAa,EAAY,EAAE;IACnD,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,sBAAW,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,oBAAK,EAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;QAE/E,0CAA0C;QAC1C,UAAU,IAAI,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,SAAS,aAcpB;AAEF;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,MAAoC,EAAgB,EAAE;IACrF,OAAO;QACL,GAAG,IAAA,yCAAmB,EAAC,WAAW,CAAC;QACnC,GAAG,MAAM;KACV,CAAC;AACJ,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEF;;;;;;GAMG;AAEI,MAAM,YAAY,GAAG,CAAI,KAAU,EAAE,KAAe,EAAS,EAAE;IACpE,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;QAEzD,UAAU,IAAI,IAAI,CAAC;QAEnB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEF;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;;IAC1D,OAAO,MAAA,MAAA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEF;;;;;;;;GAQG;AACI,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAY,EAAE;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAS,EAAC,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IAE3E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACnC,OAAO,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAW,EAAY,EAAE;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACxD,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAU,EAAE;IAClD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;QAC3C,OAAO,WAAW,GAAG,OAAO,CAAC;IAC/B,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB;AAEK,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAY,EAAE;IAC/D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE;QACvC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B;AAEK,MAAM,OAAO,GAAG,CAAI,KAAY,EAAO,EAAE;IAC9C,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/wrapWord.js
CHANGED
|
@@ -5,27 +5,97 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.wrapWord = void 0;
|
|
7
7
|
const slice_ansi_1 = __importDefault(require("slice-ansi"));
|
|
8
|
+
const string_width_1 = __importDefault(require("string-width"));
|
|
8
9
|
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
10
|
+
/**
|
|
11
|
+
* A user-perceived character: a code point together with the combining marks, variation selectors,
|
|
12
|
+
* emoji modifiers and tag characters attached to it, including zero-width joiner emoji sequences;
|
|
13
|
+
* or a pair of regional indicators, which is rendered as a flag.
|
|
14
|
+
*/
|
|
15
|
+
const graphemeRegex = /\p{Regional_Indicator}{2}|[\s\S][\p{M}\p{Emoji_Modifier}\u{E0020}-\u{E007F}]*(?:\u200D[\s\S][\p{M}\p{Emoji_Modifier}\u{E0020}-\u{E007F}]*)*/gu;
|
|
16
|
+
/**
|
|
17
|
+
* slice-ansi positions are not terminal columns: it advances one position per code point and two for
|
|
18
|
+
* full-width BMP characters, but only one for astral characters such as emoji. Asking slice-ansi
|
|
19
|
+
* directly keeps the computed boundaries aligned with how it slices.
|
|
20
|
+
*/
|
|
21
|
+
const countSlicePositions = (grapheme) => {
|
|
22
|
+
let positions = 0;
|
|
23
|
+
for (const codePoint of grapheme) {
|
|
24
|
+
positions += (0, slice_ansi_1.default)(codePoint, 0, 1) === '' ? 2 : 1;
|
|
25
|
+
}
|
|
26
|
+
return positions;
|
|
27
|
+
};
|
|
28
|
+
const printableAsciiRegex = /^[\u0020-\u007E]+$/u;
|
|
29
|
+
const splitGraphemes = (subject) => {
|
|
30
|
+
var _a;
|
|
31
|
+
// Printable ASCII, the most common content, is one column and one slice-ansi position per character.
|
|
32
|
+
if (printableAsciiRegex.test(subject)) {
|
|
33
|
+
return Array.from(subject, (character) => {
|
|
34
|
+
return {
|
|
35
|
+
columns: character,
|
|
36
|
+
positions: 1,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const cache = new Map();
|
|
41
|
+
return ((_a = subject.match(graphemeRegex)) !== null && _a !== void 0 ? _a : []).map((grapheme) => {
|
|
42
|
+
let cached = cache.get(grapheme);
|
|
43
|
+
if (!cached) {
|
|
44
|
+
cached = {
|
|
45
|
+
// A single code unit stands for itself, so that whitespace, line terminators and break
|
|
46
|
+
// characters keep their meaning in the wrapping expression; it is repeated when it is wide.
|
|
47
|
+
columns: (grapheme.length === 1 ? grapheme : 'x').repeat(Math.max((0, string_width_1.default)(grapheme), 1)),
|
|
48
|
+
positions: countSlicePositions(grapheme),
|
|
49
|
+
};
|
|
50
|
+
cache.set(grapheme, cached);
|
|
51
|
+
}
|
|
52
|
+
return cached;
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Finds the line boundaries by matching the wrapping expression against one character per terminal
|
|
57
|
+
* column, and reports each line length and the whitespace that follows it in slice-ansi positions.
|
|
58
|
+
*/
|
|
9
59
|
const calculateStringLengths = (input, size) => {
|
|
10
|
-
|
|
11
|
-
const
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const graphemes = splitGraphemes((0, strip_ansi_1.default)(input));
|
|
62
|
+
const width = Math.max(size, 1);
|
|
12
63
|
// https://regex101.com/r/gY5kZ1/1
|
|
13
|
-
const re = new RegExp('(^.{1,' + String(
|
|
64
|
+
const re = new RegExp('(^.{1,' + String(width) + '}(\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\|/|_|\\.|,|;|-))');
|
|
65
|
+
let subject = graphemes.map(({ columns }) => {
|
|
66
|
+
return columns;
|
|
67
|
+
}).join('');
|
|
68
|
+
let index = 0;
|
|
69
|
+
const consumePositions = (columns) => {
|
|
70
|
+
let positions = 0;
|
|
71
|
+
let remainingColumns = columns;
|
|
72
|
+
while (remainingColumns > 0 && index < graphemes.length) {
|
|
73
|
+
remainingColumns -= graphemes[index].columns.length;
|
|
74
|
+
positions += graphemes[index].positions;
|
|
75
|
+
index += 1;
|
|
76
|
+
}
|
|
77
|
+
return positions;
|
|
78
|
+
};
|
|
79
|
+
const chunks = [];
|
|
14
80
|
do {
|
|
15
|
-
let chunk;
|
|
16
81
|
const match = re.exec(subject);
|
|
82
|
+
let lineColumns;
|
|
83
|
+
let chunkColumns;
|
|
17
84
|
if (match) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const trimmedLength = chunk.trim().length;
|
|
21
|
-
const offset = chunk.length - trimmedLength;
|
|
22
|
-
chunks.push([trimmedLength, offset]);
|
|
85
|
+
chunkColumns = match[0].length;
|
|
86
|
+
lineColumns = match[0].trimEnd().length;
|
|
23
87
|
}
|
|
24
88
|
else {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
89
|
+
// No break opportunity within reach: cut after as many whole graphemes as fit, but always take
|
|
90
|
+
// at least one so that wrapping makes progress.
|
|
91
|
+
lineColumns = (_b = (_a = graphemes[index]) === null || _a === void 0 ? void 0 : _a.columns.length) !== null && _b !== void 0 ? _b : 0;
|
|
92
|
+
for (let next = index + 1; next < graphemes.length && lineColumns + graphemes[next].columns.length <= width; next += 1) {
|
|
93
|
+
lineColumns += graphemes[next].columns.length;
|
|
94
|
+
}
|
|
95
|
+
chunkColumns = lineColumns;
|
|
28
96
|
}
|
|
97
|
+
chunks.push([consumePositions(lineColumns), consumePositions(chunkColumns - lineColumns)]);
|
|
98
|
+
subject = subject.slice(chunkColumns);
|
|
29
99
|
} while (subject.length);
|
|
30
100
|
return chunks;
|
|
31
101
|
};
|
package/dist/src/wrapWord.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapWord.js","sourceRoot":"","sources":["../../src/wrapWord.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,4DAAmC;
|
|
1
|
+
{"version":3,"file":"wrapWord.js","sourceRoot":"","sources":["../../src/wrapWord.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"coveralls": "^3.1.0",
|
|
28
28
|
"eslint": "^7.32.0",
|
|
29
29
|
"eslint-config-canonical": "^25.0.0",
|
|
30
|
-
"gitdown": "^
|
|
30
|
+
"gitdown": "^4.1.1",
|
|
31
31
|
"husky": "^4.3.6",
|
|
32
32
|
"js-beautify": "^1.14.0",
|
|
33
33
|
"lodash.mapvalues": "^4.6.0",
|
|
34
34
|
"mkdirp": "^1.0.4",
|
|
35
35
|
"mocha": "^8.2.1",
|
|
36
36
|
"nyc": "^15.1.0",
|
|
37
|
-
"semantic-release": "^
|
|
37
|
+
"semantic-release": "^25.0.9",
|
|
38
38
|
"sinon": "^12.0.1",
|
|
39
39
|
"ts-node": "^9.1.1",
|
|
40
40
|
"typescript": "4.5.2"
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
],
|
|
58
58
|
"license": "BSD-3-Clause",
|
|
59
59
|
"main": "./dist/src/index.js",
|
|
60
|
+
"module": "./dist/src/index.js",
|
|
60
61
|
"files": [
|
|
61
62
|
"dist/src/"
|
|
62
63
|
],
|
|
@@ -67,12 +68,12 @@
|
|
|
67
68
|
},
|
|
68
69
|
"scripts": {
|
|
69
70
|
"prebuild": "rm -fr ./src/generated && mkdirp ./src/generated",
|
|
70
|
-
"build": "
|
|
71
|
+
"build": "\"$npm_execpath\" run create-validators && tsc",
|
|
71
72
|
"create-readme": "gitdown ./.README/README.md --output-file ./README.md",
|
|
72
73
|
"create-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -s src/schemas/streamConfig -r src/schemas/shared -c ajv-keywords/dist/keywords/typeof -o | js-beautify > ./src/generated/validators.js",
|
|
73
74
|
"lint": "eslint ./src ./test",
|
|
74
75
|
"test": "nyc mocha && nyc check-coverage --lines 95"
|
|
75
76
|
},
|
|
76
77
|
"sideEffects": false,
|
|
77
|
-
"version": "6.9.
|
|
78
|
+
"version": "6.9.2"
|
|
78
79
|
}
|