From 9385e4adaecd56a1cb2f8a7647597883daeaf9af Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 25 Sep 2024 12:29:55 +0800 Subject: [PATCH] Refactor: replace `table` with `cli-table3` --- Build/build-mitm-hostname.ts | 25 ++++------- package.json | 2 +- pnpm-lock.yaml | 82 +++++++++--------------------------- 3 files changed, 30 insertions(+), 79 deletions(-) diff --git a/Build/build-mitm-hostname.ts b/Build/build-mitm-hostname.ts index 9d95dd5f..52364cd8 100644 --- a/Build/build-mitm-hostname.ts +++ b/Build/build-mitm-hostname.ts @@ -1,6 +1,5 @@ import { readFileByLine } from './lib/fetch-text-by-line'; -import pathFn from 'node:path'; -import table from 'table'; +import Table from 'cli-table3'; import { fdir as Fdir } from 'fdir'; import { green, yellow } from 'picocolors'; import { processLineFromReadline } from './lib/process-line'; @@ -37,11 +36,9 @@ const PRESET_MITM_HOSTNAMES = [ ]; (async () => { - const folderListPath = pathFn.resolve(OUTPUT_SURGE_DIR, 'List/'); - const rulesets = await new Fdir() .withFullPaths() - .crawl(folderListPath) + .crawl(OUTPUT_SURGE_DIR) .withPromise(); const urlRegexPaths: Array<{ origin: string, processed: string }> = []; @@ -109,15 +106,18 @@ const PRESET_MITM_HOSTNAMES = [ ); }); - const parsedDomainsData: Array<[string, string]> = []; + const parsedTable = new Table({ + head: ['Hostname Pattern', 'Original Rules'] + }); + dedupedUrlRegexPaths.forEach(i => { const result = getHostnameSafe(i.processed); if (result) { if (matchWithRegExpArray(result, mitmDomainsRegExpArray)) { - parsedDomainsData.push([green(result), i.origin]); + parsedTable.push([green(result), i.origin]); } else { - parsedDomainsData.push([yellow(result), i.origin]); + parsedTable.push([yellow(result), i.origin]); } } }); @@ -126,14 +126,7 @@ const PRESET_MITM_HOSTNAMES = [ console.log(`hostname = %APPEND% ${Array.from(mitmDomains).join(', ')}`); console.log('--------------------'); console.log('Parsed Sucessed:'); - console.log(table.table(parsedDomainsData, { - border: table.getBorderCharacters('void'), - columnDefault: { - paddingLeft: 0, - paddingRight: 3 - }, - drawHorizontalLine: () => false - })); + console.log(parsedTable.toString()); console.log('--------------------'); console.log('Parsed Failed'); console.log(Array.from(parsedFailures).join('\n')); diff --git a/package.json b/package.json index fa4b876d..4e99b180 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "async-sema": "^3.1.1", "better-sqlite3": "^11.3.0", "ci-info": "^4.0.0", + "cli-table3": "^0.6.5", "csv-parse": "^5.5.6", "fast-cidr-tools": "^0.3.0", "fdir": "^6.3.0", @@ -35,7 +36,6 @@ "mnemonist": "^0.39.8", "picocolors": "^1.1.0", "punycode": "^2.3.1", - "table": "^6.8.2", "tar-fs": "^3.0.6", "tldts": "^6.1.47", "tldts-experimental": "^6.1.47", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca7ca07b..40e18101 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: ci-info: specifier: ^4.0.0 version: 4.0.0 + cli-table3: + specifier: ^0.6.5 + version: 0.6.5 csv-parse: specifier: ^5.5.6 version: 5.5.6 @@ -56,9 +59,6 @@ importers: punycode: specifier: ^2.3.1 version: 2.3.1 - table: - specifier: ^6.8.2 - version: 6.8.2 tar-fs: specifier: ^3.0.6 version: 3.0.6 @@ -135,6 +135,10 @@ packages: '@cliqz/adblocker@1.33.2': resolution: {integrity: sha512-S6XHtSsn2+vvCgkqgmMuyZwGjXNfwQtPdzitrELzzNP881gbt7DDdbTBPAF50DOI2ZPDvkXfyoinbY5wEJPD+g==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} @@ -524,9 +528,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -549,10 +550,6 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -648,6 +645,10 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -896,9 +897,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -1091,9 +1089,6 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -1122,9 +1117,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -1304,10 +1296,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1362,10 +1350,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -1422,10 +1406,6 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} - table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} - tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -1572,6 +1552,9 @@ snapshots: '@types/firefox-webext-browser': 120.0.4 tldts-experimental: 6.1.47 + '@colors/colors@1.5.0': + optional: true + '@dual-bundle/import-meta-resolve@4.1.0': {} '@emnapi/core@1.2.0': @@ -1987,13 +1970,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ansi-colors@4.1.3: {} ansi-regex@5.0.1: {} @@ -2011,8 +1987,6 @@ snapshots: assertion-error@1.1.0: {} - astral-regex@2.0.0: {} - async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -2129,6 +2103,12 @@ snapshots: ci-info@4.0.0: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + client-only@0.0.1: {} cliui@7.0.4: @@ -2439,8 +2419,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.1: {} - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -2587,8 +2565,6 @@ snapshots: json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-pretty-compact@3.0.0: {} @@ -2620,8 +2596,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash.truncate@4.4.2: {} - log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -2832,8 +2806,6 @@ snapshots: require-directory@2.1.1: {} - require-from-string@2.0.2: {} - resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -2882,12 +2854,6 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -2941,14 +2907,6 @@ snapshots: dependencies: tslib: 2.7.0 - table@6.8.2: - dependencies: - ajv: 8.17.1 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - tapable@2.2.1: {} tar-fs@2.1.1: