From 6465f709d1fef1de2ccedc8d7b91cef7dff21c53 Mon Sep 17 00:00:00 2001 From: Christopher Pickering Date: Mon, 24 Jan 2022 09:03:25 -0600 Subject: [PATCH] reformatted --- .github/workflows/cron-run.yml | 45 + .github/workflows/docs.yml | 21 - docs/.prettierignore | 3 + docs/.prettierrc | 11 + docs/package-lock.json | 1532 ++++++++++++++++- docs/package.json | 7 +- docs/src/_data/eleventyComputed.js | 40 +- docs/src/_utils/minify-html.js | 10 +- docs/src/_utils/scripts.11ty.js | 27 +- docs/src/_utils/styles.11ty.js | 56 +- docs/src/docs/best-practices.md | 34 +- docs/src/docs/changelog.md | 198 ++- docs/src/docs/configuration.md | 29 +- docs/src/docs/docs.json | 4 +- docs/src/docs/formatter.md | 66 +- docs/src/docs/getting-started.md | 2 +- docs/src/docs/integrations.md | 36 +- docs/src/docs/languages/angular.md | 5 +- docs/src/docs/languages/django.md | 5 +- docs/src/docs/languages/golang.md | 5 +- docs/src/docs/languages/handlebars.md | 5 +- docs/src/docs/languages/jinja.md | 5 +- docs/src/docs/languages/languages.json | 4 +- docs/src/docs/languages/mustache.md | 5 +- docs/src/docs/languages/nunjucks.md | 5 +- docs/src/docs/languages/twig.md | 5 +- docs/src/docs/linter.md | 95 +- docs/src/search/update-algolia-index.js | 13 +- docs/src/static/css/site.scss | 309 ++-- .../static/font/fontawesome/_variables.scss | 26 +- .../static/font/fontawesome/stylesheet.scss | 116 +- docs/src/static/img/style.css | 123 +- docs/src/static/js/animate.js | 45 +- docs/src/static/js/hamburger.js | 5 +- docs/src/static/js/modal.js | 5 +- docs/src/static/js/search.js | 6 - 36 files changed, 2334 insertions(+), 574 deletions(-) create mode 100644 .github/workflows/cron-run.yml delete mode 100644 .github/workflows/docs.yml create mode 100644 docs/.prettierignore create mode 100644 docs/.prettierrc diff --git a/.github/workflows/cron-run.yml b/.github/workflows/cron-run.yml new file mode 100644 index 0000000..a36ad95 --- /dev/null +++ b/.github/workflows/cron-run.yml @@ -0,0 +1,45 @@ +name: Build and Release [Weekly] + +on: + schedule: + - cron: 0 0 * * 0 + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v2 + with: + fetch-depth: '0' + + - name: Update npm packages + run: | + cd docs + npm install + npm update --save/--save-dev + + - name: npm format + run: | + cd docs + npm run format + + - name: Update python deps + run: | + pip install poetry-up + poetry-up --install + + - name: python format + run: tox -e isort,black + + # - name: Stage, commit and push files + # uses: stefanzweifel/git-auto-commit-action@v4 + # with: + # commit_user_name: "djlint-bot" + # commit_user_email: "djlint-bot@users.noreply.github.com" + # commit_author: "djlint-bot " + # commit_message: "chore(build): update packages [Weekly]" + # continue-on-error: true diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 98c1838..0000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: docs - -on: - release: - types: [published] - - workflow_dispatch: - -jobs: - move_to_branch: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: publish - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs - publish_branch: netlify diff --git a/docs/.prettierignore b/docs/.prettierignore new file mode 100644 index 0000000..dc7bd5e --- /dev/null +++ b/docs/.prettierignore @@ -0,0 +1,3 @@ +src/static/**/*.md +src/static/**/*.html +_site/* \ No newline at end of file diff --git a/docs/.prettierrc b/docs/.prettierrc new file mode 100644 index 0000000..215d36b --- /dev/null +++ b/docs/.prettierrc @@ -0,0 +1,11 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "trailingComma": "all", + "bracketSpacing": true, + "arrowParens": "always", + "jsxBracketSameLine": false, + "semi": true +} \ No newline at end of file diff --git a/docs/package-lock.json b/docs/package-lock.json index 188729d..7ad4f31 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -34,6 +34,9 @@ "cssnano": "^5.0.15", "eleventy-plugin-metagen": "^1.4.0", "esbuild": "^0.14.11", + "eslint": "^8.7.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-import": "^2.25.4", "fontawesome-subset": "^3.0.0", "html-minifier": "^4.0.0", "markdown-it": "^12.3.2", @@ -43,6 +46,7 @@ "outdent": "^0.8.0", "postcss-cli": "^9.1.0", "postcss-nested": "^5.0.6", + "prettier": "^2.5.1", "prismjs": "^1.26.0", "sass": "^1.48.0", "slugify": "^1.6.4" @@ -427,6 +431,65 @@ "resolved": "https://registry.npmjs.org/@creativebulma/bulma-divider/-/bulma-divider-1.1.0.tgz", "integrity": "sha512-Lx5MlUhgAnTF+wNZ5LXcaE1K0F2m0Pkwte1p08FBsIyRV6Oq7BuKPk/O9XJPcF+vR6BjCxNy/hjYFXtNmoXbNg==" }, + "node_modules/@eslint/eslintrc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.2.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@fontsource/crimson-pro": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@fontsource/crimson-pro/-/crimson-pro-4.5.1.tgz", @@ -484,6 +547,26 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -711,6 +794,12 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "node_modules/@types/keyv": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", @@ -844,6 +933,15 @@ "acorn-walk": "^7.1.1" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -894,6 +992,22 @@ "node": ">=8" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/algoliasearch": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.0.tgz", @@ -1028,6 +1142,25 @@ "node": ">=8" } }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1044,6 +1177,23 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -1732,6 +1882,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -2259,6 +2418,12 @@ "proto-list": "~1.2.1" } }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, "node_modules/connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", @@ -2450,6 +2615,20 @@ "node": ">=8" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", @@ -2945,6 +3124,18 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", @@ -3618,6 +3809,428 @@ "source-map": "~0.6.1" } }, + "node_modules/eslint": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.2.0", + "espree": "^9.3.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/espree": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -3630,6 +4243,30 @@ "node": ">=4" } }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -3706,6 +4343,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -3721,6 +4364,12 @@ "node": ">=8" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -3747,6 +4396,18 @@ "resolved": "https://registry.npmjs.org/fg-loadcss/-/fg-loadcss-2.1.0.tgz", "integrity": "sha512-HpvR2uRoKvrYAEwimw+k4Fr2NVHYPfld5Lc/f9uy3mKeUTXhS5urL24XA2rqyq5b2i410EXCLir4Uhsb8J1QaQ==" }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -3981,6 +4642,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "node_modules/gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -4141,6 +4808,33 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", @@ -4640,6 +5334,22 @@ "node": ">=0.10.0" } }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5264,6 +5974,30 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -6136,6 +6870,12 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -6484,6 +7224,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", @@ -6709,6 +7463,18 @@ "no-case": "^2.2.0" } }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -6791,6 +7557,15 @@ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -7790,6 +8565,18 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/pretty": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", @@ -8354,6 +9141,18 @@ "node": ">=8" } }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -8411,6 +9210,15 @@ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -8789,6 +9597,27 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/short-hash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/short-hash/-/short-hash-1.0.0.tgz", @@ -9187,6 +10016,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -9850,6 +10688,18 @@ "node": ">=8" } }, + "node_modules/tsconfig-paths": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "node_modules/ttf2eot": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-3.0.0.tgz", @@ -10063,6 +10913,15 @@ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -10090,6 +10949,12 @@ "node": ">= 0.4.0" } }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "node_modules/valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", @@ -10728,6 +11593,52 @@ "resolved": "https://registry.npmjs.org/@creativebulma/bulma-divider/-/bulma-divider-1.1.0.tgz", "integrity": "sha512-Lx5MlUhgAnTF+wNZ5LXcaE1K0F2m0Pkwte1p08FBsIyRV6Oq7BuKPk/O9XJPcF+vR6BjCxNy/hjYFXtNmoXbNg==" }, + "@eslint/eslintrc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.2.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@fontsource/crimson-pro": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@fontsource/crimson-pro/-/crimson-pro-4.5.1.tgz", @@ -10778,6 +11689,23 @@ "@hapi/hoek": "^9.0.0" } }, + "@humanwhocodes/config-array": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10940,6 +11868,12 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/keyv": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", @@ -11061,6 +11995,13 @@ "acorn-walk": "^7.1.1" } }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -11099,6 +12040,18 @@ "indent-string": "^4.0.0" } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "algoliasearch": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.0.tgz", @@ -11206,6 +12159,19 @@ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==" }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -11216,6 +12182,17 @@ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -11367,7 +12344,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.7" } }, "babel-walk": { @@ -11740,6 +12717,12 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -12182,6 +13165,12 @@ "proto-list": "~1.2.1" } }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, "connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", @@ -12329,6 +13318,17 @@ } } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", @@ -12691,6 +13691,15 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", @@ -13176,11 +14185,359 @@ "source-map": "~0.6.1" } }, + "eslint": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.2.0", + "espree": "^9.3.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true + }, + "espree": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -13241,6 +14598,12 @@ } } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -13253,6 +14616,12 @@ "micromatch": "^4.0.4" } }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -13279,6 +14648,15 @@ "resolved": "https://registry.npmjs.org/fg-loadcss/-/fg-loadcss-2.1.0.tgz", "integrity": "sha512-HpvR2uRoKvrYAEwimw+k4Fr2NVHYPfld5Lc/f9uy3mKeUTXhS5urL24XA2rqyq5b2i410EXCLir4Uhsb8J1QaQ==" }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -13452,6 +14830,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -13569,6 +14953,23 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", @@ -13937,6 +15338,16 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -14393,6 +15804,27 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -15107,6 +16539,12 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -15367,6 +16805,17 @@ "object-keys": "^1.1.1" } }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "object.getownpropertydescriptors": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", @@ -15526,6 +16975,15 @@ "no-case": "^2.2.0" } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -15587,6 +17045,12 @@ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -16253,6 +17717,12 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, + "prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true + }, "pretty": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", @@ -16718,6 +18188,12 @@ "strip-indent": "^3.0.0" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -16763,6 +18239,12 @@ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -17072,6 +18554,21 @@ "tunnel-agent": "^0.6.0" } }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "short-hash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/short-hash/-/short-hash-1.0.0.tgz", @@ -17400,6 +18897,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -17918,6 +19421,18 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" }, + "tsconfig-paths": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "ttf2eot": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-3.0.0.tgz", @@ -18076,6 +19591,15 @@ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -18097,6 +19621,12 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", diff --git a/docs/package.json b/docs/package.json index 8ef34d0..e9be078 100644 --- a/docs/package.json +++ b/docs/package.json @@ -6,7 +6,8 @@ "scripts": { "start": "eleventy --serve --watch", "install": "ELEVENTY_PRODUCTION=true eleventy", - "updateSearch": "node ./src/search/update-algolia-index.js" + "updateSearch": "node ./src/search/update-algolia-index.js", + "format": "prettier --config .prettierrc \"src/**/*.{ts,css,less,scss,js,json,md,yaml,html}\" --write" }, "keywords": [], "author": "Christopher Pickering", @@ -37,6 +38,9 @@ "cssnano": "^5.0.15", "eleventy-plugin-metagen": "^1.4.0", "esbuild": "^0.14.11", + "eslint": "^8.7.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-import": "^2.25.4", "fontawesome-subset": "^3.0.0", "html-minifier": "^4.0.0", "markdown-it": "^12.3.2", @@ -46,6 +50,7 @@ "outdent": "^0.8.0", "postcss-cli": "^9.1.0", "postcss-nested": "^5.0.6", + "prettier": "^2.5.1", "prismjs": "^1.26.0", "sass": "^1.48.0", "slugify": "^1.6.4" diff --git a/docs/src/_data/eleventyComputed.js b/docs/src/_data/eleventyComputed.js index 122ddaf..364e54a 100644 --- a/docs/src/_data/eleventyComputed.js +++ b/docs/src/_data/eleventyComputed.js @@ -1,24 +1,22 @@ - module.exports = { - type: data => "page", - meta: { - site: { - name: data => data.site.title, - description: data => data.site.description, - url: data => data.site.url, - logo: { - src: data => data.site.image, - } + type: (data) => 'page', + meta: { + site: { + name: (data) => data.site.title, + description: (data) => data.site.description, + url: (data) => data.site.url, + logo: { + src: (data) => data.site.image, }, - language: data => "en-US", - url: data => data.site.url + data.page.url, - title: data => data.title || data.site.title, - description: data => data.description || data.site.description, - image: { - src: data => data.page.image - }, - modified: data => data.page.date.toISOString(), - keywords: data => data.keywords - } - + }, + language: (data) => 'en-US', + url: (data) => data.site.url + data.page.url, + title: (data) => data.title || data.site.title, + description: (data) => data.description || data.site.description, + image: { + src: (data) => data.page.image, + }, + modified: (data) => data.page.date.toISOString(), + keywords: (data) => data.keywords, + }, }; diff --git a/docs/src/_utils/minify-html.js b/docs/src/_utils/minify-html.js index a094837..a0ca3cb 100644 --- a/docs/src/_utils/minify-html.js +++ b/docs/src/_utils/minify-html.js @@ -1,13 +1,13 @@ -const htmlmin = require("html-minifier"); +const htmlmin = require('html-minifier'); -module.exports = function(content, outputPath) { - if( outputPath.endsWith(".html") ) { +module.exports = function (content, outputPath) { + if (outputPath.endsWith('.html')) { let minified = htmlmin.minify(content, { useShortDoctype: true, removeComments: true, - collapseWhitespace: true + collapseWhitespace: true, }); return minified; } return content; -} +}; diff --git a/docs/src/_utils/scripts.11ty.js b/docs/src/_utils/scripts.11ty.js index c0aa8c6..bd14f79 100644 --- a/docs/src/_utils/scripts.11ty.js +++ b/docs/src/_utils/scripts.11ty.js @@ -1,24 +1,31 @@ -const esbuild = require('esbuild') +const esbuild = require('esbuild'); const generateContentHash = require('../lib/generateContentHash'); module.exports = class { data() { return { - permalink: `/static/js/${generateContentHash('src/static/js/**/*.js')}.js`, - eleventyExcludeFromCollections: true - } + permalink: `/static/js/${generateContentHash( + 'src/static/js/**/*.js', + )}.js`, + eleventyExcludeFromCollections: true, + }; } - async render() { await esbuild.build({ entryPoints: ['src/static/js/search.js'], - inject: ['./src/static/js/hamburger.js','./src/static/js/animate.js','./src/static/js/modal.js'], + inject: [ + './src/static/js/hamburger.js', + './src/static/js/animate.js', + './src/static/js/modal.js', + ], bundle: true, minify: true, - outfile: `_site/static/js/${generateContentHash('src/static/js/**/*.js')}.js`, + outfile: `_site/static/js/${generateContentHash( + 'src/static/js/**/*.js', + )}.js`, sourcemap: false, - target: 'es5' - }) + target: 'es5', + }); } -} +}; diff --git a/docs/src/_utils/styles.11ty.js b/docs/src/_utils/styles.11ty.js index 6aa7367..cc6b208 100644 --- a/docs/src/_utils/styles.11ty.js +++ b/docs/src/_utils/styles.11ty.js @@ -1,15 +1,16 @@ - const util = require('util'); const sass = require('sass'); // `npm i -D sass` const renderSass = util.promisify(sass.render); -const purgecss = require('@fullhuman/postcss-purgecss') +const purgecss = require('@fullhuman/postcss-purgecss'); const postcss = require('postcss'); const generateContentHash = require('../lib/generateContentHash'); module.exports = class { async data() { return { - permalink: `/static/css/${generateContentHash('src/static/**/*.{scss,css}')}.css`, + permalink: `/static/css/${generateContentHash( + 'src/static/**/*.{scss,css}', + )}.css`, eleventyExcludeFromCollections: true, }; } @@ -19,20 +20,39 @@ module.exports = class { file: 'src/static/css/site.scss', }); - return await postcss([ - require('postcss-nested'), - purgecss({ - content: ['./src/**/*.njk', './src/**/*.md'], - safelist: { - deep: [/headShake/, /zoomIn/, /fadeInUp/, /pre/,/code/,/block/, /box/, /title/, /is-\d/, /table/, /message/, /message-header/, /message-body/, /panel-block/, /p-3/, /is-block/, /is-justify-content-space-between/, /is-light/, /is-active/, /is-info/], - } - }), - require('autoprefixer'), - require('cssnano'), - + return await postcss([ + require('postcss-nested'), + purgecss({ + content: ['./src/**/*.njk', './src/**/*.md'], + safelist: { + deep: [ + /headShake/, + /zoomIn/, + /fadeInUp/, + /pre/, + /code/, + /block/, + /box/, + /title/, + /is-\d/, + /table/, + /message/, + /message-header/, + /message-body/, + /panel-block/, + /p-3/, + /is-block/, + /is-justify-content-space-between/, + /is-light/, + /is-active/, + /is-info/, + ], + }, + }), + require('autoprefixer'), + require('cssnano'), ]) - .process(result.css, { from: undefined }) - .then(result => result.css); - + .process(result.css, { from: undefined }) + .then((result) => result.css); } - }; +}; diff --git a/docs/src/docs/best-practices.md b/docs/src/docs/best-practices.md index de866f0..4fe984e 100644 --- a/docs/src/docs/best-practices.md +++ b/docs/src/docs/best-practices.md @@ -13,52 +13,66 @@ Sometimes conditions are used to add classes to a tag. djLint removes whitespace This pattern is recommended: {% raw %} + ```html
content
- ^ space here +^ space here ``` + {% endraw %} This pattern is not recommended: {% raw %} + ```html
content
- ^ space here +^ space here ``` + {% endraw %} -## ``format_attribute_template_tags`` and Spaceless Conditional Attributes +## `format_attribute_template_tags` and Spaceless Conditional Attributes -If ``format_attribute_template_tags`` option is enabled, conditional attributes should use spaceless tags, for example {% raw %}`{% if a -%}`{% endraw %} in nunjuck and jinja, to remove spaces inside the. +If `format_attribute_template_tags` option is enabled, conditional attributes should use spaceless tags, for example {% raw %}`{% if a -%}`{% endraw %} in nunjuck and jinja, to remove spaces inside the. djLint will format long attributes onto multiple lines, and the whitespace saved inside of attributes could break your code. This pattern is recommended: {% raw %} + ```html - - ^ ^ ^ ^-- spaceless tags + +^ ^ ^ ^-- spaceless tags ``` + {% endraw %} This pattern is not recommended: {% raw %} + ```html - + ``` + {% endraw %} After formatting this could look like: {% raw %} + ```html - + {% endif %}" +/> ``` -{% endraw %} \ No newline at end of file + +{% endraw %} diff --git a/docs/src/docs/changelog.md b/docs/src/docs/changelog.md index fdfece8..5eb0f73 100644 --- a/docs/src/docs/changelog.md +++ b/docs/src/docs/changelog.md @@ -9,144 +9,166 @@ keywords: template linter, template formatter, djLint, HTML, templates, formatte # Changelog ## 0.7.2 + ::: content + - Bug fixes [#167](https://github.com/Riverside-Healthcare/djLint/issues/167), [#166](https://github.com/Riverside-Healthcare/djLint/issues/166), [#171](https://github.com/Riverside-Healthcare/djLint/issues/171), [#169](https://github.com/Riverside-Healthcare/djLint/issues/169) -::: + ::: ## 0.7.1 + ::: content + - Bug fixes [#166](https://github.com/Riverside-Healthcare/djLint/issues/166) -::: + ::: ## 0.7.0 ::: content + - Added config for custom HTML tags - Bug fixes -::: + ::: ## 0.6.9 ::: content + - Added HTML and Angular profiles - Allowed some entities in rule #H023 - Bug fixes -::: + ::: ## 0.6.8 ::: content + - Bug fixes - Updated docs -::: + ::: ## 0.6.7 ::: content -- Added config option ``format_attribute_template_tags`` as opt-in for template tag formatting inside of attributes -- Added config option ``linter_output_format`` to customize linter message variable order + +- Added config option `format_attribute_template_tags` as opt-in for template tag formatting inside of attributes +- Added config option `linter_output_format` to customize linter message variable order - Added rules H030 and H031 to check meta tags -::: + ::: ## 0.6.6 ::: content + - Big fixes -::: + ::: ## 0.6.5 ::: content + - Updated output paths to be relative to the project root - Bug fixes -::: + ::: ## 0.6.4 ::: content + - Bug fixes -::: + ::: ## 0.6.3 ::: content + - Added support for django `blocktrans` tag - Bug fixes -::: + ::: ## 0.6.2 ::: content + - Bug fixes -::: + ::: ## 0.6.1 ::: content + - Bug fixes - Made rule T028 stricter with clearer message -::: + ::: ## 0.6.0 ::: content + - Added rule T027 to check for unclosed in template syntax - Added rule T028 to check for missing spaceless tags in attributes - Added rule H029 to check for lowercase form method - Ignored djagno blocktranslate tags that do not have "trimmed" from formatter - Bug fixes -::: + ::: ## 0.5.9a ::: content + - Added test support for python 3.10 - Added pre-commit hook -::: + ::: ## 0.5.9 ::: content -- Added option ``--use-gitignore`` to extend the excludes + +- Added option `--use-gitignore` to extend the excludes - Changed default exclude matching - Fixed windows exclude paths - Fixed formatting of `{%...%}` tags in attributes - Fixed formatting for for loops and nested conditions in attributes -::: + ::: ## 0.5.8 ::: content + - Added require_pragma option -- Updated DJ018 to catch ``data-src`` and ``action`` on inputs +- Updated DJ018 to catch `data-src` and `action` on inputs - Fixed inline ignore syntax -- Added ``--lint`` option as placeholder for default usage +- Added `--lint` option as placeholder for default usage - Bug fixes -::: + ::: ## 0.5.7 ::: content + - Bug fixes -::: + ::: ## 0.5.6 ::: content + - Added rule H026 to find empty id and class tags - Bug fixes -::: + ::: ## 0.5.5 ::: content + - Consolidated settings and slimmed code - Bug fixes -::: + ::: ## 0.5.4 ::: content + - Added rule H020 to find empty tag pairs - Added rule H021 to find inline styles - Added rule H022 to find http links @@ -154,191 +176,217 @@ keywords: template linter, template formatter, djLint, HTML, templates, formatte - Added rule H024 to find type on scripts and styles - Added rule H025 to check for orphan tags. Thanks to https://stackoverflow.com/a/1736801/10265880 - Improved attribute formatting -- Updated ``blank_line_after_tag`` option to add newline regardless of location -- Fixed django ``trans`` tag formatting +- Updated `blank_line_after_tag` option to add newline regardless of location +- Fixed django `trans` tag formatting - Added formatting for inline styles - Added formatting for template conditions inside attributes - Added srcset as possible url location in linter rules - Speed up formatting -- Special thanks to `jayvdb `_ -::: +- Special thanks to `jayvdb `\_ + ::: ## 0.5.3 ::: content -- Change stdout for ``--reformat/check`` options to only print new html when using stdin as the input -::: + +- Change stdout for `--reformat/check` options to only print new html when using stdin as the input + ::: ## 0.5.2 ::: content -- Split ``alt`` requirement from H006 to H013 + +- Split `alt` requirement from H006 to H013 - Added optional custom rules file -- Added ``golang`` as profile option +- Added `golang` as profile option - Fixed formatting of ignored blocks containing inline comments -- Added default text to ``--indent`` and ``-e`` options +- Added default text to `--indent` and `-e` options - Update url rules to accept # - Fixed file encoding on Windows OS - Fix single line template tag regex -- Fix ``blank_line_after_tag`` for tags with leading space -::: +- Fix `blank_line_after_tag` for tags with leading space + ::: ## 0.5.1 ::: content + - Added rule H019 - Fixed bugs in DJ018 and H012 -::: + ::: ## 0.5.0 ::: content + - Fixed several regex matching bugs in linter rules - Stopped linter from returning errors in ignored blocks - Added option to ignore code block from linter/formatter with `{% djlint:off %}...{% djlint:on %}` tags -::: + ::: ## 0.4.9 ::: content -- Fixed bug `#35 `_ -::: + +- Fixed bug `#35 `\_ + ::: ## 0.4.8 ::: content -- Fixed bug `#34 `_ -::: + +- Fixed bug `#34 `\_ + ::: ## 0.4.7 ::: content -- Moved ``source`` tag to single line tags -::: + +- Moved `source` tag to single line tags + ::: ## 0.4.6 ::: content -- Fixed bug `#31 `_ -::: + +- Fixed bug `#31 `\_ + ::: ## 0.4.5 ::: content + - Added best practices to docs -- Add ``--profile`` option to set default linter/formatter rules +- Add `--profile` option to set default linter/formatter rules - Added linter rules for jinja url patterns -::: + ::: ## 0.4.4 ::: content -- Change indent config from string to int. ``--indent 3`` -::: + +- Change indent config from string to int. `--indent 3` + ::: ## 0.4.3 ::: content -- Added cli option for indent spacing. ``--indent=" "`` -::: + +- Added cli option for indent spacing. `--indent=" "` + ::: ## 0.4.2 ::: content -- Added support for additional whitespace after tags with ``blank_line_after_tag`` option -::: + +- Added support for additional whitespace after tags with `blank_line_after_tag` option + ::: ## 0.4.1 ::: content + - Added support for processing several files or folders at once -::: + ::: ## 0.4.0 ::: content + - Fixed formatting of django `{# ... #}` tags - Added indent support for figcaption, details and summary tags -- Added support for overriding or extending the list of excluded paths in ``pyproject.toml`` -::: +- Added support for overriding or extending the list of excluded paths in `pyproject.toml` + ::: ## 0.3.9 ::: content + - Updated attribute handling -::: + ::: ## 0.3.8 ::: content + - Added support for stdin -::: + ::: ## 0.3.7 ::: content -- Fixed formatting on ``small``, ``dt``, and ``dd`` tags -::: + +- Fixed formatting on `small`, `dt`, and `dd` tags + ::: ## 0.3.6 ::: content + - Added formatter support for Nunjucks `{%-` opening blocks -::: + ::: ## 0.3.5 ::: content + - Added support for more Django blocks - Added support for custom blocks -- Added support for config in ``pyproject.toml`` -::: +- Added support for config in `pyproject.toml` + ::: ## 0.3.4 ::: content -- Fixed Nunjucks spaceless tag ``-%}`` format -::: + +- Fixed Nunjucks spaceless tag `-%}` format + ::: ## 0.3.3 ::: content -- Allowed short ``div`` tags to be single line -::: + +- Allowed short `div` tags to be single line + ::: ## 0.3.2 ::: content + - Fixed Django comment formatting - Ignored textarea from formatting -::: + ::: ## 0.3.1 ::: content + - Updated attribute formatting regex - Updated lint rule W010 -::: + ::: ## 0.3.0 ::: content + - Changed exit code to 1 if there were any formatting changes -- Added support for Jinja ``asset`` tags -::: +- Added support for Jinja `asset` tags + ::: ## 0.2.9 ::: content + - Updated W018 regex - Removed duplicate lint messages - Updated E001 for Handlebars -::: + ::: ## 0.2.8 ::: content -- Fixed progress bar error for old Click version -::: -{% endraw %} \ No newline at end of file +- Fixed progress bar error for old Click version + ::: + +{% endraw %} diff --git a/docs/src/docs/configuration.md b/docs/src/docs/configuration.md index e763c39..2ad1ed2 100644 --- a/docs/src/docs/configuration.md +++ b/docs/src/docs/configuration.md @@ -45,7 +45,7 @@ custom_blocks="toc,example" ## custom_html -Use to indent custom HTML tags. For example ```` or ```` or ```` +Use to indent custom HTML tags. For example `` or `` or `` Usage: @@ -95,11 +95,12 @@ blank_line_after_tag="load,extends,include" ## profile -Set a default profile for the template language. The profile will disable linter rules that do not apply to your template language, and may also change reformatting. For example, in ``handlebars`` there are no spaces inside {% raw %}``{{#if}}``{% endraw %} tags. +Set a default profile for the template language. The profile will disable linter rules that do not apply to your template language, and may also change reformatting. For example, in `handlebars` there are no spaces inside {% raw %}`{{#if}}`{% endraw %} tags. Options: :::content + - html - django - jinja @@ -107,7 +108,7 @@ Options: - handlebars (for handlebars and mustache) - golang - angular -::: + ::: Usage: @@ -124,18 +125,15 @@ Usage: ```ini require_pragma=true ``` + {% raw %} + ```html -or -{# djlint:on #} -or -{% comment %} djlint:on {% endcomment %} -or -{{ /* djlint:on */ }} -or -{{!-- djlint:on --}} +or {# djlint:on #} or {% comment %} djlint:on {% endcomment %} or {{ /* +djlint:on */ }} or {{!-- djlint:on --}} ``` + {% endraw %} ## max_line_length @@ -181,16 +179,18 @@ format_attribute_template_tags=true For example, with this option enabled, the following html will be acceptable: ```html - + {% endif %}" +/> ``` ## linter_output_format -Customize order of output message. Default="{code} {line} {message} {match}". If ``{filename}`` is not include in message, then the output will be grouped by file and a header will automatically be added to each group. +Customize order of output message. Default="{code} {line} {message} {match}". If `{filename}` is not include in message, then the output will be grouped by file and a header will automatically be added to each group. Usage: @@ -204,4 +204,3 @@ Usage: linter_output_format="{filename}:{line}: {code} {message} {match}" ``` - diff --git a/docs/src/docs/docs.json b/docs/src/docs/docs.json index 14cc7d3..9b6b75e 100644 --- a/docs/src/docs/docs.json +++ b/docs/src/docs/docs.json @@ -1,3 +1,3 @@ { - "layout": "docs_layout.njk" -} \ No newline at end of file + "layout": "docs_layout.njk" +} diff --git a/docs/src/docs/formatter.md b/docs/src/docs/formatter.md index 61193d9..cfb75d1 100644 --- a/docs/src/docs/formatter.md +++ b/docs/src/docs/formatter.md @@ -8,7 +8,7 @@ keywords: template linter, template formatter, djLint, HTML, templates, formatte djLint's formatter will take sloppy html templates and make the formatting consistent and easy to follow! -Formatting is a beta tool. ``--check`` the output before applying changes. +Formatting is a beta tool. `--check` the output before applying changes. To review what may change in formatting run: @@ -38,7 +38,6 @@ djlint . --reformat "djLint is not an html parser or syntax validator." %} - ## Ignoring Code Code can be ignored by wrapping it in `djlint` tags: @@ -46,56 +45,50 @@ Code can be ignored by wrapping it in `djlint` tags: {% raw %} For plain old html - + ```html - - + ``` or as a comment - ```html -{# djlint:off #} - -{# djlint:on #} +{# djlint:off #} {# djlint:on #} ``` or as a long comment ```html {% comment %} djlint:off {% endcomment %} - -{% comment %} djlint:on {% endcomment %} + {% comment %} djlint:on {% endcomment %} ``` or as a javascript style comment - ```html -{{ /* djlint:off */ }} - -{{ /* djlint:on */ }} +{{ /* djlint:off */ }} {{ /* djlint:on */ }} ``` or as a golan style comment - ```html -{{!-- djlint:off --}} - -{{!-- djlint:on --}} +{{!-- djlint:off --}} {{!-- djlint:on --}} ``` + {% endraw %} - ## Here's an example! - ### Before Here's a blob of HTML that's in desperate need of attention - {% raw %} + ``` {% load admin_list %}{% load i18n %}

