From ff8da1e094a42718501e7615d03f06a7cf680001 Mon Sep 17 00:00:00 2001 From: winston Date: Thu, 16 Nov 2023 22:45:25 +0100 Subject: [PATCH] ci(lint): init (#318) * ci(lint): init This finishes what #132 started, supersedes #317 (thanks for the stylelint setup!) * ci(lint): add stylelint Co-authored-by: uncenter <47499684+uncenter@users.noreply.github.com> --- .github/workflows/file-checker.yml | 50 - .github/workflows/generate.yml | 4 +- .github/workflows/lint.yml | 34 + .github/workflows/maintainers.yml | 4 +- src/deno.json | 10 +- src/deno.lock | 1164 ++++++++++++++++- src/deps.ts | 11 + src/generate/deps.ts | 6 - src/generate/{generate.ts => main.ts} | 8 +- src/lint/main.ts | 114 ++ src/lint/stylelint.ts | 139 ++ .../main.ts} | 11 +- src/{generate => }/types.d.ts | 2 +- 13 files changed, 1484 insertions(+), 73 deletions(-) delete mode 100644 .github/workflows/file-checker.yml create mode 100644 .github/workflows/lint.yml create mode 100644 src/deps.ts delete mode 100644 src/generate/deps.ts rename src/generate/{generate.ts => main.ts} (98%) create mode 100755 src/lint/main.ts create mode 100644 src/lint/stylelint.ts rename src/{generate/syncMaintainers.ts => sync-maintainers/main.ts} (89%) rename src/{generate => }/types.d.ts (70%) diff --git a/.github/workflows/file-checker.yml b/.github/workflows/file-checker.yml deleted file mode 100644 index 85b818d2f0..0000000000 --- a/.github/workflows/file-checker.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: File Checker - -on: - workflow_dispatch: - pull_request: - -jobs: - file-checker: - name: Required files included - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Check files - run: | - MISSING_FILES=0 - echo "# Missing Files Found 😢" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - - required_files=( - "catppuccin.user.css" - "assets/mocha.webp" - "assets/macchiato.webp" - "assets/frappe.webp" - "assets/latte.webp" - "assets/catwalk.webp" - ) - - find_files() { - local path=$1 - for file in "${required_files[@]}"; do - if [ ! -f "$path/$file" ]; then - MISSING_FILES=1 - echo "- $path/$file" >> $GITHUB_STEP_SUMMARY - fi - done - } - - for dir in styles/*; do - if [ -d "$dir" ]; then - find_files "$dir" - fi - done - - if [ $MISSING_FILES -eq 0 ]; then - echo "# No Missing Files 🙌" > $GITHUB_STEP_SUMMARY - fi - - exit $MISSING_FILES -# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml index 4259cc917f..c58e3ce69e 100644 --- a/.github/workflows/generate.yml +++ b/.github/workflows/generate.yml @@ -42,8 +42,8 @@ jobs: path: ${{ env.DENO_DIR }} - name: Generate health files - working-directory: src/generate - run: ./generate.ts + working-directory: ./src + run: deno task generate - name: Push changes uses: stefanzweifel/git-auto-commit-action@v5 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..557c54460d --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,34 @@ +name: Lint + +on: + workflow_dispatch: + pull_request: + push: + branches: [main] + +env: + DENO_DIR: deno_cache + +jobs: + lint: + name: Lint Userstyles + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Cache Deno dependencies + uses: actions/cache@v3 + with: + key: ${{ hashFiles('src/deno.lock') }} + path: ${{ env.DENO_DIR }} + + - name: Run Lint + working-directory: src + run: deno task lint diff --git a/.github/workflows/maintainers.yml b/.github/workflows/maintainers.yml index 8db4337297..22f0639abc 100644 --- a/.github/workflows/maintainers.yml +++ b/.github/workflows/maintainers.yml @@ -32,8 +32,8 @@ jobs: - name: Sync maintainers if: ${{ github.repository == 'catppuccin/userstyles' && github.ref == 'refs/heads/main' }} - working-directory: src/generate - run: ./syncMaintainers.ts + working-directory: ./src + run: deno task sync-maintainers env: GITHUB_TOKEN: ${{ secrets.USERSTYLES_TOKEN }} diff --git a/src/deno.json b/src/deno.json index a249e80934..a6bc4a7c0b 100644 --- a/src/deno.json +++ b/src/deno.json @@ -1,11 +1,19 @@ { "imports": { + "@/": "./", "std/": "https://deno.land/std@0.206.0/", "catppuccin-repo/": "https://raw.githubusercontent.com/catppuccin/catppuccin/91d6b5433730103c504dcf43583b594e418ee7c1/", + "globber": "https://deno.land/x/globber@0.1.0/mod.ts", + "@actions/core": "npm:@actions/core@1.10.1", + "@octokit/rest": "npm:@octokit/rest@20.0.2", + "usercss-meta": "npm:usercss-meta@0.12.0", "ajv": "npm:ajv@8.12.0", - "octokit": "npm:@octokit/rest@20.0.2" + "less": "npm:less@4.2.0" }, "tasks": { + "generate": "./generate/main.ts", + "lint": "./lint/main.ts", + "sync-maintainers": "./sync-maintainers/main.ts", "update-types": "deno run -A 'npm:json-schema-to-typescript' ./userstyles.schema.json types/userstyles.d.ts" } } diff --git a/src/deno.lock b/src/deno.lock index ceac7b6e53..34b327ce23 100644 --- a/src/deno.lock +++ b/src/deno.lock @@ -2,10 +2,102 @@ "version": "3", "packages": { "specifiers": { + "npm:@actions/core": "npm:@actions/core@1.10.1", + "npm:@actions/core@1.10.1": "npm:@actions/core@1.10.1", "npm:@octokit/rest@20.0.2": "npm:@octokit/rest@20.0.2_@octokit+core@5.0.1", - "npm:ajv@8.12.0": "npm:ajv@8.12.0" + "npm:@types/less": "npm:@types/less@3.0.6", + "npm:ajv@8.12.0": "npm:ajv@8.12.0", + "npm:less": "npm:less@4.2.0", + "npm:less@4.2.0": "npm:less@4.2.0", + "npm:postcss-less": "npm:postcss-less@6.0.0_postcss@8.4.31", + "npm:postcss-less@^6.0.0": "npm:postcss-less@6.0.0_postcss@8.4.31", + "npm:stylelint": "npm:stylelint@15.11.0_@csstools+css-tokenizer@2.2.1_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_postcss-selector-parser@6.0.13_postcss@8.4.31", + "npm:stylelint-config-recommended": "npm:stylelint-config-recommended@13.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31", + "npm:stylelint-config-standard": "npm:stylelint-config-standard@34.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31", + "npm:stylelint-config-standard@^34.0.0": "npm:stylelint-config-standard@34.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31", + "npm:stylelint@^15.11.0": "npm:stylelint@15.11.0_@csstools+css-tokenizer@2.2.1_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_postcss-selector-parser@6.0.13_postcss@8.4.31", + "npm:usercss-meta": "npm:usercss-meta@0.12.0", + "npm:usercss-meta@0.12.0": "npm:usercss-meta@0.12.0" }, "npm": { + "@actions/core@1.10.1": { + "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", + "dependencies": { + "@actions/http-client": "@actions/http-client@2.2.0", + "uuid": "uuid@8.3.2" + } + }, + "@actions/http-client@2.2.0": { + "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==", + "dependencies": { + "tunnel": "tunnel@0.0.6", + "undici": "undici@5.27.2" + } + }, + "@babel/code-frame@7.22.13": { + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "@babel/highlight@7.22.20", + "chalk": "chalk@2.4.2" + } + }, + "@babel/helper-validator-identifier@7.22.20": { + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dependencies": {} + }, + "@babel/highlight@7.22.20": { + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.22.20", + "chalk": "chalk@2.4.2", + "js-tokens": "js-tokens@4.0.0" + } + }, + "@csstools/css-parser-algorithms@2.3.2_@csstools+css-tokenizer@2.2.1": { + "integrity": "sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==", + "dependencies": { + "@csstools/css-tokenizer": "@csstools/css-tokenizer@2.2.1" + } + }, + "@csstools/css-tokenizer@2.2.1": { + "integrity": "sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==", + "dependencies": {} + }, + "@csstools/media-query-list-parser@2.1.5_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_@csstools+css-tokenizer@2.2.1": { + "integrity": "sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==", + "dependencies": { + "@csstools/css-parser-algorithms": "@csstools/css-parser-algorithms@2.3.2_@csstools+css-tokenizer@2.2.1", + "@csstools/css-tokenizer": "@csstools/css-tokenizer@2.2.1" + } + }, + "@csstools/selector-specificity@3.0.0_postcss-selector-parser@6.0.13": { + "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", + "dependencies": { + "postcss-selector-parser": "postcss-selector-parser@6.0.13" + } + }, + "@fastify/busboy@2.1.0": { + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dependencies": {} + }, + "@nodelib/fs.scandir@2.1.5": { + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", + "run-parallel": "run-parallel@1.2.0" + } + }, + "@nodelib/fs.stat@2.0.5": { + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dependencies": {} + }, + "@nodelib/fs.walk@1.2.8": { + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "@nodelib/fs.scandir@2.1.5", + "fastq": "fastq@1.15.0" + } + }, "@octokit/auth-token@4.0.0": { "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dependencies": {} @@ -95,6 +187,18 @@ "@octokit/openapi-types": "@octokit/openapi-types@19.0.2" } }, + "@types/less@3.0.6": { + "integrity": "sha512-PecSzorDGdabF57OBeQO/xFbAkYWo88g4Xvnsx7LRwqLC17I7OoKtA3bQB9uXkY6UkMWCOsA8HSVpaoitscdXw==", + "dependencies": {} + }, + "@types/minimist@1.2.5": { + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dependencies": {} + }, + "@types/normalize-package-data@2.4.4": { + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dependencies": {} + }, "ajv@8.12.0": { "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { @@ -104,40 +208,980 @@ "uri-js": "uri-js@4.4.1" } }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dependencies": {} + }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "color-convert@1.9.3" + } + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "color-convert@2.0.1" + } + }, + "argparse@2.0.1": { + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dependencies": {} + }, + "array-union@2.1.0": { + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dependencies": {} + }, + "arrify@1.0.1": { + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dependencies": {} + }, + "astral-regex@2.0.0": { + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dependencies": {} + }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dependencies": {} + }, + "balanced-match@2.0.0": { + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dependencies": {} + }, "before-after-hook@2.2.3": { "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dependencies": {} }, + "brace-expansion@1.1.11": { + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "balanced-match@1.0.2", + "concat-map": "concat-map@0.0.1" + } + }, + "braces@3.0.2": { + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "fill-range@7.0.1" + } + }, + "callsites@3.1.0": { + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dependencies": {} + }, + "camelcase-keys@7.0.2": { + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dependencies": { + "camelcase": "camelcase@6.3.0", + "map-obj": "map-obj@4.3.0", + "quick-lru": "quick-lru@5.1.1", + "type-fest": "type-fest@1.4.0" + } + }, + "camelcase@6.3.0": { + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dependencies": {} + }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "ansi-styles@3.2.1", + "escape-string-regexp": "escape-string-regexp@1.0.5", + "supports-color": "supports-color@5.5.0" + } + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "color-name@1.1.3" + } + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "color-name@1.1.4" + } + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dependencies": {} + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dependencies": {} + }, + "colord@2.9.3": { + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dependencies": {} + }, + "concat-map@0.0.1": { + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dependencies": {} + }, + "copy-anything@2.0.6": { + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dependencies": { + "is-what": "is-what@3.14.1" + } + }, + "cosmiconfig@8.3.6": { + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "import-fresh@3.3.0", + "js-yaml": "js-yaml@4.1.0", + "parse-json": "parse-json@5.2.0", + "path-type": "path-type@4.0.0" + } + }, + "css-functions-list@3.2.1": { + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "dependencies": {} + }, + "css-tree@2.3.1": { + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "mdn-data@2.0.30", + "source-map-js": "source-map-js@1.0.2" + } + }, + "cssesc@3.0.0": { + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dependencies": {} + }, + "debug@3.2.7": { + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "ms@2.1.2" + } + }, + "debug@4.3.4": { + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "ms@2.1.2" + } + }, + "decamelize-keys@1.1.1": { + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "decamelize@1.2.0", + "map-obj": "map-obj@1.0.1" + } + }, + "decamelize@1.2.0": { + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dependencies": {} + }, + "decamelize@5.0.1": { + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dependencies": {} + }, "deprecation@2.3.1": { "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dependencies": {} }, + "dir-glob@3.0.1": { + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "path-type@4.0.0" + } + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dependencies": {} + }, + "errno@0.1.8": { + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "prr@1.0.1" + } + }, + "error-ex@1.3.2": { + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "is-arrayish@0.2.1" + } + }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dependencies": {} + }, "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dependencies": {} }, + "fast-glob@3.3.2": { + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "@nodelib/fs.stat@2.0.5", + "@nodelib/fs.walk": "@nodelib/fs.walk@1.2.8", + "glob-parent": "glob-parent@5.1.2", + "merge2": "merge2@1.4.1", + "micromatch": "micromatch@4.0.5" + } + }, + "fastest-levenshtein@1.0.16": { + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dependencies": {} + }, + "fastq@1.15.0": { + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "reusify@1.0.4" + } + }, + "file-entry-cache@7.0.1": { + "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==", + "dependencies": { + "flat-cache": "flat-cache@3.2.0" + } + }, + "fill-range@7.0.1": { + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "to-regex-range@5.0.1" + } + }, + "find-up@5.0.0": { + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "locate-path@6.0.0", + "path-exists": "path-exists@4.0.0" + } + }, + "flat-cache@3.2.0": { + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "flatted@3.2.9", + "keyv": "keyv@4.5.4", + "rimraf": "rimraf@3.0.2" + } + }, + "flatted@3.2.9": { + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dependencies": {} + }, + "fs.realpath@1.0.0": { + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dependencies": {} + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dependencies": {} + }, + "glob-parent@5.1.2": { + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "is-glob@4.0.3" + } + }, + "glob@7.2.3": { + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "fs.realpath@1.0.0", + "inflight": "inflight@1.0.6", + "inherits": "inherits@2.0.4", + "minimatch": "minimatch@3.1.2", + "once": "once@1.4.0", + "path-is-absolute": "path-is-absolute@1.0.1" + } + }, + "global-modules@2.0.0": { + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "global-prefix@3.0.0" + } + }, + "global-prefix@3.0.0": { + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "ini@1.3.8", + "kind-of": "kind-of@6.0.3", + "which": "which@1.3.1" + } + }, + "globby@11.1.0": { + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "array-union@2.1.0", + "dir-glob": "dir-glob@3.0.1", + "fast-glob": "fast-glob@3.3.2", + "ignore": "ignore@5.2.4", + "merge2": "merge2@1.4.1", + "slash": "slash@3.0.0" + } + }, + "globjoin@0.1.4": { + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dependencies": {} + }, + "graceful-fs@4.2.11": { + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dependencies": {} + }, + "hard-rejection@2.1.0": { + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dependencies": {} + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dependencies": {} + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dependencies": {} + }, + "hasown@2.0.0": { + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "function-bind@1.1.2" + } + }, + "hosted-git-info@4.1.0": { + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "lru-cache@6.0.0" + } + }, + "html-tags@3.3.1": { + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dependencies": {} + }, + "iconv-lite@0.6.3": { + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": "safer-buffer@2.1.2" + } + }, + "ignore@5.2.4": { + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dependencies": {} + }, + "image-size@0.5.5": { + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dependencies": {} + }, + "import-fresh@3.3.0": { + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "parent-module@1.0.1", + "resolve-from": "resolve-from@4.0.0" + } + }, + "import-lazy@4.0.0": { + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dependencies": {} + }, + "imurmurhash@0.1.4": { + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dependencies": {} + }, + "indent-string@5.0.0": { + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dependencies": {} + }, + "inflight@1.0.6": { + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "once@1.4.0", + "wrappy": "wrappy@1.0.2" + } + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dependencies": {} + }, + "ini@1.3.8": { + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dependencies": {} + }, + "is-arrayish@0.2.1": { + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dependencies": {} + }, + "is-core-module@2.13.1": { + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "hasown@2.0.0" + } + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dependencies": {} + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dependencies": {} + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "is-extglob@2.1.1" + } + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dependencies": {} + }, + "is-plain-obj@1.1.0": { + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dependencies": {} + }, "is-plain-object@5.0.0": { "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dependencies": {} }, + "is-what@3.14.1": { + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dependencies": {} + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dependencies": {} + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dependencies": {} + }, + "js-yaml@4.1.0": { + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "argparse@2.0.1" + } + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dependencies": {} + }, + "json-parse-even-better-errors@2.3.1": { + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dependencies": {} + }, "json-schema-traverse@1.0.0": { "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dependencies": {} }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "json-buffer@3.0.1" + } + }, + "kind-of@6.0.3": { + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dependencies": {} + }, + "known-css-properties@0.29.0": { + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dependencies": {} + }, + "less@4.2.0": { + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dependencies": { + "copy-anything": "copy-anything@2.0.6", + "errno": "errno@0.1.8", + "graceful-fs": "graceful-fs@4.2.11", + "image-size": "image-size@0.5.5", + "make-dir": "make-dir@2.1.0", + "mime": "mime@1.6.0", + "needle": "needle@3.2.0", + "parse-node-version": "parse-node-version@1.0.1", + "source-map": "source-map@0.6.1", + "tslib": "tslib@2.6.2" + } + }, + "lines-and-columns@1.2.4": { + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dependencies": {} + }, + "locate-path@6.0.0": { + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "p-locate@5.0.0" + } + }, + "lodash.truncate@4.4.2": { + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dependencies": {} + }, + "lru-cache@6.0.0": { + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "yallist@4.0.0" + } + }, + "make-dir@2.1.0": { + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "pify@4.0.1", + "semver": "semver@5.7.2" + } + }, + "map-obj@1.0.1": { + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dependencies": {} + }, + "map-obj@4.3.0": { + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dependencies": {} + }, + "mathml-tag-names@2.1.3": { + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dependencies": {} + }, + "mdn-data@2.0.30": { + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dependencies": {} + }, + "meow@10.1.5": { + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dependencies": { + "@types/minimist": "@types/minimist@1.2.5", + "camelcase-keys": "camelcase-keys@7.0.2", + "decamelize": "decamelize@5.0.1", + "decamelize-keys": "decamelize-keys@1.1.1", + "hard-rejection": "hard-rejection@2.1.0", + "minimist-options": "minimist-options@4.1.0", + "normalize-package-data": "normalize-package-data@3.0.3", + "read-pkg-up": "read-pkg-up@8.0.0", + "redent": "redent@4.0.0", + "trim-newlines": "trim-newlines@4.1.1", + "type-fest": "type-fest@1.4.0", + "yargs-parser": "yargs-parser@20.2.9" + } + }, + "merge2@1.4.1": { + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dependencies": {} + }, + "micromatch@4.0.5": { + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "braces@3.0.2", + "picomatch": "picomatch@2.3.1" + } + }, + "mime@1.6.0": { + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dependencies": {} + }, + "min-indent@1.0.1": { + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dependencies": {} + }, + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "brace-expansion@1.1.11" + } + }, + "minimist-options@4.1.0": { + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "arrify@1.0.1", + "is-plain-obj": "is-plain-obj@1.1.0", + "kind-of": "kind-of@6.0.3" + } + }, + "ms@2.1.2": { + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dependencies": {} + }, + "nanoid@3.3.7": { + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dependencies": {} + }, + "needle@3.2.0": { + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dependencies": { + "debug": "debug@3.2.7", + "iconv-lite": "iconv-lite@0.6.3", + "sax": "sax@1.3.0" + } + }, + "normalize-package-data@3.0.3": { + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "hosted-git-info@4.1.0", + "is-core-module": "is-core-module@2.13.1", + "semver": "semver@7.5.4", + "validate-npm-package-license": "validate-npm-package-license@3.0.4" + } + }, + "normalize-path@3.0.0": { + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dependencies": {} + }, "once@1.4.0": { "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "wrappy@1.0.2" } }, + "p-limit@3.1.0": { + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "yocto-queue@0.1.0" + } + }, + "p-locate@5.0.0": { + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "p-limit@3.1.0" + } + }, + "parent-module@1.0.1": { + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "callsites@3.1.0" + } + }, + "parse-json@5.2.0": { + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "@babel/code-frame@7.22.13", + "error-ex": "error-ex@1.3.2", + "json-parse-even-better-errors": "json-parse-even-better-errors@2.3.1", + "lines-and-columns": "lines-and-columns@1.2.4" + } + }, + "parse-node-version@1.0.1": { + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dependencies": {} + }, + "path-exists@4.0.0": { + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dependencies": {} + }, + "path-is-absolute@1.0.1": { + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dependencies": {} + }, + "path-type@4.0.0": { + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dependencies": {} + }, + "picocolors@1.0.0": { + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dependencies": {} + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dependencies": {} + }, + "pify@4.0.1": { + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dependencies": {} + }, + "postcss-less@6.0.0_postcss@8.4.31": { + "integrity": "sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==", + "dependencies": { + "postcss": "postcss@8.4.31" + } + }, + "postcss-resolve-nested-selector@0.1.1": { + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "dependencies": {} + }, + "postcss-safe-parser@6.0.0_postcss@8.4.31": { + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dependencies": { + "postcss": "postcss@8.4.31" + } + }, + "postcss-selector-parser@6.0.13": { + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "cssesc@3.0.0", + "util-deprecate": "util-deprecate@1.0.2" + } + }, + "postcss-value-parser@4.2.0": { + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dependencies": {} + }, + "postcss@8.4.31": { + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dependencies": { + "nanoid": "nanoid@3.3.7", + "picocolors": "picocolors@1.0.0", + "source-map-js": "source-map-js@1.0.2" + } + }, + "prr@1.0.1": { + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dependencies": {} + }, "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dependencies": {} }, + "queue-microtask@1.2.3": { + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dependencies": {} + }, + "quick-lru@5.1.1": { + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dependencies": {} + }, + "read-pkg-up@8.0.0": { + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dependencies": { + "find-up": "find-up@5.0.0", + "read-pkg": "read-pkg@6.0.0", + "type-fest": "type-fest@1.4.0" + } + }, + "read-pkg@6.0.0": { + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dependencies": { + "@types/normalize-package-data": "@types/normalize-package-data@2.4.4", + "normalize-package-data": "normalize-package-data@3.0.3", + "parse-json": "parse-json@5.2.0", + "type-fest": "type-fest@1.4.0" + } + }, + "redent@4.0.0": { + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dependencies": { + "indent-string": "indent-string@5.0.0", + "strip-indent": "strip-indent@4.0.0" + } + }, "require-from-string@2.0.2": { "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dependencies": {} }, + "resolve-from@4.0.0": { + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dependencies": {} + }, + "resolve-from@5.0.0": { + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dependencies": {} + }, + "reusify@1.0.4": { + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dependencies": {} + }, + "rimraf@3.0.2": { + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "glob@7.2.3" + } + }, + "run-parallel@1.2.0": { + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dependencies": { + "queue-microtask": "queue-microtask@1.2.3" + } + }, + "safer-buffer@2.1.2": { + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dependencies": {} + }, + "sax@1.3.0": { + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dependencies": {} + }, + "semver@5.7.2": { + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dependencies": {} + }, + "semver@7.5.4": { + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "lru-cache@6.0.0" + } + }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dependencies": {} + }, + "slash@3.0.0": { + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dependencies": {} + }, + "slice-ansi@4.0.0": { + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "astral-regex": "astral-regex@2.0.0", + "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0" + } + }, + "source-map-js@1.0.2": { + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dependencies": {} + }, + "source-map@0.6.1": { + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dependencies": {} + }, + "spdx-correct@3.2.0": { + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "spdx-expression-parse@3.0.1", + "spdx-license-ids": "spdx-license-ids@3.0.16" + } + }, + "spdx-exceptions@2.3.0": { + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dependencies": {} + }, + "spdx-expression-parse@3.0.1": { + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "spdx-exceptions@2.3.0", + "spdx-license-ids": "spdx-license-ids@3.0.16" + } + }, + "spdx-license-ids@3.0.16": { + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dependencies": {} + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "emoji-regex@8.0.0", + "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "ansi-regex@5.0.1" + } + }, + "strip-indent@4.0.0": { + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dependencies": { + "min-indent": "min-indent@1.0.1" + } + }, + "style-search@0.1.0": { + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dependencies": {} + }, + "stylelint-config-recommended@13.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31": { + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", + "dependencies": { + "stylelint": "stylelint@15.11.0_@csstools+css-tokenizer@2.2.1_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_postcss-selector-parser@6.0.13_postcss@8.4.31" + } + }, + "stylelint-config-standard@34.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31": { + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", + "dependencies": { + "stylelint": "stylelint@15.11.0_@csstools+css-tokenizer@2.2.1_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_postcss-selector-parser@6.0.13_postcss@8.4.31", + "stylelint-config-recommended": "stylelint-config-recommended@13.0.0_stylelint@15.11.0__@csstools+css-tokenizer@2.2.1__@csstools+css-parser-algorithms@2.3.2___@csstools+css-tokenizer@2.2.1__postcss-selector-parser@6.0.13__postcss@8.4.31" + } + }, + "stylelint@15.11.0_@csstools+css-tokenizer@2.2.1_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_postcss-selector-parser@6.0.13_postcss@8.4.31": { + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dependencies": { + "@csstools/css-parser-algorithms": "@csstools/css-parser-algorithms@2.3.2_@csstools+css-tokenizer@2.2.1", + "@csstools/css-tokenizer": "@csstools/css-tokenizer@2.2.1", + "@csstools/media-query-list-parser": "@csstools/media-query-list-parser@2.1.5_@csstools+css-parser-algorithms@2.3.2__@csstools+css-tokenizer@2.2.1_@csstools+css-tokenizer@2.2.1", + "@csstools/selector-specificity": "@csstools/selector-specificity@3.0.0_postcss-selector-parser@6.0.13", + "balanced-match": "balanced-match@2.0.0", + "colord": "colord@2.9.3", + "cosmiconfig": "cosmiconfig@8.3.6", + "css-functions-list": "css-functions-list@3.2.1", + "css-tree": "css-tree@2.3.1", + "debug": "debug@4.3.4", + "fast-glob": "fast-glob@3.3.2", + "fastest-levenshtein": "fastest-levenshtein@1.0.16", + "file-entry-cache": "file-entry-cache@7.0.1", + "global-modules": "global-modules@2.0.0", + "globby": "globby@11.1.0", + "globjoin": "globjoin@0.1.4", + "html-tags": "html-tags@3.3.1", + "ignore": "ignore@5.2.4", + "import-lazy": "import-lazy@4.0.0", + "imurmurhash": "imurmurhash@0.1.4", + "is-plain-object": "is-plain-object@5.0.0", + "known-css-properties": "known-css-properties@0.29.0", + "mathml-tag-names": "mathml-tag-names@2.1.3", + "meow": "meow@10.1.5", + "micromatch": "micromatch@4.0.5", + "normalize-path": "normalize-path@3.0.0", + "picocolors": "picocolors@1.0.0", + "postcss": "postcss@8.4.31", + "postcss-resolve-nested-selector": "postcss-resolve-nested-selector@0.1.1", + "postcss-safe-parser": "postcss-safe-parser@6.0.0_postcss@8.4.31", + "postcss-selector-parser": "postcss-selector-parser@6.0.13", + "postcss-value-parser": "postcss-value-parser@4.2.0", + "resolve-from": "resolve-from@5.0.0", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1", + "style-search": "style-search@0.1.0", + "supports-hyperlinks": "supports-hyperlinks@3.0.0", + "svg-tags": "svg-tags@1.0.0", + "table": "table@6.8.1", + "write-file-atomic": "write-file-atomic@5.0.1" + } + }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "has-flag@3.0.0" + } + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "has-flag@4.0.0" + } + }, + "supports-hyperlinks@3.0.0": { + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dependencies": { + "has-flag": "has-flag@4.0.0", + "supports-color": "supports-color@7.2.0" + } + }, + "svg-tags@1.0.0": { + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dependencies": {} + }, + "table@6.8.1": { + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dependencies": { + "ajv": "ajv@8.12.0", + "lodash.truncate": "lodash.truncate@4.4.2", + "slice-ansi": "slice-ansi@4.0.0", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "is-number@7.0.0" + } + }, + "trim-newlines@4.1.1": { + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dependencies": {} + }, + "tslib@2.6.2": { + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dependencies": {} + }, + "tunnel@0.0.6": { + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dependencies": {} + }, + "type-fest@1.4.0": { + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dependencies": {} + }, + "undici@5.27.2": { + "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", + "dependencies": { + "@fastify/busboy": "@fastify/busboy@2.1.0" + } + }, "universal-user-agent@6.0.1": { "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dependencies": {} @@ -148,13 +1192,68 @@ "punycode": "punycode@2.3.1" } }, + "usercss-meta@0.12.0": { + "integrity": "sha512-zKrXCKdpeIwtVe87omxGo9URf+7mbozduMZEg79dmT4KB3XJwfIkEi/Uk0PcTwR/nZLtAK1+k7isgbGB/g6E7Q==", + "dependencies": {} + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dependencies": {} + }, + "uuid@8.3.2": { + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dependencies": {} + }, + "validate-npm-package-license@3.0.4": { + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "spdx-correct@3.2.0", + "spdx-expression-parse": "spdx-expression-parse@3.0.1" + } + }, + "which@1.3.1": { + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, "wrappy@1.0.2": { "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dependencies": {} + }, + "write-file-atomic@5.0.1": { + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dependencies": { + "imurmurhash": "imurmurhash@0.1.4", + "signal-exit": "signal-exit@4.1.0" + } + }, + "yallist@4.0.0": { + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dependencies": {} + }, + "yargs-parser@20.2.9": { + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dependencies": {} + }, + "yocto-queue@0.1.0": { + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dependencies": {} } } }, "remote": { + "https://deno.land/std@0.150.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", + "https://deno.land/std@0.150.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", + "https://deno.land/std@0.150.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.150.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.150.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", + "https://deno.land/std@0.150.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.150.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", + "https://deno.land/std@0.150.0/path/mod.ts": "4945b430b759b0b3d98f2a278542cbcf95e0ad2bd8eaaed3c67322b306b2b346", + "https://deno.land/std@0.150.0/path/posix.ts": "c1f7afe274290ea0b51da07ee205653b2964bd74909a82deb07b69a6cc383aaa", + "https://deno.land/std@0.150.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.150.0/path/win32.ts": "bd7549042e37879c68ff2f8576a25950abbfca1d696d41d82c7bca0b7e6f452c", "https://deno.land/std@0.206.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", "https://deno.land/std@0.206.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48", "https://deno.land/std@0.206.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", @@ -186,6 +1285,59 @@ "https://deno.land/std@0.206.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", "https://deno.land/std@0.206.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a", "https://deno.land/std@0.206.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536", + "https://deno.land/std@0.206.0/collections/_unstable_binary_search_node.ts": "8d99dd95901d73a0edbe105826ef7ce0e1111ce184d2d0410dbfda172c9ebf35", + "https://deno.land/std@0.206.0/collections/_unstable_red_black_node.ts": "62eb878fff714fdb4eb2e16165336618c443b2a09a904fd42c4ea895dadfadc3", + "https://deno.land/std@0.206.0/collections/_utils.ts": "5114abc026ddef71207a79609b984614e66a63a4bda17d819d56b0e72c51527e", + "https://deno.land/std@0.206.0/collections/aggregate_groups.ts": "2ed1698695e7b4877afa2281ad10ce3ce67395aa7479e98cc2ebb751add1c4e9", + "https://deno.land/std@0.206.0/collections/associate_by.ts": "64869182eeed3be9222137d071224ac6a01bcc3c5236610306f99e3e3107ec47", + "https://deno.land/std@0.206.0/collections/associate_with.ts": "cf9735d7b4d345275fd3b7420eaba9726a2844e847f2d9e4be9f103f6f3e2c8b", + "https://deno.land/std@0.206.0/collections/binary_heap.ts": "5cba2b4b79aa42c775e4e881a5726f40d9f0e3920e69dfde1c92d6c2c6928f8f", + "https://deno.land/std@0.206.0/collections/binary_search_tree.ts": "fb4508db4be63cbde1f4886abbc2482b4212adea89d8e9f608f9671f726cc059", + "https://deno.land/std@0.206.0/collections/chunk.ts": "f82c52a82ad9338018570c42f6de0fb132fcb14914c31a444e360ac104d7b55b", + "https://deno.land/std@0.206.0/collections/deep_merge.ts": "9db788ba56cb05b65c77166b789e58e125dff159b7f41bf4d19dc1cba19ecb8b", + "https://deno.land/std@0.206.0/collections/distinct.ts": "01595bd8e608a5e2de8a8631055587e6f01d68861e463eef34f8e295713500b8", + "https://deno.land/std@0.206.0/collections/distinct_by.ts": "3afe11d81eafb30c7c9dbf568d94357f3d88153292c00671b72cd695deae6602", + "https://deno.land/std@0.206.0/collections/drop_last_while.ts": "03dd8c55c362efea4f2738b93f102d7487f68beff7b4e4ed67495046b3fe1e4c", + "https://deno.land/std@0.206.0/collections/drop_while.ts": "74cfa9d6b74b3503d5dc70c8ab96af21e7cb2eaff8b9f11aca2aca403e56aeae", + "https://deno.land/std@0.206.0/collections/filter_entries.ts": "77d3f0b3dddcb43e92fc745dd66d01b4922d0eff2a3e2bd25d9d826889f203d8", + "https://deno.land/std@0.206.0/collections/filter_keys.ts": "a29cfe8730ddb54e9e071ea45e8a82e166c7629d18675652def70c1bf80e2ef6", + "https://deno.land/std@0.206.0/collections/filter_values.ts": "16e1fc456a7969e770ec5b89edf5ac97b295ca534b47c1a83f061b409aad7814", + "https://deno.land/std@0.206.0/collections/find_single.ts": "d941876fbec0c1d8b7f41a52f8c1b03198c5695dfaa8d7a12e7a6317d2e6085b", + "https://deno.land/std@0.206.0/collections/first_not_nullish_of.ts": "08d92c4f9c66ff1b1f64a48fa7c1e557e3e6d43f48a46d53a98c3383041b98ae", + "https://deno.land/std@0.206.0/collections/group_by.ts": "f90f483598b38f0174f946589f3af25b1c3cf89d4f3b14d4f0fbe3aaaca0abdd", + "https://deno.land/std@0.206.0/collections/includes_value.ts": "8284a0b3178465b6565d234c1995117320b248dbcff332f77c5e891a11459e0c", + "https://deno.land/std@0.206.0/collections/intersect.ts": "0b4924e2aceaddd5e55591bd9d648cf75745151795ee8a76beddf4facec77548", + "https://deno.land/std@0.206.0/collections/join_to_string.ts": "a487ccc99dbac988698cf5b7c6cc4bb50eefd1784042d0b958a77af413683fe0", + "https://deno.land/std@0.206.0/collections/map_entries.ts": "282b0e5141fbe73a45903674597fb10ec2b211fab8cbac85874eebd97f522a62", + "https://deno.land/std@0.206.0/collections/map_keys.ts": "3dd2cf3a940f1432628cb0252b919d268e8bb38fe8bcd78153a440909173ae98", + "https://deno.land/std@0.206.0/collections/map_not_nullish.ts": "8793a340ca245664902a309ac02861b9eb01780f7b78aa5ad329da7d95e011ec", + "https://deno.land/std@0.206.0/collections/map_values.ts": "c88f306b2b3ec84043e16ab4e1b062055ab32cf4d68bb1d7447afaafa0a1b3bf", + "https://deno.land/std@0.206.0/collections/max_by.ts": "9d5940986aac51b2e4feaebef9cd8bf6e1eceeee5edcf3303e334b737f99520d", + "https://deno.land/std@0.206.0/collections/max_of.ts": "aa29268f102159364bc296eea9f45b0d4f1b041ae9d0037c3dce1c43e21e30be", + "https://deno.land/std@0.206.0/collections/max_with.ts": "252fe7788b6dfcf30cf8c4138cf9bae006a5d545408064ff520293ff0e2fe304", + "https://deno.land/std@0.206.0/collections/min_by.ts": "0fcf1973e8e309da83070dc22def47f468e410d7da462a294c5513ae2c5d6479", + "https://deno.land/std@0.206.0/collections/min_of.ts": "7f2b64620f4f54b75badddfac17e0a84660457233d0921b4c9d9ab31bd3323a8", + "https://deno.land/std@0.206.0/collections/min_with.ts": "ecca4ba5da922fb4b1be515949c59f287e580166985f2b12ee711f768004b33f", + "https://deno.land/std@0.206.0/collections/mod.ts": "c745508c522ecaf9fe4717850a2c6e1e13fd175847f0ae4d2c99d2033095879c", + "https://deno.land/std@0.206.0/collections/partition.ts": "28336d4af97eb8a2a2c3ec4ce28597e657e724be5969417eb697ff0860b9711c", + "https://deno.land/std@0.206.0/collections/partition_entries.ts": "7a30b99b64a31af8e9d6da24239f7778b1cff9cd2f240f41aa2f535d647d54f9", + "https://deno.land/std@0.206.0/collections/permutations.ts": "3e3a9d7a8cc806a9ce9ae8fb0c7f3d37d884b3c7429fcaca4bc5d177d92d8217", + "https://deno.land/std@0.206.0/collections/reduce_groups.ts": "0cbb29ec3281f457dd1bd653c4420cef0a92544b51f31f5ae047436ff01712a2", + "https://deno.land/std@0.206.0/collections/running_reduce.ts": "e25f165456b946e7689a27e0e7fbb2f53d8189ef7cd0937b903e737bd37bacc6", + "https://deno.land/std@0.206.0/collections/sample.ts": "6330fb6567573b252a2ed9da475e54c4b98ca06e6266d34e5f0392095020c86b", + "https://deno.land/std@0.206.0/collections/sliding_windows.ts": "d1c8d18d86b8f02b407379e8681881880b7e3e173d152c5d8dc89d458031b740", + "https://deno.land/std@0.206.0/collections/sort_by.ts": "1207755af756a5da04bebff39146c93cbe54f7870a5d67cf6922e871d96a01d5", + "https://deno.land/std@0.206.0/collections/sum_of.ts": "76db7f04a66bdfa4911c4a592b868c854c690d6f0f83140c315f70caf742c761", + "https://deno.land/std@0.206.0/collections/take_last_while.ts": "9adcfe94a3dd56fbd55951099a121267aa42d8ccbc8152ed3aa210f86c74ca57", + "https://deno.land/std@0.206.0/collections/take_while.ts": "cd9a494d56e6a0a9c3f1e1123d1370633f0d4c6525ccf8aa3bd00b006742bddf", + "https://deno.land/std@0.206.0/collections/union.ts": "0577babef67dd38dc584accbcf75605318346046fe4ff476f0f6e2a1b1092391", + "https://deno.land/std@0.206.0/collections/unstable_binary_heap.ts": "c009225d9f9d93e9cd963565186b2d6cdf3fb8404b3ca0c94b4f15c85031d5fe", + "https://deno.land/std@0.206.0/collections/unstable_binary_search_tree.ts": "d9b4817c9af5b5ec1051345bc56bc0a88e03fb726b66eb27c0072860c0f44e34", + "https://deno.land/std@0.206.0/collections/unstable_comparators.ts": "fa7f9a44cea1d270098a2a5a6f8bb30c61b595c1b1f983bd67c6297d766adffa", + "https://deno.land/std@0.206.0/collections/unstable_red_black_tree.ts": "740b6baf26fd8d90564641d0ea15c2aba6b16071a2b91c314909d171649f57b4", + "https://deno.land/std@0.206.0/collections/unzip.ts": "3d3469c616b04200ff6a883e0d6dc82cac4c205aa65742e375afb8816be75b35", + "https://deno.land/std@0.206.0/collections/without_all.ts": "1e3cccb1ed0659455b473c0766d9414b7710d8cef48862c899f445178f66b779", + "https://deno.land/std@0.206.0/collections/zip.ts": "d5def5cf3a0a3fa167956b7eb2ebdc3aca63a41f7ebdfac8c0d1c44fa0dd588d", "https://deno.land/std@0.206.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9", "https://deno.land/std@0.206.0/path/_common/assert_path.ts": "061e4d093d4ba5aebceb2c4da3318bfe3289e868570e9d3a8e327d91c2958946", "https://deno.land/std@0.206.0/path/_common/basename.ts": "0d978ff818f339cd3b1d09dc914881f4d15617432ae519c1b8fdc09ff8d3789a", @@ -300,6 +1452,16 @@ "https://deno.land/std@0.206.0/yaml/schema/mod.ts": "4472e827bab5025e92bc2eb2eeefa70ecbefc64b2799b765c69af84822efef32", "https://deno.land/std@0.206.0/yaml/stringify.ts": "fffc09c65c68d3d63f8159e8cbaa3f489bc20a8e55b4fbb61a8c2e9f914d1d02", "https://deno.land/std@0.206.0/yaml/type.ts": "65553da3da3c029b6589c6e4903f0afbea6768be8fca61580711457151f2b30f", + "https://deno.land/x/globber@0.1.0/mod.ts": "971e58757909b2ef722e3dda1125aea8f5694601203ad835bdfc020f202bd5b8", + "https://deno.land/x/globber@0.1.0/src/create_matcher.ts": "85be3a6d67376905521aed9da51db756d1ee747ebd0d52b88fc7b78a6831a393", + "https://deno.land/x/globber@0.1.0/src/deps.ts": "179ba170213f7a35b7b794c409e7ca523da58644139c053721f93575dcbe616e", + "https://deno.land/x/globber@0.1.0/src/errors.ts": "aacdb19cda93423ca25c03089eeaa2d613ef09a631e6f41f86e457f64762cf76", + "https://deno.land/x/globber@0.1.0/src/get_path.ts": "1da42fbcc1451d48f21edf7a1ceecbf19fd34845fc2962fab2d70bb804a3a03b", + "https://deno.land/x/globber@0.1.0/src/globber.ts": "814cc13ddb31f9112b44def2815844c427f3ed0a145d1707f673b3ed4d018003", + "https://deno.land/x/globber@0.1.0/src/junk.ts": "68cdbfc55d9e4664200793c31f0cc686a8e75939fd51dd9013df8328444c2040", + "https://deno.land/x/globber@0.1.0/src/meta.ts": "989705d65480e8be2c5b0ca4fa8bf96ee0669f2336497b768f8d4d669e4ad95c", + "https://deno.land/x/globber@0.1.0/src/normalize_path.ts": "08ffa246c27dfbc345f4d096455921027079c7d1ef58555bb6cfb9b8bdd64415", + "https://deno.land/x/globber@0.1.0/src/utils.ts": "d7b0c1db9e627c0ee2e4e1d435c605f5c89e570984bd790c435db54798eafb9d", "https://raw.githubusercontent.com/catppuccin/catppuccin/91d6b5433730103c504dcf43583b594e418ee7c1/resources/ports.schema.json": "f1bfc1f4c68af258cd2f1a254d70069b7d254ab0cfe298b9b52bcd78299d8e40" } } diff --git a/src/deps.ts b/src/deps.ts new file mode 100644 index 0000000000..5dd21e1ede --- /dev/null +++ b/src/deps.ts @@ -0,0 +1,11 @@ +import schema from "./userstyles.schema.json" assert { type: "json" }; +import portsSchema from "catppuccin-repo/resources/ports.schema.json" assert { + type: "json", +}; + +import { join } from "std/path/mod.ts"; +const ROOT = new URL(".", import.meta.url).pathname; +/** absolute path to the repository */ +export const REPO_ROOT = join(ROOT, ".."); + +export { portsSchema, schema }; diff --git a/src/generate/deps.ts b/src/generate/deps.ts deleted file mode 100644 index d0347a37c8..0000000000 --- a/src/generate/deps.ts +++ /dev/null @@ -1,6 +0,0 @@ -import schema from "../userstyles.schema.json" assert { type: "json" }; -import portsSchema from "catppuccin-repo/resources/ports.schema.json" assert { - type: "json", -}; - -export { portsSchema, schema }; diff --git a/src/generate/generate.ts b/src/generate/main.ts similarity index 98% rename from src/generate/generate.ts rename to src/generate/main.ts index 1dc346915f..eb9bcb5223 100755 --- a/src/generate/generate.ts +++ b/src/generate/main.ts @@ -1,9 +1,10 @@ #!/usr/bin/env -S deno run --allow-env --allow-read --allow-write --allow-net + import * as path from "std/path/mod.ts"; import { parse as parseYaml } from "std/yaml/mod.ts"; import Ajv from "ajv"; -import { portsSchema, schema } from "./deps.ts"; +import { portsSchema, REPO_ROOT, schema } from "@/deps.ts"; import { ApplicationLink, @@ -15,10 +16,9 @@ import { Usage, Userstyle, Userstyles, -} from "./types.d.ts"; +} from "@/types.d.ts"; const ROOT = new URL(".", import.meta.url).pathname; -const REPO_ROOT = path.join(ROOT, "../.."); const ISSUE_PREFIX = "lbl:"; type Metadata = { @@ -41,7 +41,7 @@ const validate = ajv.compile(schema); const validatePorts = ajv.compile(portsSchema); const userstylesYaml = Deno.readTextFileSync( - path.join(ROOT, "../userstyles.yml"), + path.join(REPO_ROOT, "src/userstyles.yml"), ); const userstylesData = parseYaml(userstylesYaml); if (!validate(userstylesData)) { diff --git a/src/lint/main.ts b/src/lint/main.ts new file mode 100755 index 0000000000..e701bb8423 --- /dev/null +++ b/src/lint/main.ts @@ -0,0 +1,114 @@ +#!/usr/bin/env -S deno run --allow-read --allow-write --allow-env --allow-sys=uid,gid + +// TODO: remove this once types for usercss-meta are available +// deno-lint-ignore-file no-explicit-any + +import { basename, dirname, join, relative } from "std/path/mod.ts"; +import { globber } from "globber"; + +import core from "@actions/core"; +// @deno-types="npm:@types/less"; +import less from "less"; +import usercssMeta from "usercss-meta"; +import { lint } from "./stylelint.ts"; +import { REPO_ROOT } from "@/deps.ts"; + +const iterator = globber({ + include: ["styles/**/catppuccin.user.css"], + cwd: REPO_ROOT, +}); + +const missingFiles: string[] = []; + +const assertions = (repo: string) => { + const pfx = "https://github.com/catppuccin/userstyles"; + return { + namespace: `github.com/catppuccin/userstyles/styles/${repo}`, + author: "Catppuccin", + license: "MIT", + preprocessor: "less", + homepageURL: `${pfx}/tree/main/styles/${repo}`, + updateURL: `${pfx}/raw/main/styles/${repo}/catppuccin.user.css`, + }; +}; + +for await (const entry of iterator) { + const repodir = dirname(entry.absolute); + const repo = basename(repodir); + + const content = await Deno.readTextFile(entry.absolute); + + let metadata: Record = {}; + try { + metadata = usercssMeta.parse(content).metadata; + } catch (err) { + core.error(err, { file: entry.relative }); + } + + const assert = assertions(repo); + + Object.entries(assert).forEach(([k, v]) => { + const defacto = metadata[k]; + if (defacto !== v) { + const line = content.split("\n").findIndex((line) => line.includes(k)) + + 1; + core.warning(`Metadata \`${k}\` should be ${v} but is \`${defacto}\``, { + file: entry.relative, + startLine: line !== 0 ? line : undefined, + }); + } + }); + + // don't attempt to compile or lint non-less files + if (metadata.preprocessor !== assert.preprocessor) continue; + + const globalVars = Object.entries(metadata.vars) + .reduce((acc, [k, v]) => { + // @ts-expect-error untyped + return { ...acc, [k]: v.default }; + }, {}); + + less.render(content, { lint: true, globalVars }).then().catch( + (err: any) => { + core.error(err.message, { + file: entry.relative, + startLine: err.line, + endLine: err.line, + }); + }, + ); + + lint(content).then(({ results }) => { + results.sort( + (a, b) => (a.source ?? "").localeCompare(b.source ?? ""), + ).map((result) => { + result.warnings.map((warning) => { + core.warning(warning.text ?? "unspecified", { + file: entry.relative, + startLine: warning.line, + endLine: warning.endLine, + startColumn: warning.column, + endColumn: warning.endColumn, + }); + }); + }); + }); + + [ + "catppuccin.user.css", + ...["latte", "frappe", "macchiato", "mocha", "catwalk"].map((f) => + `assets/${f}.webp` + ), + ].map(async (fp) => { + const filepath = join(repodir, fp); + await Deno.stat(join(repodir, fp)).catch(() => { + missingFiles.push(relative(REPO_ROOT, filepath)); + }); + }); +} + +// only write summary if running in github actions +if (Deno.env.has("GITHUB_ACTIONS") && missingFiles.length !== 0) { + await core.summary.addHeading("Missing files").addList(missingFiles).write(); + Deno.exit(1); +} diff --git a/src/lint/stylelint.ts b/src/lint/stylelint.ts new file mode 100644 index 0000000000..e51db42487 --- /dev/null +++ b/src/lint/stylelint.ts @@ -0,0 +1,139 @@ +import { deepMerge } from "std/collections/mod.ts"; + +import stylelint from "npm:stylelint"; +import stylelintConfigStandard from "npm:stylelint-config-standard"; +import stylelintConfigRecommended from "npm:stylelint-config-recommended"; +import postcssLess from "npm:postcss-less"; + +const config: stylelint.Config = { + customSyntax: postcssLess, + rules: { + "selector-class-pattern": null, + "custom-property-pattern": null, + "selector-id-pattern": null, + + "rule-empty-line-before": null, + "comment-empty-line-before": null, + "custom-property-empty-line-before": null, + "at-rule-empty-line-before": null, + "declaration-empty-line-before": null, + + "property-no-vendor-prefix": null, + "alpha-value-notation": null, + "color-function-notation": null, + "hue-degree-notation": null, + "length-zero-no-unit": null, + + "function-no-unknown": [ + true, + { + // generated from https://lesscss.org/functions/ + // via `Array.from(document.querySelectorAll('.section-content h3.docs-heading'), heading => heading.textContent.replace('\n', ''))` + ignoreFunctions: [ + "%", + "abs", + "acos", + "alpha", + "argb", + "asin", + "atan", + "average", + "blue", + "boolean", + "ceil", + "color", + "contrast", + "convert", + "cos", + "darken", + "data-uri", + "default", + "desaturate", + "difference", + "e", + "each", + "escape", + "exclusion", + "extract", + "fade", + "fadein", + "fadeout", + "floor", + "get-unit", + "green", + "greyscale", + "hardlight", + "hsl", + "hsla", + "hsv", + "hsva", + "hsvhue", + "hsvsaturation", + "hsvvalue", + "hue", + "if", + "image-height", + "image-size", + "image-width", + "iscolor", + "isdefined", + "isem", + "iskeyword", + "isnumber", + "ispercentage", + "ispixel", + "isruleset", + "isstring", + "isunit", + "isurl", + "length", + "lighten", + "lightness", + "luma", + "luminance", + "max", + "min", + "mix", + "mod", + "multiply", + "negation", + "overlay", + "percentage", + "pi", + "pow", + "range", + "red", + "replace", + "rgb", + "rgba", + "round", + "saturate", + "saturation", + "screen", + "shade", + "sin", + "softlight", + "spin", + "sqrt", + "svg-gradient", + "tan", + "tint", + "unit", + ], + }, + ], + "function-name-case": null, + "no-descending-specificity": null, + }, +}; + +const base = deepMerge( + stylelintConfigRecommended, + { ...stylelintConfigStandard, extends: {} }, +); + +export const lint = (code: string) => + stylelint.lint({ + config: deepMerge(base, config), + code, + }); diff --git a/src/generate/syncMaintainers.ts b/src/sync-maintainers/main.ts similarity index 89% rename from src/generate/syncMaintainers.ts rename to src/sync-maintainers/main.ts index a8c3a617eb..bfb0285a00 100755 --- a/src/generate/syncMaintainers.ts +++ b/src/sync-maintainers/main.ts @@ -1,23 +1,22 @@ #!/usr/bin/env -S deno run --allow-read --allow-net --allow-env + import * as assert from "std/assert/mod.ts"; import * as path from "std/path/mod.ts"; import { parse as parseYaml } from "std/yaml/mod.ts"; import Ajv from "ajv"; -import { Octokit } from "octokit"; +import { Octokit } from "@octokit/rest"; -import { schema } from "./deps.ts"; -import { Userstyle, UserstylesSchema } from "./types.d.ts"; +import { REPO_ROOT, schema } from "@/deps.ts"; +import { Userstyle, UserstylesSchema } from "@/types.d.ts"; const octokit = new Octokit({ auth: Deno.env.get("GITHUB_TOKEN") }); const team = { org: "catppuccin", team_slug: "userstyles-maintainers" }; -const ROOT = new URL(".", import.meta.url).pathname; - const ajv = new Ajv.default(); const validate = ajv.compile(schema); const userstylesYaml = Deno.readTextFileSync( - path.join(ROOT, "../userstyles.yml"), + path.join(REPO_ROOT, "src/userstyles.yml"), ); const userstylesData = parseYaml(userstylesYaml); if (!validate(userstylesData)) { diff --git a/src/generate/types.d.ts b/src/types.d.ts similarity index 70% rename from src/generate/types.d.ts rename to src/types.d.ts index a4b9deb1ee..4554da8ee9 100644 --- a/src/generate/types.d.ts +++ b/src/types.d.ts @@ -1,2 +1,2 @@ -export * from "../types/userstyles.d.ts"; +export * from "./types/userstyles.d.ts"; export type { Categories as PortCategories } from "catppuccin-repo/resources/generate/types.d.ts";