cdk-common 2.0.29 → 2.0.30

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.
Files changed (93) hide show
  1. package/.jsii +2 -2
  2. package/lib/main.js +1 -1
  3. package/node_modules/graceful-fs/package.json +1 -1
  4. package/node_modules/graceful-fs/polyfills.js +4 -2
  5. package/node_modules/table/README.md +79 -1
  6. package/node_modules/table/dist/src/alignSpanningCell.d.ts +7 -0
  7. package/node_modules/table/dist/src/alignSpanningCell.js +44 -0
  8. package/node_modules/table/dist/src/alignSpanningCell.js.map +1 -0
  9. package/node_modules/table/dist/src/alignString.js.map +1 -0
  10. package/node_modules/table/dist/src/alignTableData.js +7 -1
  11. package/node_modules/table/dist/src/alignTableData.js.map +1 -0
  12. package/node_modules/table/dist/src/calculateCellHeight.js.map +1 -0
  13. package/node_modules/table/dist/src/calculateMaximumColumnWidths.d.ts +7 -0
  14. package/node_modules/table/dist/src/calculateMaximumColumnWidths.js +36 -0
  15. package/node_modules/table/dist/src/calculateMaximumColumnWidths.js.map +1 -0
  16. package/node_modules/table/dist/src/calculateOutputColumnWidths.d.ts +2 -0
  17. package/node_modules/table/dist/src/calculateOutputColumnWidths.js +10 -0
  18. package/node_modules/table/dist/src/calculateOutputColumnWidths.js.map +1 -0
  19. package/node_modules/table/dist/src/calculateRowHeights.js +28 -5
  20. package/node_modules/table/dist/src/calculateRowHeights.js.map +1 -0
  21. package/node_modules/table/dist/src/calculateSpanningCellWidth.d.ts +3 -0
  22. package/node_modules/table/dist/src/calculateSpanningCellWidth.js +26 -0
  23. package/node_modules/table/dist/src/calculateSpanningCellWidth.js.map +1 -0
  24. package/node_modules/table/dist/src/createStream.js +2 -1
  25. package/node_modules/table/dist/src/createStream.js.map +1 -0
  26. package/node_modules/table/dist/src/drawBorder.d.ts +27 -19
  27. package/node_modules/table/dist/src/drawBorder.js +164 -63
  28. package/node_modules/table/dist/src/drawBorder.js.map +1 -0
  29. package/node_modules/table/dist/src/drawContent.d.ts +10 -5
  30. package/node_modules/table/dist/src/drawContent.js +31 -7
  31. package/node_modules/table/dist/src/drawContent.js.map +1 -0
  32. package/node_modules/table/dist/src/drawRow.d.ts +6 -2
  33. package/node_modules/table/dist/src/drawRow.js +6 -2
  34. package/node_modules/table/dist/src/drawRow.js.map +1 -0
  35. package/node_modules/table/dist/src/drawTable.d.ts +1 -1
  36. package/node_modules/table/dist/src/drawTable.js +10 -18
  37. package/node_modules/table/dist/src/drawTable.js.map +1 -0
  38. package/node_modules/table/dist/src/generated/validators.d.ts +2 -2
  39. package/node_modules/table/dist/src/generated/validators.js +746 -223
  40. package/node_modules/table/dist/src/generated/validators.js.map +1 -0
  41. package/node_modules/table/dist/src/getBorderCharacters.js +16 -0
  42. package/node_modules/table/dist/src/getBorderCharacters.js.map +1 -0
  43. package/node_modules/table/dist/src/index.js.map +1 -0
  44. package/node_modules/table/dist/src/injectHeaderConfig.d.ts +3 -0
  45. package/node_modules/table/dist/src/injectHeaderConfig.js +29 -0
  46. package/node_modules/table/dist/src/injectHeaderConfig.js.map +1 -0
  47. package/node_modules/table/dist/src/makeRangeConfig.d.ts +3 -0
  48. package/node_modules/table/dist/src/makeRangeConfig.js +18 -0
  49. package/node_modules/table/dist/src/makeRangeConfig.js.map +1 -0
  50. package/node_modules/table/dist/src/makeStreamConfig.js.map +1 -0
  51. package/node_modules/table/dist/src/makeTableConfig.d.ts +2 -2
  52. package/node_modules/table/dist/src/makeTableConfig.js +26 -29
  53. package/node_modules/table/dist/src/makeTableConfig.js.map +1 -0
  54. package/node_modules/table/dist/src/mapDataUsingRowHeights.d.ts +2 -0
  55. package/node_modules/table/dist/src/mapDataUsingRowHeights.js +17 -10
  56. package/node_modules/table/dist/src/mapDataUsingRowHeights.js.map +1 -0
  57. package/node_modules/table/dist/src/padTableData.js +7 -1
  58. package/node_modules/table/dist/src/padTableData.js.map +1 -0
  59. package/node_modules/table/dist/src/schemas/config.json +95 -0
  60. package/node_modules/table/dist/src/schemas/shared.json +139 -0
  61. package/node_modules/table/dist/src/schemas/streamConfig.json +25 -0
  62. package/node_modules/table/dist/src/spanningCellManager.d.ts +21 -0
  63. package/node_modules/table/dist/src/spanningCellManager.js +86 -0
  64. package/node_modules/table/dist/src/spanningCellManager.js.map +1 -0
  65. package/node_modules/table/dist/src/stringifyTableData.js.map +1 -0
  66. package/node_modules/table/dist/src/table.js +9 -5
  67. package/node_modules/table/dist/src/table.js.map +1 -0
  68. package/node_modules/table/dist/src/truncateTableData.d.ts +2 -2
  69. package/node_modules/table/dist/src/truncateTableData.js +2 -2
  70. package/node_modules/table/dist/src/truncateTableData.js.map +1 -0
  71. package/node_modules/table/dist/src/types/api.d.ts +21 -5
  72. package/node_modules/table/dist/src/types/api.js.map +1 -0
  73. package/node_modules/table/dist/src/types/internal.js.map +1 -0
  74. package/node_modules/table/dist/src/utils.d.ts +10 -1
  75. package/node_modules/table/dist/src/utils.js +51 -1
  76. package/node_modules/table/dist/src/utils.js.map +1 -0
  77. package/node_modules/table/dist/src/validateConfig.js.map +1 -0
  78. package/node_modules/table/dist/src/validateSpanningCellConfig.d.ts +3 -0
  79. package/node_modules/table/dist/src/validateSpanningCellConfig.js +46 -0
  80. package/node_modules/table/dist/src/validateSpanningCellConfig.js.map +1 -0
  81. package/node_modules/table/dist/src/validateTableData.js.map +1 -0
  82. package/node_modules/table/dist/src/wrapCell.js.map +1 -0
  83. package/node_modules/table/dist/src/wrapString.js.map +1 -0
  84. package/node_modules/table/dist/src/wrapWord.js +2 -2
  85. package/node_modules/table/dist/src/wrapWord.js.map +1 -0
  86. package/node_modules/table/package.json +2 -3
  87. package/package.json +2 -2
  88. package/node_modules/table/dist/src/calculateCellWidths.d.ts +0 -5
  89. package/node_modules/table/dist/src/calculateCellWidths.js +0 -17
  90. package/node_modules/table/dist/src/calculateColumnWidths.d.ts +0 -6
  91. package/node_modules/table/dist/src/calculateColumnWidths.js +0 -17
  92. package/node_modules/table/dist/src/drawHeader.d.ts +0 -2
  93. package/node_modules/table/dist/src/drawHeader.js +0 -30
@@ -0,0 +1,139 @@
1
+ {
2
+ "$id": "shared.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "definitions": {
5
+ "columns": {
6
+ "oneOf": [
7
+ {
8
+ "type": "object",
9
+ "patternProperties": {
10
+ "^[0-9]+$": {
11
+ "$ref": "#/definitions/column"
12
+ }
13
+ },
14
+ "additionalProperties": false
15
+ },
16
+ {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "#/definitions/column"
20
+ }
21
+ }
22
+ ]
23
+ },
24
+ "column": {
25
+ "type": "object",
26
+ "properties": {
27
+ "alignment": {
28
+ "$ref": "#/definitions/alignment"
29
+ },
30
+ "verticalAlignment": {
31
+ "$ref": "#/definitions/verticalAlignment"
32
+ },
33
+ "width": {
34
+ "type": "integer",
35
+ "minimum": 1
36
+ },
37
+ "wrapWord": {
38
+ "type": "boolean"
39
+ },
40
+ "truncate": {
41
+ "type": "integer"
42
+ },
43
+ "paddingLeft": {
44
+ "type": "integer"
45
+ },
46
+ "paddingRight": {
47
+ "type": "integer"
48
+ }
49
+ },
50
+ "additionalProperties": false
51
+ },
52
+ "borders": {
53
+ "type": "object",
54
+ "properties": {
55
+ "topBody": {
56
+ "$ref": "#/definitions/border"
57
+ },
58
+ "topJoin": {
59
+ "$ref": "#/definitions/border"
60
+ },
61
+ "topLeft": {
62
+ "$ref": "#/definitions/border"
63
+ },
64
+ "topRight": {
65
+ "$ref": "#/definitions/border"
66
+ },
67
+ "bottomBody": {
68
+ "$ref": "#/definitions/border"
69
+ },
70
+ "bottomJoin": {
71
+ "$ref": "#/definitions/border"
72
+ },
73
+ "bottomLeft": {
74
+ "$ref": "#/definitions/border"
75
+ },
76
+ "bottomRight": {
77
+ "$ref": "#/definitions/border"
78
+ },
79
+ "bodyLeft": {
80
+ "$ref": "#/definitions/border"
81
+ },
82
+ "bodyRight": {
83
+ "$ref": "#/definitions/border"
84
+ },
85
+ "bodyJoin": {
86
+ "$ref": "#/definitions/border"
87
+ },
88
+ "headerJoin": {
89
+ "$ref": "#/definitions/border"
90
+ },
91
+ "joinBody": {
92
+ "$ref": "#/definitions/border"
93
+ },
94
+ "joinLeft": {
95
+ "$ref": "#/definitions/border"
96
+ },
97
+ "joinRight": {
98
+ "$ref": "#/definitions/border"
99
+ },
100
+ "joinJoin": {
101
+ "$ref": "#/definitions/border"
102
+ },
103
+ "joinMiddleUp": {
104
+ "$ref": "#/definitions/border"
105
+ },
106
+ "joinMiddleDown": {
107
+ "$ref": "#/definitions/border"
108
+ },
109
+ "joinMiddleLeft": {
110
+ "$ref": "#/definitions/border"
111
+ },
112
+ "joinMiddleRight": {
113
+ "$ref": "#/definitions/border"
114
+ }
115
+ },
116
+ "additionalProperties": false
117
+ },
118
+ "border": {
119
+ "type": "string"
120
+ },
121
+ "alignment": {
122
+ "type": "string",
123
+ "enum": [
124
+ "left",
125
+ "right",
126
+ "center",
127
+ "justify"
128
+ ]
129
+ },
130
+ "verticalAlignment": {
131
+ "type": "string",
132
+ "enum": [
133
+ "top",
134
+ "middle",
135
+ "bottom"
136
+ ]
137
+ }
138
+ }
139
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$id": "streamConfig.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "object",
5
+ "properties": {
6
+ "border": {
7
+ "$ref": "shared.json#/definitions/borders"
8
+ },
9
+ "columns": {
10
+ "$ref": "shared.json#/definitions/columns"
11
+ },
12
+ "columnDefault": {
13
+ "$ref": "shared.json#/definitions/column"
14
+ },
15
+ "columnCount": {
16
+ "type": "integer",
17
+ "minimum": 1
18
+ },
19
+ "drawVerticalLine": {
20
+ "typeof": "function"
21
+ }
22
+ },
23
+ "required": ["columnDefault", "columnCount"],
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,21 @@
1
+ import type { DrawHorizontalLine, DrawVerticalLine, SpanningCellConfig } from './types/api';
2
+ import type { CellCoordinates, ColumnConfig, ResolvedRangeConfig, Row } from './types/internal';
3
+ export declare type SpanningCellManager = {
4
+ getContainingRange: (cell: CellCoordinates, options?: {
5
+ mapped: true;
6
+ }) => ResolvedRangeConfig | undefined;
7
+ inSameRange: (cell1: CellCoordinates, cell2: CellCoordinates) => boolean;
8
+ rowHeights: number[];
9
+ setRowHeights: (rowHeights: number[]) => void;
10
+ };
11
+ export declare type SpanningCellParameters = {
12
+ spanningCellConfigs: SpanningCellConfig[];
13
+ rows: Row[];
14
+ columnsConfig: ColumnConfig[];
15
+ drawVerticalLine: DrawVerticalLine;
16
+ drawHorizontalLine: DrawHorizontalLine;
17
+ };
18
+ export declare type SpanningCellContext = SpanningCellParameters & {
19
+ rowHeights: number[];
20
+ };
21
+ export declare const createSpanningCellManager: (parameters: SpanningCellParameters) => SpanningCellManager;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSpanningCellManager = void 0;
4
+ const alignSpanningCell_1 = require("./alignSpanningCell");
5
+ const calculateSpanningCellWidth_1 = require("./calculateSpanningCellWidth");
6
+ const makeRangeConfig_1 = require("./makeRangeConfig");
7
+ const utils_1 = require("./utils");
8
+ const findRangeConfig = (cell, rangeConfigs) => {
9
+ return rangeConfigs.find((rangeCoordinate) => {
10
+ return (0, utils_1.isCellInRange)(cell, rangeCoordinate);
11
+ });
12
+ };
13
+ const getContainingRange = (rangeConfig, context) => {
14
+ const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);
15
+ const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);
16
+ const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);
17
+ const getCellContent = (rowIndex) => {
18
+ const { topLeft } = rangeConfig;
19
+ const { drawHorizontalLine, rowHeights } = context;
20
+ const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;
21
+ const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {
22
+ /* istanbul ignore next */
23
+ return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));
24
+ }).length;
25
+ const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;
26
+ return alignedContent.slice(offset, offset + rowHeights[rowIndex]);
27
+ };
28
+ const getBorderContent = (borderIndex) => {
29
+ const { topLeft } = rangeConfig;
30
+ const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);
31
+ return alignedContent[offset];
32
+ };
33
+ return {
34
+ ...rangeConfig,
35
+ extractBorderContent: getBorderContent,
36
+ extractCellContent: getCellContent,
37
+ height: wrappedContent.length,
38
+ width,
39
+ };
40
+ };
41
+ const inSameRange = (cell1, cell2, ranges) => {
42
+ const range1 = findRangeConfig(cell1, ranges);
43
+ const range2 = findRangeConfig(cell2, ranges);
44
+ if (range1 && range2) {
45
+ return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);
46
+ }
47
+ return false;
48
+ };
49
+ const hashRange = (range) => {
50
+ const { row, col } = range.topLeft;
51
+ return `${row}/${col}`;
52
+ };
53
+ const createSpanningCellManager = (parameters) => {
54
+ const { spanningCellConfigs, columnsConfig } = parameters;
55
+ const ranges = spanningCellConfigs.map((config) => {
56
+ return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);
57
+ });
58
+ const rangeCache = {};
59
+ let rowHeights = [];
60
+ return { getContainingRange: (cell, options) => {
61
+ var _a;
62
+ const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? (0, utils_1.findOriginalRowIndex)(rowHeights, cell.row) : cell.row;
63
+ const range = findRangeConfig({ ...cell,
64
+ row: originalRow }, ranges);
65
+ if (!range) {
66
+ return undefined;
67
+ }
68
+ if (rowHeights.length === 0) {
69
+ return getContainingRange(range, { ...parameters,
70
+ rowHeights });
71
+ }
72
+ const hash = hashRange(range);
73
+ (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,
74
+ rowHeights }));
75
+ return rangeCache[hash];
76
+ },
77
+ inSameRange: (cell1, cell2) => {
78
+ return inSameRange(cell1, cell2, ranges);
79
+ },
80
+ rowHeights,
81
+ setRowHeights: (_rowHeights) => {
82
+ rowHeights = _rowHeights;
83
+ } };
84
+ };
85
+ exports.createSpanningCellManager = createSpanningCellManager;
86
+ //# sourceMappingURL=spanningCellManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spanningCellManager.js","sourceRoot":"","sources":["../../src/spanningCellManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringifyTableData.js","sourceRoot":"","sources":["../../src/stringifyTableData.ts"],"names":[],"mappings":";;;AAGA,mCAEiB;AAEV,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAS,EAAE;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,IAAA,uBAAe,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"}
@@ -2,26 +2,30 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.table = void 0;
4
4
  const alignTableData_1 = require("./alignTableData");
5
- const calculateCellWidths_1 = require("./calculateCellWidths");
5
+ const calculateOutputColumnWidths_1 = require("./calculateOutputColumnWidths");
6
6
  const calculateRowHeights_1 = require("./calculateRowHeights");
7
7
  const drawTable_1 = require("./drawTable");
8
+ const injectHeaderConfig_1 = require("./injectHeaderConfig");
8
9
  const makeTableConfig_1 = require("./makeTableConfig");
9
10
  const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
10
11
  const padTableData_1 = require("./padTableData");
11
12
  const stringifyTableData_1 = require("./stringifyTableData");
12
13
  const truncateTableData_1 = require("./truncateTableData");
14
+ const utils_1 = require("./utils");
13
15
  const validateTableData_1 = require("./validateTableData");
14
16
  const table = (data, userConfig = {}) => {
15
17
  (0, validateTableData_1.validateTableData)(data);
16
18
  let rows = (0, stringifyTableData_1.stringifyTableData)(data);
17
- const config = (0, makeTableConfig_1.makeTableConfig)(rows, userConfig);
18
- rows = (0, truncateTableData_1.truncateTableData)(rows, config);
19
+ const [injectedRows, injectedSpanningCellConfig] = (0, injectHeaderConfig_1.injectHeaderConfig)(rows, userConfig);
20
+ const config = (0, makeTableConfig_1.makeTableConfig)(injectedRows, userConfig, injectedSpanningCellConfig);
21
+ rows = (0, truncateTableData_1.truncateTableData)(injectedRows, (0, utils_1.extractTruncates)(config));
19
22
  const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);
23
+ config.spanningCellManager.setRowHeights(rowHeights);
20
24
  rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);
21
25
  rows = (0, alignTableData_1.alignTableData)(rows, config);
22
26
  rows = (0, padTableData_1.padTableData)(rows, config);
23
- const cellWidths = (0, calculateCellWidths_1.calculateCellWidths)(rows[0]);
24
- return (0, drawTable_1.drawTable)(rows, cellWidths, rowHeights, config);
27
+ const outputColumnWidths = (0, calculateOutputColumnWidths_1.calculateOutputColumnWidths)(config);
28
+ return (0, drawTable_1.drawTable)(rows, outputColumnWidths, rowHeights, config);
25
29
  };
26
30
  exports.table = table;
27
31
  //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/table.ts"],"names":[],"mappings":";;;AAAA,qDAE0B;AAC1B,+EAEuC;AACvC,+DAE+B;AAC/B,2CAEqB;AACrB,6DAE8B;AAC9B,uDAE2B;AAC3B,qEAEkC;AAClC,iDAEwB;AACxB,6DAE8B;AAC9B,2DAE6B;AAI7B,mCAEiB;AACjB,2DAE6B;AAEtB,MAAM,KAAK,GAAG,CAAC,IAAiB,EAAE,aAA8B,EAAE,EAAU,EAAE;IACnF,IAAA,qCAAiB,EAAC,IAAI,CAAC,CAAC;IAExB,IAAI,IAAI,GAAG,IAAA,uCAAkB,EAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC,GAAG,IAAA,uCAAkB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAExF,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC,YAAY,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAC;IAErF,IAAI,GAAG,IAAA,qCAAiB,EAAC,YAAY,EAAE,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,IAAA,yCAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAErD,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAErD,IAAI,GAAG,IAAA,+CAAsB,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,GAAG,IAAA,+BAAc,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,IAAA,2BAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElC,MAAM,kBAAkB,GAAG,IAAA,yDAA2B,EAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,IAAA,qBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC,CAAC;AAtBW,QAAA,KAAK,SAsBhB"}
@@ -1,6 +1,6 @@
1
- import type { BaseConfig, Row } from './types/internal';
1
+ import type { Row } from './types/internal';
2
2
  export declare const truncateString: (input: string, length: number) => string;
3
3
  /**
4
4
  * @todo Make it work with ASCII content.
5
5
  */
6
- export declare const truncateTableData: (rows: Row[], config: BaseConfig) => Row[];
6
+ export declare const truncateTableData: (rows: Row[], truncates: number[]) => Row[];
@@ -13,10 +13,10 @@ exports.truncateString = truncateString;
13
13
  /**
14
14
  * @todo Make it work with ASCII content.
15
15
  */
16
- const truncateTableData = (rows, config) => {
16
+ const truncateTableData = (rows, truncates) => {
17
17
  return rows.map((cells) => {
18
18
  return cells.map((cell, cellIndex) => {
19
- return (0, exports.truncateString)(cell, config.columns[cellIndex].truncate);
19
+ return (0, exports.truncateString)(cell, truncates[cellIndex]);
20
20
  });
21
21
  });
22
22
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncateTableData.js","sourceRoot":"","sources":["../../src/truncateTableData.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAuC;AAKhC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE;IACtE,OAAO,IAAA,yBAAQ,EAAC,KAAK,EAAE,EAAC,MAAM;QAC5B,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEF;;GAEG;AACI,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"}
@@ -14,6 +14,10 @@ export declare type BorderUserConfig = {
14
14
  readonly joinRight?: string;
15
15
  readonly joinBody?: string;
16
16
  readonly joinJoin?: string;
17
+ readonly joinMiddleUp?: string;
18
+ readonly joinMiddleDown?: string;
19
+ readonly joinMiddleLeft?: string;
20
+ readonly joinMiddleRight?: string;
17
21
  readonly headerJoin?: string;
18
22
  readonly bodyRight?: string;
19
23
  readonly bodyLeft?: string;
@@ -22,7 +26,7 @@ export declare type BorderUserConfig = {
22
26
  export declare type BorderConfig = Required<BorderUserConfig>;
23
27
  export declare type Alignment = 'center' | 'justify' | 'left' | 'right';
24
28
  export declare type VerticalAlignment = 'bottom' | 'middle' | 'top';
25
- export declare type ColumnUserConfig = {
29
+ export declare type CellUserConfig = {
26
30
  /**
27
31
  * Cell content horizontal alignment (default: left)
28
32
  */
@@ -31,10 +35,6 @@ export declare type ColumnUserConfig = {
31
35
  * Cell content vertical alignment (default: top)
32
36
  */
33
37
  readonly verticalAlignment?: VerticalAlignment;
34
- /**
35
- * Column width (default: auto calculation based on the cell content)
36
- */
37
- readonly width?: number;
38
38
  /**
39
39
  * Number of characters are which the content will be truncated (default: Infinity)
40
40
  */
@@ -52,6 +52,15 @@ export declare type ColumnUserConfig = {
52
52
  */
53
53
  readonly wrapWord?: boolean;
54
54
  };
55
+ export declare type ColumnUserConfig = CellUserConfig & {
56
+ /**
57
+ * Column width (default: auto calculation based on the cell content)
58
+ */
59
+ readonly width?: number;
60
+ };
61
+ /**
62
+ * @deprecated Use spanning cell API instead
63
+ */
55
64
  export declare type HeaderUserConfig = Omit<ColumnUserConfig, 'verticalAlignment' | 'width'> & {
56
65
  readonly content: string;
57
66
  };
@@ -90,6 +99,13 @@ export declare type TableUserConfig = BaseUserConfig & {
90
99
  * Horizontal lines inside the table are not drawn.
91
100
  */
92
101
  readonly singleLine?: boolean;
102
+ readonly spanningCells?: SpanningCellConfig[];
103
+ };
104
+ export declare type SpanningCellConfig = CellUserConfig & {
105
+ readonly row: number;
106
+ readonly col: number;
107
+ readonly rowSpan?: number;
108
+ readonly colSpan?: number;
93
109
  };
94
110
  export declare type StreamUserConfig = BaseUserConfig & {
95
111
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/types/internal.ts"],"names":[],"mappings":""}
@@ -1 +1,10 @@
1
- export {};
1
+ import type { SpanningCellConfig } from './types/api';
2
+ import type { BaseConfig, CellCoordinates, RangeCoordinate } from './types/internal';
3
+ export declare const sequence: (start: number, end: number) => number[];
4
+ export declare const sumArray: (array: number[]) => number;
5
+ export declare const extractTruncates: (config: BaseConfig) => number[];
6
+ export declare const flatten: <T>(array: T[][]) => T[];
7
+ export declare const findOriginalRowIndex: (mappedRowHeights: number[], mappedRowIndex: number) => number;
8
+ export declare const calculateRangeCoordinate: (spanningCellConfig: SpanningCellConfig) => RangeCoordinate;
9
+ export declare const areCellEqual: (cell1: CellCoordinates, cell2: CellCoordinates) => boolean;
10
+ export declare const isCellInRange: (cell: CellCoordinates, { topLeft, bottomRight }: RangeCoordinate) => boolean;
@@ -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.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;
6
+ exports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.findOriginalRowIndex = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = 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"));
@@ -90,4 +90,54 @@ const distributeUnevenly = (sum, length) => {
90
90
  });
91
91
  };
92
92
  exports.distributeUnevenly = distributeUnevenly;
93
+ const sequence = (start, end) => {
94
+ return Array.from({ length: end - start + 1 }, (_, index) => {
95
+ return index + start;
96
+ });
97
+ };
98
+ exports.sequence = sequence;
99
+ const sumArray = (array) => {
100
+ return array.reduce((accumulator, element) => {
101
+ return accumulator + element;
102
+ }, 0);
103
+ };
104
+ exports.sumArray = sumArray;
105
+ const extractTruncates = (config) => {
106
+ return config.columns.map(({ truncate }) => {
107
+ return truncate;
108
+ });
109
+ };
110
+ exports.extractTruncates = extractTruncates;
111
+ const flatten = (array) => {
112
+ return [].concat(...array);
113
+ };
114
+ exports.flatten = flatten;
115
+ const findOriginalRowIndex = (mappedRowHeights, mappedRowIndex) => {
116
+ const rowIndexMapping = (0, exports.flatten)(mappedRowHeights.map((height, index) => {
117
+ return Array.from({ length: height }, () => {
118
+ return index;
119
+ });
120
+ }));
121
+ return rowIndexMapping[mappedRowIndex];
122
+ };
123
+ exports.findOriginalRowIndex = findOriginalRowIndex;
124
+ const calculateRangeCoordinate = (spanningCellConfig) => {
125
+ const { row, col, colSpan = 1, rowSpan = 1 } = spanningCellConfig;
126
+ return { bottomRight: { col: col + colSpan - 1,
127
+ row: row + rowSpan - 1 },
128
+ topLeft: { col,
129
+ row } };
130
+ };
131
+ exports.calculateRangeCoordinate = calculateRangeCoordinate;
132
+ const areCellEqual = (cell1, cell2) => {
133
+ return cell1.row === cell2.row && cell1.col === cell2.col;
134
+ };
135
+ exports.areCellEqual = areCellEqual;
136
+ const isCellInRange = (cell, { topLeft, bottomRight }) => {
137
+ return (topLeft.row <= cell.row &&
138
+ cell.row <= bottomRight.row &&
139
+ topLeft.col <= cell.col &&
140
+ cell.col <= bottomRight.col);
141
+ };
142
+ exports.isCellInRange = isCellInRange;
93
143
  //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateConfig.js","sourceRoot":"","sources":["../../src/validateConfig.ts"],"names":[],"mappings":";;;;;;AAIA,wEAAgD;AAKzC,MAAM,cAAc,GAAG,CAAC,QAA6C,EAAE,MAAuB,EAAQ,EAAE;IAC7G,MAAM,QAAQ,GAAG,oBAAU,CAAC,QAAQ,CAAqB,CAAC;IAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;QACxC,6DAA6D;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE;YACxD,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,8BAA8B;QAE9B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;AACH,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB"}
@@ -0,0 +1,3 @@
1
+ import type { SpanningCellConfig } from './types/api';
2
+ import type { Row } from './types/internal';
3
+ export declare const validateSpanningCellConfig: (rows: Row[], configs: SpanningCellConfig[]) => void;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSpanningCellConfig = void 0;
4
+ const utils_1 = require("./utils");
5
+ const inRange = (start, end, value) => {
6
+ return start <= value && value <= end;
7
+ };
8
+ const validateSpanningCellConfig = (rows, configs) => {
9
+ const [nRow, nCol] = [rows.length, rows[0].length];
10
+ configs.forEach((config, configIndex) => {
11
+ const { colSpan, rowSpan } = config;
12
+ if (colSpan === undefined && rowSpan === undefined) {
13
+ throw new Error(`Expect at least colSpan or rowSpan is provided in config.spanningCells[${configIndex}]`);
14
+ }
15
+ if (colSpan !== undefined && colSpan < 1) {
16
+ throw new Error(`Expect colSpan is not equal zero, instead got: ${colSpan} in config.spanningCells[${configIndex}]`);
17
+ }
18
+ if (rowSpan !== undefined && rowSpan < 1) {
19
+ throw new Error(`Expect rowSpan is not equal zero, instead got: ${rowSpan} in config.spanningCells[${configIndex}]`);
20
+ }
21
+ });
22
+ const rangeCoordinates = configs.map(utils_1.calculateRangeCoordinate);
23
+ rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {
24
+ if (!inRange(0, nCol - 1, topLeft.col) ||
25
+ !inRange(0, nRow - 1, topLeft.row) ||
26
+ !inRange(0, nCol - 1, bottomRight.col) ||
27
+ !inRange(0, nRow - 1, bottomRight.row)) {
28
+ throw new Error(`Some cells in config.spanningCells[${rangeIndex}] are out of the table`);
29
+ }
30
+ });
31
+ const configOccupy = Array.from({ length: nRow }, () => {
32
+ return Array.from({ length: nCol });
33
+ });
34
+ rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {
35
+ (0, utils_1.sequence)(topLeft.row, bottomRight.row).forEach((row) => {
36
+ (0, utils_1.sequence)(topLeft.col, bottomRight.col).forEach((col) => {
37
+ if (configOccupy[row][col] !== undefined) {
38
+ throw new Error(`Spanning cells in config.spanningCells[${configOccupy[row][col]}] and config.spanningCells[${rangeIndex}] are overlap each other`);
39
+ }
40
+ configOccupy[row][col] = rangeIndex;
41
+ });
42
+ });
43
+ });
44
+ };
45
+ exports.validateSpanningCellConfig = validateSpanningCellConfig;
46
+ //# sourceMappingURL=validateSpanningCellConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSpanningCellConfig.js","sourceRoot":"","sources":["../../src/validateSpanningCellConfig.ts"],"names":[],"mappings":";;;AAMA,mCAGiB;AAEjB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;IAC5D,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AACxC,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,IAAW,EAAE,OAA6B,EAAQ,EAAE;IAC7F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QACtC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC;QAClC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE;YAClD,MAAM,IAAI,KAAK,CAAC,0EAA0E,WAAW,GAAG,CAAC,CAAC;SAC3G;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,4BAA4B,WAAW,GAAG,CAAC,CAAC;SACtH;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,4BAA4B,WAAW,GAAG,CAAC,CAAC;SACtH;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAwB,CAAC,CAAC;IAE/D,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,UAAU,EAAE,EAAE;QAC9D,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;YACpC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;YAClC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC;YACxC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,wBAAwB,CAAC,CAAC;SAC3F;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,EAAE,GAAG,EAAE;QACnD,OAAO,KAAK,CAAC,IAAI,CAAsB,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,UAAU,EAAE,EAAE;QAC9D,IAAA,gBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,IAAA,gBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,8BAA8B,UAAU,0BAA0B,CAAC,CAAC;iBACrJ;gBACD,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzCW,QAAA,0BAA0B,8BAyCrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTableData.js","sourceRoot":"","sources":["../../src/validateTableData.ts"],"names":[],"mappings":";;;AAAA,mCAEiB;AAEV,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAQ,EAAE;IAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;KACrD;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;KACxD;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;SACzD;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAClE;QAED,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,4CAA4C;YAC5C,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAClF,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACpE;SACF;KACF;AACH,CAAC,CAAC;AA/BW,QAAA,iBAAiB,qBA+B5B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapCell.js","sourceRoot":"","sources":["../../src/wrapCell.ts"],"names":[],"mappings":";;;AAAA,mCAEiB;AACjB,6CAEsB;AACtB,yCAEoB;AAEpB;;;;;;GAMG;AACI,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,WAAoB,EAAY,EAAE;IAC/F,kCAAkC;IAClC,MAAM,SAAS,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IAEvC,8EAA8E;IAC9E,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG;QAC/C,IAAI,UAAU,CAAC;QAEf,IAAI,WAAW,EAAE;YACf,UAAU,GAAG,IAAA,mBAAQ,EAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;SACrD;aAAM;YACL,UAAU,GAAG,IAAA,uBAAU,EAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;SACvD;QAED,yEAAyE;QACzE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;KAC7B;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApBW,QAAA,QAAQ,YAoBnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapString.js","sourceRoot":"","sources":["../../src/wrapString.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,gEAAuC;AAEvC;;;;;;;GAOG;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,CAAC,IAAI,CAAC,IAAA,oBAAK,EAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1C,YAAY,GAAG,IAAA,oBAAK,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KACjD,QAAQ,IAAA,sBAAW,EAAC,YAAY,CAAC,EAAE;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB"}
@@ -10,7 +10,7 @@ const calculateStringLengths = (input, size) => {
10
10
  let subject = (0, strip_ansi_1.default)(input);
11
11
  const chunks = [];
12
12
  // https://regex101.com/r/gY5kZ1/1
13
- const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\s+|$))|(^.{1,' + String(Math.max(2, size - 1) - 1) + '}(\\\\|/|_|\\.|,|;|-))');
13
+ const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\|/|_|\\.|,|;|-))');
14
14
  do {
15
15
  let chunk;
16
16
  const match = re.exec(subject);
@@ -32,7 +32,7 @@ const calculateStringLengths = (input, size) => {
32
32
  const wrapWord = (input, size) => {
33
33
  const result = [];
34
34
  let startIndex = 0;
35
- calculateStringLengths(input, Math.max(size, 1)).forEach(([length, offset]) => {
35
+ calculateStringLengths(input, size).forEach(([length, offset]) => {
36
36
  result.push((0, slice_ansi_1.default)(input, startIndex, startIndex + length));
37
37
  startIndex += length + offset;
38
38
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapWord.js","sourceRoot":"","sources":["../../src/wrapWord.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,4DAAmC;AAEnC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,IAAY,EAA0C,EAAE;IACrG,IAAI,OAAO,GAAG,IAAA,oBAAS,EAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,kCAAkC;IAClC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAE7I,GAAG;QACD,IAAI,KAAa,CAAC;QAElB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,KAAK,EAAE;YACT,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEjB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;YAE5C,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;SACtC;aAAM;YACL,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SAChC;KACF,QAAQ,OAAO,CAAC,MAAM,EAAE;IAEzB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,IAAY,EAAY,EAAE;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;QAC/D,MAAM,CAAC,IAAI,CAAC,IAAA,oBAAK,EAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;QAE3D,UAAU,IAAI,MAAM,GAAG,MAAM,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,QAAQ,YAWnB"}
@@ -58,8 +58,7 @@
58
58
  "license": "BSD-3-Clause",
59
59
  "main": "./dist/src/index.js",
60
60
  "files": [
61
- "dist/src/**/*.js",
62
- "dist/src/**/*.d.ts"
61
+ "dist/src/"
63
62
  ],
64
63
  "name": "table",
65
64
  "repository": {
@@ -74,5 +73,5 @@
74
73
  "lint": "eslint ./src ./test",
75
74
  "test": "nyc mocha && nyc check-coverage --lines 95"
76
75
  },
77
- "version": "6.7.5"
76
+ "version": "6.8.0"
78
77
  }