table 4.0.3 → 5.1.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.
Files changed (75) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -6
  3. package/dist/alignString.js +20 -20
  4. package/dist/alignString.js.flow +96 -0
  5. package/dist/alignString.js.map +1 -0
  6. package/dist/alignTableData.js +12 -11
  7. package/dist/alignTableData.js.flow +21 -0
  8. package/dist/alignTableData.js.map +1 -0
  9. package/dist/calculateCellHeight.js +14 -17
  10. package/dist/calculateCellHeight.js.flow +29 -0
  11. package/dist/calculateCellHeight.js.map +1 -0
  12. package/dist/calculateCellWidthIndex.js +10 -7
  13. package/dist/calculateCellWidthIndex.js.flow +13 -0
  14. package/dist/calculateCellWidthIndex.js.map +1 -0
  15. package/dist/calculateMaximumColumnWidthIndex.js +11 -11
  16. package/dist/calculateMaximumColumnWidthIndex.js.flow +27 -0
  17. package/dist/calculateMaximumColumnWidthIndex.js.map +1 -0
  18. package/dist/calculateRowHeightIndex.js +15 -19
  19. package/dist/calculateRowHeightIndex.js.flow +35 -0
  20. package/dist/calculateRowHeightIndex.js.map +1 -0
  21. package/dist/createStream.js +35 -68
  22. package/dist/createStream.js.flow +124 -0
  23. package/dist/createStream.js.map +1 -0
  24. package/dist/drawBorder.js +16 -8
  25. package/dist/drawBorder.js.flow +95 -0
  26. package/dist/drawBorder.js.map +1 -0
  27. package/dist/drawRow.js +8 -3
  28. package/dist/drawRow.js.flow +15 -0
  29. package/dist/drawRow.js.map +1 -0
  30. package/dist/drawTable.js +11 -12
  31. package/dist/drawTable.js.flow +52 -0
  32. package/dist/drawTable.js.map +1 -0
  33. package/dist/getBorderCharacters.js +8 -15
  34. package/dist/getBorderCharacters.js.flow +120 -0
  35. package/dist/getBorderCharacters.js.map +1 -0
  36. package/dist/index.js +23 -15
  37. package/dist/index.js.flow +9 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/makeConfig.js +21 -30
  40. package/dist/makeConfig.js.flow +72 -0
  41. package/dist/makeConfig.js.map +1 -0
  42. package/dist/makeStreamConfig.js +19 -27
  43. package/dist/makeStreamConfig.js.flow +83 -0
  44. package/dist/makeStreamConfig.js.map +1 -0
  45. package/dist/mapDataUsingRowHeightIndex.js +17 -22
  46. package/dist/mapDataUsingRowHeightIndex.js.flow +41 -0
  47. package/dist/mapDataUsingRowHeightIndex.js.map +1 -0
  48. package/dist/padTableData.js +8 -4
  49. package/dist/padTableData.js.flow +14 -0
  50. package/dist/padTableData.js.map +1 -0
  51. package/dist/schemas/config.json +1 -1
  52. package/dist/schemas/streamConfig.json +1 -1
  53. package/dist/stringifyTableData.js +7 -2
  54. package/dist/stringifyTableData.js.flow +11 -0
  55. package/dist/stringifyTableData.js.map +1 -0
  56. package/dist/table.js +29 -53
  57. package/dist/table.js.flow +95 -0
  58. package/dist/table.js.map +1 -0
  59. package/dist/truncateTableData.js +10 -7
  60. package/dist/truncateTableData.js.flow +17 -0
  61. package/dist/truncateTableData.js.map +1 -0
  62. package/dist/validateConfig.js +4 -5
  63. package/dist/validateConfig.js.flow +34 -0
  64. package/dist/validateConfig.js.map +1 -0
  65. package/dist/validateStreamConfig.js +4 -5
  66. package/dist/validateTableData.js +62 -15
  67. package/dist/validateTableData.js.flow +46 -0
  68. package/dist/validateTableData.js.map +1 -0
  69. package/dist/wrapString.js +13 -15
  70. package/dist/wrapString.js.flow +29 -0
  71. package/dist/wrapString.js.map +1 -0
  72. package/dist/wrapWord.js +15 -20
  73. package/dist/wrapWord.js.flow +39 -0
  74. package/dist/wrapWord.js.map +1 -0
  75. package/package.json +42 -30
@@ -0,0 +1,34 @@
1
+ // eslint-disable-next-line import/default
2
+ import validateConfig from '../dist/validateConfig';
3
+ // eslint-disable-next-line import/default
4
+ import validateStreamConfig from '../dist/validateStreamConfig';
5
+
6
+ const validate = {
7
+ 'config.json': validateConfig,
8
+ 'streamConfig.json': validateStreamConfig
9
+ };
10
+
11
+ /**
12
+ * @param {string} schemaId
13
+ * @param {formatData~config} config
14
+ * @returns {undefined}
15
+ */
16
+ export default (schemaId, config = {}) => {
17
+ if (!validate[schemaId](config)) {
18
+ const errors = validate[schemaId].errors.map((error) => {
19
+ return {
20
+ dataPath: error.dataPath,
21
+ message: error.message,
22
+ params: error.params,
23
+ schemaPath: error.schemaPath
24
+ };
25
+ });
26
+
27
+ /* eslint-disable no-console */
28
+ console.log('config', config);
29
+ console.log('errors', errors);
30
+ /* eslint-enable no-console */
31
+
32
+ throw new Error('Invalid config.');
33
+ }
34
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/validateConfig.js"],"names":["validate","validateConfig","validateStreamConfig","schemaId","config","errors","map","error","dataPath","message","params","schemaPath","console","log","Error"],"mappings":";;;;;;;AACA;;AAEA;;;;AAHA;AAEA;AAGA,MAAMA,QAAQ,GAAG;AACf,iBAAeC,uBADA;AAEf,uBAAqBC;AAFN,CAAjB;AAKA;;;;;;yBAKgBC,Q,EAAUC,MAAM,GAAG,E,KAAO;AACxC,MAAI,CAACJ,QAAQ,CAACG,QAAD,CAAR,CAAmBC,MAAnB,CAAL,EAAiC;AAC/B,UAAMC,MAAM,GAAGL,QAAQ,CAACG,QAAD,CAAR,CAAmBE,MAAnB,CAA0BC,GAA1B,CAA+BC,KAAD,IAAW;AACtD,aAAO;AACLC,QAAAA,QAAQ,EAAED,KAAK,CAACC,QADX;AAELC,QAAAA,OAAO,EAAEF,KAAK,CAACE,OAFV;AAGLC,QAAAA,MAAM,EAAEH,KAAK,CAACG,MAHT;AAILC,QAAAA,UAAU,EAAEJ,KAAK,CAACI;AAJb,OAAP;AAMD,KAPc,CAAf;AASA;;AACAC,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBT,MAAtB;AACAQ,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ,EAAsBR,MAAtB;AACA;;AAEA,UAAM,IAAIS,KAAJ,CAAU,iBAAV,CAAN;AACD;AACF,C","sourcesContent":["// eslint-disable-next-line import/default\nimport validateConfig from '../dist/validateConfig';\n// eslint-disable-next-line import/default\nimport validateStreamConfig from '../dist/validateStreamConfig';\n\nconst validate = {\n 'config.json': validateConfig,\n 'streamConfig.json': validateStreamConfig\n};\n\n/**\n * @param {string} schemaId\n * @param {formatData~config} config\n * @returns {undefined}\n */\nexport default (schemaId, config = {}) => {\n if (!validate[schemaId](config)) {\n const errors = validate[schemaId].errors.map((error) => {\n return {\n dataPath: error.dataPath,\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath\n };\n });\n\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n\n throw new Error('Invalid config.');\n }\n};\n"],"file":"validateConfig.js"}
@@ -14,7 +14,7 @@ var validate = (function() {
14
14
  var errs__0 = errors;
15
15
  var valid1 = true;
16
16
  for (var key0 in data) {
17
- var isAdditional0 = !(false || validate.schema.properties[key0]);
17
+ var isAdditional0 = !(false || validate.schema.properties.hasOwnProperty(key0));
18
18
  if (isAdditional0) {
19
19
  valid1 = false;
20
20
  var err = {
@@ -344,7 +344,7 @@ var validate = (function() {
344
344
  var errs__0 = errors;
345
345
  var valid1 = true;
346
346
  for (var key0 in data) {
347
- var isAdditional0 = !(false || validate.schema.properties[key0]);
347
+ var isAdditional0 = !(false || key0 == 'alignment' || key0 == 'width' || key0 == 'wrapWord' || key0 == 'truncate' || key0 == 'paddingLeft' || key0 == 'paddingRight');
348
348
  if (isAdditional0) {
349
349
  valid1 = false;
350
350
  var err = {
@@ -385,8 +385,7 @@ var validate = (function() {
385
385
  if (equal(data1, schema1[i1])) {
386
386
  valid1 = true;
387
387
  break;
388
- }
389
- if (!valid1) {
388
+ } if (!valid1) {
390
389
  var err = {
391
390
  keyword: 'enum',
392
391
  dataPath: (dataPath || '') + '.alignment',
@@ -628,7 +627,7 @@ var validate = (function() {
628
627
  })();
629
628
  validate.schema = {
630
629
  "$id": "streamConfig.json",
631
- "$schema": "http://json-schema.org/draft-06/schema#",
630
+ "$schema": "http://json-schema.org/draft-07/schema#",
632
631
  "type": "object",
633
632
  "properties": {
634
633
  "border": {
@@ -1,8 +1,9 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
8
  /**
8
9
  * @typedef {string} cell
@@ -16,7 +17,7 @@ Object.defineProperty(exports, "__esModule", {
16
17
  * @param {column[]} rows
17
18
  * @returns {undefined}
18
19
  */
19
- exports.default = rows => {
20
+ const validateTableData = rows => {
20
21
  if (!Array.isArray(rows)) {
21
22
  throw new TypeError('Table data must be an array.');
22
23
  }
@@ -30,22 +31,68 @@ exports.default = rows => {
30
31
  }
31
32
 
32
33
  const columnNumber = rows[0].length;
34
+ var _iteratorNormalCompletion = true;
35
+ var _didIteratorError = false;
36
+ var _iteratorError = undefined;
33
37
 
34
- for (const cells of rows) {
35
- if (!Array.isArray(cells)) {
36
- throw new TypeError('Table row data must be an array.');
37
- }
38
+ try {
39
+ for (var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
40
+ const cells = _step.value;
38
41
 
39
- if (cells.length !== columnNumber) {
40
- throw new Error('Table must have a consistent number of cells.');
41
- }
42
+ if (!Array.isArray(cells)) {
43
+ throw new TypeError('Table row data must be an array.');
44
+ }
45
+
46
+ if (cells.length !== columnNumber) {
47
+ throw new Error('Table must have a consistent number of cells.');
48
+ } // @todo Make an exception for newline characters.
49
+ // @see https://github.com/gajus/table/issues/9
50
+
51
+
52
+ var _iteratorNormalCompletion2 = true;
53
+ var _didIteratorError2 = false;
54
+ var _iteratorError2 = undefined;
42
55
 
43
- // @todo Make an exception for newline characters.
44
- // @see https://github.com/gajus/table/issues/9
45
- for (const cell of cells) {
46
- if (/[\u0001-\u001A]/.test(cell)) {
47
- throw new Error('Table data must not contain control characters.');
56
+ try {
57
+ for (var _iterator2 = cells[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
58
+ const cell = _step2.value;
59
+
60
+ // eslint-disable-next-line no-control-regex
61
+ if (/[\u0001-\u001A]/.test(cell)) {
62
+ throw new Error('Table data must not contain control characters.');
63
+ }
64
+ }
65
+ } catch (err) {
66
+ _didIteratorError2 = true;
67
+ _iteratorError2 = err;
68
+ } finally {
69
+ try {
70
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
71
+ _iterator2.return();
72
+ }
73
+ } finally {
74
+ if (_didIteratorError2) {
75
+ throw _iteratorError2;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ } catch (err) {
81
+ _didIteratorError = true;
82
+ _iteratorError = err;
83
+ } finally {
84
+ try {
85
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
86
+ _iterator.return();
87
+ }
88
+ } finally {
89
+ if (_didIteratorError) {
90
+ throw _iteratorError;
48
91
  }
49
92
  }
50
93
  }
51
- };
94
+ };
95
+
96
+ var _default = validateTableData;
97
+ exports.default = _default;
98
+ //# sourceMappingURL=validateTableData.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @typedef {string} cell
3
+ */
4
+
5
+ /**
6
+ * @typedef {cell[]} validateData~column
7
+ */
8
+
9
+ /**
10
+ * @param {column[]} rows
11
+ * @returns {undefined}
12
+ */
13
+ export default (rows) => {
14
+ if (!Array.isArray(rows)) {
15
+ throw new TypeError('Table data must be an array.');
16
+ }
17
+
18
+ if (rows.length === 0) {
19
+ throw new Error('Table must define at least one row.');
20
+ }
21
+
22
+ if (rows[0].length === 0) {
23
+ throw new Error('Table must define at least one column.');
24
+ }
25
+
26
+ const columnNumber = rows[0].length;
27
+
28
+ for (const cells of rows) {
29
+ if (!Array.isArray(cells)) {
30
+ throw new TypeError('Table row data must be an array.');
31
+ }
32
+
33
+ if (cells.length !== columnNumber) {
34
+ throw new Error('Table must have a consistent number of cells.');
35
+ }
36
+
37
+ // @todo Make an exception for newline characters.
38
+ // @see https://github.com/gajus/table/issues/9
39
+ for (const cell of cells) {
40
+ // eslint-disable-next-line no-control-regex
41
+ if (/[\u0001-\u001A]/.test(cell)) {
42
+ throw new Error('Table data must not contain control characters.');
43
+ }
44
+ }
45
+ }
46
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/validateTableData.js"],"names":["rows","Array","isArray","TypeError","length","Error","columnNumber","cells","cell","test"],"mappings":";;;;;;;AAAA;;;;AAIA;;;;AAIA;;;;0BAIgBA,I,IAAS;AACvB,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAL,EAA0B;AACxB,UAAM,IAAIG,SAAJ,CAAc,8BAAd,CAAN;AACD;;AAED,MAAIH,IAAI,CAACI,MAAL,KAAgB,CAApB,EAAuB;AACrB,UAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,MAAIL,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAAR,KAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIC,KAAJ,CAAU,wCAAV,CAAN;AACD;;AAED,QAAMC,YAAY,GAAGN,IAAI,CAAC,CAAD,CAAJ,CAAQI,MAA7B;AAbuB;AAAA;AAAA;;AAAA;AAevB,yBAAoBJ,IAApB,8HAA0B;AAAA,YAAfO,KAAe;;AACxB,UAAI,CAACN,KAAK,CAACC,OAAN,CAAcK,KAAd,CAAL,EAA2B;AACzB,cAAM,IAAIJ,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAED,UAAII,KAAK,CAACH,MAAN,KAAiBE,YAArB,EAAmC;AACjC,cAAM,IAAID,KAAJ,CAAU,+CAAV,CAAN;AACD,OAPuB,CASxB;AACA;;;AAVwB;AAAA;AAAA;;AAAA;AAWxB,8BAAmBE,KAAnB,mIAA0B;AAAA,gBAAfC,IAAe;;AACxB;AACA,cAAI,kBAAkBC,IAAlB,CAAuBD,IAAvB,CAAJ,EAAkC;AAChC,kBAAM,IAAIH,KAAJ,CAAU,iDAAV,CAAN;AACD;AACF;AAhBuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBzB;AAhCsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCxB,C","sourcesContent":["/**\n * @typedef {string} cell\n */\n\n/**\n * @typedef {cell[]} validateData~column\n */\n\n/**\n * @param {column[]} rows\n * @returns {undefined}\n */\nexport default (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n\n const columnNumber = rows[0].length;\n\n for (const cells of rows) {\n if (!Array.isArray(cells)) {\n throw new TypeError('Table row data must be an array.');\n }\n\n if (cells.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n\n // @todo Make an exception for newline characters.\n // @see https://github.com/gajus/table/issues/9\n for (const cell of cells) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u001A]/.test(cell)) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\n"],"file":"validateTableData.js"}
@@ -1,16 +1,13 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _sliceAnsi = require('slice-ansi');
8
+ var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
8
9
 
9
- var _sliceAnsi2 = _interopRequireDefault(_sliceAnsi);
10
-
11
- var _stringWidth = require('string-width');
12
-
13
- var _stringWidth2 = _interopRequireDefault(_stringWidth);
10
+ var _stringWidth = _interopRequireDefault(require("string-width"));
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
@@ -25,18 +22,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
22
  * @param {number} size
26
23
  * @returns {Array}
27
24
  */
28
- exports.default = (subject, size) => {
25
+ const wrapString = (subject, size) => {
29
26
  let subjectSlice;
30
-
31
27
  subjectSlice = subject;
32
-
33
28
  const chunks = [];
34
29
 
35
30
  do {
36
- chunks.push((0, _sliceAnsi2.default)(subjectSlice, 0, size));
37
-
38
- subjectSlice = (0, _sliceAnsi2.default)(subjectSlice, size).trim();
39
- } while ((0, _stringWidth2.default)(subjectSlice));
31
+ chunks.push((0, _sliceAnsi.default)(subjectSlice, 0, size));
32
+ subjectSlice = (0, _sliceAnsi.default)(subjectSlice, size).trim();
33
+ } while ((0, _stringWidth.default)(subjectSlice));
40
34
 
41
35
  return chunks;
42
- };
36
+ };
37
+
38
+ var _default = wrapString;
39
+ exports.default = _default;
40
+ //# sourceMappingURL=wrapString.js.map
@@ -0,0 +1,29 @@
1
+ import slice from 'slice-ansi';
2
+ import stringWidth from 'string-width';
3
+
4
+ /**
5
+ * Creates an array of strings split into groups the length of size.
6
+ * This function works with strings that contain ASCII characters.
7
+ *
8
+ * wrapText is different from would-be "chunk" implementation
9
+ * in that whitespace characters that occur on a chunk size limit are trimmed.
10
+ *
11
+ * @param {string} subject
12
+ * @param {number} size
13
+ * @returns {Array}
14
+ */
15
+ export default (subject, size) => {
16
+ let subjectSlice;
17
+
18
+ subjectSlice = subject;
19
+
20
+ const chunks = [];
21
+
22
+ do {
23
+ chunks.push(slice(subjectSlice, 0, size));
24
+
25
+ subjectSlice = slice(subjectSlice, size).trim();
26
+ } while (stringWidth(subjectSlice));
27
+
28
+ return chunks;
29
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/wrapString.js"],"names":["subject","size","subjectSlice","chunks","push","trim"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;;;;;;;oBAWgBA,O,EAASC,I,KAAS;AAChC,MAAIC,YAAJ;AAEAA,EAAAA,YAAY,GAAGF,OAAf;AAEA,QAAMG,MAAM,GAAG,EAAf;;AAEA,KAAG;AACDA,IAAAA,MAAM,CAACC,IAAP,CAAY,wBAAMF,YAAN,EAAoB,CAApB,EAAuBD,IAAvB,CAAZ;AAEAC,IAAAA,YAAY,GAAG,wBAAMA,YAAN,EAAoBD,IAApB,EAA0BI,IAA1B,EAAf;AACD,GAJD,QAIS,0BAAYH,YAAZ,CAJT;;AAMA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n * @param {string} subject\n * @param {number} size\n * @returns {Array}\n */\nexport default (subject, size) => {\n let subjectSlice;\n\n subjectSlice = subject;\n\n const chunks = [];\n\n do {\n chunks.push(slice(subjectSlice, 0, size));\n\n subjectSlice = slice(subjectSlice, size).trim();\n } while (stringWidth(subjectSlice));\n\n return chunks;\n};\n"],"file":"wrapString.js"}
package/dist/wrapWord.js CHANGED
@@ -1,16 +1,13 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _sliceAnsi = require('slice-ansi');
8
+ var _sliceAnsi = _interopRequireDefault(require("slice-ansi"));
8
9
 
9
- var _sliceAnsi2 = _interopRequireDefault(_sliceAnsi);
10
-
11
- var _stringWidth = require('string-width');
12
-
13
- var _stringWidth2 = _interopRequireDefault(_stringWidth);
10
+ var _stringWidth = _interopRequireDefault(require("string-width"));
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
@@ -19,34 +16,32 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
16
  * @param {number} size
20
17
  * @returns {Array}
21
18
  */
22
- exports.default = (input, size) => {
19
+ const wrapWord = (input, size) => {
23
20
  let subject;
24
-
25
21
  subject = input;
22
+ const chunks = []; // https://regex101.com/r/gY5kZ1/1
26
23
 
27
- const chunks = [];
28
-
29
- // https://regex101.com/r/gY5kZ1/1
30
24
  const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
31
25
 
32
26
  do {
33
27
  let chunk;
34
-
35
28
  chunk = subject.match(re);
36
29
 
37
30
  if (chunk) {
38
31
  chunk = chunk[0];
39
-
40
- subject = (0, _sliceAnsi2.default)(subject, (0, _stringWidth2.default)(chunk));
41
-
32
+ subject = (0, _sliceAnsi.default)(subject, (0, _stringWidth.default)(chunk));
42
33
  chunk = chunk.trim();
43
34
  } else {
44
- chunk = (0, _sliceAnsi2.default)(subject, 0, size);
45
- subject = (0, _sliceAnsi2.default)(subject, size);
35
+ chunk = (0, _sliceAnsi.default)(subject, 0, size);
36
+ subject = (0, _sliceAnsi.default)(subject, size);
46
37
  }
47
38
 
48
39
  chunks.push(chunk);
49
- } while ((0, _stringWidth2.default)(subject));
40
+ } while ((0, _stringWidth.default)(subject));
50
41
 
51
42
  return chunks;
52
- };
43
+ };
44
+
45
+ var _default = wrapWord;
46
+ exports.default = _default;
47
+ //# sourceMappingURL=wrapWord.js.map
@@ -0,0 +1,39 @@
1
+ import slice from 'slice-ansi';
2
+ import stringWidth from 'string-width';
3
+
4
+ /**
5
+ * @param {string} input
6
+ * @param {number} size
7
+ * @returns {Array}
8
+ */
9
+ export default (input, size) => {
10
+ let subject;
11
+
12
+ subject = input;
13
+
14
+ const chunks = [];
15
+
16
+ // https://regex101.com/r/gY5kZ1/1
17
+ const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
18
+
19
+ do {
20
+ let chunk;
21
+
22
+ chunk = subject.match(re);
23
+
24
+ if (chunk) {
25
+ chunk = chunk[0];
26
+
27
+ subject = slice(subject, stringWidth(chunk));
28
+
29
+ chunk = chunk.trim();
30
+ } else {
31
+ chunk = slice(subject, 0, size);
32
+ subject = slice(subject, size);
33
+ }
34
+
35
+ chunks.push(chunk);
36
+ } while (stringWidth(subject));
37
+
38
+ return chunks;
39
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/wrapWord.js"],"names":["input","size","subject","chunks","re","RegExp","chunk","match","trim","push"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;kBAKgBA,K,EAAOC,I,KAAS;AAC9B,MAAIC,OAAJ;AAEAA,EAAAA,OAAO,GAAGF,KAAV;AAEA,QAAMG,MAAM,GAAG,EAAf,CAL8B,CAO9B;;AACA,QAAMC,EAAE,GAAG,IAAIC,MAAJ,CAAW,WAAWJ,IAAX,GAAkB,mBAAlB,IAAyCA,IAAI,GAAG,CAAhD,IAAqD,wBAAhE,CAAX;;AAEA,KAAG;AACD,QAAIK,KAAJ;AAEAA,IAAAA,KAAK,GAAGJ,OAAO,CAACK,KAAR,CAAcH,EAAd,CAAR;;AAEA,QAAIE,KAAJ,EAAW;AACTA,MAAAA,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAb;AAEAJ,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAe,0BAAYI,KAAZ,CAAf,CAAV;AAEAA,MAAAA,KAAK,GAAGA,KAAK,CAACE,IAAN,EAAR;AACD,KAND,MAMO;AACLF,MAAAA,KAAK,GAAG,wBAAMJ,OAAN,EAAe,CAAf,EAAkBD,IAAlB,CAAR;AACAC,MAAAA,OAAO,GAAG,wBAAMA,OAAN,EAAeD,IAAf,CAAV;AACD;;AAEDE,IAAAA,MAAM,CAACM,IAAP,CAAYH,KAAZ;AACD,GAjBD,QAiBS,0BAAYJ,OAAZ,CAjBT;;AAmBA,SAAOC,MAAP;AACD,C","sourcesContent":["import slice from 'slice-ansi';\nimport stringWidth from 'string-width';\n\n/**\n * @param {string} input\n * @param {number} size\n * @returns {Array}\n */\nexport default (input, size) => {\n let subject;\n\n subject = input;\n\n const chunks = [];\n\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + size + '}(\\\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n\n do {\n let chunk;\n\n chunk = subject.match(re);\n\n if (chunk) {\n chunk = chunk[0];\n\n subject = slice(subject, stringWidth(chunk));\n\n chunk = chunk.trim();\n } else {\n chunk = slice(subject, 0, size);\n subject = slice(subject, size);\n }\n\n chunks.push(chunk);\n } while (stringWidth(subject));\n\n return chunks;\n};\n"],"file":"wrapWord.js"}
package/package.json CHANGED
@@ -5,33 +5,45 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "ajv": "^6.0.1",
9
- "ajv-keywords": "^3.0.0",
10
- "chalk": "^2.1.0",
11
- "lodash": "^4.17.4",
8
+ "ajv": "^6.5.3",
9
+ "lodash": "^4.17.10",
12
10
  "slice-ansi": "1.0.0",
13
11
  "string-width": "^2.1.1"
14
12
  },
15
13
  "description": "Formats data into a string table.",
16
14
  "devDependencies": {
15
+ "@babel/cli": "^7.1.2",
16
+ "@babel/core": "^7.1.2",
17
+ "@babel/node": "^7.0.0",
18
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
19
+ "@babel/preset-env": "^7.1.0",
20
+ "@babel/register": "^7.0.0",
17
21
  "ajv-cli": "^3.0.0",
18
- "babel": "^6.23.0",
19
- "babel-cli": "^6.26.0",
20
- "babel-core": "^6.26.0",
21
- "babel-plugin-istanbul": "^4.1.5",
22
- "babel-preset-es2015-node4": "^2.1.1",
23
- "babel-register": "^6.26.0",
24
- "chai": "^4.1.2",
25
- "eslint": "^4.7.2",
26
- "eslint-config-canonical": "^9.3.1",
27
- "gitdown": "^2.5.1",
28
- "husky": "^0.14.3",
29
- "mocha": "^5.0.0",
30
- "nyc": "^11.2.1",
31
- "sinon": "^4.0.0"
22
+ "ajv-keywords": "^3.2.0",
23
+ "babel-plugin-istanbul": "^5.1.0",
24
+ "babel-plugin-transform-export-default-name": "^2.0.4",
25
+ "chai": "^4.2.0",
26
+ "chalk": "^2.4.1",
27
+ "coveralls": "^3.0.2",
28
+ "eslint": "^5.6.1",
29
+ "eslint-config-canonical": "^13.0.0",
30
+ "flow-bin": "^0.81.0",
31
+ "flow-copy-source": "^2.0.2",
32
+ "gitdown": "^2.5.4",
33
+ "husky": "^1.0.1",
34
+ "mocha": "^5.2.0",
35
+ "nyc": "^13.1.0",
36
+ "semantic-release": "^15.9.16",
37
+ "sinon": "^6.3.4"
32
38
  },
33
39
  "engines": {
34
- "node": ">=4.0.0"
40
+ "node": ">=6.0.0"
41
+ },
42
+ "husky": {
43
+ "hooks": {
44
+ "post-commit": "npm run create-readme && git add README.md && git commit -m 'docs: generate docs' --no-verify",
45
+ "pre-commit": "npm run lint && npm run test && npm run build"
46
+ }
35
47
  },
36
48
  "keywords": [
37
49
  "ascii",
@@ -45,12 +57,14 @@
45
57
  "name": "table",
46
58
  "nyc": {
47
59
  "include": [
48
- "src/*.js"
60
+ "src/**/*.js"
49
61
  ],
50
62
  "instrument": false,
51
- "lines": 70,
63
+ "reporter": [
64
+ "text-lcov"
65
+ ],
52
66
  "require": [
53
- "babel-register"
67
+ "@babel/register"
54
68
  ],
55
69
  "sourceMap": false
56
70
  },
@@ -59,13 +73,11 @@
59
73
  "url": "https://github.com/gajus/table"
60
74
  },
61
75
  "scripts": {
62
- "build": "rm -fr ./dist && NODE_ENV=production babel --copy-files ./src --out-dir ./dist && npm run make-validators",
63
- "lint": "npm run build && eslint ./src ./tests",
64
- "make-readme": "gitdown ./.README/README.md --output-file ./README.md",
65
- "make-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -c ajv-keywords/keywords/typeof -o dist/validateConfig.js && ajv compile --all-errors --inline-refs=false -s src/schemas/streamConfig -c ajv-keywords/keywords/typeof -o dist/validateStreamConfig.js",
66
- "precommit": "npm run lint && npm run test",
67
- "prepublish": "NODE_ENV=production npm run build",
68
- "test": "npm run build && nyc --check-coverage mocha"
76
+ "build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && npm run create-validators && flow-copy-source src dist",
77
+ "create-readme": "gitdown ./.README/README.md --output-file ./README.md",
78
+ "create-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -c ajv-keywords/keywords/typeof -o dist/validateConfig.js && ajv compile --all-errors --inline-refs=false -s src/schemas/streamConfig -c ajv-keywords/keywords/typeof -o dist/validateStreamConfig.js",
79
+ "lint": "npm run build && eslint ./src ./test && flow",
80
+ "test": "mocha --require @babel/register"
69
81
  },
70
- "version": "4.0.3"
82
+ "version": "5.1.0"
71
83
  }