tidy-table 4.0.9 → 4.0.10

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/CHANGELOG.md CHANGED
@@ -56,3 +56,8 @@ NPM security update ([CVE-2023-42282](https://github.com/advisories/GHSA-78xj-cg
56
56
  ## Updated
57
57
 
58
58
  - Replaced Travis-CI with Github workflow
59
+
60
+ ## [4.0.10] - 2024-07-04
61
+
62
+ - Upgraded `@wdio` CLI local-runner, outdated NPM packages
63
+ - NPM security updates ([ws override](https://github.com/advisories/GHSA-3h5v-q93c-6h6q))
package/SECURITY.md ADDED
@@ -0,0 +1,18 @@
1
+ # Security Policy
2
+
3
+ ## Supported releases
4
+
5
+ | Version | Supported |
6
+ | ------- | ------------------ |
7
+ | 1.x.x | :x: |
8
+ | 2.x.x | :x: |
9
+ | 3.x.x | :x: |
10
+ | 4.0.x | :white_check_mark: |
11
+
12
+ ## Reporting an issue
13
+
14
+ If you find a vulnerability with this package, please report it [here](https://github.com/nuxy/tidy-table/issues) for full disclosure.
15
+
16
+ ## Contributions
17
+
18
+ If you fix a bug, or have a code you want to contribute, please send a pull-request with your changes. (Note: Before committing your code please ensure that you are following the [Node.js style guide](https://github.com/felixge/node-style-guide))
@@ -1 +1 @@
1
- {"version":3,"file":"tidy-table.js","names":["TidyTable","container","settings","options","self","defaults","enableCheckbox","enableMenu","reverseSortDir","responsive","Object","assign","columnTitles","columnValues","length","renderTable","Error","_settings$postProcess","table","createTableElm","postProcess","block","querySelector","parentNode","replaceChild","appendChild","createMenuElm","classList","add","document","createElement","createTableHeaderElm","createTableBodyElm","rows","querySelectorAll","i","input","createCheckboxElm","col","addEventListener","toggleSelRows","index","bind","insertBefore","firstChild","tbody","vals","row","j","_settings$postProcess2","val","createTextNode","setAttribute","column","thead","titles","sortOrder","_loop","title","selected","className","sortByColumn","name","_settings$postProcess3","select","callback","menuOptions","value","getCheckedAsObj","option","text","menu","objs","cols","childNodes","checked","textContent","push","num","replace","order","sortByPattern","reverse","sort","a","b","str1","str2","isNaN","cmpAny","cmpInt","window","tidyTable","module","exports"],"sources":["../src/tidy-table.js"],"sourcesContent":["/**\n * tidy-table\n * Create a HTML table that can be sorted, selected and\n * post-processed.\n *\n * Copyright 2012-2023, Marc S. Brooks (https://mbrooks.info)\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n */\n\n'use strict';\n\n/**\n * @param {Element} container\n * Containing HTML element.\n *\n * @param {Object} settings\n * Table settings.\n *\n * @param {Object} options\n * Configuration overrides (optional).\n */\nfunction TidyTable(container, settings, options = {}) {\n const self = this;\n\n const defaults = {\n enableCheckbox: false,\n enableMenu: false,\n reverseSortDir: false,\n responsive: false\n };\n\n (function() {\n self.options = Object.assign(defaults, options);\n\n const {columnTitles, columnValues} = settings;\n\n if (columnTitles.length && columnValues.length) {\n renderTable();\n } else {\n throw new Error('Failed to initialize (missing settings)');\n }\n })();\n\n /**\n * Render a new table instance.\n */\n function renderTable() {\n const table = createTableElm();\n\n // Post-process table results HTML object.\n if (typeof settings.postProcess?.table === 'function') {\n settings.postProcess.table(table);\n }\n\n // Replace the element, if already exists.\n const block = container.querySelector('.tidy-table table');\n\n if (block) {\n block.parentNode.replaceChild(table, block);\n } else {\n\n // Generate select menu elements.\n if (self.options.enableMenu) {\n container.appendChild(createMenuElm('options'));\n }\n\n container.classList.add('tidy-table');\n container.appendChild(table);\n }\n\n // Enable/disable responsive layout support.\n if (defaults.responsive) {\n container.classList.add('responsive');\n }\n }\n\n /**\n * Create table elements.\n *\n * @return {Element}\n */\n function createTableElm() {\n const table = document.createElement('table');\n table.appendChild(createTableHeaderElm());\n table.appendChild(createTableBodyElm());\n\n // Append check boxes to beginning each row.\n if (self.options.enableCheckbox) {\n const rows = table.querySelectorAll('tr');\n\n for (let i = 0; i < rows.length; i++) {\n const input = createCheckboxElm();\n\n let col;\n\n // First row is always the header.\n if (i === 0) {\n col = document.createElement('th');\n\n // Attach event to check all boxes.\n input.addEventListener('click', function() {\n toggleSelRows(rows);\n });\n }\n else {\n col = document.createElement('td');\n\n // Attach events to each checkbox.\n input.addEventListener('click', function(index) {\n toggleSelRows(rows, index);\n }.bind(null, i), false);\n }\n\n col.appendChild(input);\n\n // Insert before first cell.\n rows[i].insertBefore(col, rows[i].firstChild);\n }\n }\n\n return table;\n }\n\n /**\n * Create table body elements.\n *\n * @return {Element}\n */\n function createTableBodyElm() {\n const tbody = document.createElement('tbody');\n\n const vals = settings.columnValues;\n\n for (let i = 0; i < vals.length; i++) {\n const row = document.createElement('tr');\n\n for (let j = 0; j < vals[i].length; j++) {\n const val = vals[i][j];\n\n const col = document.createElement('td');\n col.appendChild(document.createTextNode(val));\n col.setAttribute('title', val);\n row.appendChild(col);\n\n // Post-process table column HTML object.\n if (typeof settings.postProcess?.column === 'function') {\n settings.postProcess.column(col);\n }\n }\n\n tbody.appendChild(row);\n }\n\n return tbody;\n }\n\n /**\n * Create table header elements.\n *\n * @return {Element}\n */\n function createTableHeaderElm() {\n const thead = document.createElement('thead');\n const row = document.createElement('tr');\n\n const titles = settings.columnTitles;\n\n let sortOrder = self.sortOrder;\n\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i];\n\n const col = document.createElement('th');\n col.appendChild(document.createTextNode(title));\n col.setAttribute('title', title);\n\n row.appendChild(col);\n\n if (self.selected === i) {\n let className;\n\n // Determine column result order.\n if (!self.options.reverseSortDir) {\n if (sortOrder === 'asc' || !sortOrder) {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'asc';\n }\n }\n else {\n if (sortOrder === 'desc' || !sortOrder) {\n className = 'arrow-down';\n sortOrder = 'asc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n }\n\n // Highlight selected column.\n col.classList.add(className);\n }\n\n // Attach column sorting events.\n col.addEventListener('click', function(index) {\n self.sortOrder = (self.selected === i) ? sortOrder : 'asc';\n\n sortByColumn(index, sortOrder);\n\n self.selected = index;\n\n renderTable();\n }.bind(null, i), false);\n }\n\n thead.appendChild(row);\n\n return thead;\n }\n\n /**\n * Create checkbox element.\n *\n * @returns {Element}\n */\n function createCheckboxElm() {\n const input = document.createElement('input');\n input.setAttribute('type', 'checkbox');\n\n return input;\n }\n\n /**\n * Create select menu element.\n *\n * @returns {Element}\n */\n function createMenuElm(name) {\n\n // Create reusable elements.\n const select = document.createElement('select');\n select.classList.add(name);\n\n // Listen for select menu events.\n select.addEventListener('change', function() {\n\n // Execute callback.\n const callback = settings.menuOptions[this.value][1].callback;\n\n if (typeof callback === 'function') {\n callback(getCheckedAsObj());\n }\n\n this.value = 0;\n });\n\n // .. Options\n for (let i = 0; i < settings.menuOptions.length; i++) {\n const option = document.createElement('option');\n option.text = settings.menuOptions[i][0];\n option.value = i;\n\n select.appendChild(option);\n }\n\n // Post-process select menu HTML object.\n if (typeof settings.postProcess?.menu === 'function') {\n settings.postProcess.menu(select);\n }\n\n return select;\n }\n\n /**\n * Return selected row values as array of objects.\n *\n * @returns {Array<Object>}\n */\n function getCheckedAsObj() {\n const rows = container.querySelectorAll('tbody > tr');\n const objs = [];\n\n for (let i = 0; i < rows.length; i++) {\n const cols = rows[i].childNodes;\n\n // If the row checkbox is selected.\n if (cols[0].firstChild.checked) {\n const row = [];\n\n // Simulate an associative array.\n for (let j = 1; j < cols.length; j++) {\n row[j - 1] = cols[j].textContent;\n }\n\n objs.push(row);\n }\n }\n\n return objs;\n }\n\n /**\n * Select/Deselect (input checkbox and row highlight).\n */\n function toggleSelRows(rows, num) {\n let checked;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n const input = row.querySelector('input[type=checkbox]');\n\n // Update all rows.\n if (!num) {\n if (i === 0) {\n checked = input.checked;\n continue;\n }\n\n if (checked) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n\n // Update selected row.\n else {\n if (i === 0) {\n continue;\n }\n\n if (input.checked === true) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n }\n }\n\n /**\n * Display results ordered by selected column.\n */\n function sortByColumn(num, order) {\n let sortByPattern = settings.sortByPattern;\n\n if (typeof sortByPattern !== 'function') {\n sortByPattern = function(val) {\n return val?.replace(/\\$|%|#/g, '');\n };\n }\n\n const reverse = (order === 'desc') ? -1 : 1;\n\n // Sort object by array index.\n settings.columnValues.sort(function(a, b) {\n const str1 = sortByPattern(a[num]);\n const str2 = sortByPattern(b[num]);\n\n if (isNaN(str1)) {\n return [reverse * cmpAny(str1, str2)] >\n [reverse * cmpAny(str2, str1)] ? -1 : 1;\n }\n\n return [reverse * cmpInt(str1, str2)];\n });\n }\n\n /**\n * Generic string comparison functions.\n */\n function cmpAny(a, b) {\n return (a > b) ? 1 : (a < b) ? -1 : 0;\n }\n\n function cmpInt(a, b) {\n return b - a;\n }\n\n return self;\n}\n\n/**\n * Set global/exportable instance, where supported.\n */\nwindow.tidyTable = function(container, settings, options) {\n return new TidyTable(container, settings, options);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = TidyTable;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tidy-table.js","names":["TidyTable","container","settings","options","self","defaults","enableCheckbox","enableMenu","reverseSortDir","responsive","Object","assign","columnTitles","columnValues","length","renderTable","Error","_settings$postProcess","table","createTableElm","postProcess","block","querySelector","parentNode","replaceChild","appendChild","createMenuElm","classList","add","document","createElement","createTableHeaderElm","createTableBodyElm","rows","querySelectorAll","i","input","createCheckboxElm","col","addEventListener","toggleSelRows","index","bind","insertBefore","firstChild","tbody","vals","row","j","_settings$postProcess2","val","createTextNode","setAttribute","column","thead","titles","sortOrder","_loop","title","selected","className","sortByColumn","name","_settings$postProcess3","select","callback","menuOptions","value","getCheckedAsObj","option","text","menu","objs","cols","childNodes","checked","textContent","push","num","replace","order","sortByPattern","reverse","sort","a","b","str1","str2","isNaN","cmpAny","cmpInt","window","tidyTable","module","exports"],"sources":["../src/tidy-table.js"],"sourcesContent":["/**\n * tidy-table\n * Create a HTML table that can be sorted, selected and\n * post-processed.\n *\n * Copyright 2012-2023, Marc S. Brooks (https://mbrooks.info)\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n */\n\n'use strict';\n\n/**\n * @param {Element} container\n * Containing HTML element.\n *\n * @param {Object} settings\n * Table settings.\n *\n * @param {Object} options\n * Configuration overrides (optional).\n */\nfunction TidyTable(container, settings, options = {}) {\n const self = this;\n\n const defaults = {\n enableCheckbox: false,\n enableMenu: false,\n reverseSortDir: false,\n responsive: false\n };\n\n (function() {\n self.options = Object.assign(defaults, options);\n\n const {columnTitles, columnValues} = settings;\n\n if (columnTitles.length && columnValues.length) {\n renderTable();\n } else {\n throw new Error('Failed to initialize (missing settings)');\n }\n })();\n\n /**\n * Render a new table instance.\n */\n function renderTable() {\n const table = createTableElm();\n\n // Post-process table results HTML object.\n if (typeof settings.postProcess?.table === 'function') {\n settings.postProcess.table(table);\n }\n\n // Replace the element, if already exists.\n const block = container.querySelector('.tidy-table table');\n\n if (block) {\n block.parentNode.replaceChild(table, block);\n } else {\n\n // Generate select menu elements.\n if (self.options.enableMenu) {\n container.appendChild(createMenuElm('options'));\n }\n\n container.classList.add('tidy-table');\n container.appendChild(table);\n }\n\n // Enable/disable responsive layout support.\n if (defaults.responsive) {\n container.classList.add('responsive');\n }\n }\n\n /**\n * Create table elements.\n *\n * @return {Element}\n */\n function createTableElm() {\n const table = document.createElement('table');\n table.appendChild(createTableHeaderElm());\n table.appendChild(createTableBodyElm());\n\n // Append check boxes to beginning each row.\n if (self.options.enableCheckbox) {\n const rows = table.querySelectorAll('tr');\n\n for (let i = 0; i < rows.length; i++) {\n const input = createCheckboxElm();\n\n let col;\n\n // First row is always the header.\n if (i === 0) {\n col = document.createElement('th');\n\n // Attach event to check all boxes.\n input.addEventListener('click', function() {\n toggleSelRows(rows);\n });\n }\n else {\n col = document.createElement('td');\n\n // Attach events to each checkbox.\n input.addEventListener('click', function(index) {\n toggleSelRows(rows, index);\n }.bind(null, i), false);\n }\n\n col.appendChild(input);\n\n // Insert before first cell.\n rows[i].insertBefore(col, rows[i].firstChild);\n }\n }\n\n return table;\n }\n\n /**\n * Create table body elements.\n *\n * @return {Element}\n */\n function createTableBodyElm() {\n const tbody = document.createElement('tbody');\n\n const vals = settings.columnValues;\n\n for (let i = 0; i < vals.length; i++) {\n const row = document.createElement('tr');\n\n for (let j = 0; j < vals[i].length; j++) {\n const val = vals[i][j];\n\n const col = document.createElement('td');\n col.appendChild(document.createTextNode(val));\n col.setAttribute('title', val);\n row.appendChild(col);\n\n // Post-process table column HTML object.\n if (typeof settings.postProcess?.column === 'function') {\n settings.postProcess.column(col);\n }\n }\n\n tbody.appendChild(row);\n }\n\n return tbody;\n }\n\n /**\n * Create table header elements.\n *\n * @return {Element}\n */\n function createTableHeaderElm() {\n const thead = document.createElement('thead');\n const row = document.createElement('tr');\n\n const titles = settings.columnTitles;\n\n let sortOrder = self.sortOrder;\n\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i];\n\n const col = document.createElement('th');\n col.appendChild(document.createTextNode(title));\n col.setAttribute('title', title);\n\n row.appendChild(col);\n\n if (self.selected === i) {\n let className;\n\n // Determine column result order.\n if (!self.options.reverseSortDir) {\n if (sortOrder === 'asc' || !sortOrder) {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'asc';\n }\n }\n else {\n if (sortOrder === 'desc' || !sortOrder) {\n className = 'arrow-down';\n sortOrder = 'asc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n }\n\n // Highlight selected column.\n col.classList.add(className);\n }\n\n // Attach column sorting events.\n col.addEventListener('click', function(index) {\n self.sortOrder = (self.selected === i) ? sortOrder : 'asc';\n\n sortByColumn(index, sortOrder);\n\n self.selected = index;\n\n renderTable();\n }.bind(null, i), false);\n }\n\n thead.appendChild(row);\n\n return thead;\n }\n\n /**\n * Create checkbox element.\n *\n * @returns {Element}\n */\n function createCheckboxElm() {\n const input = document.createElement('input');\n input.setAttribute('type', 'checkbox');\n\n return input;\n }\n\n /**\n * Create select menu element.\n *\n * @returns {Element}\n */\n function createMenuElm(name) {\n\n // Create reusable elements.\n const select = document.createElement('select');\n select.classList.add(name);\n\n // Listen for select menu events.\n select.addEventListener('change', function() {\n\n // Execute callback.\n const callback = settings.menuOptions[this.value][1].callback;\n\n if (typeof callback === 'function') {\n callback(getCheckedAsObj());\n }\n\n this.value = 0;\n });\n\n // .. Options\n for (let i = 0; i < settings.menuOptions.length; i++) {\n const option = document.createElement('option');\n option.text = settings.menuOptions[i][0];\n option.value = i;\n\n select.appendChild(option);\n }\n\n // Post-process select menu HTML object.\n if (typeof settings.postProcess?.menu === 'function') {\n settings.postProcess.menu(select);\n }\n\n return select;\n }\n\n /**\n * Return selected row values as array of objects.\n *\n * @returns {Array<Object>}\n */\n function getCheckedAsObj() {\n const rows = container.querySelectorAll('tbody > tr');\n const objs = [];\n\n for (let i = 0; i < rows.length; i++) {\n const cols = rows[i].childNodes;\n\n // If the row checkbox is selected.\n if (cols[0].firstChild.checked) {\n const row = [];\n\n // Simulate an associative array.\n for (let j = 1; j < cols.length; j++) {\n row[j - 1] = cols[j].textContent;\n }\n\n objs.push(row);\n }\n }\n\n return objs;\n }\n\n /**\n * Select/Deselect (input checkbox and row highlight).\n */\n function toggleSelRows(rows, num) {\n let checked;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n const input = row.querySelector('input[type=checkbox]');\n\n // Update all rows.\n if (!num) {\n if (i === 0) {\n checked = input.checked;\n continue;\n }\n\n if (checked) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n\n // Update selected row.\n else {\n if (i === 0) {\n continue;\n }\n\n if (input.checked === true) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n }\n }\n\n /**\n * Display results ordered by selected column.\n */\n function sortByColumn(num, order) {\n let sortByPattern = settings.sortByPattern;\n\n if (typeof sortByPattern !== 'function') {\n sortByPattern = function(val) {\n return val?.replace(/\\$|%|#/g, '');\n };\n }\n\n const reverse = (order === 'desc') ? -1 : 1;\n\n // Sort object by array index.\n settings.columnValues.sort(function(a, b) {\n const str1 = sortByPattern(a[num]);\n const str2 = sortByPattern(b[num]);\n\n if (isNaN(str1)) {\n return [reverse * cmpAny(str1, str2)] >\n [reverse * cmpAny(str2, str1)] ? -1 : 1;\n }\n\n return [reverse * cmpInt(str1, str2)];\n });\n }\n\n /**\n * Generic string comparison functions.\n */\n function cmpAny(a, b) {\n return (a > b) ? 1 : (a < b) ? -1 : 0;\n }\n\n function cmpInt(a, b) {\n return b - a;\n }\n\n return self;\n}\n\n/**\n * Set global/exportable instance, where supported.\n */\nwindow.tidyTable = function(container, settings, options) {\n return new TidyTable(container, settings, options);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = TidyTable;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tidy-table",
3
- "version": "4.0.9",
3
+ "version": "4.0.10",
4
4
  "description": "Create a HTML table that can be sorted, selected, and post-processed.",
5
5
  "main": "src/tidy-table.js",
6
6
  "scripts": {
@@ -30,25 +30,26 @@
30
30
  "author": "Marc S. Brooks <devel@mbrooks.info> (https://mbrooks.info)",
31
31
  "license": "MIT",
32
32
  "devDependencies": {
33
- "@babel/cli": "^7.18.6",
34
- "@babel/core": "^7.18.0",
35
- "@babel/eslint-parser": "^7.17.0",
36
- "@babel/plugin-proposal-decorators": "^7.18.6",
33
+ "@babel/cli": "^7.24.7",
34
+ "@babel/core": "^7.24.7",
35
+ "@babel/eslint-parser": "^7.24.7",
36
+ "@babel/plugin-proposal-decorators": "^7.24.7",
37
37
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
38
- "@babel/plugin-transform-class-properties": "^7.22.5",
39
- "@babel/preset-env": "^7.18.0",
40
- "@babel/register": "^7.17.7",
38
+ "@babel/plugin-transform-class-properties": "^7.24.7",
39
+ "@babel/preset-env": "^7.24.7",
40
+ "@babel/register": "^7.24.6",
41
41
  "@node-minify/clean-css": "^4.0.5",
42
42
  "@node-minify/cli": "^6.2.0",
43
43
  "@node-minify/uglify-js": "^4.0.5",
44
- "@wdio/cli": "^8.8.8",
45
- "@wdio/local-runner": "^8.8.8",
46
- "@wdio/mocha-framework": "^8.8.7",
47
- "@wdio/spec-reporter": "^8.8.7",
48
- "eslint": "^8.18.0",
49
- "sass": "^1.53.0"
44
+ "@wdio/cli": "^8.39.1",
45
+ "@wdio/local-runner": "^8.39.1",
46
+ "@wdio/mocha-framework": "^8.39.0",
47
+ "@wdio/spec-reporter": "^8.39.0",
48
+ "eslint": "^8.57.0",
49
+ "sass": "^1.77.6"
50
50
  },
51
51
  "overrides": {
52
- "got": "^12.0.0"
52
+ "got": "^12.0.0",
53
+ "ws": "^7.0.0"
53
54
  }
54
55
  }