diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 4347d96e..7061ce69 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -40,3 +40,7 @@ jobs: - id: format name: Format code run: npm run format:check + + - id: check-deps + name: Check for unused scripts and dependencies + run: npm run knip diff --git a/knip.config.ts b/knip.config.ts index b173af63..34c85ab8 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -1,7 +1,7 @@ import type { KnipConfig } from 'knip'; const config: KnipConfig = { - entry: ['src/index.js'], + entry: ['src/index.js', 'src/**/*.stories.{svelte,mdx}', 'src/docs/**'], project: [ 'src/**/*.{mdx,js,jsx,ts,svelte}', 'bin/**/*.{js,cjs}', @@ -11,9 +11,9 @@ const config: KnipConfig = { ignoreDependencies: [ /@types\/.*/, /@storybook\/.*/, - /@fortawesome\/.*/, - 'normalize.css', - '@mdx-js/mdx', + 'chromatic', + 'prop-types', + 'postcss', ], }; diff --git a/package-lock.json b/package-lock.json index d9c38d4b..9a86cd7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,10 +25,8 @@ "svelte-search": "^2.0.1" }, "devDependencies": { - "@americanexpress/css-to-js": "^1.0.1", "@changesets/cli": "^2.27.7", "@chromatic-com/storybook": "^1.7.0", - "@evilmartians/lefthook": "^1.7.14", "@reuters-graphics/yaks-eslint": "^0.0.6", "@reuters-graphics/yaks-prettier": "^0.0.4", "@storybook/addon-actions": "^8.2.9", @@ -61,10 +59,8 @@ "@types/proper-url-join": "^2.1.1", "@types/pym.js": "^1.3.2", "@types/react-syntax-highlighter": "^15.5.7", - "autoprefixer": "^10.4.14", "change-case": "^4.1.2", "chromatic": "^7.1.0", - "colord": "^2.9.3", "css-color-converter": "^2.0.0", "deep-object-diff": "^1.1.9", "eslint": "^9.9.0", @@ -76,8 +72,8 @@ "mermaid": "^10.9.1", "npm-run-all": "^4.1.5", "postcss": "^8.4.41", - "postcss-load-config": "^6.0.1", "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", "prompts": "^2.4.2", "prop-types": "^15.8.1", "publint": "^0.2.10", @@ -91,8 +87,6 @@ "storybook": "^8.2.9", "svelte": "^4.2.18", "svelte-loader": "^3.2.3", - "svelte-preprocess": "^6.0.2", - "svelte2tsx": "^0.6.27", "tiny-glob": "^0.2.9", "typescript": "^5.5.4", "vite": "^5.4.2" @@ -111,18 +105,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@americanexpress/css-to-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@americanexpress/css-to-js/-/css-to-js-1.0.1.tgz", - "integrity": "sha512-bblN1i5kZIdsmWU7CSpK/HVtUItq5Ly1Qubgbe+cGZx181Ji3F0VrQt6+DdYPgkPENUFdFqJHDfgVE1tQz5B/Q==", - "dev": true, - "dependencies": { - "css": "^2.2.4" - }, - "bin": { - "css-to-js": "bin/cssToJs.js" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -3789,26 +3771,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@evilmartians/lefthook": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@evilmartians/lefthook/-/lefthook-1.7.14.tgz", - "integrity": "sha512-0FPRdmd7hIZXjTQKQjLnmqxx4xGRIM1oGN9pJ4PyI14tOqEAwstmLIbauqQpTVTj3MAPeylsQVXh9RGaq/F2/A==", - "cpu": [ - "x64", - "arm64", - "ia32" - ], - "dev": true, - "hasInstallScript": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "bin": { - "lefthook": "bin/index.js" - } - }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "0.2.36", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", @@ -7112,55 +7074,6 @@ "node": ">=4" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -7837,12 +7750,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, "node_modules/comma-separated-tokens": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", @@ -8034,18 +7941,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, "node_modules/css-color-converter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz", @@ -10541,19 +10436,6 @@ "node": ">= 0.6" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -12348,6 +12230,8 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=14" }, @@ -20719,15 +20603,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-bundled": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", @@ -21888,49 +21763,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, "node_modules/postcss-safe-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", @@ -21986,12 +21818,6 @@ "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/preferred-pm": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.4.tgz", @@ -22049,6 +21875,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.6.tgz", "integrity": "sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==", "dev": true, + "license": "MIT", "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" @@ -23402,13 +23229,6 @@ "node": ">=8" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -23942,20 +23762,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -23967,13 +23773,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, "node_modules/space-separated-tokens": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", @@ -24713,62 +24512,6 @@ "svelte": ">=3.19.0" } }, - "node_modules/svelte-preprocess": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.2.tgz", - "integrity": "sha512-OvDTLfaOkkhjprbDKO0SOCkjNYuHy16dbD4SpqbIi6QiabOMHxRT4km5/dzbFFkmW1L0E2INF3MFltG2pgOyKQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": ">=3", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": ">=0.55", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, "node_modules/svelte-search": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/svelte-search/-/svelte-search-2.1.0.tgz", @@ -24783,20 +24526,6 @@ "dequal": "^2.0.3" } }, - "node_modules/svelte2tsx": { - "version": "0.6.27", - "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.27.tgz", - "integrity": "sha512-E1uPW1o6VsbRz+nUk3fznZ2lSmCITAJoNu8AYefWSvIwE2pSB01i5sId4RMbWNzfcwCQl1DcgGShCPcldl4rvg==", - "dev": true, - "dependencies": { - "dedent-js": "^1.0.1", - "pascal-case": "^3.1.1" - }, - "peerDependencies": { - "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", - "typescript": "^4.9.4 || ^5.0.0" - } - }, "node_modules/sveltedoc-parser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/sveltedoc-parser/-/sveltedoc-parser-4.2.1.tgz", @@ -26026,13 +25755,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", diff --git a/package.json b/package.json index dc50eaae..f82786e5 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "svelte": ">=4" }, "devDependencies": { - "@americanexpress/css-to-js": "^1.0.1", "@changesets/cli": "^2.27.7", "@chromatic-com/storybook": "^1.7.0", "@reuters-graphics/yaks-eslint": "^0.0.6", @@ -73,10 +72,8 @@ "@types/proper-url-join": "^2.1.1", "@types/pym.js": "^1.3.2", "@types/react-syntax-highlighter": "^15.5.7", - "autoprefixer": "^10.4.14", "change-case": "^4.1.2", "chromatic": "^7.1.0", - "colord": "^2.9.3", "css-color-converter": "^2.0.0", "deep-object-diff": "^1.1.9", "eslint": "^9.9.0", @@ -88,8 +85,8 @@ "mermaid": "^10.9.1", "npm-run-all": "^4.1.5", "postcss": "^8.4.41", - "postcss-load-config": "^6.0.1", "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", "prompts": "^2.4.2", "prop-types": "^15.8.1", "publint": "^0.2.10", @@ -103,8 +100,6 @@ "storybook": "^8.2.9", "svelte": "^4.2.18", "svelte-loader": "^3.2.3", - "svelte-preprocess": "^6.0.2", - "svelte2tsx": "^0.6.27", "tiny-glob": "^0.2.9", "typescript": "^5.5.4", "vite": "^5.4.2" diff --git a/src/components/GraphicBlock/stories/ai2svelte/data-table.svelte b/src/components/GraphicBlock/stories/ai2svelte/data-table.svelte deleted file mode 100644 index 9c331b15..00000000 --- a/src/components/GraphicBlock/stories/ai2svelte/data-table.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
Date S&P 500 - Dow Nasdaq -
December 31, 20210%00%
January 3, 20221%11%
January 4, 20221%1−0%
January 5, 2022−1%0−3%
January 6, 2022−1%−0−4%
January 7, 2022−2%−0−5%
January 10, 2022−2%−1−4%
diff --git a/src/components/Table/utils.js b/src/components/Table/utils.js index 4f88513c..0eb2b6b8 100644 --- a/src/components/Table/utils.js +++ b/src/components/Table/utils.js @@ -16,11 +16,11 @@ export function paginateArray(array, pageSize, pageNumber) { return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize); } -export function uniqueAttr(array, attr) { +function uniqueAttr(array, attr) { return array.map((e) => e[attr]).filter(unique); } -export function unique(value, index, array) { +function unique(value, index, array) { return array.indexOf(value) === index; }