{% if pagination_required %}{% for i in page_range %}{% paginator_number cl i %}{% endfor %}{% endif %}{{ cl.result_count }}{% if cl.result_count == 1 %}{{ cl.opts.verbose_name }} {% else %}{{ cl.opts.verbose_name_plural }} {% endif %}{% if show_all_url %} {% translate 'Show all' %} {% endif %}{% if cl.formset and cl.result_count %}{% endif %}

``` + {% endraw %} ### After @@ -103,29 +96,24 @@ Here's a blob of HTML that's in desperate need of attention - It looks a bit better now... we can read it :) {% raw %} + ```html -{% load admin_list %} -{% load i18n %} +{% load admin_list %} {% load i18n %}

- {% if pagination_required %} - {% for i in page_range %} - {% paginator_number cl i %} - {% endfor %} - {% endif %} - {{ cl.result_count }} - {% if cl.result_count == 1 %} - {{ cl.opts.verbose_name }} - {% else %} - {{ cl.opts.verbose_name_plural }} - {% endif %} - {% if show_all_url %} - - {% translate 'Show all' %} - - {% endif %} - {% if cl.formset and cl.result_count %} - - {% endif %} + {% if pagination_required %} {% for i in page_range %} {% paginator_number cl + i %} {% endfor %} {% endif %} {{ cl.result_count }} {% if cl.result_count == 1 + %} {{ cl.opts.verbose_name }} {% else %} {{ cl.opts.verbose_name_plural }} {% + endif %} {% if show_all_url %} + {% translate 'Show all' %} + {% endif %} {% if cl.formset and cl.result_count %} + + {% endif %}

