From cc6c1fc430617bb02bd4830155ad2ee38c659969 Mon Sep 17 00:00:00 2001 From: Jochen Zehnder Date: Fri, 10 May 2024 00:21:03 +0200 Subject: [PATCH] docs: Contributor Guide on the Website (#4514) Signed-off-by: Rui Chen Co-authored-by: Rui Chen --- .gitignore | 3 + package.json | 6 +- pnpm-lock.yaml | 971 ++++++++++-------- runatlantis.io/.vuepress/navbar.js | 1 + runatlantis.io/.vuepress/sidebar.js | 11 +- runatlantis.io/contributing/README.md | 14 + .../contributing/events-controller.md | 71 ++ runatlantis.io/contributing/glossary.md | 26 + .../contributing/images/events-controller.png | Bin 0 -> 62838 bytes 9 files changed, 645 insertions(+), 458 deletions(-) create mode 100644 runatlantis.io/contributing/README.md create mode 100644 runatlantis.io/contributing/events-controller.md create mode 100644 runatlantis.io/contributing/glossary.md create mode 100644 runatlantis.io/contributing/images/events-controller.png diff --git a/.gitignore b/.gitignore index 3306e4c23b..4819c06037 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,9 @@ tmp-CHANGELOG.md # IDE files *.code-workspace +# draw.io backup files +*.bkp + # vuepress **/.vuepress/* !runatlantis.io/.vuepress/config.* diff --git a/package.json b/package.json index e592319d4e..96d32f113b 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,12 @@ "@vuepress/plugin-sitemap": "2.0.0-rc.21", "@vuepress/theme-default": "2.0.0-rc.21", "@vuepress/utils": "2.0.0-rc.9", - "sass-loader": "14.1.1", - "vue": "3.4.21", + "sass-loader": "14.2.1", + "vue": "3.4.27", "vuepress": "2.0.0-rc.9" }, "scripts": { - "website:dev": "vuepress dev runatlantis.io", + "website:dev": "vuepress dev --host localhost runatlantis.io", "website:build": "NODE_OPTIONS=--openssl-legacy-provider vuepress build runatlantis.io", "e2e": "playwright test" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b731943df..f10002e549 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ devDependencies: version: 2.0.0-rc.9 '@vuepress/plugin-docsearch': specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(@algolia/client-search@4.23.0)(search-insights@2.13.0)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.21(@algolia/client-search@4.23.3)(search-insights@2.13.0)(vuepress@2.0.0-rc.9) '@vuepress/plugin-google-analytics': specifier: 2.0.0-rc.21 version: 2.0.0-rc.21(vuepress@2.0.0-rc.9) @@ -22,177 +22,177 @@ devDependencies: version: 2.0.0-rc.21(vuepress@2.0.0-rc.9) '@vuepress/theme-default': specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(sass-loader@14.1.1)(vuepress@2.0.0-rc.9) + version: 2.0.0-rc.21(sass-loader@14.2.1)(vuepress@2.0.0-rc.9) '@vuepress/utils': specifier: 2.0.0-rc.9 version: 2.0.0-rc.9 sass-loader: - specifier: 14.1.1 - version: 14.1.1(webpack@5.91.0) + specifier: 14.2.1 + version: 14.2.1(webpack@5.91.0) vue: - specifier: 3.4.21 - version: 3.4.21 + specifier: 3.4.27 + version: 3.4.27 vuepress: specifier: 2.0.0-rc.9 - version: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + version: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) packages: - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0)(search-insights@2.13.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: true - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0)(search-insights@2.13.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: true - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0) - '@algolia/client-search': 4.23.0 - algoliasearch: 4.23.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@algolia/client-search': 4.23.3 + algoliasearch: 4.23.3 dev: true - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.23.0 - algoliasearch: 4.23.0 + '@algolia/client-search': 4.23.3 + algoliasearch: 4.23.3 dev: true - /@algolia/cache-browser-local-storage@4.23.0: - resolution: {integrity: sha512-AExxSo/WprsEPny/0whc4Ap2qP2z9C8J8ez7x54tX6s5MV0Rrty0UKDR2pdzS9ou5YvdWqCwNw3c2wkpyOv8/g==} + /@algolia/cache-browser-local-storage@4.23.3: + resolution: {integrity: sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==} dependencies: - '@algolia/cache-common': 4.23.0 + '@algolia/cache-common': 4.23.3 dev: true - /@algolia/cache-common@4.23.0: - resolution: {integrity: sha512-jz/kZm8Vyp//aympt7OMMVTHw4YD6TskyOxJhtBInqS//CaNA07GiJwL7WFOM422fz9WokbeGaTAFNtLkZP0BQ==} + /@algolia/cache-common@4.23.3: + resolution: {integrity: sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==} dev: true - /@algolia/cache-in-memory@4.23.0: - resolution: {integrity: sha512-OujHfXoI4WvH7FswJiNtBkWpqgvxiEHzRYUPunYdim8s4BH461OIv7cDadlnNdAJn9wVsgzN8Ouf4mkuNrnwuA==} + /@algolia/cache-in-memory@4.23.3: + resolution: {integrity: sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==} dependencies: - '@algolia/cache-common': 4.23.0 + '@algolia/cache-common': 4.23.3 dev: true - /@algolia/client-account@4.23.0: - resolution: {integrity: sha512-p6IYkjKylUGsiZP1Y6hmjVvTnwKtpTyQScSbjVCGEfDC6858N+ieZrg60ZDGSOl40pGG4VHgCTyiDW1uESsN1A==} + /@algolia/client-account@4.23.3: + resolution: {integrity: sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==} dependencies: - '@algolia/client-common': 4.23.0 - '@algolia/client-search': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/client-common': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/client-analytics@4.23.0: - resolution: {integrity: sha512-xt3KaPdJ1vZzB3RCW8iaIE2DE5ijfxYkvjuidcriw4Ac8fTKyLYazxBk6d1ciH4Ye/M3bG1xhmZayBI/FL9P2g==} + /@algolia/client-analytics@4.23.3: + resolution: {integrity: sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==} dependencies: - '@algolia/client-common': 4.23.0 - '@algolia/client-search': 4.23.0 - '@algolia/requester-common': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/client-common': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/requester-common': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/client-common@4.23.0: - resolution: {integrity: sha512-S+vOOJJzpPHhn5rANDVPf7HEnLNqYf4THU+0oc7zXyR3Wa+2kBzKvn7L0kfEQzvlk7vrhArma1nVOb+zYGpCXA==} + /@algolia/client-common@4.23.3: + resolution: {integrity: sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==} dependencies: - '@algolia/requester-common': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/requester-common': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/client-personalization@4.23.0: - resolution: {integrity: sha512-J8VGz8irIFl1JXJpI3MqBfChy+whMdB7fjjJ+MM4ieGy2XBer2rDsjdS+mQPtE0ASeqF6e/jil02TKZtGrdcKw==} + /@algolia/client-personalization@4.23.3: + resolution: {integrity: sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==} dependencies: - '@algolia/client-common': 4.23.0 - '@algolia/requester-common': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/client-common': 4.23.3 + '@algolia/requester-common': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/client-search@4.23.0: - resolution: {integrity: sha512-O/ZXOJjQrGV/84fM8C6U0wH5h21iqFC2fMsNX3KmBvoZxFidXoLtng1WasNpYXXi4U9twgGeqJD3HsV/48o08Q==} + /@algolia/client-search@4.23.3: + resolution: {integrity: sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==} dependencies: - '@algolia/client-common': 4.23.0 - '@algolia/requester-common': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/client-common': 4.23.3 + '@algolia/requester-common': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/logger-common@4.23.0: - resolution: {integrity: sha512-SY2GkL99QLfBDUTtgyd9ZOWB/Mz5Yr01q0WewTtlIm5hy02CZN34utIreC1A41/eswLOvJAadQsRZv1qeoMxrw==} + /@algolia/logger-common@4.23.3: + resolution: {integrity: sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==} dev: true - /@algolia/logger-console@4.23.0: - resolution: {integrity: sha512-I0eXOsUiJkjHGjbE3RojH/KCkKfP2ATVrglK1GbYc84oGZ6C3lyrv4hG5o5nahmMSIow7NHYyBBDlzkv7DVVXQ==} + /@algolia/logger-console@4.23.3: + resolution: {integrity: sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==} dependencies: - '@algolia/logger-common': 4.23.0 + '@algolia/logger-common': 4.23.3 dev: true - /@algolia/recommend@4.23.0: - resolution: {integrity: sha512-pnnntx5hUBVLPBXeV4yKEZ4SCNoFbklnjWc2TnUSP5GzyYuqa2n2pF9TBg+/Z9HkspkQdQm8UY142YXIaG2fcA==} + /@algolia/recommend@4.23.3: + resolution: {integrity: sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==} dependencies: - '@algolia/cache-browser-local-storage': 4.23.0 - '@algolia/cache-common': 4.23.0 - '@algolia/cache-in-memory': 4.23.0 - '@algolia/client-common': 4.23.0 - '@algolia/client-search': 4.23.0 - '@algolia/logger-common': 4.23.0 - '@algolia/logger-console': 4.23.0 - '@algolia/requester-browser-xhr': 4.23.0 - '@algolia/requester-common': 4.23.0 - '@algolia/requester-node-http': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/cache-browser-local-storage': 4.23.3 + '@algolia/cache-common': 4.23.3 + '@algolia/cache-in-memory': 4.23.3 + '@algolia/client-common': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/logger-common': 4.23.3 + '@algolia/logger-console': 4.23.3 + '@algolia/requester-browser-xhr': 4.23.3 + '@algolia/requester-common': 4.23.3 + '@algolia/requester-node-http': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true - /@algolia/requester-browser-xhr@4.23.0: - resolution: {integrity: sha512-ZxJ6opz4rey1oFLgp+8cBkxIW9uiQ+zSuf9ahqj1JFOPVXBvgcNvXuvHtE+adv7thinE9m3tzp6KD00skt7GQg==} + /@algolia/requester-browser-xhr@4.23.3: + resolution: {integrity: sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==} dependencies: - '@algolia/requester-common': 4.23.0 + '@algolia/requester-common': 4.23.3 dev: true - /@algolia/requester-common@4.23.0: - resolution: {integrity: sha512-Ol+vffP7WdMhlHreLmIgilb0pfcu+x9Ylx2iR/o7u2MtVdMrHpsgIjpy7YSCRFTS/zrGc488Y1Y9PsrAi1LB2A==} + /@algolia/requester-common@4.23.3: + resolution: {integrity: sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==} dev: true - /@algolia/requester-node-http@4.23.0: - resolution: {integrity: sha512-Ae+Gj/LdhbKSRbmsR4w79RrojTikM4iHIdVuyxL1hkG9bZh5YU8grIlL7OPg43+SpaJE6RYa621tEJwV2cKVTA==} + /@algolia/requester-node-http@4.23.3: + resolution: {integrity: sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==} dependencies: - '@algolia/requester-common': 4.23.0 + '@algolia/requester-common': 4.23.3 dev: true - /@algolia/transporter@4.23.0: - resolution: {integrity: sha512-zUOhT9LFSRZHpdbRa59yPglzHhPkO7eVdlU8kcMWZYgZ8lUcofU8jiGNH8FARzkxJSt6ZG4/MqSHKJEK3PYbPA==} + /@algolia/transporter@4.23.3: + resolution: {integrity: sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==} dependencies: - '@algolia/cache-common': 4.23.0 - '@algolia/logger-common': 4.23.0 - '@algolia/requester-common': 4.23.0 + '@algolia/cache-common': 4.23.3 + '@algolia/logger-common': 4.23.3 + '@algolia/requester-common': 4.23.3 dev: true /@babel/code-frame@7.24.2: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.2 + '@babel/highlight': 7.24.5 picocolors: 1.0.0 dev: true @@ -201,35 +201,35 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + /@babel/highlight@7.24.5: + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 dev: true - /@babel/parser@7.24.1: - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 dev: true - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 dev: true @@ -237,11 +237,11 @@ packages: resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} dev: true - /@docsearch/js@3.6.0(@algolia/client-search@4.23.0)(search-insights@2.13.0): + /@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0): resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==} dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.0)(search-insights@2.13.0) - preact: 10.20.1 + '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) + preact: 10.21.0 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -250,7 +250,7 @@ packages: - search-insights dev: true - /@docsearch/react@3.6.0(@algolia/client-search@4.23.0)(search-insights@2.13.0): + /@docsearch/react@3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0): resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -267,10 +267,10 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.0)(algoliasearch@4.23.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) '@docsearch/css': 3.6.0 - algoliasearch: 4.23.0 + algoliasearch: 4.23.3 search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' @@ -532,71 +532,102 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@leichtgewicht/ip-codec@2.0.4: - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + /@jsonjoy.com/base64@1.1.2(tslib@2.6.2): + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.6.2 + dev: true + + /@jsonjoy.com/json-pack@1.0.4(tslib@2.6.2): + resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) + '@jsonjoy.com/util': 1.1.3(tslib@2.6.2) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.6.2) + tslib: 2.6.2 + dev: true + + /@jsonjoy.com/util@1.1.3(tslib@2.6.2): + resolution: {integrity: sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.6.2 dev: true - /@mdit-vue/plugin-component@2.0.0: - resolution: {integrity: sha512-cTRxlocav/+mfgDcp0P2z/gWuWBez+iNuN4D+b74LpX4AR6UAx2ZvWtCrUZ8VXrO4eCt1/G0YC/Af7mpIb3aoQ==} + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: true + + /@mdit-vue/plugin-component@2.1.2: + resolution: {integrity: sha512-n1HcAC82l912HhtiMSxl5pQLKBYbPok/IcdGRD49rTt53NXBqct68qo58+7jvsj+f8Lmo7kjD+em3tP4BSgl0A==} dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/plugin-frontmatter@2.0.0: - resolution: {integrity: sha512-/LrT6E60QI4XV4mqx3J87hqYXlR7ZyMvndmftR2RGz7cRAwa/xL+kyFLlgrMxkBIKitOShKa3LS/9Ov9b0fU+g==} + /@mdit-vue/plugin-frontmatter@2.1.2: + resolution: {integrity: sha512-2YOVOsMRtf11bZ6mEB4xoWD6RG5X0Ex+g/1c1iXoYUMUahlZnz9flXUM6WAE++HsLR3Wkvd5FNhGUArrcxn0dA==} dependencies: - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 gray-matter: 4.0.3 markdown-it: 14.1.0 dev: true - /@mdit-vue/plugin-headers@2.0.0: - resolution: {integrity: sha512-ITMMPCnLEYHHgj3XEUL2l75jsNn8guxNqr26YrMSi1f5zcgq4XVy1LIvfwvJ1puqM6Cc5v4BHk3oAyorAi7l1A==} + /@mdit-vue/plugin-headers@2.1.2: + resolution: {integrity: sha512-YkBTlHeG4seTcXqrVPvPY6utvkHd2qs7QGU5aM3S5CxUH5l0/SzIRv+irhFMfIRsXQ7zwx2vJVSwJz+n2TFhSA==} dependencies: - '@mdit-vue/shared': 2.0.0 - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/shared': 2.1.2 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/plugin-sfc@2.0.0: - resolution: {integrity: sha512-OXrMXOyk0iwdIou2jRoIHIbjskwghkO14C9/OjgVHXSSX+iM/WQ4l4yi1aWmNlbQNjtP8IXcVAyJB9K0DFYmLg==} + /@mdit-vue/plugin-sfc@2.1.2: + resolution: {integrity: sha512-wjbFvkUcCcfxc1x33SwqbWSM3WYPJOdlmX9IJQd9y6C7ALujy6Orx1gWn5j0hfke1kIuohvjeJ/K0LqF4oYO4g==} dependencies: - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/plugin-title@2.0.0: - resolution: {integrity: sha512-eqBoETPVkMXNLvwFshz/A2+Cz81VB5HEkXDm0tt6RBW/rTvnoWmGJ1Z+mvcjR5ck5W4nYdIyT68oHxX2JI2M4g==} + /@mdit-vue/plugin-title@2.1.2: + resolution: {integrity: sha512-BXgrpuRp6aI/CV/V3jH3zailG9rZH8f094RSky7PE2wTx3c2hnavz3SB3y3TVDv5UC7BGk/uPfBjdYh8/ejsSg==} dependencies: - '@mdit-vue/shared': 2.0.0 - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/shared': 2.1.2 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/plugin-toc@2.0.0: - resolution: {integrity: sha512-PKQ8sZna3D5chTnt2lxL+ddpyXd++6Nyc0l8VXCeDgStlySQwiP9jaLeeC88oqY4BtRu4cAmILmxDrvuX0Rrdg==} + /@mdit-vue/plugin-toc@2.1.2: + resolution: {integrity: sha512-G3t9NjhTvl5cYZ9VSsMzVkYjdUrC9nOZE+oxIzpUTtHRH8NtRvoynUDzEDzRnoRDe29cdWDKTAYaeiHUF+TAvQ==} dependencies: - '@mdit-vue/shared': 2.0.0 - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/shared': 2.1.2 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/shared@2.0.0: - resolution: {integrity: sha512-PdxpQpbyTazeo2JT87qms6RPZIzyJd+gwuB+1jSwLDI7+0u5g79y2XgTAbZromSVgY2f3UU5HWdwaLbV9w4uOw==} + /@mdit-vue/shared@2.1.2: + resolution: {integrity: sha512-5+YHKRyULDqMZsYq+8Ttev0P/osgAoNm2OPYrJtvxLfc1jyrZNiDUCjO2jec7Nk3qyGVZe6FKtXTNLVE+ZRhZw==} dependencies: - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true - /@mdit-vue/types@2.0.0: - resolution: {integrity: sha512-1BeEB+DbtmDMUAfvbNUj5Hso8cSl2sBVK2iTyOMAqhfDVLdh+/9+D0JmQHaCeUk/vuJoMhOwbweZvh55wHxm4w==} + /@mdit-vue/types@2.1.0: + resolution: {integrity: sha512-TMBB/BQWVvwtpBdWD75rkZx4ZphQ6MN0O4QB2Bc0oI5PC2uE57QerhNxdRZ7cvBHE2iY2C+BUNUziCfJbjIRRA==} dev: true /@nodelib/fs.scandir@2.1.5: @@ -656,7 +687,7 @@ packages: /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/express-serve-static-core': 4.17.43 + '@types/express-serve-static-core': 4.19.0 '@types/node': 20.12.11 dev: true @@ -675,12 +706,12 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.6 + '@types/eslint': 8.56.10 '@types/estree': 1.0.5 dev: true - /@types/eslint@8.56.6: - resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -690,11 +721,11 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true - /@types/express-serve-static-core@4.17.43: - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + /@types/express-serve-static-core@4.19.0: + resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} dependencies: '@types/node': 20.12.11 - '@types/qs': 6.9.14 + '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true @@ -703,9 +734,9 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.14 - '@types/serve-static': 1.15.5 + '@types/express-serve-static-core': 4.19.0 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 dev: true /@types/fs-extra@11.0.4: @@ -747,29 +778,40 @@ packages: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} dev: true - /@types/markdown-it-emoji@2.0.4: - resolution: {integrity: sha512-H6ulk/ZmbDxOayPwI/leJzrmoW1YKX1Z+MVSCHXuYhvqckV4I/c+hPTf6UiqJyn2avWugfj30XroheEb6/Ekqg==} + /@types/linkify-it@5.0.0: + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + dev: true + + /@types/markdown-it-emoji@2.0.5: + resolution: {integrity: sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==} dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 13.0.8 dev: true - /@types/markdown-it@13.0.7: - resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + /@types/markdown-it@13.0.8: + resolution: {integrity: sha512-V+KmpgiipS+zoypeUSS9ojesWtY/0k4XfqcK2fnVrX/qInJhX7rsCxZ/rygiPH2zxlPPrhfuW0I6ddMcWTKLsg==} dependencies: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 dev: true + /@types/markdown-it@14.1.1: + resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + dev: true + /@types/mdurl@1.0.5: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} dev: true - /@types/mime@1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + /@types/mdurl@2.0.0: + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} dev: true - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true /@types/ms@0.7.34: @@ -792,8 +834,8 @@ packages: undici-types: 5.26.5 dev: true - /@types/qs@6.9.14: - resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} dev: true /@types/range-parser@1.2.7: @@ -807,7 +849,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.12.11 + '@types/node': 17.0.45 dev: true /@types/send@0.17.4: @@ -823,12 +865,12 @@ packages: '@types/express': 4.17.21 dev: true - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 '@types/node': 20.12.11 + '@types/send': 0.17.4 dev: true /@types/sockjs@0.3.36: @@ -841,8 +883,8 @@ packages: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: true - /@types/webpack-env@1.18.4: - resolution: {integrity: sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A==} + /@types/webpack-env@1.18.5: + resolution: {integrity: sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==} dev: true /@types/ws@8.5.10: @@ -851,88 +893,88 @@ packages: '@types/node': 20.12.11 dev: true - /@vue/compiler-core@3.4.21: - resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + /@vue/compiler-core@3.4.27: + resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} dependencies: - '@babel/parser': 7.24.1 - '@vue/shared': 3.4.21 + '@babel/parser': 7.24.5 + '@vue/shared': 3.4.27 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 dev: true - /@vue/compiler-dom@3.4.21: - resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + /@vue/compiler-dom@3.4.27: + resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} dependencies: - '@vue/compiler-core': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-core': 3.4.27 + '@vue/shared': 3.4.27 dev: true - /@vue/compiler-sfc@3.4.21: - resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + /@vue/compiler-sfc@3.4.27: + resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} dependencies: - '@babel/parser': 7.24.1 - '@vue/compiler-core': 3.4.21 - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 + '@babel/parser': 7.24.5 + '@vue/compiler-core': 3.4.27 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 estree-walker: 2.0.2 - magic-string: 0.30.8 + magic-string: 0.30.10 postcss: 8.4.38 source-map-js: 1.2.0 dev: true - /@vue/compiler-ssr@3.4.21: - resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + /@vue/compiler-ssr@3.4.27: + resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.4.27 + '@vue/shared': 3.4.27 dev: true /@vue/devtools-api@6.6.1: resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} dev: true - /@vue/reactivity@3.4.21: - resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + /@vue/reactivity@3.4.27: + resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} dependencies: - '@vue/shared': 3.4.21 + '@vue/shared': 3.4.27 dev: true - /@vue/runtime-core@3.4.21: - resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + /@vue/runtime-core@3.4.27: + resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} dependencies: - '@vue/reactivity': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/reactivity': 3.4.27 + '@vue/shared': 3.4.27 dev: true - /@vue/runtime-dom@3.4.21: - resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + /@vue/runtime-dom@3.4.27: + resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} dependencies: - '@vue/runtime-core': 3.4.21 - '@vue/shared': 3.4.21 + '@vue/runtime-core': 3.4.27 + '@vue/shared': 3.4.27 csstype: 3.1.3 dev: true - /@vue/server-renderer@3.4.21(vue@3.4.21): - resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + /@vue/server-renderer@3.4.27(vue@3.4.27): + resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} peerDependencies: - vue: 3.4.21 + vue: 3.4.27 dependencies: - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 - vue: 3.4.21 + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + vue: 3.4.27 dev: true - /@vue/shared@3.4.21: - resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + /@vue/shared@3.4.27: + resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} dev: true /@vuepress/bundler-webpack@2.0.0-rc.9: resolution: {integrity: sha512-Vf1QPzmB3hCzOYkCkjMfVsuo3TBNx5E0cGwFeiJGqH/f/+W6eOx0OYn8JrubZaByw+g2OSwbdM0tjzCXS2yHHA==} dependencies: '@types/express': 4.17.21 - '@types/webpack-env': 1.18.4 + '@types/webpack-env': 1.18.5 '@vuepress/client': 2.0.0-rc.9 '@vuepress/core': 2.0.0-rc.9 '@vuepress/shared': 2.0.0-rc.9 @@ -940,18 +982,18 @@ packages: autoprefixer: 10.4.19(postcss@8.4.38) chokidar: 3.6.0 copy-webpack-plugin: 12.0.2(webpack@5.91.0) - css-loader: 6.10.0(webpack@5.91.0) + css-loader: 6.11.0(webpack@5.91.0) esbuild-loader: 4.1.0(webpack@5.91.0) express: 4.19.2 html-webpack-plugin: 5.6.0(webpack@5.91.0) - mini-css-extract-plugin: 2.8.1(webpack@5.91.0) + mini-css-extract-plugin: 2.9.0(webpack@5.91.0) postcss: 8.4.38 postcss-csso: 6.0.1(postcss@8.4.38) postcss-loader: 8.1.1(postcss@8.4.38)(webpack@5.91.0) style-loader: 3.3.4(webpack@5.91.0) - vue: 3.4.21 - vue-loader: 17.4.2(vue@3.4.21)(webpack@5.91.0) - vue-router: 4.3.0(vue@3.4.21) + vue: 3.4.27 + vue-loader: 17.4.2(vue@3.4.27)(webpack@5.91.0) + vue-router: 4.3.2(vue@3.4.27) webpack: 5.91.0 webpack-chain: 6.5.1 webpack-dev-server: 5.0.4(webpack@5.91.0) @@ -979,7 +1021,7 @@ packages: '@vuepress/utils': 2.0.0-rc.9 cac: 6.7.14 chokidar: 3.6.0 - envinfo: 7.11.1 + envinfo: 7.13.0 esbuild: 0.20.2 transitivePeerDependencies: - supports-color @@ -991,8 +1033,8 @@ packages: dependencies: '@vue/devtools-api': 6.6.1 '@vuepress/shared': 2.0.0-rc.9 - vue: 3.4.21 - vue-router: 4.3.0(vue@3.4.21) + vue: 3.4.27 + vue-router: 4.3.2(vue@3.4.27) transitivePeerDependencies: - typescript dev: true @@ -1004,23 +1046,23 @@ packages: '@vuepress/markdown': 2.0.0-rc.9 '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 - vue: 3.4.21 + vue: 3.4.27 transitivePeerDependencies: - supports-color - typescript dev: true - /@vuepress/helper@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-yKIG8hwsrA63uWo9hx9u7KBc0HvotKe2/0wVZtUdvdsibG3UYNI9enYQNa8MdqbxF92mmlFkPZdosGjUTA+BYw==} + /@vuepress/helper@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-dR0XQIedpQhkH2OqCBwo547cp410rOw3S64jtsCfvgn6WWpKrNdrt0FPRXeZuXm3JeWexSyvuYnTU9/BVjPBoQ==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vue/shared': 3.4.21 + '@vue/shared': 3.4.27 cheerio: 1.0.0-rc.12 fflate: 0.8.2 gray-matter: 4.0.3 - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true @@ -1028,90 +1070,90 @@ packages: /@vuepress/markdown@2.0.0-rc.9: resolution: {integrity: sha512-e7as2ar3RQp0bUyMiwBPi7L/G2fzscb3s0BywNcAwubFR22o0/dBEYRYdrN0clPQ2FXpPxF6AFj4aD7O1heCbw==} dependencies: - '@mdit-vue/plugin-component': 2.0.0 - '@mdit-vue/plugin-frontmatter': 2.0.0 - '@mdit-vue/plugin-headers': 2.0.0 - '@mdit-vue/plugin-sfc': 2.0.0 - '@mdit-vue/plugin-title': 2.0.0 - '@mdit-vue/plugin-toc': 2.0.0 - '@mdit-vue/shared': 2.0.0 - '@mdit-vue/types': 2.0.0 - '@types/markdown-it': 13.0.7 - '@types/markdown-it-emoji': 2.0.4 + '@mdit-vue/plugin-component': 2.1.2 + '@mdit-vue/plugin-frontmatter': 2.1.2 + '@mdit-vue/plugin-headers': 2.1.2 + '@mdit-vue/plugin-sfc': 2.1.2 + '@mdit-vue/plugin-title': 2.1.2 + '@mdit-vue/plugin-toc': 2.1.2 + '@mdit-vue/shared': 2.1.2 + '@mdit-vue/types': 2.1.0 + '@types/markdown-it': 13.0.8 + '@types/markdown-it-emoji': 2.0.5 '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 markdown-it: 14.1.0 - markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.1.0) + markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.8)(markdown-it@14.1.0) markdown-it-emoji: 3.0.0 mdurl: 2.0.0 transitivePeerDependencies: - supports-color dev: true - /@vuepress/plugin-active-header-links@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-6i9TfGDV1zfszQ5aw6bV+/UvPdBWt3VxN2WB4Dg5o1g8Qn4z5CI6AW6VfLKRyaKUD+Rzj6W+Ikgx4xnF5RZAdA==} + /@vuepress/plugin-active-header-links@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-KaAN5QmlKdRmq6d8DoonwD9F5Kg96ONvzdoRbkL/gdsTnRgwaqQAj4Hq1eIkZKkp6AzZeb1ZvTUu7M+Ay89cIA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vueuse/core': 10.9.0(vue@3.4.21) - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vueuse/core': 10.9.0(vue@3.4.27) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: true - /@vuepress/plugin-back-to-top@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-qEWu0BFvadJZRH1r1UQW4mHvBYwHGSJtwNv14C/Qmxuvv2UQnpl8T2qbvPAntUWMdy94wVhr2YWCfyLh7TSEOA==} + /@vuepress/plugin-back-to-top@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-tQ+Dvw34rMI85Wes4uFNPXsTJfyjXMHxqkQco+8jDHIljOWXSAwhwMSDsHKaD/Dbl54korC6JsOU/5zA9AxZ7g==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vueuse/core': 10.9.0(vue@3.4.21) - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vueuse/core': 10.9.0(vue@3.4.27) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: true - /@vuepress/plugin-container@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-NEIjs+KmVeB70Do9eB66fIe947Qr+mY8TIpSBYWvTDMaAEYSJlIlQHdaXD6b/lJ/TuTDB4F4BzZmemJZEpAchw==} + /@vuepress/plugin-container@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-EBvmanLATZRtjDr/a6Td8Dw8Mr3ToigNoqdfibhhGA3PKAk5/olUbtpJBcYemgA3nVIyH6gdqbC3zMTO3/vx3A==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 markdown-it-container: 4.0.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) dev: true - /@vuepress/plugin-copy-code@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-280jsPmI/YeKBnXt/MCw/nrv9pUou+zhHK5mOU3ecVYfY7Pu2Xi1zdZ2kK0Ri02Txm5AwLb5YWeSac349JuUUA==} + /@vuepress/plugin-copy-code@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-QnSF/pnUOoGToRmAoagVuyXXWBnpNc3xYC/LEG5TmnewhXwYg0HVE4BTSCcH1AyvjYNRSMHfct1Vbwd63dF9EQ==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vueuse/core': 10.9.0(vue@3.4.21) - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vueuse/core': 10.9.0(vue@3.4.27) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - typescript dev: true - /@vuepress/plugin-docsearch@2.0.0-rc.21(@algolia/client-search@4.23.0)(search-insights@2.13.0)(vuepress@2.0.0-rc.9): + /@vuepress/plugin-docsearch@2.0.0-rc.21(@algolia/client-search@4.23.3)(search-insights@2.13.0)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-ekbtJyqcnd+J00rb905B8/9KTa4isA+MIsy/r2N+a8Fn0v/GMnGVSseqJs8q74YmHlIx4GawDfKy7F84zxMfjA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: '@docsearch/css': 3.6.0 - '@docsearch/js': 3.6.0(@algolia/client-search@4.23.0)(search-insights@2.13.0) - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.0)(search-insights@2.13.0) - '@vueuse/core': 10.9.0(vue@3.4.21) + '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) + '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) + '@vueuse/core': 10.9.0(vue@3.4.27) ts-debounce: 4.0.0 - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -1122,24 +1164,24 @@ packages: - typescript dev: true - /@vuepress/plugin-external-link-icon@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-Wt7hjWpoUccJHj5KHK24Uks+6oWug6y5cw9QzWlNgiCyg+hvII7I+FdORRvibPUG2ndymi6ZOFyJZcR072kbKA==} + /@vuepress/plugin-external-link-icon@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-VEEQEaMZzGOh8q1oR9u18gIBK7pbkCSx02vEN0k/cvRbfKbMdayEOTk4x+5Sy/A/fUcBPRbyw8O+/nDVzLn4pg==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true - /@vuepress/plugin-git@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-Xgrqv86bjrBPFrJr69b1KQlDUhAGhWfBRIGM3GQOI98mOi2VKCX9P4xyWK/lIpn8eVB3s0lY1KewhkXgy7UITg==} + /@vuepress/plugin-git@2.0.0-rc.22(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-+T50AdCZ68Pkld4r8IEHTXLugfNVCxxPp2G1hlI/lpQ6IZcpLbswMI6l9xbbo15RrOBg/V0jkim/B/jaaVIM6A==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: execa: 8.0.1 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) dev: true /@vuepress/plugin-google-analytics@2.0.0-rc.21(vuepress@2.0.0-rc.9): @@ -1147,40 +1189,40 @@ packages: peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) dev: true - /@vuepress/plugin-links-check@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-3dIXKJILTDP7RoPVmhtq/RfytZqX1sCA9Bf++DlgQV6jp2ctcTf4F9I5J/2wQce8yuLogO8fHnWhEgO2rgQXLw==} + /@vuepress/plugin-links-check@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-RtH2tWbW4ZyNUlV7YJL7Nt9A/5+1Urf9nAWGJF6sotd7IJ2iMStWMJRb41WLuj7WPexB+lvS993ve4L7BDYu7g==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true - /@vuepress/plugin-medium-zoom@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-UZmh5vm/X/czJoVwXxTc+p9lRiAjI/7DrBvj9V7m4DNecPjsMtH/X9oU0Dqn+PeKeTHAEK+EVwy4PUtWc17hIQ==} + /@vuepress/plugin-medium-zoom@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-+VfQHvxEP4L7XJapZaFq4NYfjMGA8jTNHQrSVReVzvZws6yi8t5nqU4pX82n9rFeQUGkZM7NgQBha45vesMGYA==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) medium-zoom: 1.1.0 - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true - /@vuepress/plugin-nprogress@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-qpGA76195SyfpuQC1Pb9LwgCYIp/zg+BBDnexukJMdLjP1KnaU7HLhS5NnRNIWv8E+IC61zLvlh/wRox17QE+w==} + /@vuepress/plugin-nprogress@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-35VLSgcn5TJChG7SorEsubheqXm/6xqURvwQjWAaEmqRiC4CXcYcSWR4stfSIm+DekUDNXK9o3DZ9+UYlvFtFg==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true @@ -1191,25 +1233,25 @@ packages: vuepress: 2.0.0-rc.9 dependencies: chokidar: 3.6.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) dev: true - /@vuepress/plugin-prismjs@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-dMTCu/TZ1QCmTHXL4THVeh9gWzuqkJV8qhck5U77OP1qmgyf+r529A+MTOgp3ddcph1Yzb/FRb2orlefHk+yNQ==} + /@vuepress/plugin-prismjs@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-CsKBmGRnY+h3iElxdi1Te4g6pzfSdBePBLWXq89IqOchFI5sOabJWKso0R5bnE1mDdT2doGjDmDvzrUZvaoK+w==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: prismjs: 1.29.0 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) dev: true - /@vuepress/plugin-seo@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-q8pXhXn5OL0QG6KN9rjyXngj2km5eRDK0VL8ShLrTD9fAwvjhujhjHpI/DRHg6ScWlMDKY7ncEOmslDCBuKLtg==} + /@vuepress/plugin-seo@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-DduUI/KFzOmwi05fPNYscjnJo30QTgCdhpwQS0/SPR8j2Hl9a/BKFqh4tj8n9S6xoMHv1099BnOFwirZ3li1Rw==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true @@ -1219,21 +1261,21 @@ packages: peerDependencies: vuepress: 2.0.0-rc.9 dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) sitemap: 7.1.1 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true - /@vuepress/plugin-theme-data@2.0.0-rc.21(vuepress@2.0.0-rc.9): - resolution: {integrity: sha512-vLXvTKx4gWXY6oVaJ9Z2ECnojnKQuXBIe1ZGIAwJdxCYfr6aaqggrVvmphB8BwTURh0XAuis/l6YTcMrs0bX8Q==} + /@vuepress/plugin-theme-data@2.0.0-rc.28(vuepress@2.0.0-rc.9): + resolution: {integrity: sha512-unI71Ybfl42TSwrc+JpU6PfVR2ETy5RihBDq04ca5xOePjY0liampjn5O65bgIFkrHVP9azym8KLnVLOERhcdQ==} peerDependencies: vuepress: 2.0.0-rc.9 dependencies: '@vue/devtools-api': 6.6.1 - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - typescript dev: true @@ -1241,10 +1283,10 @@ packages: /@vuepress/shared@2.0.0-rc.9: resolution: {integrity: sha512-XfI6CWNv4/Vp9Iew6GJil9RUSy1rM7zGdjwikr0j3Rkh55q3f00w1wud47wE9kxRqsZ0PIvsMget5CxEn5rA/w==} dependencies: - '@mdit-vue/types': 2.0.0 + '@mdit-vue/types': 2.1.0 dev: true - /@vuepress/theme-default@2.0.0-rc.21(sass-loader@14.1.1)(vuepress@2.0.0-rc.9): + /@vuepress/theme-default@2.0.0-rc.21(sass-loader@14.2.1)(vuepress@2.0.0-rc.9): resolution: {integrity: sha512-TXwFbfcMQvNMOpt4R39i9vuVWhB3TdM9VLB6aWDjwxEMTMK4Qpwc2VXX7drA7YcjjGkPpW1h7/l7xlEbvRcnsQ==} peerDependencies: sass-loader: ^14.0.0 @@ -1253,26 +1295,26 @@ packages: sass-loader: optional: true dependencies: - '@vuepress/helper': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-active-header-links': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-back-to-top': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-container': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-copy-code': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-external-link-icon': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-git': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-links-check': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-medium-zoom': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-nprogress': 2.0.0-rc.21(vuepress@2.0.0-rc.9) + '@vuepress/helper': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-active-header-links': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-back-to-top': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-container': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-copy-code': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-external-link-icon': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-git': 2.0.0-rc.22(vuepress@2.0.0-rc.9) + '@vuepress/plugin-links-check': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-medium-zoom': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-nprogress': 2.0.0-rc.28(vuepress@2.0.0-rc.9) '@vuepress/plugin-palette': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-prismjs': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-seo': 2.0.0-rc.21(vuepress@2.0.0-rc.9) + '@vuepress/plugin-prismjs': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vuepress/plugin-seo': 2.0.0-rc.28(vuepress@2.0.0-rc.9) '@vuepress/plugin-sitemap': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vuepress/plugin-theme-data': 2.0.0-rc.21(vuepress@2.0.0-rc.9) - '@vueuse/core': 10.9.0(vue@3.4.21) - sass: 1.72.0 - sass-loader: 14.1.1(webpack@5.91.0) - vue: 3.4.21 - vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21) + '@vuepress/plugin-theme-data': 2.0.0-rc.28(vuepress@2.0.0-rc.9) + '@vueuse/core': 10.9.0(vue@3.4.27) + sass: 1.77.0 + sass-loader: 14.2.1(webpack@5.91.0) + vue: 3.4.27 + vuepress: 2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -1296,13 +1338,13 @@ packages: - supports-color dev: true - /@vueuse/core@10.9.0(vue@3.4.21): + /@vueuse/core@10.9.0(vue@3.4.27): resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.9.0 - '@vueuse/shared': 10.9.0(vue@3.4.21) - vue-demi: 0.14.7(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.27) + vue-demi: 0.14.7(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1312,10 +1354,10 @@ packages: resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} dev: true - /@vueuse/shared@10.9.0(vue@3.4.21): + /@vueuse/shared@10.9.0(vue@3.4.27): resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} dependencies: - vue-demi: 0.14.7(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.27) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1457,7 +1499,7 @@ packages: hasBin: true dev: true - /ajv-formats@2.1.1(ajv@8.12.0): + /ajv-formats@2.1.1(ajv@8.13.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -1465,7 +1507,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.12.0 + ajv: 8.13.0 dev: true /ajv-keywords@3.5.2(ajv@6.12.6): @@ -1476,12 +1518,12 @@ packages: ajv: 6.12.6 dev: true - /ajv-keywords@5.1.0(ajv@8.12.0): + /ajv-keywords@5.1.0(ajv@8.13.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 dependencies: - ajv: 8.12.0 + ajv: 8.13.0 fast-deep-equal: 3.1.3 dev: true @@ -1494,8 +1536,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1503,25 +1545,24 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch@4.23.0: - resolution: {integrity: sha512-JuM1+MaKovyosHYsLOdfhI7ytOES4qM/U7XAlU53lfGpiQ7+Ct1Wd3A7eP4OWIxxlN+bb42XIX5qZChMCC7rCA==} - deprecated: This version contains an issue that will be resolved in 4.23.1 + /algoliasearch@4.23.3: + resolution: {integrity: sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==} dependencies: - '@algolia/cache-browser-local-storage': 4.23.0 - '@algolia/cache-common': 4.23.0 - '@algolia/cache-in-memory': 4.23.0 - '@algolia/client-account': 4.23.0 - '@algolia/client-analytics': 4.23.0 - '@algolia/client-common': 4.23.0 - '@algolia/client-personalization': 4.23.0 - '@algolia/client-search': 4.23.0 - '@algolia/logger-common': 4.23.0 - '@algolia/logger-console': 4.23.0 - '@algolia/recommend': 4.23.0 - '@algolia/requester-browser-xhr': 4.23.0 - '@algolia/requester-common': 4.23.0 - '@algolia/requester-node-http': 4.23.0 - '@algolia/transporter': 4.23.0 + '@algolia/cache-browser-local-storage': 4.23.3 + '@algolia/cache-common': 4.23.3 + '@algolia/cache-in-memory': 4.23.3 + '@algolia/client-account': 4.23.3 + '@algolia/client-analytics': 4.23.3 + '@algolia/client-common': 4.23.3 + '@algolia/client-personalization': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/logger-common': 4.23.3 + '@algolia/logger-console': 4.23.3 + '@algolia/recommend': 4.23.3 + '@algolia/requester-browser-xhr': 4.23.3 + '@algolia/requester-common': 4.23.3 + '@algolia/requester-node-http': 4.23.3 + '@algolia/transporter': 4.23.3 dev: true /ansi-html-community@0.0.8: @@ -1593,7 +1634,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001600 + caniuse-lite: 1.0.30001617 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -1667,10 +1708,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001600 - electron-to-chromium: 1.4.717 + caniuse-lite: 1.0.30001617 + electron-to-chromium: 1.4.762 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.15(browserslist@4.23.0) dev: true /buffer-from@1.1.2: @@ -1722,8 +1763,8 @@ packages: tslib: 2.6.2 dev: true - /caniuse-lite@1.0.30001600: - resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} + /caniuse-lite@1.0.30001617: + resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} dev: true /chalk@2.4.2: @@ -1945,8 +1986,8 @@ packages: which: 2.0.2 dev: true - /css-loader@6.10.0(webpack@5.91.0): - resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} + /css-loader@6.11.0(webpack@5.91.0): + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -1959,12 +2000,12 @@ packages: dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.38) - postcss-modules-scope: 3.1.1(postcss@8.4.38) + postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) + postcss-modules-scope: 3.2.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.2 webpack: 5.91.0 dev: true @@ -2103,7 +2144,7 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} dependencies: - '@leichtgewicht/ip-codec': 2.0.4 + '@leichtgewicht/ip-codec': 2.0.5 dev: true /dom-converter@0.2.0: @@ -2177,8 +2218,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.717: - resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==} + /electron-to-chromium@1.4.762: + resolution: {integrity: sha512-rrFvGweLxPwwSwJOjIopy3Vr+J3cIPtZzuc74bmlvmBIgQO3VYJDvVrlj94iKZ3ukXUH64Ex31hSfRTLqvjYJQ==} dev: true /emoji-regex@10.3.0: @@ -2203,8 +2244,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -2225,8 +2266,8 @@ packages: engines: {node: '>=6'} dev: true - /envinfo@7.11.1: - resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true dev: true @@ -2249,8 +2290,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-module-lexer@1.5.0: - resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} + /es-module-lexer@1.5.2: + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} dev: true /esbuild-loader@4.1.0(webpack@5.91.0): @@ -2259,7 +2300,7 @@ packages: webpack: ^4.40.0 || ^5.0.0 dependencies: esbuild: 0.20.2 - get-tsconfig: 4.7.3 + get-tsconfig: 4.7.5 loader-utils: 2.0.4 webpack: 5.91.0 webpack-sources: 1.4.3 @@ -2585,8 +2626,8 @@ packages: engines: {node: '>=16'} dev: true - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -2609,16 +2650,16 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + /glob@10.3.14: + resolution: {integrity: sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.0 dev: true /globby@14.0.1: @@ -2723,7 +2764,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.29.2 + terser: 5.31.0 dev: true /html-webpack-plugin@5.6.0(webpack@5.91.0): @@ -2833,6 +2874,11 @@ packages: engines: {node: '>=16.17.0'} dev: true + /hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + dev: true + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -2879,8 +2925,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /ipaddr.js@2.1.0: - resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} dev: true @@ -3124,32 +3170,24 @@ packages: tslib: 2.6.2 dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /markdown-it-anchor@8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.1.0): + /markdown-it-anchor@8.6.7(@types/markdown-it@13.0.8)(markdown-it@14.1.0): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} peerDependencies: '@types/markdown-it': '*' markdown-it: '*' dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 13.0.8 markdown-it: 14.1.0 dev: true @@ -3190,10 +3228,13 @@ packages: resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} dev: true - /memfs@4.8.0: - resolution: {integrity: sha512-fcs7trFxZlOMadmTw5nyfOwS3il9pr3y+6xzLfXNwmuR/D0i4wz6rJURxArAbcJDGalbpbMvQ/IFI0NojRZgRg==} + /memfs@4.9.2: + resolution: {integrity: sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==} engines: {node: '>= 4.0.0'} dependencies: + '@jsonjoy.com/json-pack': 1.0.4(tslib@2.6.2) + '@jsonjoy.com/util': 1.1.3(tslib@2.6.2) + sonic-forest: 1.0.3(tslib@2.6.2) tslib: 2.6.2 dev: true @@ -3251,8 +3292,8 @@ packages: engines: {node: '>=12'} dev: true - /mini-css-extract-plugin@2.8.1(webpack@5.91.0): - resolution: {integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==} + /mini-css-extract-plugin@2.9.0(webpack@5.91.0): + resolution: {integrity: sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -3266,15 +3307,15 @@ packages: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.1: + resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -3486,12 +3527,12 @@ packages: engines: {node: '>=12'} dev: true - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + /path-scurry@1.11.0: + resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.2.2 + minipass: 7.1.1 dev: true /path-to-regexp@0.1.7: @@ -3554,14 +3595,14 @@ packages: cosmiconfig: 9.0.0 jiti: 1.21.0 postcss: 8.4.38 - semver: 7.6.0 + semver: 7.6.2 webpack: 5.91.0 transitivePeerDependencies: - typescript dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.38): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + /postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -3569,8 +3610,8 @@ packages: postcss: 8.4.38 dev: true - /postcss-modules-local-by-default@4.0.4(postcss@8.4.38): - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + /postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -3581,8 +3622,8 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.1.1(postcss@8.4.38): - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + /postcss-modules-scope@3.2.0(postcss@8.4.38): + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -3622,8 +3663,8 @@ packages: source-map-js: 1.2.0 dev: true - /preact@10.20.1: - resolution: {integrity: sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==} + /preact@10.21.0: + resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} dev: true /pretty-error@4.0.0: @@ -3776,7 +3817,7 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.10 + glob: 10.3.14 dev: true /run-applescript@7.0.0: @@ -3802,8 +3843,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@14.1.1(webpack@5.91.0): - resolution: {integrity: sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==} + /sass-loader@14.2.1(webpack@5.91.0): + resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -3827,8 +3868,8 @@ packages: webpack: 5.91.0 dev: true - /sass@1.72.0: - resolution: {integrity: sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==} + /sass@1.77.0: + resolution: {integrity: sha512-eGj4HNfXqBWtSnvItNkn7B6icqH14i3CiCGbzMKs3BAPTq62pp9NBYsBgyN4cA+qssqo9r26lW4JSvlaUUWbgw==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -3855,9 +3896,9 @@ packages: engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) + ajv-keywords: 5.1.0(ajv@8.13.0) dev: true /search-insights@2.13.0: @@ -3884,12 +3925,10 @@ packages: node-forge: 1.3.1 dev: true - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 dev: true /send@0.18.0: @@ -4032,6 +4071,16 @@ packages: websocket-driver: 0.7.4 dev: true + /sonic-forest@1.0.3(tslib@2.6.2): + resolution: {integrity: sha512-dtwajos6IWMEWXdEbW1IkEkyL2gztCAgDplRIX+OT5aRKnEd5e7r7YCxRgXZdhRP1FBdOBf8axeTPhzDv8T4wQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tree-dump: 1.0.1(tslib@2.6.2) + tslib: 2.6.2 + dev: true + /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: true @@ -4221,12 +4270,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.29.2 + terser: 5.31.0 webpack: 5.91.0 dev: true - /terser@5.29.2: - resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4236,6 +4285,15 @@ packages: source-map-support: 0.5.21 dev: true + /thingies@1.21.0(tslib@2.6.2): + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + dependencies: + tslib: 2.6.2 + dev: true + /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true @@ -4257,6 +4315,15 @@ packages: engines: {node: '>=0.6'} dev: true + /tree-dump@1.0.1(tslib@2.6.2): + resolution: {integrity: sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.6.2 + dev: true + /ts-debounce@4.0.0: resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==} dev: true @@ -4301,8 +4368,8 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.0.15(browserslist@4.23.0): + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -4341,7 +4408,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vue-demi@0.14.7(vue@3.4.21): + /vue-demi@0.14.7(vue@3.4.27): resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} hasBin: true @@ -4353,10 +4420,10 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.21 + vue: 3.4.27 dev: true - /vue-loader@17.4.2(vue@3.4.21)(webpack@5.91.0): + /vue-loader@17.4.2(vue@3.4.27)(webpack@5.91.0): resolution: {integrity: sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==} peerDependencies: '@vue/compiler-sfc': '*' @@ -4370,36 +4437,36 @@ packages: dependencies: chalk: 4.1.2 hash-sum: 2.0.0 - vue: 3.4.21 + vue: 3.4.27 watchpack: 2.4.1 webpack: 5.91.0 dev: true - /vue-router@4.3.0(vue@3.4.21): - resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} + /vue-router@4.3.2(vue@3.4.27): + resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==} peerDependencies: vue: ^3.2.0 dependencies: '@vue/devtools-api': 6.6.1 - vue: 3.4.21 + vue: 3.4.27 dev: true - /vue@3.4.21: - resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + /vue@3.4.27: + resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-sfc': 3.4.21 - '@vue/runtime-dom': 3.4.21 - '@vue/server-renderer': 3.4.21(vue@3.4.21) - '@vue/shared': 3.4.21 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-sfc': 3.4.27 + '@vue/runtime-dom': 3.4.27 + '@vue/server-renderer': 3.4.27(vue@3.4.27) + '@vue/shared': 3.4.27 dev: true - /vuepress@2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.21): + /vuepress@2.0.0-rc.9(@vuepress/bundler-webpack@2.0.0-rc.9)(vue@3.4.27): resolution: {integrity: sha512-jT1ln2lawdph+vVI6n2JfEUhQIcyc1RQWDdQu9DffhJGywJunFcumnUJudpqd1SNIES2Fz1hVCD6gdrE/rVKOQ==} engines: {node: '>=18.16.0'} hasBin: true @@ -4420,7 +4487,7 @@ packages: '@vuepress/markdown': 2.0.0-rc.9 '@vuepress/shared': 2.0.0-rc.9 '@vuepress/utils': 2.0.0-rc.9 - vue: 3.4.21 + vue: 3.4.27 transitivePeerDependencies: - supports-color - typescript @@ -4449,8 +4516,8 @@ packages: javascript-stringify: 2.1.0 dev: true - /webpack-dev-middleware@7.1.1(webpack@5.91.0): - resolution: {integrity: sha512-NmRVq4AvRQs66dFWyDR4GsFDJggtSi2Yn38MXLk0nffgF9n/AIP4TFBg2TQKYaRAN4sHuKOTiz9BnNCENDLEVA==} + /webpack-dev-middleware@7.2.1(webpack@5.91.0): + resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -4459,7 +4526,7 @@ packages: optional: true dependencies: colorette: 2.0.20 - memfs: 4.8.0 + memfs: 4.9.2 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 @@ -4484,7 +4551,7 @@ packages: '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.21 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 + '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 '@types/ws': 8.5.10 ansi-html-community: 0.0.8 @@ -4498,7 +4565,7 @@ packages: graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.1.0 + ipaddr.js: 2.2.0 launch-editor: 2.6.1 open: 10.1.0 p-retry: 6.2.0 @@ -4509,8 +4576,8 @@ packages: sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.91.0 - webpack-dev-middleware: 7.1.1(webpack@5.91.0) - ws: 8.16.0 + webpack-dev-middleware: 7.2.1(webpack@5.91.0) + ws: 8.17.0 transitivePeerDependencies: - bufferutil - debug @@ -4558,8 +4625,8 @@ packages: acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.5.0 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -4623,8 +4690,8 @@ packages: strip-ansi: 7.1.0 dev: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -4635,7 +4702,3 @@ packages: utf-8-validate: optional: true dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true diff --git a/runatlantis.io/.vuepress/navbar.js b/runatlantis.io/.vuepress/navbar.js index d7f86e1542..7ec398afba 100644 --- a/runatlantis.io/.vuepress/navbar.js +++ b/runatlantis.io/.vuepress/navbar.js @@ -2,6 +2,7 @@ const en = [ { text: 'Home', link: '/' }, { text: 'Guide', link: '/guide/' }, { text: 'Docs', link: '/docs/' }, + { text: "Contributing", link: "/contributing/" }, { text: 'Blog', link: 'https://medium.com/runatlantis' }, ]; diff --git a/runatlantis.io/.vuepress/sidebar.js b/runatlantis.io/.vuepress/sidebar.js index 67caab55f3..b57330411a 100644 --- a/runatlantis.io/.vuepress/sidebar.js +++ b/runatlantis.io/.vuepress/sidebar.js @@ -82,7 +82,16 @@ const en = { '/docs/troubleshooting-https', ] } - ] + ], + '/contributing/': [ + { + text: 'Implementation Details', + children: [ + '/contributing/events-controller', + ] + }, + '/contributing/glossary', + ], }; export default { en }; diff --git a/runatlantis.io/contributing/README.md b/runatlantis.io/contributing/README.md new file mode 100644 index 0000000000..b0449399cb --- /dev/null +++ b/runatlantis.io/contributing/README.md @@ -0,0 +1,14 @@ +# Atlantis Contributing Documentation + +These docs are for users who want to contribute to the Atlantis project. This +can vary from writing documentation, helping the community on Slack, discussing +issues, or writing code. + +:::tip Looking to get started or use Atlantis? +If you're new, check out the [Guide](../guide/README.md) or the +[Documentation](./../docs/README.md). +::: + +### Next Steps + +- [Events Controller](events-controller.md)  â€“  How do the events work? diff --git a/runatlantis.io/contributing/events-controller.md b/runatlantis.io/contributing/events-controller.md new file mode 100644 index 0000000000..c7130e2c73 --- /dev/null +++ b/runatlantis.io/contributing/events-controller.md @@ -0,0 +1,71 @@ +# Events Controller + +Webhooks are the primary interaction between the Version Control System (VCS) +and Atlantis. Each VCS sends the requests to the `/events` endpoint. The +implementation of this endpoint can be found in the +[events_controller.go](https://github.com/runatlantis/atlantis/blob/main/server/controllers/events/events_controller.go) +file. This file contains the Post function `func (e *VCSEventsController) +Post(w http.ResponseWriter, r *http.Request`)` that parses the request +according to the configured VCS. + +Atlantis currently handles one of the following events: + +- Comment Event +- Pull Request Event + +All the other events are ignored. + +![Events Controller flow](./images/events-controller.png) + +## Comment Event + +This event is triggered whenever a user enters a comment on the Pull Request, +Merge Request, or whatever it's called for the respective VCS. After parsing the +VCS-specific request, the code calls the `handleCommentEvent` function, which +then passes the processing to the `handleCommentEvent` function in the +[command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/command_runner.go) +file. This function first calls the pre-workflow hooks, then executes one of the +below-listed commands and, at last, the post-workflow hooks. + +- [plan_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/plan_command_runner.go) +- [apply_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/apply_command_runner.go) +- [approve_policies_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/approve_policies_command_runner.go) +- [unlock_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/unlock_command_runner.go) +- [version_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/version_command_runner.go) +- [import_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/import_command_runner.go) +- [state_command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/state_command_runner.go) + +## Pull Request Event + +To handle comment events on Pull Requests, they must be created first. Atlantis +also allows the running of commands for certain Pull Requests events. + +
+ Pull Request Webhooks + +The list below links to the supported VCSs and their Pull Request Webhook +documentation. + +- [Azure DevOps Pull Request Created](https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#pull-request-created) +- [BitBucket Pull Request](https://support.atlassian.com/bitbucket-cloud/docs/event-payloads/#Pull-request-events) +- [GitHub Pull Request](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request) +- [GitLab Merge Request](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#merge-request-events) +- [Gitea Webhooks](https://docs.gitea.com/next/usage/webhooks) +
+ +The following list shows the supported events: + +- Opened Pull Request +- Updated Pull Request +- Closed Pull Request +- Other Pull Request event + +The `RunAutoPlanCommand` function in the +[command_runner.go](https://github.com/runatlantis/atlantis/blob/main/server/events/command_runner.go) +file is called for the _Open_ and _Update_ Pull Request events. When enabled on +the project, this automatically runs the `plan` for the specific repository. + +Whenever a Pull Request is closed, the `CleanUpPull` function in the +[instrumented_pull_closed_executor.go](https://github.com/runatlantis/atlantis/blob/main/server/events/instrumented_pull_closed_executor.go) +file is called. This function cleans up all the closed Pull Request files, +locks, and other related information. diff --git a/runatlantis.io/contributing/glossary.md b/runatlantis.io/contributing/glossary.md new file mode 100644 index 0000000000..99c1e73287 --- /dev/null +++ b/runatlantis.io/contributing/glossary.md @@ -0,0 +1,26 @@ +# Glossary + +The Atlantis community uses many words and phrases to work more efficiently. +You will find the most common ones and their meaning on this page. + +## Pull / Merge Request Event + +The different VCSs have different names for merging changes. Atlantis uses the +name Pull Request as the abstraction. The VCS provider implements this +abstraction and forwards the call to the respective function. + +## VCS + +VCS stands for Version Control System. + +Atlantis supports only git as a Version Control System. However, there is +support for multiple VCS Providers. Currently, it supports the following +providers: + +- [Azure DevOps](https://azure.microsoft.com/en-us/products/devops) +- [BitBucket](https://bitbucket.org/) +- [GitHub](https://github.com/) +- [GitLab](https://gitlab.com/) +- [Gitea](https://gitea.com/) + +The term VCS is used for both git and the different VCS providers. diff --git a/runatlantis.io/contributing/images/events-controller.png b/runatlantis.io/contributing/images/events-controller.png new file mode 100644 index 0000000000000000000000000000000000000000..e81c0c6527e41d4e75f9d9fbaf7922c0fad853e9 GIT binary patch literal 62838 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 jDIg1!i1~Y