From b6a24f9b44602b6d0bb15493aef9032973d60acb Mon Sep 17 00:00:00 2001 From: NathanosDev Date: Wed, 6 Aug 2025 14:58:04 +0200 Subject: [PATCH 1/5] ci: update pipelines for consistency --- .github/CODEOWNERS | 2 +- .github/CONTRIBUTING.md | 14 +- .github/PULL_REQUEST_TEMPLATE.md | 13 + .github/repo_policies/BOT_APPROVED_FILES | 8 + .github/workflows/check-style.yml | 8 +- .github/workflows/commitizen.yml | 6 +- .github/workflows/generate-changelog.yml | 6 +- .github/workflows/release.yml | 5 +- deno.json | 1 - deno.lock | 776 ----------------------- 10 files changed, 45 insertions(+), 794 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/repo_policies/BOT_APPROVED_FILES diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index be7c2bd..1c48365 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ * @dfinity/sdk -# the following files are auto-approved by github actions, therefore we remove codeowners +# The following files are set by pipelines in other repositories and are auto-approved by github actions, therefore we remove codeowners. /public/core/* diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 30bd119..19f6542 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -130,10 +130,10 @@ summary of what you need to do: To add a new sub-site to the documentation, follow these steps: -1. Remove the target directory from codeowners by adding the following to the - `.github/CODEOWNERS` file: +1. Remove the target directory from codeowners by adding + `/public/$YOUR_PROJECT_NAME/*` to the `.github/CODEOWNERS` file: ```text - # the following files are auto-approved by github actions, therefore we remove codeowners + # The following files are set by pipelines in other repositories and are auto-approved by github actions, therefore we remove codeowners. /public/core/* # other entries... /public/$YOUR_PROJECT_NAME/* @@ -143,3 +143,11 @@ To add a new sub-site to the documentation, follow these steps: ```typescript const PROJECTS = ["core", "other entries...", "$YOUR_PROJECT_NAME"]; ``` +3. Add `public/$YOUR_PROJECT_NAME/*` to the + `.github/repo_policies/BOT_APPROVED_FILES` file: + ```text + # The following files are set by pipelines in other repositories. + public/core/* + # other entries... + public/$YOUR_PROJECT_NAME/* + ``` diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..5080b2b --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/.github/repo_policies/BOT_APPROVED_FILES b/.github/repo_policies/BOT_APPROVED_FILES new file mode 100644 index 0000000..b7042a6 --- /dev/null +++ b/.github/repo_policies/BOT_APPROVED_FILES @@ -0,0 +1,8 @@ +# List of approved files that can be changed by a bot via an automated PR. +# This is to increase security and prevent accidentally updating files that shouldn't be changed by a bot. + +cz.json +CHANGELOG.md + +# The following files are set by pipelines in other repositories. +public/core/* diff --git a/.github/workflows/check-style.yml b/.github/workflows/check-style.yml index 0a95c97..101b852 100644 --- a/.github/workflows/check-style.yml +++ b/.github/workflows/check-style.yml @@ -17,9 +17,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Deno - uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3 - with: - deno-version: v2.x + uses: dfinity/ci-tools/actions/setup-deno@main - name: Check Linting run: deno lint @@ -32,9 +30,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Deno - uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3 - with: - deno-version: v2.x + uses: dfinity/ci-tools/actions/setup-deno@main - name: Check Formatting run: deno fmt --check diff --git a/.github/workflows/commitizen.yml b/.github/workflows/commitizen.yml index 79edd4e..7db79ad 100644 --- a/.github/workflows/commitizen.yml +++ b/.github/workflows/commitizen.yml @@ -4,14 +4,16 @@ on: merge_group: pull_request: +concurrency: + group: pr-${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + jobs: check_pr_title: - name: check_pr_title if: github.event_name == 'pull_request' uses: dfinity/ci-tools/.github/workflows/check-pr-title.yaml@main check_commit_messages: - name: check_commit_messages if: github.event_name == 'merge_group' uses: dfinity/ci-tools/.github/workflows/check-commit-messages.yaml@main diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index ed8a17c..e33c63b 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -1,10 +1,14 @@ -name: generate_changelog +name: Generate Changelog on: push: branches: - main +concurrency: + group: main-${{ github.workflow }} + cancel-in-progress: true + jobs: generate_changelog: uses: dfinity/ci-tools/.github/workflows/generate-changelog.yaml@main diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d62545c..6994f64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,6 @@ concurrency: jobs: release: - name: Release runs-on: ubuntu-latest environment: name: production @@ -21,9 +20,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Deno - uses: denoland/setup-deno@e95548e56dfa95d4e1a28d6f422fafe75c4c26fb # v2.0.3 - with: - deno-version: v2.x + uses: dfinity/ci-tools/actions/setup-deno@main - name: Install dependencies run: deno i diff --git a/deno.json b/deno.json index 093004b..9d9dead 100644 --- a/deno.json +++ b/deno.json @@ -7,7 +7,6 @@ "@std/fs": "jsr:@std/fs@^1.0.19", "@std/path": "jsr:@std/path@^1.0.19", "@types/yauzl": "npm:@types/yauzl@^2.10.3", - "typescript": "npm:typescript@^5.9.2", "yauzl": "npm:yauzl@^3.2.0" } } diff --git a/deno.lock b/deno.lock index 48d9b7e..0567c44 100644 --- a/deno.lock +++ b/deno.lock @@ -9,9 +9,6 @@ "npm:@junobuild/config@^1.0.1": "1.0.1_@dfinity+zod-schemas@1.0.0__@dfinity+principal@2.4.1__zod@3.25.76_zod@3.25.76", "npm:@types/node@*": "22.15.15", "npm:@types/yauzl@^2.10.3": "2.10.3", - "npm:commitizen@4.3.1": "4.3.1_typescript@5.9.2_@types+node@22.15.15", - "npm:commitizen@^4.3.1": "4.3.1_typescript@5.9.2_@types+node@22.15.15", - "npm:typescript@^5.9.2": "5.9.2", "npm:yauzl@^3.2.0": "3.2.0" }, "jsr": { @@ -33,60 +30,6 @@ } }, "npm": { - "@babel/code-frame@7.27.1": { - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dependencies": [ - "@babel/helper-validator-identifier", - "js-tokens", - "picocolors" - ] - }, - "@babel/helper-validator-identifier@7.27.1": { - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" - }, - "@commitlint/config-validator@19.8.1": { - "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", - "dependencies": [ - "@commitlint/types", - "ajv" - ] - }, - "@commitlint/execute-rule@19.8.1": { - "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==" - }, - "@commitlint/load@19.8.1_typescript@5.9.2_@types+node@22.15.15_cosmiconfig@9.0.0__typescript@5.9.2": { - "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", - "dependencies": [ - "@commitlint/config-validator", - "@commitlint/execute-rule", - "@commitlint/resolve-extends", - "@commitlint/types", - "chalk@5.5.0", - "cosmiconfig", - "cosmiconfig-typescript-loader", - "lodash.isplainobject", - "lodash.merge", - "lodash.uniq" - ] - }, - "@commitlint/resolve-extends@19.8.1": { - "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", - "dependencies": [ - "@commitlint/config-validator", - "@commitlint/types", - "global-directory", - "import-meta-resolve", - "lodash.mergewith", - "resolve-from@5.0.0" - ] - }, - "@commitlint/types@19.8.1": { - "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", - "dependencies": [ - "@types/conventional-commits-parser", - "chalk@5.5.0" - ] - }, "@dfinity/principal@2.4.1": { "integrity": "sha512-Cz6XQVOwq0TXDBClPbcidDd4SqK1lfr1/Kn34ruDD13xVQ4iaP1iCntzS9O97+vGpY/6jwDtKd32Gn5YJ9BQNw==", "dependencies": [ @@ -110,12 +53,6 @@ "@noble/hashes@1.8.0": { "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==" }, - "@types/conventional-commits-parser@5.0.1": { - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", - "dependencies": [ - "@types/node" - ] - }, "@types/node@22.15.15": { "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", "dependencies": [ @@ -128,726 +65,15 @@ "@types/node" ] }, - "ajv@8.17.1": { - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dependencies": [ - "fast-deep-equal", - "fast-uri", - "json-schema-traverse", - "require-from-string" - ] - }, - "ansi-escapes@4.3.2": { - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": [ - "type-fest" - ] - }, - "ansi-regex@5.0.1": { - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles@3.2.1": { - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": [ - "color-convert@1.9.3" - ] - }, - "ansi-styles@4.3.0": { - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": [ - "color-convert@2.0.1" - ] - }, - "argparse@2.0.1": { - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "at-least-node@1.0.0": { - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "balanced-match@1.0.2": { - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js@1.5.1": { - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bl@4.1.0": { - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": [ - "buffer", - "inherits", - "readable-stream" - ] - }, - "brace-expansion@1.1.12": { - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dependencies": [ - "balanced-match", - "concat-map" - ] - }, - "braces@3.0.3": { - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": [ - "fill-range" - ] - }, "buffer-crc32@0.2.13": { "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" }, - "buffer@5.7.1": { - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dependencies": [ - "base64-js", - "ieee754" - ] - }, - "cachedir@2.3.0": { - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==" - }, - "callsites@3.1.0": { - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "chalk@2.4.2": { - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": [ - "ansi-styles@3.2.1", - "escape-string-regexp", - "supports-color@5.5.0" - ] - }, - "chalk@4.1.2": { - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": [ - "ansi-styles@4.3.0", - "supports-color@7.2.0" - ] - }, - "chalk@5.5.0": { - "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==" - }, - "chardet@0.7.0": { - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cli-cursor@3.1.0": { - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": [ - "restore-cursor" - ] - }, - "cli-spinners@2.9.2": { - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" - }, - "cli-width@3.0.0": { - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "clone@1.0.4": { - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, - "color-convert@1.9.3": { - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": [ - "color-name@1.1.3" - ] - }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": [ - "color-name@1.1.4" - ] - }, - "color-name@1.1.3": { - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commitizen@4.3.1_typescript@5.9.2_@types+node@22.15.15": { - "integrity": "sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==", - "dependencies": [ - "cachedir", - "cz-conventional-changelog", - "dedent", - "detect-indent", - "find-node-modules", - "find-root", - "fs-extra", - "glob", - "inquirer", - "is-utf8", - "lodash", - "minimist", - "strip-bom", - "strip-json-comments" - ], - "bin": true - }, - "concat-map@0.0.1": { - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "conventional-commit-types@3.0.0": { - "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==" - }, - "cosmiconfig-typescript-loader@6.1.0_@types+node@22.15.15_cosmiconfig@9.0.0__typescript@5.9.2_typescript@5.9.2": { - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", - "dependencies": [ - "@types/node", - "cosmiconfig", - "jiti", - "typescript" - ] - }, - "cosmiconfig@9.0.0_typescript@5.9.2": { - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dependencies": [ - "env-paths", - "import-fresh", - "js-yaml", - "parse-json", - "typescript" - ], - "optionalPeers": [ - "typescript" - ] - }, - "cz-conventional-changelog@3.3.0_typescript@5.9.2_@types+node@22.15.15": { - "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", - "dependencies": [ - "chalk@2.4.2", - "commitizen", - "conventional-commit-types", - "lodash.map", - "longest", - "word-wrap" - ], - "optionalDependencies": [ - "@commitlint/load" - ] - }, - "dedent@0.7.0": { - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - }, - "defaults@1.0.4": { - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": [ - "clone" - ] - }, - "detect-file@1.0.0": { - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" - }, - "detect-indent@6.1.0": { - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" - }, - "emoji-regex@8.0.0": { - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "env-paths@2.2.1": { - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - }, - "error-ex@1.3.2": { - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": [ - "is-arrayish" - ] - }, - "escape-string-regexp@1.0.5": { - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "expand-tilde@2.0.2": { - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dependencies": [ - "homedir-polyfill" - ] - }, - "external-editor@3.1.0": { - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": [ - "chardet", - "iconv-lite", - "tmp" - ] - }, - "fast-deep-equal@3.1.3": { - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-uri@3.0.6": { - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==" - }, - "figures@3.2.0": { - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": [ - "escape-string-regexp" - ] - }, - "fill-range@7.1.1": { - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": [ - "to-regex-range" - ] - }, - "find-node-modules@2.1.3": { - "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", - "dependencies": [ - "findup-sync", - "merge" - ] - }, - "find-root@1.1.0": { - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "findup-sync@4.0.0": { - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "dependencies": [ - "detect-file", - "is-glob", - "micromatch", - "resolve-dir" - ] - }, - "fs-extra@9.1.0": { - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": [ - "at-least-node", - "graceful-fs", - "jsonfile", - "universalify" - ] - }, - "fs.realpath@1.0.0": { - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "glob@7.2.3": { - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": [ - "fs.realpath", - "inflight", - "inherits", - "minimatch", - "once", - "path-is-absolute" - ], - "deprecated": true - }, - "global-directory@4.0.1": { - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dependencies": [ - "ini@4.1.1" - ] - }, - "global-modules@1.0.0": { - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": [ - "global-prefix", - "is-windows", - "resolve-dir" - ] - }, - "global-prefix@1.0.2": { - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dependencies": [ - "expand-tilde", - "homedir-polyfill", - "ini@1.3.8", - "is-windows", - "which" - ] - }, - "graceful-fs@4.2.11": { - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "has-flag@3.0.0": { - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-flag@4.0.0": { - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "homedir-polyfill@1.0.3": { - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": [ - "parse-passwd" - ] - }, - "iconv-lite@0.4.24": { - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": [ - "safer-buffer" - ] - }, - "ieee754@1.2.1": { - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "import-fresh@3.3.1": { - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dependencies": [ - "parent-module", - "resolve-from@4.0.0" - ] - }, - "import-meta-resolve@4.1.0": { - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==" - }, - "inflight@1.0.6": { - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": [ - "once", - "wrappy" - ], - "deprecated": true - }, - "inherits@2.0.4": { - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini@1.3.8": { - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "ini@4.1.1": { - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==" - }, - "inquirer@8.2.5": { - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", - "dependencies": [ - "ansi-escapes", - "chalk@4.1.2", - "cli-cursor", - "cli-width", - "external-editor", - "figures", - "lodash", - "mute-stream", - "ora", - "run-async", - "rxjs", - "string-width", - "strip-ansi", - "through", - "wrap-ansi" - ] - }, - "is-arrayish@0.2.1": { - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-extglob@2.1.1": { - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point@3.0.0": { - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob@4.0.3": { - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": [ - "is-extglob" - ] - }, - "is-interactive@1.0.0": { - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-number@7.0.0": { - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-unicode-supported@0.1.0": { - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-utf8@0.2.1": { - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "is-windows@1.0.2": { - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isexe@2.0.0": { - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "jiti@2.5.1": { - "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", - "bin": true - }, - "js-tokens@4.0.0": { - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml@4.1.0": { - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": [ - "argparse" - ], - "bin": true - }, - "json-parse-even-better-errors@2.3.1": { - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse@1.0.0": { - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "jsonfile@6.1.0": { - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": [ - "universalify" - ], - "optionalDependencies": [ - "graceful-fs" - ] - }, - "lines-and-columns@1.2.4": { - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "lodash.isplainobject@4.0.6": { - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.map@4.6.0": { - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" - }, - "lodash.merge@4.6.2": { - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.mergewith@4.6.2": { - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" - }, - "lodash.uniq@4.5.0": { - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "lodash@4.17.21": { - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "log-symbols@4.1.0": { - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": [ - "chalk@4.1.2", - "is-unicode-supported" - ] - }, - "longest@2.0.1": { - "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==" - }, - "merge@2.1.1": { - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==" - }, - "micromatch@4.0.8": { - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dependencies": [ - "braces", - "picomatch" - ] - }, - "mimic-fn@2.1.0": { - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "minimatch@3.1.2": { - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": [ - "brace-expansion" - ] - }, - "minimist@1.2.7": { - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "mute-stream@0.0.8": { - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "once@1.4.0": { - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": [ - "wrappy" - ] - }, - "onetime@5.1.2": { - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": [ - "mimic-fn" - ] - }, - "ora@5.4.1": { - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": [ - "bl", - "chalk@4.1.2", - "cli-cursor", - "cli-spinners", - "is-interactive", - "is-unicode-supported", - "log-symbols", - "strip-ansi", - "wcwidth" - ] - }, - "os-tmpdir@1.0.2": { - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "parent-module@1.0.1": { - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": [ - "callsites" - ] - }, - "parse-json@5.2.0": { - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": [ - "@babel/code-frame", - "error-ex", - "json-parse-even-better-errors", - "lines-and-columns" - ] - }, - "parse-passwd@1.0.0": { - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" - }, - "path-is-absolute@1.0.1": { - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, "pend@1.2.0": { "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, - "picocolors@1.1.1": { - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "picomatch@2.3.1": { - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "readable-stream@3.6.2": { - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": [ - "inherits", - "string_decoder", - "util-deprecate" - ] - }, - "require-from-string@2.0.2": { - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "resolve-dir@1.0.1": { - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dependencies": [ - "expand-tilde", - "global-modules" - ] - }, - "resolve-from@4.0.0": { - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve-from@5.0.0": { - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - }, - "restore-cursor@3.1.0": { - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": [ - "onetime", - "signal-exit" - ] - }, - "run-async@2.4.1": { - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "rxjs@7.8.2": { - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dependencies": [ - "tslib" - ] - }, - "safe-buffer@5.2.1": { - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer@2.1.2": { - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "signal-exit@3.0.7": { - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "string-width@4.2.3": { - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": [ - "emoji-regex", - "is-fullwidth-code-point", - "strip-ansi" - ] - }, - "string_decoder@1.3.0": { - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": [ - "safe-buffer" - ] - }, - "strip-ansi@6.0.1": { - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": [ - "ansi-regex" - ] - }, - "strip-bom@4.0.0": { - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - }, - "strip-json-comments@3.1.1": { - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color@5.5.0": { - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": [ - "has-flag@3.0.0" - ] - }, - "supports-color@7.2.0": { - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": [ - "has-flag@4.0.0" - ] - }, - "through@2.3.8": { - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "tmp@0.0.33": { - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": [ - "os-tmpdir" - ] - }, - "to-regex-range@5.0.1": { - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": [ - "is-number" - ] - }, - "tslib@2.8.1": { - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "type-fest@0.21.3": { - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - }, - "typescript@5.9.2": { - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "bin": true - }, "undici-types@6.21.0": { "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, - "universalify@2.0.1": { - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" - }, - "util-deprecate@1.0.2": { - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "wcwidth@1.0.1": { - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": [ - "defaults" - ] - }, - "which@1.3.1": { - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": [ - "isexe" - ], - "bin": true - }, - "word-wrap@1.2.5": { - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" - }, - "wrap-ansi@7.0.0": { - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": [ - "ansi-styles@4.3.0", - "string-width", - "strip-ansi" - ] - }, - "wrappy@1.0.2": { - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, "yauzl@3.2.0": { "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", "dependencies": [ @@ -865,8 +91,6 @@ "jsr:@std/path@^1.0.19", "npm:@junobuild/config@^1.0.1", "npm:@types/yauzl@^2.10.3", - "npm:commitizen@^4.3.1", - "npm:typescript@^5.9.2", "npm:yauzl@^3.2.0" ] } From f20b52b47b26fb0c4f0565f6b3c8964d6cedcf77 Mon Sep 17 00:00:00 2001 From: NathanosDev Date: Wed, 6 Aug 2025 20:15:54 +0200 Subject: [PATCH 2/5] add projects.json --- .github/CODEOWNERS | 4 +-- .github/CONTRIBUTING.md | 42 +++++++++--------------- .github/repo_policies/BOT_APPROVED_FILES | 3 +- .github/workflows/pull-project-docs.yml | 1 + projects.json | 6 ++++ scripts/predeploy.ts | 20 ++++++++--- 6 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/pull-project-docs.yml create mode 100644 projects.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1c48365..ff189a3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ * @dfinity/sdk -# The following files are set by pipelines in other repositories and are auto-approved by github actions, therefore we remove codeowners. -/public/core/* +# The following files are set and auto-approved by github actions, therefore we remove codeowners. +/public/* diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 19f6542..c7f8c07 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -86,9 +86,6 @@ summary of what you need to do: ### Install dependencies 1. Install [Deno](https://docs.deno.com/runtime/#quick-install). - ```bash - curl -fsSL "https://deno.land/install.sh" | sh - ``` 2. Install Deno dependencies: ```bash deno i @@ -128,26 +125,19 @@ summary of what you need to do: ## Adding a new sub-site -To add a new sub-site to the documentation, follow these steps: - -1. Remove the target directory from codeowners by adding - `/public/$YOUR_PROJECT_NAME/*` to the `.github/CODEOWNERS` file: - ```text - # The following files are set by pipelines in other repositories and are auto-approved by github actions, therefore we remove codeowners. - /public/core/* - # other entries... - /public/$YOUR_PROJECT_NAME/* - ``` -2. Add `$YOUR_PROJECT_NAME` to the list of projects in the - `scripts/predeploy.ts` file: - ```typescript - const PROJECTS = ["core", "other entries...", "$YOUR_PROJECT_NAME"]; - ``` -3. Add `public/$YOUR_PROJECT_NAME/*` to the - `.github/repo_policies/BOT_APPROVED_FILES` file: - ```text - # The following files are set by pipelines in other repositories. - public/core/* - # other entries... - public/$YOUR_PROJECT_NAME/* - ``` +To add a new sub-site to the documentation, add `$YOUR_PROJECT_NAME` to the list +of projects in the `projects.json` file: + +```json +[ + { + "repository": "dfinity/core", + "subdirectory": "core" + }, + // other entries... + { + "repository": "$YOUR_GITHUB_ORGANIZATION/$YOUR_PROJECT_NAME", + "subdirectory": "$YOUR_PROJECT_NAME" + } +] +``` diff --git a/.github/repo_policies/BOT_APPROVED_FILES b/.github/repo_policies/BOT_APPROVED_FILES index b7042a6..4a0367e 100644 --- a/.github/repo_policies/BOT_APPROVED_FILES +++ b/.github/repo_policies/BOT_APPROVED_FILES @@ -4,5 +4,4 @@ cz.json CHANGELOG.md -# The following files are set by pipelines in other repositories. -public/core/* +public/* diff --git a/.github/workflows/pull-project-docs.yml b/.github/workflows/pull-project-docs.yml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.github/workflows/pull-project-docs.yml @@ -0,0 +1 @@ + diff --git a/projects.json b/projects.json new file mode 100644 index 0000000..47f697c --- /dev/null +++ b/projects.json @@ -0,0 +1,6 @@ +[ + { + "repository": "dfinity/core", + "subdirectory": "core" + } +] diff --git a/scripts/predeploy.ts b/scripts/predeploy.ts index 824194b..b6a95f1 100644 --- a/scripts/predeploy.ts +++ b/scripts/predeploy.ts @@ -3,18 +3,28 @@ import * as fs from "@std/fs"; import { syncFile } from "./utils/fs.ts"; import { unzip } from "./utils/unzip.ts"; -const PROJECTS = ["core"]; - const SCRIPT_DIR = path.dirname(path.fromFileUrl(import.meta.url)); const ROOT_DIR = path.join(SCRIPT_DIR, ".."); const SRC_DIR = path.join(ROOT_DIR, "public"); const DIST_DIR = path.join(ROOT_DIR, "dist"); +const PROJECTS_FILE = path.join(ROOT_DIR, "projects.json"); + +interface Project { + repository: string; + subdirectory: string; +} + async function syncProjects(): Promise { + const projectsData = await Deno.readFile(PROJECTS_FILE); + const projects: Project[] = JSON.parse( + new TextDecoder().decode(projectsData), + ); + await Promise.all( - PROJECTS.map(async (project) => { - const projectDir = path.join(SRC_DIR, project); - const projectDistDir = path.join(DIST_DIR, project); + projects.map(async (project) => { + const projectDir = path.join(SRC_DIR, project.subdirectory); + const projectDistDir = path.join(DIST_DIR, project.subdirectory); for await ( const entry of fs.walk(projectDir, { From 18322dd4f581fb3cad55edfbed885ddef64751de Mon Sep 17 00:00:00 2001 From: NathanosDev Date: Wed, 6 Aug 2025 21:14:22 +0200 Subject: [PATCH 3/5] pr review feedback --- .github/CODEOWNERS | 2 +- .github/CONTRIBUTING.md | 4 ++-- projects-schema.json | 33 +++++++++++++++++++++++++++++++++ projects.json | 15 +++++++++------ scripts/predeploy.ts | 8 ++++++-- 5 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 projects-schema.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ff189a3..b2ffee0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ * @dfinity/sdk -# The following files are set and auto-approved by github actions, therefore we remove codeowners. +# The following files are maintained by GitHub actions, therefore we remove codeowners. /public/* diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c7f8c07..bdb90dd 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -126,12 +126,12 @@ summary of what you need to do: ## Adding a new sub-site To add a new sub-site to the documentation, add `$YOUR_PROJECT_NAME` to the list -of projects in the `projects.json` file: +of projects in the [`projects.json`](../projects.json) file: ```json [ { - "repository": "dfinity/core", + "repository": "dfinity/agent-js", "subdirectory": "core" }, // other entries... diff --git a/projects-schema.json b/projects-schema.json new file mode 100644 index 0000000..9a72ff7 --- /dev/null +++ b/projects-schema.json @@ -0,0 +1,33 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "$ref": "#/definitions/Project" + } + } + }, + "required": ["projects"], + "definitions": { + "Project": { + "type": "object", + "additionalProperties": false, + "properties": { + "repository": { + "type": "string" + }, + "subdirectory": { + "type": "string" + } + }, + "required": ["repository", "subdirectory"], + "title": "Project" + } + } +} diff --git a/projects.json b/projects.json index 47f697c..52e8407 100644 --- a/projects.json +++ b/projects.json @@ -1,6 +1,9 @@ -[ - { - "repository": "dfinity/core", - "subdirectory": "core" - } -] +{ + "$schema": "./projects-schema.json", + "projects": [ + { + "repository": "dfinity/agent-js", + "subdirectory": "core" + } + ] +} diff --git a/scripts/predeploy.ts b/scripts/predeploy.ts index b6a95f1..33b9bf9 100644 --- a/scripts/predeploy.ts +++ b/scripts/predeploy.ts @@ -10,6 +10,10 @@ const DIST_DIR = path.join(ROOT_DIR, "dist"); const PROJECTS_FILE = path.join(ROOT_DIR, "projects.json"); +interface ProjectsConfig { + projects: Project[]; +} + interface Project { repository: string; subdirectory: string; @@ -17,12 +21,12 @@ interface Project { async function syncProjects(): Promise { const projectsData = await Deno.readFile(PROJECTS_FILE); - const projects: Project[] = JSON.parse( + const projectsConfig: ProjectsConfig = JSON.parse( new TextDecoder().decode(projectsData), ); await Promise.all( - projects.map(async (project) => { + projectsConfig.projects.map(async (project) => { const projectDir = path.join(SRC_DIR, project.subdirectory); const projectDistDir = path.join(DIST_DIR, project.subdirectory); From 12a4260b91497713385c2606eca6e2b85f38038b Mon Sep 17 00:00:00 2001 From: ilbertt Date: Thu, 7 Aug 2025 16:42:19 +0200 Subject: [PATCH 4/5] chore: update projects json schema --- projects-schema.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects-schema.json b/projects-schema.json index 9a72ff7..997fdde 100644 --- a/projects-schema.json +++ b/projects-schema.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft-07/schema", "type": "object", "additionalProperties": false, "properties": { @@ -20,10 +20,14 @@ "additionalProperties": false, "properties": { "repository": { - "type": "string" + "type": "string", + "description": "The repository from which to pull the static assets", + "examples": ["dfinity/icp-sdk-js-core"] }, "subdirectory": { - "type": "string" + "type": "string", + "description": "The public/... subdirectory where to save the static assets pulled from the repository", + "examples": ["core"] } }, "required": ["repository", "subdirectory"], From 64059f71581f4f1bbe55b82abead557cafbb0157 Mon Sep 17 00:00:00 2001 From: ilbertt Date: Thu, 7 Aug 2025 16:43:08 +0200 Subject: [PATCH 5/5] chore: update vscode settings --- .vscode/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 88940e1..088244e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "deno.codeLens.testArgs": ["--allow-all"], "[github-actions-workflow]": { "editor.defaultFormatter": "denoland.vscode-deno" - } + }, + "json.schemaDownload.enable": true }