``` -{% endraw %} \ No newline at end of file + +{% endraw %} diff --git a/docs/src/docs/getting-started.md b/docs/src/docs/getting-started.md index d3534cc..a24c2e9 100644 --- a/docs/src/docs/getting-started.md +++ b/docs/src/docs/getting-started.md @@ -46,7 +46,6 @@ Options: "If the command `djlint` is not found, ensure sure that Python is [in your path](https://www.geeksforgeeks.org/how-to-add-python-to-windows-path/)." %} - ## Using Path vs Stdin djLint works with a path or stdin. @@ -68,6 +67,7 @@ Or with stdin - ```bash echo "
" | djlint - ``` + Stdin can also be used to reformat code. The output will be only the formatted code without messages. ```bash diff --git a/docs/src/docs/integrations.md b/docs/src/docs/integrations.md index ed029bc..2a7d355 100644 --- a/docs/src/docs/integrations.md +++ b/docs/src/docs/integrations.md @@ -12,22 +12,23 @@ There are several editor integrations build for djLint. djLint can be used as a [pre-commit](https://pre-commit.com) hook. -The repo provides multiple pre-configured hooks for specific djLint profiles (it just pre-sets the ``--profile`` argument and tells pre-commit which file extensions to look for): +The repo provides multiple pre-configured hooks for specific djLint profiles (it just pre-sets the `--profile` argument and tells pre-commit which file extensions to look for): ::: content -* ``djlint-django`` for Django templates: -This will look for files matching ``templates/**.html`` and set ``--profile=django``. -* ``djlint-jinja`` -This will look for files matching ``*.j2`` and set ``--profile=jinja``. -* ``djlint-nunjucks`` -This will look for files matching ``*.njk`` and set ``--profile=nunjucks``. -* ``djlint-handlebars`` -This will look for files matching ``*.hbs`` and set ``--profile=handlebars``. -* ``djlint-golang`` -This will look for files matching ``*.tmpl`` and set ``--profile=golang``. -::: -Note that these predefined hooks are sometimes too conservative in the inputs they accept (your templates may be using a different extension) so pre-commit explicitly allows you to override any of these pre-defined options. See the `pre-commit docs `_ for additional configuration +- `djlint-django` for Django templates: + This will look for files matching `templates/**.html` and set `--profile=django`. +- `djlint-jinja` + This will look for files matching `*.j2` and set `--profile=jinja`. +- `djlint-nunjucks` + This will look for files matching `*.njk` and set `--profile=nunjucks`. +- `djlint-handlebars` + This will look for files matching `*.hbs` and set `--profile=handlebars`. +- `djlint-golang` + This will look for files matching `*.tmpl` and set `--profile=golang`. + ::: + +Note that these predefined hooks are sometimes too conservative in the inputs they accept (your templates may be using a different extension) so pre-commit explicitly allows you to override any of these pre-defined options. See the `pre-commit docs `\_ for additional configuration ### Default Django example @@ -50,19 +51,20 @@ repos: files: "\\.html" ``` -You can use the ``files`` or ``exclude`` parameters to constrain each hook to its own directory, allowing you to support multiple template languages within the same repo. +You can use the `files` or `exclude` parameters to constrain each hook to its own directory, allowing you to support multiple template languages within the same repo. ## SublimeText Linter djLint can be used as a SublimeText Linter plugin. It can be installed via [package-control](https://packagecontrol.io/packages/SublimeLinter-contrib-djlint). ::: content -1. ``cmd + shft + p`` + +1. `cmd + shft + p` 2. Install SublimeLinter 3. Install SublimeLinter-contrib-djlint -::: + ::: -Ensure djLint is installed in your global python, or on yout ``PATH``. +Ensure djLint is installed in your global python, or on yout `PATH`. ## coc.nvim diff --git a/docs/src/docs/languages/angular.md b/docs/src/docs/languages/angular.md index 1ed2a98..27d954a 100644 --- a/docs/src/docs/languages/angular.md +++ b/docs/src/docs/languages/angular.md @@ -5,7 +5,6 @@ description: djLint is a angular template linter! Take advantage of the pre-buil tool: angular --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/django.md b/docs/src/docs/languages/django.md index 146a96d..21ce40c 100644 --- a/docs/src/docs/languages/django.md +++ b/docs/src/docs/languages/django.md @@ -5,7 +5,6 @@ description: djLint is a django template linter and a django template formatter! tool: django --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/golang.md b/docs/src/docs/languages/golang.md index c374e2b..1cb44a2 100644 --- a/docs/src/docs/languages/golang.md +++ b/docs/src/docs/languages/golang.md @@ -5,7 +5,6 @@ description: djLint is a GoLang template linter and a GoLang template formatter! tool: golang --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/handlebars.md b/docs/src/docs/languages/handlebars.md index da84fc3..2437aaf 100644 --- a/docs/src/docs/languages/handlebars.md +++ b/docs/src/docs/languages/handlebars.md @@ -5,7 +5,6 @@ description: djLint is a handlebars template linter and a handlebars template fo tool: handlebars --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/jinja.md b/docs/src/docs/languages/jinja.md index 5cab08d..8669f75 100644 --- a/docs/src/docs/languages/jinja.md +++ b/docs/src/docs/languages/jinja.md @@ -5,7 +5,6 @@ description: djLint is a jinja template linter and a jinja template formatter! T tool: jinja --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/languages.json b/docs/src/docs/languages/languages.json index 89f9b17..6294776 100644 --- a/docs/src/docs/languages/languages.json +++ b/docs/src/docs/languages/languages.json @@ -1,3 +1,3 @@ { - "layout": "languages_layout.njk" -} \ No newline at end of file + "layout": "languages_layout.njk" +} diff --git a/docs/src/docs/languages/mustache.md b/docs/src/docs/languages/mustache.md index 0aab359..8e856e5 100644 --- a/docs/src/docs/languages/mustache.md +++ b/docs/src/docs/languages/mustache.md @@ -5,7 +5,6 @@ description: djLint is a mustache template linter and a mustache template format tool: handlebars --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/nunjucks.md b/docs/src/docs/languages/nunjucks.md index fb4495d..7f76fa5 100644 --- a/docs/src/docs/languages/nunjucks.md +++ b/docs/src/docs/languages/nunjucks.md @@ -5,7 +5,6 @@ description: djLint is a nunjucks template linter and a nunjucks template format tool: nunjucks --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/languages/twig.md b/docs/src/docs/languages/twig.md index 129d4ad..ac40a03 100644 --- a/docs/src/docs/languages/twig.md +++ b/docs/src/docs/languages/twig.md @@ -5,7 +5,6 @@ description: djLint is a twig template linter and a twig template formatter! Tak tool: nunjucks --- - # {{ title }} {{ description }} @@ -18,7 +17,7 @@ djlint /path/to/templates --profile={{ tool }} #### Or, Use a Config File -Configure djLint in your projects ``pyproject.toml``. +Configure djLint in your projects `pyproject.toml`. ```toml [tool.djlint] @@ -27,4 +26,4 @@ profile="{{ tool }}" \ No newline at end of file + diff --git a/docs/src/docs/linter.md b/docs/src/docs/linter.md index f6b414f..7a10f9b 100644 --- a/docs/src/docs/linter.md +++ b/docs/src/docs/linter.md @@ -22,10 +22,9 @@ djlint /path/to/this.html.j2 --profile=jinja - ## Custom Rules -Create a file ``.djlint_rules.yaml`` alongside your ``pyproject.toml``. Rules can be added to this files and djLint will pick them up. +Create a file `.djlint_rules.yaml` alongside your `pyproject.toml`. Rules can be added to this files and djLint will pick them up. A good rule follows this pattern: @@ -35,48 +34,46 @@ A good rule follows this pattern: message: Find Trichotillomania flags: re.DOTALL|re.I patterns: - - Trichotillomania + - Trichotillomania ``` - ## Rules - -| Code | Meaning | -|--------|---------------------------------------------------------------------------| -| T001 | Variables should be wrapped in a single whitespace. Ex: {% raw %}``{{ this }}``{% endraw %} | -| T002 | Double quotes should be used in tags. Ex {% raw %}``{% extends "this.html" %}``{% endraw %} | -| T003 | Endblock should have name. Ex: {% raw %}``{% endblock body %}``{% endraw %}. | -| D004 | (Django) Static urls should follow {% raw %}``{% static path/to/file %}``{% endraw %} pattern. | -| J004 | (Jinja) Static urls should follow {% raw %}``{{ url_for('static'..) }}``{% endraw %} pattern. | -| H005 | Html tag should have ``lang`` attribute. | -| H006 | ``img`` tag should have ``height`` and ``width`` attributes. | -| H007 | ```` should be present before the html tag. | -| H008 | Attributes should be double quoted. | -| H009 | Tag names should be lowercase. | -| H010 | Attribute names should be lowercase. | -| H011 | Attribute values should be quoted. | -| H012 | There should be no spaces around attribute ``=``. | -| H013 | ``img`` tag should have alt attributes. | -| H014 | More than 2 blank lines. | -| H015 | Follow ``h`` tags with a line break. | -| H016 | Missing ``title`` tag in html. | -| H017 | Tag should be self closing. | -| D018 | (Django) Internal links should use the {% raw %}``{% url ... %}``{% endraw %} pattern. | -| J018 | (Jinja) Internal links should use the {% raw %}``{% url ... %}``{% endraw %} pattern. | -| H019 | Replace ``javascript:abc()`` with ``on_`` event and real url. | -| H020 | Empty tag pair found. Consider removing. | -| H021 | Inline styles should be avoided. | -| H022 | Use HTTPS for external links. | -| H023 | Do not use entity references. | -| H024 | Omit type on scripts and styles. | -| H025 | Tag seems to be an orphan. | -| H026 | Emtpy id and class tags can be removed. | -| T027 | Unclosed string found in template syntax. | -| T028 | Consider using spaceless tags inside attribute values. {% raw %}``{%- if/for -%}``{% endraw %} | -| H029 | Consider using lowercase form method values. | -| H030 | Consider adding a meta description. | -| H031 | Consider adding meta keywords. | +| Code | Meaning | +| ---- | -------------------------------------------------------------------------------------------- | +| T001 | Variables should be wrapped in a single whitespace. Ex: {% raw %}`{{ this }}`{% endraw %} | +| T002 | Double quotes should be used in tags. Ex {% raw %}`{% extends "this.html" %}`{% endraw %} | +| T003 | Endblock should have name. Ex: {% raw %}`{% endblock body %}`{% endraw %}. | +| D004 | (Django) Static urls should follow {% raw %}`{% static path/to/file %}`{% endraw %} pattern. | +| J004 | (Jinja) Static urls should follow {% raw %}`{{ url_for('static'..) }}`{% endraw %} pattern. | +| H005 | Html tag should have `lang` attribute. | +| H006 | `img` tag should have `height` and `width` attributes. | +| H007 | `` should be present before the html tag. | +| H008 | Attributes should be double quoted. | +| H009 | Tag names should be lowercase. | +| H010 | Attribute names should be lowercase. | +| H011 | Attribute values should be quoted. | +| H012 | There should be no spaces around attribute `=`. | +| H013 | `img` tag should have alt attributes. | +| H014 | More than 2 blank lines. | +| H015 | Follow `h` tags with a line break. | +| H016 | Missing `title` tag in html. | +| H017 | Tag should be self closing. | +| D018 | (Django) Internal links should use the {% raw %}`{% url ... %}`{% endraw %} pattern. | +| J018 | (Jinja) Internal links should use the {% raw %}`{% url ... %}`{% endraw %} pattern. | +| H019 | Replace `javascript:abc()` with `on_` event and real url. | +| H020 | Empty tag pair found. Consider removing. | +| H021 | Inline styles should be avoided. | +| H022 | Use HTTPS for external links. | +| H023 | Do not use entity references. | +| H024 | Omit type on scripts and styles. | +| H025 | Tag seems to be an orphan. | +| H026 | Emtpy id and class tags can be removed. | +| T027 | Unclosed string found in template syntax. | +| T028 | Consider using spaceless tags inside attribute values. {% raw %}`{%- if/for -%}`{% endraw %} | +| H029 | Consider using lowercase form method values. | +| H030 | Consider adding a meta description. | +| H031 | Consider adding meta keywords. | ### Adding Rules @@ -85,13 +82,14 @@ We welcome pull requests with new rules! A good rule consists of ::: content -- Name -- Code -- Message - Message to display when error is found. -- Flags - Regex flags. Defaults to re.DOTALL. ex: re.I|re.M -- Patterns - regex expressions that will find the error. -- Exclude - Optional list of profiles to exclude rule from. -::: + +- Name +- Code +- Message - Message to display when error is found. +- Flags - Regex flags. Defaults to re.DOTALL. ex: re.I|re.M +- Patterns - regex expressions that will find the error. +- Exclude - Optional list of profiles to exclude rule from. + ::: Please include a test to validate the rule. @@ -100,10 +98,11 @@ Please include a test to validate the rule. The first letter of a code follows the pattern: ::: content + - T: applies generally to templates - H: applies to html - D: applies specifically to Django - J: applies specifically to Jinja - N: applies specifically to Nunjucks - M: applies specifically to Handlebars -::: + ::: diff --git a/docs/src/search/update-algolia-index.js b/docs/src/search/update-algolia-index.js index d9812b9..225c4ee 100644 --- a/docs/src/search/update-algolia-index.js +++ b/docs/src/search/update-algolia-index.js @@ -1,11 +1,14 @@ -const algoliasearch = require("algoliasearch"); +const algoliasearch = require('algoliasearch'); -const objects = require("../../_site/search/all.json"); +const objects = require('../../_site/search/all.json'); const client = algoliasearch('QFXNLHI6NP', process.env.ALGOLIA_SEARCH); const index = client.initIndex('dev_atlas'); -index.replaceAllObjects(objects, { autoGenerateObjectIDIfNotExist: true }).then(() => { - console.log("updated"); -}).catch((error) => console.error("Failed to Algolia update index", error)); +index + .replaceAllObjects(objects, { autoGenerateObjectIDIfNotExist: true }) + .then(() => { + console.log('updated'); + }) + .catch((error) => console.error('Failed to Algolia update index', error)); diff --git a/docs/src/static/css/site.scss b/docs/src/static/css/site.scss index c70f05e..847bf89 100644 --- a/docs/src/static/css/site.scss +++ b/docs/src/static/css/site.scss @@ -1,20 +1,18 @@ +$link-hover: hsl(207, 61%, 53%); +$link: hsl(207, 61%, 53%); -$link-hover:hsl(207, 61%, 53%); -$link: hsl(207, 61%, 53%); +@import '../../../node_modules/bulma/bulma'; +@import '../../../node_modules/bulma-pricingtable/src/sass/index'; +@import '../../../node_modules/@creativebulma/bulma-divider/src/sass/index'; +$fontDir: '/static/font/inter/'; +@import '../../../node_modules/@fontsource/inter/scss/mixins'; -@import "../../../node_modules/bulma/bulma"; -@import "../../../node_modules/bulma-pricingtable/src/sass/index"; -@import "../../../node_modules/@creativebulma/bulma-divider/src/sass/index"; +$use-all: true; +$use-slideInDown: true; +@import '../../../node_modules/animate-sass/animate'; -$fontDir: "/static/font/inter/"; -@import "../../../node_modules/@fontsource/inter/scss/mixins"; - -$use-all:true; -$use-slideInDown:true; -@import "../../../node_modules/animate-sass/animate"; - -@import "../font/fontawesome/stylesheet"; +@import '../font/fontawesome/stylesheet'; /* purgecss start ignore */ @@ -32,14 +30,14 @@ pre .tag { padding-right: unset; white-space: unset; } -@import "../../../node_modules/prismjs/themes/prism"; +@import '../../../node_modules/prismjs/themes/prism'; @include fontFace( $fontName: Inter, $weight: 400, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/inter/files/" + $fontDir: '/static/font/inter/files/' ); @include fontFace( @@ -47,7 +45,7 @@ pre .tag { $weight: 600, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/inter/files/" + $fontDir: '/static/font/inter/files/' ); @include fontFace( @@ -55,18 +53,18 @@ pre .tag { $weight: 700, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/inter/files/" + $fontDir: '/static/font/inter/files/' ); -$fontDir: "/static/font/rasa/"; -@import "../../../node_modules/@fontsource/rasa/scss/mixins"; +$fontDir: '/static/font/rasa/'; +@import '../../../node_modules/@fontsource/rasa/scss/mixins'; @include fontFace( $fontName: Rasa, $weight: 300, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/rasa/files/" + $fontDir: '/static/font/rasa/files/' ); @include fontFace( @@ -74,7 +72,7 @@ $fontDir: "/static/font/rasa/"; $weight: 500, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/rasa/files/" + $fontDir: '/static/font/rasa/files/' ); @include fontFace( @@ -82,7 +80,7 @@ $fontDir: "/static/font/rasa/"; $weight: 600, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/rasa/files/" + $fontDir: '/static/font/rasa/files/' ); @include fontFace( @@ -90,66 +88,66 @@ $fontDir: "/static/font/rasa/"; $weight: 700, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/rasa/files/" + $fontDir: '/static/font/rasa/files/' ); -$fontDir: "/static/font/crimson-pro/"; -@import "../../../node_modules/@fontsource/crimson-pro/scss/mixins"; +$fontDir: '/static/font/crimson-pro/'; +@import '../../../node_modules/@fontsource/crimson-pro/scss/mixins'; @include fontFace( $fontName: 'Crimson Pro', $weight: 400, $display: swap, $unicodeMap: latin, - $fontDir: "/static/font/crimson-pro/files/" + $fontDir: '/static/font/crimson-pro/files/' ); - html { height: 100%; } body { - font-family: "Inter", Arial, Verdana, Tahoma, sans-serif; + font-family: 'Inter', Arial, Verdana, Tahoma, sans-serif; display: flex; flex-direction: column; min-height: 100%; } .title { - font-family: "Rasa", Georgia, "Times New Roman", Times, serif; + font-family: 'Rasa', Georgia, 'Times New Roman', Times, serif; } .huge { - font-size:100px; + font-size: 100px; } .djlint-nav { padding-left: 15px; } .djlint-nav .navbar-brand a { - margin-top:auto; - margin-bottom:auto; + margin-top: auto; + margin-bottom: auto; } -body.has-navbar-fixed-top, html.has-navbar-fixed-top { - padding-top:118px; +body.has-navbar-fixed-top, +html.has-navbar-fixed-top { + padding-top: 118px; } .djlint-nav .navbar-brand img { - width:auto; + width: auto; height: 40px !important; margin-top: 6px; margin-bottom: -2px; } .is-flex-widescreen { - display:none !important; + display: none !important; } @media screen and (min-width: $widescreen) { .djlint-nav { padding: 15px 0; } - .djlint-nav .navbar-brand img { + .djlint-nav .navbar-brand img { height: 56px !important; } @@ -159,14 +157,14 @@ body.has-navbar-fixed-top, html.has-navbar-fixed-top { } .image.brand { - height:200px; + height: 200px; display: flex; justify-content: center; align-items: center; } .image.brand img { max-width: 200px; - max-height:200px; + max-height: 200px; } a.navbar-item:hover, @@ -192,7 +190,7 @@ h2 { } .is-nav-icon .fa-2x { - font-size:1.6em; + font-size: 1.6em; } /* fix for prism in bulma */ @@ -214,15 +212,15 @@ pre .number { } .mail-icon > img { - margin-top:3px; + margin-top: 3px; } /* comparison */ .plan-item .icon { - height:auto; + height: auto; } .plan-item .icon svg { - height:15px; - width:15px + height: 15px; + width: 15px; } .pricing-table .pricing-plan .plan-group { @@ -231,7 +229,7 @@ pre .number { color: #4a4a4a; font-size: $size-6; font-weight: 600; - padding: .75em; + padding: 0.75em; text-align: center; } @@ -239,7 +237,6 @@ pre .number { font-size: $size-6; } - .icon.is-huge { height: 2.5em; width: 2.5em; @@ -247,24 +244,23 @@ pre .number { /* search */ #search-form .icon svg { - height:1.2rem; + height: 1.2rem; } #search-results { - position:absolute; - top:70px; - left:0; - right:0; - display:none; - border-radius: $radius + position: absolute; + top: 70px; + left: 0; + right: 0; + display: none; + border-radius: $radius; } #search-results:empty { display: none !important; } - -#search:focus { +#search:focus { border-color: $info; box-shadow: $input-focus-box-shadow-size bulmaRgba($info, 0.25); } @@ -273,15 +269,14 @@ pre .number { box-shadow: $input-focus-box-shadow-size bulmaRgba($info, 0.25); } -#search-wrap:focus-within #search-results -{ - display:block; +#search-wrap:focus-within #search-results { + display: block; box-shadow: $input-focus-box-shadow-size bulmaRgba($info, 0.25); border: 1px solid $info; } #search-results:active { - display:block; + display: block; box-shadow: $input-focus-box-shadow-size bulmaRgba($info, 0.25); border: 1px solid $info; } @@ -297,7 +292,7 @@ pre .number { } .story { - font-family: Crimson Pro,Georgia,serif; + font-family: Crimson Pro, Georgia, serif; font-size: 24px; font-weight: 400; line-height: 1.6666666667; @@ -309,62 +304,62 @@ pre .number { // tabs .tab-container { - @extend %block + @extend %block; } .tab-container .tab { - display:none + display: none; } .tab-container .tab.is-active { - display:initial; + display: initial; } // admonitions .message-header .icon svg { - height:$size-6; - padding-right:10px; + height: $size-6; + padding-right: 10px; } .message.note { - border-width:$message-body-border-width; - border-style:solid; + border-width: $message-body-border-width; + border-style: solid; border-color: $info; - background-color:$white; - padding:0; + background-color: $white; + padding: 0; } .message.hint { - border-width:$message-body-border-width; - border-style:solid; + border-width: $message-body-border-width; + border-style: solid; border-color: $success; - background-color:$white; - padding:0; + background-color: $white; + padding: 0; } .message.alert { - border-width:$message-body-border-width; - border-style:solid; + border-width: $message-body-border-width; + border-style: solid; border-color: $danger; - background-color:$white; - padding:0; + background-color: $white; + padding: 0; } .message.note .message-header { - color:$text; - background-color:$info-light; + color: $text; + background-color: $info-light; } .message.hint .message-header { - color:$text; - background-color:$success-light; + color: $text; + background-color: $success-light; } .message.alert .message-header { - color:$text; - background-color:$danger-light; + color: $text; + background-color: $danger-light; } .message.note .message-body, .message.hint .message-body, .message.alert .message-body { - color:$text; + color: $text; } .image.is-35x35 { @@ -373,60 +368,60 @@ pre .number { } /* menu collapse */ -.is-collapsible, .is-collapsible.is-active { +.is-collapsible, +.is-collapsible.is-active { transition: max-height 0.2s ease-out; } .is-collapsible { - max-height:0; - overflow:hidden; - margin-top:0; - margin-bottom:0; + max-height: 0; + overflow: hidden; + margin-top: 0; + margin-bottom: 0; } .is-collapsible-menu { - height:0; + height: 0; overflow: hidden; - margin-top:0; - margin-bottom:0; + margin-top: 0; + margin-bottom: 0; } .is-collapsible-menu.is-active { - height:auto; + height: auto; } - .is-collapsible-menu:not(.is-active) { - margin-top:0 !important; - margin-bottom:0 !important; + margin-top: 0 !important; + margin-bottom: 0 !important; } .is-collapsible-menu .is-collapsible-menu { - margin-bottom:0 !important; + margin-bottom: 0 !important; } .menu .menu-label { - font-weight:600; + font-weight: 600; font-size: unset; - color: $grey-dark + color: $grey-dark; } -.menu li a{ +.menu li a { position: relative; - padding-left:20px; + padding-left: 20px; } -.menu li a.is-active{ - background:unset; +.menu li a.is-active { + background: unset; color: unset; font-weight: 700; } .menu li.head > a { - font-weight: 600 + font-weight: 600; } .menu-list li.head ul { - margin-left:3px; - padding-left:20px; + margin-left: 3px; + padding-left: 20px; } .menu-list a:hover, @@ -437,46 +432,44 @@ pre .number { .menu li a:before { position: absolute; display: block; - margin-right:18px; - margin-left:-18px; - content: ""; + margin-right: 18px; + margin-left: -18px; + content: ''; } -.menu li a:not([data-action="collapse-menu"]):before { - height:4px; - width:4px; - border-radius:4px; +.menu li a:not([data-action='collapse-menu']):before { + height: 4px; + width: 4px; + border-radius: 4px; background: $grey; top: calc(50% - 2px); } - -.menu li a[data-action="collapse-menu"]:before { +.menu li a[data-action='collapse-menu']:before { border: 2px solid $grey-light; border-radius: 2px; border-right: 0; border-top: 0; height: 7px; - margin-top: -.4375em; + margin-top: -0.4375em; transform-origin: 3px 4px; width: 7px; - transition: transform .2s; + transition: transform 0.2s; transform: rotate(-135deg); top: calc(50% + 3px); margin-left: -19px; } -.menu li a.is-active[data-action="collapse-menu"]:before { +.menu li a.is-active[data-action='collapse-menu']:before { transform: rotate(-45deg); - transition: transform .2s; + transition: transform 0.2s; } - pre { margin-bottom: 1.5rem !important; } .column:not(.is-narrow) { - min-width:0px; + min-width: 0px; } .is-inlineblock { @@ -484,7 +477,7 @@ pre { } .is-radius > img { - border-radius: $radius + border-radius: $radius; } .is-framed { @@ -492,30 +485,30 @@ pre { border: 8px solid $grey-lightest; border-radius: 4px; border-top: 24px solid $grey-lightest; - box-shadow: 0 .5em 1em -.125em #0a0a0a1a,0 0 0 1px #0a0a0a05; + box-shadow: 0 0.5em 1em -0.125em #0a0a0a1a, 0 0 0 1px #0a0a0a05; position: relative; } .is-framed::before { -border-radius: 10px; -content: ""; -height: 15px; -left: 0px; -position: absolute; -top: -19px; -width: 15px; -background: $grey-light; + border-radius: 10px; + content: ''; + height: 15px; + left: 0px; + position: absolute; + top: -19px; + width: 15px; + background: $grey-light; } .is-framed::after { -border-radius: 10px; -content: ""; -height: 15px; -left: 20px; -position: absolute; -top: -19px; -width: 15px; -background: $grey-light; + border-radius: 10px; + content: ''; + height: 15px; + left: 20px; + position: absolute; + top: -19px; + width: 15px; + background: $grey-light; } .hero.is-white .hero-body { @@ -523,11 +516,11 @@ background: $grey-light; } .hero { - position:relative + position: relative; } a.card:hover { - box-shadow: 0 .5em 2em -.125em #0a0a0a1a,0 0 0 1px #0a0a0a05; + box-shadow: 0 0.5em 2em -0.125em #0a0a0a1a, 0 0 0 1px #0a0a0a05; } .title { @@ -535,24 +528,24 @@ a.card:hover { } @media screen and (min-width: $tablet) { .is-sticky { - position: sticky; - top:118px; - bottom:0; - max-height: calc(100vh - 118px); - overflow-y: scroll; -} -} -@media screen and (min-width: $desktop){ -.navbar.is-transparent a.is-info.navbar-item:hover { - background-color: $info-dark !important; + position: sticky; + top: 118px; + bottom: 0; + max-height: calc(100vh - 118px); + overflow-y: scroll; + } } +@media screen and (min-width: $desktop) { + .navbar.is-transparent a.is-info.navbar-item:hover { + background-color: $info-dark !important; + } } .navbar-item.button.is-white:hover { background: transparent !important; } .is-256x256 { - max-height:256px; - max-width:256px; + max-height: 256px; + max-width: 256px; } @media screen and (max-width: $tablet) { .main { @@ -560,16 +553,16 @@ a.card:hover { } } .animated[data-animate] { - visibility:hidden + visibility: hidden; } .navbar-item .media img { - max-height:unset !important; + max-height: unset !important; } .icon.is-5x { - height:6rem; - width:6rem; + height: 6rem; + width: 6rem; } /* purgecss end ignore */ @@ -579,6 +572,6 @@ a.card:hover { .is-mega-menu-title { margin-bottom: 0; - padding: .375rem 1rem; + padding: 0.375rem 1rem; } } diff --git a/docs/src/static/font/fontawesome/_variables.scss b/docs/src/static/font/fontawesome/_variables.scss index 90147ae..4272275 100644 --- a/docs/src/static/font/fontawesome/_variables.scss +++ b/docs/src/static/font/fontawesome/_variables.scss @@ -1,21 +1,21 @@ // Variables // -------------------------- -@use "sass:math"; -$fa-font-path: "../webfonts" !default; -$fa-font-size-base: 16px !default; -$fa-font-display: block !default; -$fa-css-prefix: fa !default; -$fa-version: "5.15.4" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: 2em !default; -$fa-fw-width: math.div(20em, 16); -$fa-primary-opacity: 1 !default; -$fa-secondary-opacity: .4 !default; +@use 'sass:math'; +$fa-font-path: '../webfonts' !default; +$fa-font-size-base: 16px !default; +$fa-font-display: block !default; +$fa-css-prefix: fa !default; +$fa-version: '5.15.4' !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: 2em !default; +$fa-fw-width: math.div(20em, 16); +$fa-primary-opacity: 1 !default; +$fa-secondary-opacity: 0.4 !default; // Convenience function used to set content property @function fa-content($fa-var) { - @return unquote("\"#{ $fa-var }\""); + @return unquote('"#{ $fa-var }"'); } $fa-var-500px: \f26e; diff --git a/docs/src/static/font/fontawesome/stylesheet.scss b/docs/src/static/font/fontawesome/stylesheet.scss index b94ebe2..83a392d 100644 --- a/docs/src/static/font/fontawesome/stylesheet.scss +++ b/docs/src/static/font/fontawesome/stylesheet.scss @@ -1,9 +1,8 @@ -@use "sass:math"; +@use 'sass:math'; -@import "_variables"; +@import '_variables'; - -$fa-font-path: "/static/font/fontawesome/webfonts"; +$fa-font-path: '/static/font/fontawesome/webfonts'; /* from font awesome */ @font-face { @@ -12,14 +11,16 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-regular-400.eot'); - src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), - url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), - url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), - url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), - url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); + src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') + format('embedded-opentype'), + url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), + url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), + url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); } -.far, .fab { +.far, +.fab { font-family: 'Font Awesome 5 Free'; font-weight: 400; } @@ -30,11 +31,12 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; font-weight: 900; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-solid-900.eot'); - src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), - url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), - url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), - url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), - url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); + src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') + format('embedded-opentype'), + url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), + url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), + url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), + url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); } @font-face { @@ -43,11 +45,12 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-brands-400.eot'); - src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), - url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), - url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), - url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), - url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); + src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') + format('embedded-opentype'), + url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), + url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), + url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); } .fa, @@ -61,10 +64,12 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; .#{$fa-css-prefix}-ul { list-style-type: none; - margin-left: $fa-li-width * math.div(5,4); + margin-left: $fa-li-width * math.div(5, 4); padding-left: 0; - > li { position: relative; } + > li { + position: relative; + } } .#{$fa-css-prefix}-li { @@ -82,15 +87,15 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; .#{$fa-css-prefix}-lg { font-size: math.div(4em, 3); line-height: math.div(3em, 4); - vertical-align: -.0667em; + vertical-align: -0.0667em; } .#{$fa-css-prefix}-xs { - font-size: .75em; + font-size: 0.75em; } .#{$fa-css-prefix}-sm { - font-size: .875em; + font-size: 0.875em; } .#{$fa-css-prefix}-2_3x { @@ -121,40 +126,39 @@ $fa-font-path: "/static/font/fontawesome/webfonts"; line-height: 1; } - /* build icon list */ $icons: ( - infinity: $fa-var-infinity, - search: $fa-var-search, - book: $fa-var-book, - project-diagram: $fa-var-project-diagram, - heart: $fa-var-heart, - address-card: $fa-var-address-card, - server: $fa-var-server, - database: $fa-var-database, - ship: $fa-var-ship, - code: $fa-var-code, - sitemap: $fa-var-sitemap, - chart-bar: $fa-var-chart-bar, - tasks: $fa-var-tasks, - sliders-h: $fa-var-sliders-h, - lock: $fa-var-lock, - compass: $fa-var-compass, - user: $fa-var-user, - users: $fa-var-users, - share: $fa-var-share, - discord: $fa-var-discord, - github: $fa-var-github, - envelope: $fa-var-envelope, - download: $fa-var-download, - sync-alt: $fa-var-sync-alt, - life-ring: $fa-var-life-ring, - pencil-alt: $fa-var-pencil-alt, - arrow-circle-right: $fa-var-arrow-circle-right, + infinity: $fa-var-infinity, + search: $fa-var-search, + book: $fa-var-book, + project-diagram: $fa-var-project-diagram, + heart: $fa-var-heart, + address-card: $fa-var-address-card, + server: $fa-var-server, + database: $fa-var-database, + ship: $fa-var-ship, + code: $fa-var-code, + sitemap: $fa-var-sitemap, + chart-bar: $fa-var-chart-bar, + tasks: $fa-var-tasks, + sliders-h: $fa-var-sliders-h, + lock: $fa-var-lock, + compass: $fa-var-compass, + user: $fa-var-user, + users: $fa-var-users, + share: $fa-var-share, + discord: $fa-var-discord, + github: $fa-var-github, + envelope: $fa-var-envelope, + download: $fa-var-download, + sync-alt: $fa-var-sync-alt, + life-ring: $fa-var-life-ring, + pencil-alt: $fa-var-pencil-alt, + arrow-circle-right: $fa-var-arrow-circle-right, ); @each $key, $value in $icons { - .#{$fa-css-prefix}-#{$key}:before { - content: fa-content($value); - } + .#{$fa-css-prefix}-#{$key}:before { + content: fa-content($value); + } } diff --git a/docs/src/static/img/style.css b/docs/src/static/img/style.css index 460ba79..639bb82 100644 --- a/docs/src/static/img/style.css +++ b/docs/src/static/img/style.css @@ -1,3 +1,122 @@ @charset "UTF-8"; -/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */.breadcrumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.breadcrumb:not(:last-child){margin-bottom:1.5rem} -/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */*,:after,:before{box-sizing:inherit}@-webkit-keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@-webkit-keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li:before{color:#b5b5b5;content:"/"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li:before{content:"→"}.breadcrumb.has-bullet-separator li+li:before{content:"•"}.breadcrumb.has-dot-separator li+li:before{content:"·"}.breadcrumb.has-succeeds-separator li+li:before{content:"≻"} +/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */ +.breadcrumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.breadcrumb:not(:last-child) { + margin-bottom: 1.5rem; +} +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */ +*, +:after, +:before { + box-sizing: inherit; +} +@-webkit-keyframes spinAround { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +@keyframes spinAround { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +@-webkit-keyframes moveIndeterminate { + 0% { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } +} +@keyframes moveIndeterminate { + 0% { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } +} +.breadcrumb { + font-size: 1rem; + white-space: nowrap; +} +.breadcrumb a { + align-items: center; + color: #485fc7; + display: flex; + justify-content: center; + padding: 0 0.75em; +} +.breadcrumb a:hover { + color: #363636; +} +.breadcrumb li { + align-items: center; + display: flex; +} +.breadcrumb li:first-child a { + padding-left: 0; +} +.breadcrumb li.is-active a { + color: #363636; + cursor: default; + pointer-events: none; +} +.breadcrumb li + li:before { + color: #b5b5b5; + content: '/'; +} +.breadcrumb ol, +.breadcrumb ul { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.breadcrumb .icon:first-child { + margin-right: 0.5em; +} +.breadcrumb .icon:last-child { + margin-left: 0.5em; +} +.breadcrumb.is-centered ol, +.breadcrumb.is-centered ul { + justify-content: center; +} +.breadcrumb.is-right ol, +.breadcrumb.is-right ul { + justify-content: flex-end; +} +.breadcrumb.is-small { + font-size: 0.75rem; +} +.breadcrumb.is-medium { + font-size: 1.25rem; +} +.breadcrumb.is-large { + font-size: 1.5rem; +} +.breadcrumb.has-arrow-separator li + li:before { + content: '→'; +} +.breadcrumb.has-bullet-separator li + li:before { + content: '•'; +} +.breadcrumb.has-dot-separator li + li:before { + content: '·'; +} +.breadcrumb.has-succeeds-separator li + li:before { + content: '≻'; +} diff --git a/docs/src/static/js/animate.js b/docs/src/static/js/animate.js index e808ae7..f4e6303 100644 --- a/docs/src/static/js/animate.js +++ b/docs/src/static/js/animate.js @@ -19,13 +19,16 @@ var d = document, load = function () { - [].forEach.call(d.querySelectorAll(".animated[data-animate]"), function (el) { - if (isInViewport(el)) { - // set image to nothing to clear, then load new - el.classList.add(el.getAttribute("data-animate")); - el.removeAttribute("data-animate"); - } - }); + [].forEach.call( + d.querySelectorAll('.animated[data-animate]'), + function (el) { + if (isInViewport(el)) { + // set image to nothing to clear, then load new + el.classList.add(el.getAttribute('data-animate')); + el.removeAttribute('data-animate'); + } + }, + ); }; var isInViewport = function isInViewport(elem) { @@ -43,24 +46,24 @@ }; load(); - d.addEventListener("lazy", function () { + d.addEventListener('lazy', function () { setTimeout(function () { load(); }, 0); }); - var resetHash = function(){ - if(window.location.hash != ""){ - history.pushState("", document.title, window.location.pathname + window.location.search); - } - } - d.addEventListener( - "scroll", - function () { - debounce(load(), 200); - - debounce(resetHash(), 500); - + var resetHash = function () { + if (window.location.hash != '') { + history.pushState( + '', + document.title, + window.location.pathname + window.location.search, + ); } - ); + }; + d.addEventListener('scroll', function () { + debounce(load(), 200); + + debounce(resetHash(), 500); + }); })(); diff --git a/docs/src/static/js/hamburger.js b/docs/src/static/js/hamburger.js index 179126d..85cd262 100644 --- a/docs/src/static/js/hamburger.js +++ b/docs/src/static/js/hamburger.js @@ -1,5 +1,8 @@ // Get all "navbar-burger" elements -var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); // Check if there are any navbar burgers +var $navbarBurgers = Array.prototype.slice.call( + document.querySelectorAll('.navbar-burger'), + 0, +); // Check if there are any navbar burgers if ($navbarBurgers.length > 0) { // Add a click event on each of them diff --git a/docs/src/static/js/modal.js b/docs/src/static/js/modal.js index 3bc0622..4404a8c 100644 --- a/docs/src/static/js/modal.js +++ b/docs/src/static/js/modal.js @@ -1,10 +1,11 @@ - // Modals var rootEl = document.documentElement; var $modals = getAll('.modal'); var $modalButtons = getAll('.modal-button'); -var $modalCloses = getAll('.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button'); +var $modalCloses = getAll( + '.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button', +); if ($modalButtons.length > 0) { $modalButtons.forEach(function ($el) { diff --git a/docs/src/static/js/search.js b/docs/src/static/js/search.js index e61c67c..d23eec1 100644 --- a/docs/src/static/js/search.js +++ b/docs/src/static/js/search.js @@ -1,13 +1,9 @@ - // var client = algoliasearch('QFXNLHI6NP', '6b5ccc86ead48e79e587963eeb2d83e8'); // var searchIndex = client.initIndex("dev_atlas"); - // var searchBox = document.getElementById("search"); // var searchForm = document.getElementById("search-form"); - - // var runSearch = function(event) { // var searchResultsContainer = document.getElementById("search-results"); // searchResultsContainer.textContent = ""; @@ -31,7 +27,6 @@ // console.log(results); - // var formattedResults = results.map(function(result){ // var toolName = extractToolName(result._tags); // console.log(toolName) @@ -98,4 +93,3 @@ // searchBox.addEventListener("input", runSearch.debounce(250)); // searchForm.addEventListener("submit", (e) => e.preventDefault()); // } -