From 610bc737af000963aade1209714767cae8f75cea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:17:34 +0000 Subject: [PATCH 1/6] Bump the dev-dependencies group with 3 updates Bumps the dev-dependencies group with 3 updates: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest), [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) and [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node). Updates `vitest` from 1.2.2 to 1.3.0 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v1.3.0/packages/vitest) Updates `@vitest/ui` from 1.2.2 to 1.3.0 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v1.3.0/packages/ui) Updates `@types/node` from 20.11.18 to 20.11.19 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: vitest dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: "@vitest/ui" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] --- package.json | 4 +- packages/astro-ghostcms/package.json | 4 +- packages/create-astro-ghostcms/package.json | 4 +- pnpm-lock.yaml | 418 +++++++++++--------- 4 files changed, 248 insertions(+), 182 deletions(-) diff --git a/package.json b/package.json index 90ee3197..5615cae1 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "devDependencies": { "@biomejs/biome": "1.5.3", "@changesets/cli": "^2.27.1", - "vitest": "^1.2.2", + "vitest": "^1.3.0", "vitest-fetch-mock": "^0.2.2", - "@vitest/ui": "1.2.2" + "@vitest/ui": "1.3.0" } } diff --git a/packages/astro-ghostcms/package.json b/packages/astro-ghostcms/package.json index eaae3002..91604793 100644 --- a/packages/astro-ghostcms/package.json +++ b/packages/astro-ghostcms/package.json @@ -80,7 +80,7 @@ "@matthiesenxyz/astro-ghostcms-theme-default": "*", "@matthiesenxyz/astro-ghostcms-catppuccin": "*", "@types/fs-extra": "^11.0.1", - "@types/node": "^20.11.17", + "@types/node": "^20.11.19", "@typescript-eslint/eslint-plugin": "^7.0.1", "@typescript-eslint/parser": "^7.0.1", "eslint": "^8.56.0", @@ -89,7 +89,7 @@ "prettier": "^3.2.5", "prettier-plugin-astro": "^0.13.0", "typescript": "^5.3.3", - "vitest": "^1.2.2", + "vitest": "^1.3.0", "vitest-fetch-mock": "^0.2.2" }, "dependencies": { diff --git a/packages/create-astro-ghostcms/package.json b/packages/create-astro-ghostcms/package.json index 866b6c0e..7c6fcfb7 100644 --- a/packages/create-astro-ghostcms/package.json +++ b/packages/create-astro-ghostcms/package.json @@ -44,7 +44,7 @@ "devDependencies": { "@types/fs-extra": "^11.0.1", "@types/gunzip-maybe": "^1.4.0", - "@types/node": "^20.11.17", + "@types/node": "^20.11.19", "@types/tar-fs": "^2.0.1", "@typescript-eslint/eslint-plugin": "^7.0.1", "@typescript-eslint/parser": "^7.0.1", @@ -54,7 +54,7 @@ "eslint-import-resolver-typescript": "^3.5.3", "prettier": "^3.2.5", "typescript": "^5.3.3", - "vitest": "^1.2.2", + "vitest": "^1.3.0", "vite": "^5.1.2", "vite-tsconfig-paths": "^4.2.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fdb831c..fc0f074c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,14 +15,14 @@ importers: specifier: ^2.27.1 version: 2.27.1 '@vitest/ui': - specifier: 1.2.2 - version: 1.2.2(vitest@1.2.2) + specifier: 1.3.0 + version: 1.3.0(vitest@1.3.0) vitest: - specifier: ^1.2.2 - version: 1.2.2(@vitest/ui@1.2.2) + specifier: ^1.3.0 + version: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(vitest@1.2.2) + version: 0.2.2(vitest@1.3.0) packages/astro-ghostcms: dependencies: @@ -33,7 +33,7 @@ importers: specifier: ^3.0.5 version: 3.0.5 '@matthiesenxyz/astro-ghostcms-theme-default': - specifier: ^0.1.11 + specifier: ^0.1.12 version: link:../astro-ghostcms-theme-default '@resvg/resvg-js': specifier: ^2.6.0 @@ -43,7 +43,7 @@ importers: version: 5.1.2 astro: specifier: ^4.3.7 - version: 4.3.7(@types/node@20.11.18)(typescript@5.3.3) + version: 4.3.7(@types/node@20.11.19)(typescript@5.3.3) astro-robots-txt: specifier: ^1.0.0 version: 1.0.0 @@ -61,7 +61,7 @@ importers: version: 0.3.2 vite: specifier: ^5.1.2 - version: 5.1.2(@types/node@20.11.18) + version: 5.1.2(@types/node@20.11.19) vite-tsconfig-paths: specifier: ^4.2.2 version: 4.3.1(typescript@5.3.3)(vite@5.1.2) @@ -82,8 +82,8 @@ importers: specifier: ^11.0.1 version: 11.0.4 '@types/node': - specifier: ^20.11.17 - version: 20.11.18 + specifier: ^20.11.19 + version: 20.11.19 '@typescript-eslint/eslint-plugin': specifier: ^7.0.1 version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) @@ -109,11 +109,11 @@ importers: specifier: ^5.3.3 version: 5.3.3 vitest: - specifier: ^1.2.2 - version: 1.2.2(@types/node@20.11.18)(@vitest/ui@1.2.2) + specifier: ^1.3.0 + version: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(vitest@1.2.2) + version: 0.2.2(vitest@1.3.0) packages/astro-ghostcms-brutalbyelian: dependencies: @@ -127,14 +127,14 @@ importers: specifier: ^1.1.8 version: 1.1.8 '@matthiesenxyz/astro-ghostcms': - specifier: ^3.2.6 + specifier: ^3.2.8 version: link:../astro-ghostcms '@matthiesenxyz/astro-ghostcms-rendercontent': - specifier: ^0.0.4 - version: 0.0.4 + specifier: ^0.0.6 + version: link:../astro-ghostcms-rendercontent '@unocss/astro': specifier: ^0.58.5 - version: 0.58.5(vite@5.1.2) + version: 0.58.5(vite@5.1.3) '@unocss/reset': specifier: ^0.58.5 version: 0.58.5 @@ -152,7 +152,7 @@ importers: version: 1.5.2 unocss: specifier: ^0.58.5 - version: 0.58.5(postcss@8.4.35)(vite@5.1.2) + version: 0.58.5(postcss@8.4.35)(vite@5.1.3) devDependencies: '@typescript-eslint/parser': specifier: ^7.0.1 @@ -185,7 +185,7 @@ importers: specifier: ^5.0.16 version: 5.0.16 '@matthiesenxyz/astro-ghostcms': - specifier: ^3.2.6 + specifier: ^3.2.8 version: link:../astro-ghostcms '@tailwindcss/typography': specifier: ^0.5.10 @@ -219,7 +219,7 @@ importers: packages/astro-ghostcms-theme-default: dependencies: '@matthiesenxyz/astro-ghostcms': - specifier: ^3.2.4 + specifier: ^3.2.7 version: link:../astro-ghostcms astro: specifier: ^4.2.1 @@ -263,8 +263,8 @@ importers: specifier: ^1.4.0 version: 1.4.2 '@types/node': - specifier: ^20.11.17 - version: 20.11.18 + specifier: ^20.11.19 + version: 20.11.19 '@types/tar-fs': specifier: ^2.0.1 version: 2.0.4 @@ -294,13 +294,13 @@ importers: version: 5.3.3 vite: specifier: ^5.1.2 - version: 5.1.2(@types/node@20.11.18) + version: 5.1.2(@types/node@20.11.19) vite-tsconfig-paths: specifier: ^4.2.2 version: 4.3.1(typescript@5.3.3)(vite@5.1.2) vitest: - specifier: ^1.2.2 - version: 1.2.2(@types/node@20.11.18)(@vitest/ui@1.2.2) + specifier: ^1.3.0 + version: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) packages/tsconfig: {} @@ -323,7 +323,7 @@ importers: version: link:../packages/astro-ghostcms-theme-default '@unocss/astro': specifier: ^0.58.5 - version: 0.58.5(vite@5.1.2) + version: 0.58.5(vite@5.1.3) astro: specifier: ^4.3.7 version: 4.3.7(sass@1.70.0)(typescript@5.3.3) @@ -339,7 +339,7 @@ importers: version: 5.3.3 unocss: specifier: ^0.58.5 - version: 0.58.5(postcss@8.4.35)(vite@5.1.2) + version: 0.58.5(postcss@8.4.35)(vite@5.1.3) packages: @@ -1434,13 +1434,6 @@ packages: globby: 11.1.0 read-yaml-file: 1.1.0 - /@matthiesenxyz/astro-ghostcms-rendercontent@0.0.4: - resolution: {integrity: sha512-AqH7CzlCJdqOFQgKdqih/zn/NMY3512pmZEyc5HoQrB4oh580m2c2MIVuRl+y/Sw1eGgD2HNfd2ruhQZiNummQ==} - dependencies: - entities: 4.5.0 - ultrahtml: 1.5.2 - dev: false - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1641,6 +1634,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-android-arm-eabi@4.12.0: + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@rollup/rollup-android-arm64@4.11.0: resolution: {integrity: sha512-0ij3iw7sT5jbcdXofWO2NqDNjSVVsf6itcAkV2I6Xsq4+6wjW1A8rViVB67TfBEan7PV2kbLzT8rhOVWLI2YXw==} cpu: [arm64] @@ -1648,6 +1648,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-android-arm64@4.12.0: + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@rollup/rollup-darwin-arm64@4.11.0: resolution: {integrity: sha512-yPLs6RbbBMupArf6qv1UDk6dzZvlH66z6NLYEwqTU0VHtss1wkI4UYeeMS7TVj5QRVvaNAWYKP0TD/MOeZ76Zg==} cpu: [arm64] @@ -1655,6 +1662,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-darwin-arm64@4.12.0: + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@rollup/rollup-darwin-x64@4.11.0: resolution: {integrity: sha512-OvqIgwaGAwnASzXaZEeoJY3RltOFg+WUbdkdfoluh2iqatd090UeOG3A/h0wNZmE93dDew9tAtXgm3/+U/B6bw==} cpu: [x64] @@ -1662,6 +1676,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-darwin-x64@4.12.0: + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.11.0: resolution: {integrity: sha512-X17s4hZK3QbRmdAuLd2EE+qwwxL8JxyVupEqAkxKPa/IgX49ZO+vf0ka69gIKsaYeo6c1CuwY3k8trfDtZ9dFg==} cpu: [arm] @@ -1669,6 +1690,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.12.0: + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-arm64-gnu@4.11.0: resolution: {integrity: sha512-673Lu9EJwxVB9NfYeA4AdNu0FOHz7g9t6N1DmT7bZPn1u6bTF+oZjj+fuxUcrfxWXE0r2jxl5QYMa9cUOj9NFg==} cpu: [arm64] @@ -1676,6 +1704,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-arm64-gnu@4.12.0: + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-arm64-musl@4.11.0: resolution: {integrity: sha512-yFW2msTAQNpPJaMmh2NpRalr1KXI7ZUjlN6dY/FhWlOclMrZezm5GIhy3cP4Ts2rIAC+IPLAjNibjp1BsxCVGg==} cpu: [arm64] @@ -1683,6 +1718,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-arm64-musl@4.12.0: + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-riscv64-gnu@4.11.0: resolution: {integrity: sha512-kKT9XIuhbvYgiA3cPAGntvrBgzhWkGpBMzuk1V12Xuoqg7CI41chye4HU0vLJnGf9MiZzfNh4I7StPeOzOWJfA==} cpu: [riscv64] @@ -1690,6 +1732,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-riscv64-gnu@4.12.0: + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-x64-gnu@4.11.0: resolution: {integrity: sha512-6q4ESWlyTO+erp1PSCmASac+ixaDv11dBk1fqyIuvIUc/CmRAX2Zk+2qK1FGo5q7kyDcjHCFVwgGFCGIZGVwCA==} cpu: [x64] @@ -1697,6 +1746,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-x64-gnu@4.12.0: + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-linux-x64-musl@4.11.0: resolution: {integrity: sha512-vIAQUmXeMLmaDN78HSE4Kh6xqof2e3TJUKr+LPqXWU4NYNON0MDN9h2+t4KHrPAQNmU3w1GxBQ/n01PaWFwa5w==} cpu: [x64] @@ -1704,6 +1760,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-linux-x64-musl@4.12.0: + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.11.0: resolution: {integrity: sha512-LVXo9dDTGPr0nezMdqa1hK4JeoMZ02nstUxGYY/sMIDtTYlli1ZxTXBYAz3vzuuvKO4X6NBETciIh7N9+abT1g==} cpu: [arm64] @@ -1711,6 +1774,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.12.0: + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.11.0: resolution: {integrity: sha512-xZVt6K70Gr3I7nUhug2dN6VRR1ibot3rXqXS3wo+8JP64t7djc3lBFyqO4GiVrhNaAIhUCJtwQ/20dr0h0thmQ==} cpu: [ia32] @@ -1718,6 +1788,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.12.0: + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.11.0: resolution: {integrity: sha512-f3I7h9oTg79UitEco9/2bzwdciYkWr8pITs3meSDSlr1TdvQ7IxkQaaYN2YqZXX5uZhiYL+VuYDmHwNzhx+HOg==} cpu: [x64] @@ -1725,6 +1802,13 @@ packages: requiresBuild: true optional: true + /@rollup/rollup-win32-x64-msvc@4.12.0: + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@shuding/opentype.js@1.4.0-beta.0: resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} engines: {node: '>= 8.0.0'} @@ -1806,13 +1890,13 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.11.18 + '@types/node': 20.11.19 dev: true /@types/gunzip-maybe@1.4.2: resolution: {integrity: sha512-2uqXZg1jTCKE1Pjbab8qb74+f2+i9h/jz8rQ+jRR+zaNJF75zWwrpbX8/TjF4m56m3KFOg9umHdCJ074KwiVxg==} dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 dev: true /@types/hast@3.0.4: @@ -1835,7 +1919,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 dev: true /@types/mdast@4.0.3: @@ -1861,8 +1945,8 @@ packages: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@20.11.18: - resolution: {integrity: sha512-ABT5VWnnYneSBcNWYSCuR05M826RoMyMSGiFivXGx6ZUIsXb9vn4643IEwkg2zbEOSgAiSogtapN2fgc4mAPlw==} + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} dependencies: undici-types: 5.26.5 @@ -1872,7 +1956,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 dev: false /@types/semver@7.5.7: @@ -1881,14 +1965,14 @@ packages: /@types/tar-fs@2.0.4: resolution: {integrity: sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA==} dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 '@types/tar-stream': 3.1.3 dev: true /@types/tar-stream@3.1.3: resolution: {integrity: sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==} dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 dev: true /@types/unist@2.0.10: @@ -2053,7 +2137,7 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@unocss/astro@0.58.5(vite@5.1.2): + /@unocss/astro@0.58.5(vite@5.1.3): resolution: {integrity: sha512-LtuVnj8oFAK9663OVhQO8KpdJFiOyyPsYfnOZlDCOFK3gHb/2WMrzdBwr1w8LoQF3bDedkFMKirVF7gWjyZiaw==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 @@ -2063,8 +2147,8 @@ packages: dependencies: '@unocss/core': 0.58.5 '@unocss/reset': 0.58.5 - '@unocss/vite': 0.58.5(vite@5.1.2) - vite: 5.1.2(sass@1.70.0) + '@unocss/vite': 0.58.5(vite@5.1.3) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - rollup @@ -2224,7 +2308,7 @@ packages: dependencies: '@unocss/core': 0.58.5 - /@unocss/vite@0.58.5(vite@5.1.2): + /@unocss/vite@0.58.5(vite@5.1.3): resolution: {integrity: sha512-p4o1XNX1rvjmoUqSSdua8XyWNg/d+YUChDd2L/xEty+6j2qv0wUaohs3UQ87vWlv632/UmgdX+2MbrgtqthCtw==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 @@ -2239,57 +2323,57 @@ packages: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.7 - vite: 5.1.2(sass@1.70.0) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - rollup - /@vitest/expect@1.2.2: - resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + /@vitest/expect@1.3.0: + resolution: {integrity: sha512-7bWt0vBTZj08B+Ikv70AnLRicohYwFgzNjFqo9SxxqHHxSlUJGSXmCRORhOnRMisiUryKMdvsi1n27Bc6jL9DQ==} dependencies: - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/spy': 1.3.0 + '@vitest/utils': 1.3.0 chai: 4.4.1 dev: true - /@vitest/runner@1.2.2: - resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + /@vitest/runner@1.3.0: + resolution: {integrity: sha512-1Jb15Vo/Oy7mwZ5bXi7zbgszsdIBNjc4IqP8Jpr/8RdBC4nF1CTzIAn2dxYvpF1nGSseeL39lfLQ2uvs5u1Y9A==} dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.3.0 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.2.2: - resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + /@vitest/snapshot@1.3.0: + resolution: {integrity: sha512-swmktcviVVPYx9U4SEQXLV6AEY51Y6bZ14jA2yo6TgMxQ3h+ZYiO0YhAHGJNp0ohCFbPAis1R9kK0cvN6lDPQA==} dependencies: magic-string: 0.30.7 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.2.2: - resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + /@vitest/spy@1.3.0: + resolution: {integrity: sha512-AkCU0ThZunMvblDpPKgjIi025UxR8V7MZ/g/EwmAGpjIujLVV2X6rGYGmxE2D4FJbAy0/ijdROHMWa2M/6JVMw==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/ui@1.2.2(vitest@1.2.2): - resolution: {integrity: sha512-CG+5fa8lyoBr+9i+UZGS31Qw81v33QlD10uecHxN2CLJVN+jLnqx4pGzGvFFeJ7jSnUCT0AlbmVWY6fU6NJZmw==} + /@vitest/ui@1.3.0(vitest@1.3.0): + resolution: {integrity: sha512-gDGEBUddrPOJvF4e0nIeKBz1whiDthBxBB0OUAbUqnY0HxJwqlKg9R257Sxoeh1Q7ZDSzc7qY96n4hrEPy1NaQ==} peerDependencies: - vitest: ^1.0.0 + vitest: 1.3.0 dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.3.0 fast-glob: 3.3.2 fflate: 0.8.2 flatted: 3.2.9 pathe: 1.1.2 picocolors: 1.0.0 sirv: 2.0.4 - vitest: 1.2.2(@vitest/ui@1.2.2) + vitest: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) dev: true - /@vitest/utils@1.2.2: - resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + /@vitest/utils@1.3.0: + resolution: {integrity: sha512-/LibEY/fkaXQufi4GDlQZhikQsPO2entBKtfuyIpr1jV4DpaeasqkeHjhdOhU24vSHshcSuEyVlWdzvv2XmYCw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -2599,7 +2683,7 @@ packages: resolution: {integrity: sha512-7gq6lhibCM8FuzZIJlbLLWP5EJ9KL2/4XqeFrAg9O6ZK2xMFxJ5ubKf+a0VJwwTu8W8Xr421CmpiXu6Hq7n/7Q==} dev: false - /astro@4.3.7(@types/node@20.11.18)(typescript@5.3.3): + /astro@4.3.7(@types/node@20.11.19)(typescript@5.3.3): resolution: {integrity: sha512-spdl+Ae6WZjQ0w8VBPq8ulN1hdN0m4EWvKG7ecgHjPQIHidMnzWJoZLEFEeKASqCGB1fDibqr7RDHoHkhZbp2Q==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true @@ -2664,7 +2748,7 @@ packages: tsconfck: 3.0.2(typescript@5.3.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.1.2(@types/node@20.11.18) + vite: 5.1.2(@types/node@20.11.19) vitefu: 0.2.5(vite@5.1.2) which-pm: 2.1.1 yargs-parser: 21.1.1 @@ -4808,6 +4892,10 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -6422,6 +6510,28 @@ packages: '@rollup/rollup-win32-x64-msvc': 4.11.0 fsevents: 2.3.3 + /rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 + fsevents: 2.3.3 + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -6845,10 +6955,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} dependencies: - acorn: 8.11.3 + js-tokens: 8.0.3 dev: true /strnum@1.0.5: @@ -7319,7 +7429,7 @@ packages: engines: {node: '>= 10.0.0'} dev: false - /unocss@0.58.5(postcss@8.4.35)(vite@5.1.2): + /unocss@0.58.5(postcss@8.4.35)(vite@5.1.3): resolution: {integrity: sha512-0g4P6jLgRRNnhscxw7nQ9RHGrKJ1UPPiHPet+YT3TXUcmy4mTiYgo9+kGQf5bjyrzsELJ10cT6Qz2y6g9Tls4g==} engines: {node: '>=14'} peerDependencies: @@ -7331,7 +7441,7 @@ packages: vite: optional: true dependencies: - '@unocss/astro': 0.58.5(vite@5.1.2) + '@unocss/astro': 0.58.5(vite@5.1.3) '@unocss/cli': 0.58.5 '@unocss/core': 0.58.5 '@unocss/extractor-arbitrary-variants': 0.58.5 @@ -7350,8 +7460,8 @@ packages: '@unocss/transformer-compile-class': 0.58.5 '@unocss/transformer-directives': 0.58.5 '@unocss/transformer-variant-group': 0.58.5 - '@unocss/vite': 0.58.5(vite@5.1.2) - vite: 5.1.2(sass@1.70.0) + '@unocss/vite': 0.58.5(vite@5.1.3) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - postcss - rollup @@ -7422,8 +7532,8 @@ packages: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - /vite-node@1.2.2: - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + /vite-node@1.3.0(@types/node@20.11.19): + resolution: {integrity: sha512-D/oiDVBw75XMnjAXne/4feCkCEwcbr2SU1bjAhCcfI5Bq3VoOHji8/wCPAfUkDIeohJ5nSZ39fNxM3dNZ6OBOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -7431,28 +7541,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.2(sass@1.70.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@1.2.2(@types/node@20.11.18): - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.1.2(@types/node@20.11.18) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - '@types/node' - less @@ -7475,12 +7564,12 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.2(typescript@5.3.3) - vite: 5.1.2(@types/node@20.11.18) + vite: 5.1.2(@types/node@20.11.19) transitivePeerDependencies: - supports-color - typescript - /vite@5.1.2(@types/node@20.11.18): + /vite@5.1.2(@types/node@20.11.19): resolution: {integrity: sha512-uwiFebQbTWRIGbCaTEBVAfKqgqKNKMJ2uPXsXeLIZxM8MVMjoS3j0cG8NrPxdDIadaWnPSjrkLWffLSC+uiP3Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -7508,7 +7597,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.18 + '@types/node': 20.11.19 esbuild: 0.19.12 postcss: 8.4.35 rollup: 4.11.0 @@ -7550,6 +7639,41 @@ packages: optionalDependencies: fsevents: 2.3.3 + /vite@5.1.3(@types/node@20.11.19): + resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.19 + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + optionalDependencies: + fsevents: 2.3.3 + /vitefu@0.2.5(vite@5.1.2): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: @@ -7558,29 +7682,29 @@ packages: vite: optional: true dependencies: - vite: 5.1.2(@types/node@20.11.18) + vite: 5.1.2(@types/node@20.11.19) - /vitest-fetch-mock@0.2.2(vitest@1.2.2): + /vitest-fetch-mock@0.2.2(vitest@1.3.0): resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} engines: {node: '>=14.14.0'} peerDependencies: vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.8 - vitest: 1.2.2(@vitest/ui@1.2.2) + vitest: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) transitivePeerDependencies: - encoding dev: true - /vitest@1.2.2(@types/node@20.11.18)(@vitest/ui@1.2.2): - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + /vitest@1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0): + resolution: {integrity: sha512-V9qb276J1jjSx9xb75T2VoYXdO1UKi+qfflY7V7w93jzX7oA/+RtYE6TcifxksxsZvygSSMwu2Uw6di7yqDMwg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 + '@vitest/browser': 1.3.0 + '@vitest/ui': 1.3.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -7597,15 +7721,14 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.18 - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/ui': 1.2.2(vitest@1.2.2) - '@vitest/utils': 1.2.2 + '@types/node': 20.11.19 + '@vitest/expect': 1.3.0 + '@vitest/runner': 1.3.0 + '@vitest/snapshot': 1.3.0 + '@vitest/spy': 1.3.0 + '@vitest/ui': 1.3.0(vitest@1.3.0) + '@vitest/utils': 1.3.0 acorn-walk: 8.3.2 - cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 @@ -7614,68 +7737,11 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 1.3.0 + strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.2(@types/node@20.11.18) - vite-node: 1.2.2(@types/node@20.11.18) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest@1.2.2(@vitest/ui@1.2.2): - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/ui': 1.2.2(vitest@1.2.2) - '@vitest/utils': 1.2.2 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.7 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.2(sass@1.70.0) - vite-node: 1.2.2 + vite: 5.1.3(@types/node@20.11.19) + vite-node: 1.3.0(@types/node@20.11.19) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 865aecb8455100013152755a1ceb3749534655e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:18:01 +0000 Subject: [PATCH 2/6] Add changeset for dependabot updates Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/curly-weeks-deliver.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changeset/curly-weeks-deliver.md diff --git a/.changeset/curly-weeks-deliver.md b/.changeset/curly-weeks-deliver.md new file mode 100644 index 00000000..a845151c --- /dev/null +++ b/.changeset/curly-weeks-deliver.md @@ -0,0 +1,2 @@ +--- +--- From cfcefa5d34798355349029d0f36a77614761985f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 00:11:45 +0000 Subject: [PATCH 3/6] Bump the prod-dependencies group with 4 updates Bumps the prod-dependencies group with 4 updates: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro), [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite), [astro-seo](https://github.com/jonasmerlin/astro-seo) and [sass](https://github.com/sass/dart-sass). Updates `astro` from 4.3.7 to 4.4.0 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/astro@4.4.0/packages/astro) Updates `vite` from 5.1.2 to 5.1.3 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.1.3/packages/vite) Updates `astro-seo` from 0.8.0 to 0.8.2 - [Release notes](https://github.com/jonasmerlin/astro-seo/releases) - [Changelog](https://github.com/jonasmerlin/astro-seo/blob/main/CHANGELOG.md) - [Commits](https://github.com/jonasmerlin/astro-seo/compare/v0.8.0...v0.8.2) Updates `sass` from 1.70.0 to 1.71.0 - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.70.0...1.71.0) --- updated-dependencies: - dependency-name: astro dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-dependencies - dependency-name: vite dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies - dependency-name: astro-seo dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-dependencies ... Signed-off-by: dependabot[bot] --- .../astro-ghostcms-catppuccin/package.json | 2 +- .../astro-ghostcms-rendercontent/package.json | 2 +- .../astro-ghostcms-theme-default/package.json | 2 +- packages/astro-ghostcms/package.json | 4 +- packages/create-astro-ghostcms/package.json | 2 +- playground/package.json | 2 +- pnpm-lock.yaml | 540 +++++++++--------- 7 files changed, 278 insertions(+), 276 deletions(-) diff --git a/packages/astro-ghostcms-catppuccin/package.json b/packages/astro-ghostcms-catppuccin/package.json index e6004906..da59be3e 100644 --- a/packages/astro-ghostcms-catppuccin/package.json +++ b/packages/astro-ghostcms-catppuccin/package.json @@ -63,6 +63,6 @@ "@tailwindcss/typography": "^0.5.10", "tailwindcss": "^3.3.5", "astro-navbar": "^2.3.1", - "astro-seo": "^0.8.0" + "astro-seo": "^0.8.2" } } diff --git a/packages/astro-ghostcms-rendercontent/package.json b/packages/astro-ghostcms-rendercontent/package.json index cdd3d990..36784f0a 100644 --- a/packages/astro-ghostcms-rendercontent/package.json +++ b/packages/astro-ghostcms-rendercontent/package.json @@ -42,6 +42,6 @@ "ultrahtml": "^1.5.2" }, "devDependencies": { - "astro": "4.3.7" + "astro": "4.4.0" } } diff --git a/packages/astro-ghostcms-theme-default/package.json b/packages/astro-ghostcms-theme-default/package.json index b37f1d45..564b4a19 100644 --- a/packages/astro-ghostcms-theme-default/package.json +++ b/packages/astro-ghostcms-theme-default/package.json @@ -52,6 +52,6 @@ "dependencies": { "@matthiesenxyz/astro-ghostcms": "^3.2.7", "astro-font": "^0.0.77", - "sass": "^1.70.0" + "sass": "^1.71.0" } } diff --git a/packages/astro-ghostcms/package.json b/packages/astro-ghostcms/package.json index 91604793..bc5dc995 100644 --- a/packages/astro-ghostcms/package.json +++ b/packages/astro-ghostcms/package.json @@ -98,13 +98,13 @@ "@astrojs/sitemap": "^3.0.5", "@resvg/resvg-js": "^2.6.0", "@ts-ghost/core-api": "^5.1.2", - "astro": "^4.3.7", + "astro": "^4.4.0", "astro-robots-txt": "^1.0.0", "fs-extra": "^11.1.0", "package-json": "9.0.0", "satori": "^0.10.11", "satori-html": "^0.3.2", - "vite": "^5.1.2", + "vite": "^5.1.3", "vite-tsconfig-paths": "^4.2.2", "zod": "^3.22.4" } diff --git a/packages/create-astro-ghostcms/package.json b/packages/create-astro-ghostcms/package.json index 7c6fcfb7..6018cc74 100644 --- a/packages/create-astro-ghostcms/package.json +++ b/packages/create-astro-ghostcms/package.json @@ -55,7 +55,7 @@ "prettier": "^3.2.5", "typescript": "^5.3.3", "vitest": "^1.3.0", - "vite": "^5.1.2", + "vite": "^5.1.3", "vite-tsconfig-paths": "^4.2.2" }, "publishConfig": { diff --git a/playground/package.json b/playground/package.json index f173b16b..e78563f4 100644 --- a/playground/package.json +++ b/playground/package.json @@ -11,7 +11,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.3.7", + "astro": "^4.4.0", "@matthiesenxyz/astro-ghostcms-theme-default": "workspace:*", "@matthiesenxyz/astro-ghostcms-catppuccin": "workspace:*", "@matthiesenxyz/astro-ghostcms-brutalbyelian": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc0f074c..836e7f73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 1.3.0(vitest@1.3.0) vitest: specifier: ^1.3.0 - version: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) + version: 1.3.0(@vitest/ui@1.3.0) vitest-fetch-mock: specifier: ^0.2.2 version: 0.2.2(vitest@1.3.0) @@ -42,8 +42,8 @@ importers: specifier: ^5.1.2 version: 5.1.2 astro: - specifier: ^4.3.7 - version: 4.3.7(@types/node@20.11.19)(typescript@5.3.3) + specifier: ^4.4.0 + version: 4.4.0(@types/node@20.11.19)(typescript@5.3.3) astro-robots-txt: specifier: ^1.0.0 version: 1.0.0 @@ -60,11 +60,11 @@ importers: specifier: ^0.3.2 version: 0.3.2 vite: - specifier: ^5.1.2 - version: 5.1.2(@types/node@20.11.19) + specifier: ^5.1.3 + version: 5.1.3(@types/node@20.11.19) vite-tsconfig-paths: specifier: ^4.2.2 - version: 4.3.1(typescript@5.3.3)(vite@5.1.2) + version: 4.3.1(typescript@5.3.3)(vite@5.1.3) zod: specifier: ^3.22.4 version: 3.22.4 @@ -140,7 +140,7 @@ importers: version: 0.58.5 astro: specifier: ^4.2.0 - version: 4.3.7(sass@1.70.0)(typescript@5.3.3) + version: 4.3.7(sass@1.71.0)(typescript@5.3.3) astro-font: specifier: ^0.0.77 version: 0.0.77 @@ -192,13 +192,13 @@ importers: version: 0.5.10(tailwindcss@3.4.1) astro: specifier: ^4.2.1 - version: 4.3.7(sass@1.70.0)(typescript@5.3.3) + version: 4.3.7(sass@1.71.0)(typescript@5.3.3) astro-navbar: specifier: ^2.3.1 version: 2.3.1 astro-seo: - specifier: ^0.8.0 - version: 0.8.0 + specifier: ^0.8.2 + version: 0.8.2(typescript@5.3.3) tailwindcss: specifier: ^3.3.5 version: 3.4.1 @@ -213,8 +213,8 @@ importers: version: 1.5.2 devDependencies: astro: - specifier: 4.3.7 - version: 4.3.7(sass@1.70.0)(typescript@5.3.3) + specifier: 4.4.0 + version: 4.4.0(typescript@5.3.3) packages/astro-ghostcms-theme-default: dependencies: @@ -223,13 +223,13 @@ importers: version: link:../astro-ghostcms astro: specifier: ^4.2.1 - version: 4.3.7(sass@1.70.0)(typescript@5.3.3) + version: 4.3.7(sass@1.71.0)(typescript@5.3.3) astro-font: specifier: ^0.0.77 version: 0.0.77 sass: - specifier: ^1.70.0 - version: 1.70.0 + specifier: ^1.71.0 + version: 1.71.0 devDependencies: '@astrojs/check': specifier: ^0.5.4 @@ -293,11 +293,11 @@ importers: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.1.2 - version: 5.1.2(@types/node@20.11.19) + specifier: ^5.1.3 + version: 5.1.3(@types/node@20.11.19) vite-tsconfig-paths: specifier: ^4.2.2 - version: 4.3.1(typescript@5.3.3)(vite@5.1.2) + version: 4.3.1(typescript@5.3.3)(vite@5.1.3) vitest: specifier: ^1.3.0 version: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) @@ -308,7 +308,7 @@ importers: dependencies: '@astrojs/tailwind': specifier: ^5.1.0 - version: 5.1.0(astro@4.3.7)(tailwindcss@3.4.1) + version: 5.1.0(astro@4.4.0)(tailwindcss@3.4.1) '@matthiesenxyz/astro-ghostcms': specifier: workspace:* version: link:../packages/astro-ghostcms @@ -325,8 +325,8 @@ importers: specifier: ^0.58.5 version: 0.58.5(vite@5.1.3) astro: - specifier: ^4.3.7 - version: 4.3.7(sass@1.70.0)(typescript@5.3.3) + specifier: ^4.4.0 + version: 4.4.0(typescript@5.3.3) tailwindcss: specifier: ^3.3.5 version: 3.4.1 @@ -384,11 +384,9 @@ packages: transitivePeerDependencies: - prettier - prettier-plugin-astro - dev: true /@astrojs/compiler@1.8.2: resolution: {integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==} - dev: true /@astrojs/compiler@2.5.3: resolution: {integrity: sha512-jzj01BRv/fmo+9Mr2FhocywGzEYiyiP2GVHje1ziGNU6c97kwhYGsnvwMkHrncAy9T9Vi54cjaMK7UE4ClX4vA==} @@ -428,7 +426,6 @@ packages: vscode-uri: 3.0.8 transitivePeerDependencies: - typescript - dev: true /@astrojs/markdown-remark@4.2.1: resolution: {integrity: sha512-2RQBIwrq+2qPYtp99bH+eL5hfbK0BoxXla85lHsRpIX/IsGqFrPX6pXI2cbWPihBwGbKCdxS6uZNX2QerZWwpQ==} @@ -476,7 +473,22 @@ packages: astro: ^3.0.0 || ^4.0.0 tailwindcss: ^3.0.24 dependencies: - astro: 4.3.7(sass@1.70.0)(typescript@5.3.3) + astro: 4.3.7(sass@1.71.0)(typescript@5.3.3) + autoprefixer: 10.4.17(postcss@8.4.35) + postcss: 8.4.35 + postcss-load-config: 4.0.2(postcss@8.4.35) + tailwindcss: 3.4.1 + transitivePeerDependencies: + - ts-node + dev: false + + /@astrojs/tailwind@5.1.0(astro@4.4.0)(tailwindcss@3.4.1): + resolution: {integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==} + peerDependencies: + astro: ^3.0.0 || ^4.0.0 + tailwindcss: ^3.0.24 + dependencies: + astro: 4.4.0(typescript@5.3.3) autoprefixer: 10.4.17(postcss@8.4.35) postcss: 8.4.35 postcss-load-config: 4.0.2(postcss@8.4.35) @@ -1087,17 +1099,14 @@ packages: resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} dependencies: '@emmetio/scanner': 1.0.4 - dev: true /@emmetio/css-abbreviation@2.1.8: resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} dependencies: '@emmetio/scanner': 1.0.4 - dev: true /@emmetio/scanner@1.0.4: resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - dev: true /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} @@ -1434,6 +1443,9 @@ packages: globby: 11.1.0 read-yaml-file: 1.1.0 + /@medv/finder@3.1.0: + resolution: {integrity: sha512-ojkXjR3K0Zz3jnCR80tqPL+0yvbZk/lEodb6RIVjLz7W8RVA2wrw8ym/CzCpXO9SYVUIKHFUpc7jvf8UKfIM3w==} + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1627,13 +1639,6 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 - /@rollup/rollup-android-arm-eabi@4.11.0: - resolution: {integrity: sha512-BV+u2QSfK3i1o6FucqJh5IK9cjAU6icjFFhvknzFgu472jzl0bBojfDAkJLBEsHFMo+YZg6rthBvBBt8z12IBQ==} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - /@rollup/rollup-android-arm-eabi@4.12.0: resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} cpu: [arm] @@ -1641,13 +1646,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.11.0: - resolution: {integrity: sha512-0ij3iw7sT5jbcdXofWO2NqDNjSVVsf6itcAkV2I6Xsq4+6wjW1A8rViVB67TfBEan7PV2kbLzT8rhOVWLI2YXw==} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@rollup/rollup-android-arm64@4.12.0: resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} cpu: [arm64] @@ -1655,13 +1653,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.11.0: - resolution: {integrity: sha512-yPLs6RbbBMupArf6qv1UDk6dzZvlH66z6NLYEwqTU0VHtss1wkI4UYeeMS7TVj5QRVvaNAWYKP0TD/MOeZ76Zg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@rollup/rollup-darwin-arm64@4.12.0: resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} cpu: [arm64] @@ -1669,13 +1660,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.11.0: - resolution: {integrity: sha512-OvqIgwaGAwnASzXaZEeoJY3RltOFg+WUbdkdfoluh2iqatd090UeOG3A/h0wNZmE93dDew9tAtXgm3/+U/B6bw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - /@rollup/rollup-darwin-x64@4.12.0: resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} cpu: [x64] @@ -1683,13 +1667,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.11.0: - resolution: {integrity: sha512-X17s4hZK3QbRmdAuLd2EE+qwwxL8JxyVupEqAkxKPa/IgX49ZO+vf0ka69gIKsaYeo6c1CuwY3k8trfDtZ9dFg==} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.12.0: resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} cpu: [arm] @@ -1697,13 +1674,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.11.0: - resolution: {integrity: sha512-673Lu9EJwxVB9NfYeA4AdNu0FOHz7g9t6N1DmT7bZPn1u6bTF+oZjj+fuxUcrfxWXE0r2jxl5QYMa9cUOj9NFg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.12.0: resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} cpu: [arm64] @@ -1711,13 +1681,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.11.0: - resolution: {integrity: sha512-yFW2msTAQNpPJaMmh2NpRalr1KXI7ZUjlN6dY/FhWlOclMrZezm5GIhy3cP4Ts2rIAC+IPLAjNibjp1BsxCVGg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.12.0: resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} cpu: [arm64] @@ -1725,13 +1688,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.11.0: - resolution: {integrity: sha512-kKT9XIuhbvYgiA3cPAGntvrBgzhWkGpBMzuk1V12Xuoqg7CI41chye4HU0vLJnGf9MiZzfNh4I7StPeOzOWJfA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.12.0: resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} cpu: [riscv64] @@ -1739,13 +1695,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.11.0: - resolution: {integrity: sha512-6q4ESWlyTO+erp1PSCmASac+ixaDv11dBk1fqyIuvIUc/CmRAX2Zk+2qK1FGo5q7kyDcjHCFVwgGFCGIZGVwCA==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.12.0: resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} cpu: [x64] @@ -1753,13 +1702,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.11.0: - resolution: {integrity: sha512-vIAQUmXeMLmaDN78HSE4Kh6xqof2e3TJUKr+LPqXWU4NYNON0MDN9h2+t4KHrPAQNmU3w1GxBQ/n01PaWFwa5w==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@rollup/rollup-linux-x64-musl@4.12.0: resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} cpu: [x64] @@ -1767,13 +1709,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.11.0: - resolution: {integrity: sha512-LVXo9dDTGPr0nezMdqa1hK4JeoMZ02nstUxGYY/sMIDtTYlli1ZxTXBYAz3vzuuvKO4X6NBETciIh7N9+abT1g==} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.12.0: resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} cpu: [arm64] @@ -1781,13 +1716,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.11.0: - resolution: {integrity: sha512-xZVt6K70Gr3I7nUhug2dN6VRR1ibot3rXqXS3wo+8JP64t7djc3lBFyqO4GiVrhNaAIhUCJtwQ/20dr0h0thmQ==} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.12.0: resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} cpu: [ia32] @@ -1795,13 +1723,6 @@ packages: requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.11.0: - resolution: {integrity: sha512-f3I7h9oTg79UitEco9/2bzwdciYkWr8pITs3meSDSlr1TdvQ7IxkQaaYN2YqZXX5uZhiYL+VuYDmHwNzhx+HOg==} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.12.0: resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} cpu: [x64] @@ -2148,7 +2069,7 @@ packages: '@unocss/core': 0.58.5 '@unocss/reset': 0.58.5 '@unocss/vite': 0.58.5(vite@5.1.3) - vite: 5.1.3(@types/node@20.11.19) + vite: 5.1.3(sass@1.71.0) transitivePeerDependencies: - rollup @@ -2323,7 +2244,7 @@ packages: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.7 - vite: 5.1.3(@types/node@20.11.19) + vite: 5.1.3(sass@1.71.0) transitivePeerDependencies: - rollup @@ -2369,7 +2290,7 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 sirv: 2.0.4 - vitest: 1.3.0(@types/node@20.11.19)(@vitest/ui@1.3.0) + vitest: 1.3.0(@vitest/ui@1.3.0) dev: true /@vitest/utils@1.3.0: @@ -2392,13 +2313,11 @@ packages: typescript: 5.3.3 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: true /@volar/language-core@2.0.4: resolution: {integrity: sha512-VhC8i03P0x9LKGLTBi81xNTNWm40yxQ/Iba8IpH+LFr+Yb7c/D7fF90Cvf31MzPDM4G5rjIOlCfs+eQKPBkwQw==} dependencies: '@volar/source-map': 2.0.4 - dev: true /@volar/language-server@2.0.4: resolution: {integrity: sha512-VnljhooQjT6RhmvwwJK9+3YYs2ovFmav4IVNHiQgnTMfiOiyABzcghwvJrJrI39rJDI6LNOWF7BYUJq7K07BKQ==} @@ -2414,7 +2333,6 @@ packages: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: true /@volar/language-service@2.0.4: resolution: {integrity: sha512-DoanyU9I9Nl85lUytDl8jgyk+nrUDR5CFNVMrxWXGXclP4WTqBayBgSFAeF1L/5AwP3MywmWoK4GLAEVvl8D+Q==} @@ -2423,27 +2341,23 @@ packages: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: true /@volar/snapshot-document@2.0.4: resolution: {integrity: sha512-YzgdmvpdRFxiBFCOVWga67naAtbPtKmPaFtGnmxWx+KXrjGkpUXT/2tzeKn5FLdtoYV+DRTdpMdP/45ArnVwZQ==} dependencies: vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.11 - dev: true /@volar/source-map@2.0.4: resolution: {integrity: sha512-BbxUinEMoJZqrHsSj1aBa0boCBnN3BoXnf7j9IBwjxosxGXOhCvqmH2L9raJemadaKjeVR8ZQLhV7AOhyoHt/Q==} dependencies: muggle-string: 0.4.1 - dev: true /@volar/typescript@2.0.4: resolution: {integrity: sha512-KF7yh7GIo4iWuAQOKf/ONeFHdQA+wFriitW8LtGZB4iOOT6MdlRlYNsRL8do7XxmXvsBKcs4jTMtGn+uZRwlWg==} dependencies: '@volar/language-core': 2.0.4 path-browserify: 1.0.1 - dev: true /@vscode/emmet-helper@2.9.2: resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} @@ -2453,15 +2367,12 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 - dev: true /@vscode/l10n@0.0.16: resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} - dev: true /@vscode/l10n@0.0.18: resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - dev: true /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -2679,11 +2590,17 @@ packages: zod: 3.22.4 dev: false - /astro-seo@0.8.0: - resolution: {integrity: sha512-7gq6lhibCM8FuzZIJlbLLWP5EJ9KL2/4XqeFrAg9O6ZK2xMFxJ5ubKf+a0VJwwTu8W8Xr421CmpiXu6Hq7n/7Q==} + /astro-seo@0.8.2(typescript@5.3.3): + resolution: {integrity: sha512-9hu+2y0QboOShFly9r+LcasfEOsWFhV5GKzsfnPG4kbNm9mqXuEP7YrUt7XrEA7rJOzC1DInOV+cIT+7zBasBQ==} + dependencies: + '@astrojs/check': 0.5.4(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.3.3) + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + - typescript dev: false - /astro@4.3.7(@types/node@20.11.19)(typescript@5.3.3): + /astro@4.3.7(sass@1.71.0)(typescript@5.3.3): resolution: {integrity: sha512-spdl+Ae6WZjQ0w8VBPq8ulN1hdN0m4EWvKG7ecgHjPQIHidMnzWJoZLEFEeKASqCGB1fDibqr7RDHoHkhZbp2Q==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true @@ -2748,8 +2665,8 @@ packages: tsconfck: 3.0.2(typescript@5.3.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.1.2(@types/node@20.11.19) - vitefu: 0.2.5(vite@5.1.2) + vite: 5.1.3(sass@1.71.0) + vitefu: 0.2.5(vite@5.1.3) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -2767,8 +2684,8 @@ packages: - typescript dev: false - /astro@4.3.7(sass@1.70.0)(typescript@5.3.3): - resolution: {integrity: sha512-spdl+Ae6WZjQ0w8VBPq8ulN1hdN0m4EWvKG7ecgHjPQIHidMnzWJoZLEFEeKASqCGB1fDibqr7RDHoHkhZbp2Q==} + /astro@4.4.0(@types/node@20.11.19)(typescript@5.3.3): + resolution: {integrity: sha512-JAsMrm1Z6W4Iqg9Q7LW/6lCXrqa4jndEOlR/yu7NGNP0BrPwSM8i4+yzya6hxgsNvyyVK8ywthaNhFmqd8Z+cg==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: @@ -2782,6 +2699,7 @@ packages: '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 + '@medv/finder': 3.1.0 '@types/babel__core': 7.20.5 acorn: 8.11.3 aria-query: 5.3.0 @@ -2819,7 +2737,6 @@ packages: p-queue: 8.0.1 path-to-regexp: 6.2.1 preferred-pm: 3.1.2 - probe-image-size: 7.2.3 prompts: 2.4.2 rehype: 13.0.1 resolve: 1.22.8 @@ -2832,8 +2749,92 @@ packages: tsconfck: 3.0.2(typescript@5.3.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.1.2(sass@1.70.0) - vitefu: 0.2.5(vite@5.1.2) + vite: 5.1.3(@types/node@20.11.19) + vitefu: 0.2.5(vite@5.1.3) + which-pm: 2.1.1 + yargs-parser: 21.1.1 + zod: 3.22.4 + optionalDependencies: + sharp: 0.32.6 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + dev: false + + /astro@4.4.0(typescript@5.3.3): + resolution: {integrity: sha512-JAsMrm1Z6W4Iqg9Q7LW/6lCXrqa4jndEOlR/yu7NGNP0BrPwSM8i4+yzya6hxgsNvyyVK8ywthaNhFmqd8Z+cg==} + engines: {node: '>=18.14.1', npm: '>=6.14.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 2.5.3 + '@astrojs/internal-helpers': 0.2.1 + '@astrojs/markdown-remark': 4.2.1 + '@astrojs/telemetry': 3.0.4 + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + '@medv/finder': 3.1.0 + '@types/babel__core': 7.20.5 + acorn: 8.11.3 + aria-query: 5.3.0 + axobject-query: 4.0.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.0 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.4 + deterministic-object-hash: 2.0.2 + devalue: 4.3.2 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.4.1 + esbuild: 0.19.12 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.0 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.7 + mdast-util-to-hast: 13.0.2 + mime: 3.0.0 + ora: 7.0.1 + p-limit: 5.0.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.1 + preferred-pm: 3.1.2 + prompts: 2.4.2 + rehype: 13.0.1 + resolve: 1.22.8 + semver: 7.6.0 + server-destroy: 1.0.1 + shikiji: 0.9.19 + shikiji-core: 0.9.19 + string-width: 7.1.0 + strip-ansi: 7.1.0 + tsconfck: 3.0.2(typescript@5.3.3) + unist-util-visit: 5.0.0 + vfile: 6.0.1 + vite: 5.1.3(sass@1.71.0) + vitefu: 0.2.5(vite@5.1.3) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -3376,6 +3377,7 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: false /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -3430,6 +3432,7 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + requiresBuild: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -3549,7 +3552,6 @@ packages: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - dev: true /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -4942,7 +4944,6 @@ packages: /jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - dev: true /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} @@ -5530,6 +5531,7 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + requiresBuild: true /mimic-response@4.0.0: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} @@ -5591,6 +5593,7 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -5600,7 +5603,6 @@ packages: /muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - dev: true /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -5634,6 +5636,7 @@ packages: sax: 1.3.0 transitivePeerDependencies: - supports-color + dev: false /nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} @@ -5936,7 +5939,6 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -6134,7 +6136,6 @@ packages: '@astrojs/compiler': 1.8.2 prettier: 3.2.5 sass-formatter: 0.7.9 - dev: true /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} @@ -6145,7 +6146,6 @@ packages: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true - dev: true /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} @@ -6168,6 +6168,7 @@ packages: stream-parser: 0.3.1 transitivePeerDependencies: - supports-color + dev: false /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -6398,7 +6399,6 @@ packages: /request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - dev: true /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -6488,28 +6488,6 @@ packages: glob: 7.2.3 dev: true - /rollup@4.11.0: - resolution: {integrity: sha512-2xIbaXDXjf3u2tajvA5xROpib7eegJ9Y/uPlSFhXLNpK9ampCczXAhLEb5yLzJyG3LAdI1NWtNjDXiLyniNdjQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.11.0 - '@rollup/rollup-android-arm64': 4.11.0 - '@rollup/rollup-darwin-arm64': 4.11.0 - '@rollup/rollup-darwin-x64': 4.11.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.11.0 - '@rollup/rollup-linux-arm64-gnu': 4.11.0 - '@rollup/rollup-linux-arm64-musl': 4.11.0 - '@rollup/rollup-linux-riscv64-gnu': 4.11.0 - '@rollup/rollup-linux-x64-gnu': 4.11.0 - '@rollup/rollup-linux-x64-musl': 4.11.0 - '@rollup/rollup-win32-arm64-msvc': 4.11.0 - '@rollup/rollup-win32-ia32-msvc': 4.11.0 - '@rollup/rollup-win32-x64-msvc': 4.11.0 - fsevents: 2.3.3 - /rollup@4.12.0: resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -6539,7 +6517,6 @@ packages: /s.color@0.0.15: resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - dev: true /safe-array-concat@1.1.0: resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} @@ -6568,10 +6545,9 @@ packages: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} dependencies: suf-log: 2.5.3 - dev: true - /sass@1.70.0: - resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==} + /sass@1.71.0: + resolution: {integrity: sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -6603,6 +6579,7 @@ packages: /sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -6827,6 +6804,7 @@ packages: debug: 2.6.9 transitivePeerDependencies: - supports-color + dev: false /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} @@ -6949,6 +6927,7 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + requiresBuild: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -6983,7 +6962,6 @@ packages: resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} dependencies: s.color: 0.0.15 - dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -7287,13 +7265,11 @@ packages: /typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} - dev: true /typescript-auto-import-cache@0.3.2: resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} dependencies: semver: 7.6.0 - dev: true /typescript@5.3.3: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} @@ -7461,7 +7437,7 @@ packages: '@unocss/transformer-directives': 0.58.5 '@unocss/transformer-variant-group': 0.58.5 '@unocss/vite': 0.58.5(vite@5.1.3) - vite: 5.1.3(@types/node@20.11.19) + vite: 5.1.3(sass@1.71.0) transitivePeerDependencies: - postcss - rollup @@ -7532,6 +7508,27 @@ packages: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 + /vite-node@1.3.0: + resolution: {integrity: sha512-D/oiDVBw75XMnjAXne/4feCkCEwcbr2SU1bjAhCcfI5Bq3VoOHji8/wCPAfUkDIeohJ5nSZ39fNxM3dNZ6OBOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.3(sass@1.71.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vite-node@1.3.0(@types/node@20.11.19): resolution: {integrity: sha512-D/oiDVBw75XMnjAXne/4feCkCEwcbr2SU1bjAhCcfI5Bq3VoOHji8/wCPAfUkDIeohJ5nSZ39fNxM3dNZ6OBOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -7553,7 +7550,7 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.1.2): + /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.1.3): resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' @@ -7564,81 +7561,11 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.2(typescript@5.3.3) - vite: 5.1.2(@types/node@20.11.19) + vite: 5.1.3(@types/node@20.11.19) transitivePeerDependencies: - supports-color - typescript - /vite@5.1.2(@types/node@20.11.19): - resolution: {integrity: sha512-uwiFebQbTWRIGbCaTEBVAfKqgqKNKMJ2uPXsXeLIZxM8MVMjoS3j0cG8NrPxdDIadaWnPSjrkLWffLSC+uiP3Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.11.19 - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.11.0 - optionalDependencies: - fsevents: 2.3.3 - - /vite@5.1.2(sass@1.70.0): - resolution: {integrity: sha512-uwiFebQbTWRIGbCaTEBVAfKqgqKNKMJ2uPXsXeLIZxM8MVMjoS3j0cG8NrPxdDIadaWnPSjrkLWffLSC+uiP3Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.11.0 - sass: 1.70.0 - optionalDependencies: - fsevents: 2.3.3 - /vite@5.1.3(@types/node@20.11.19): resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} engines: {node: ^18.0.0 || >=20.0.0} @@ -7674,7 +7601,42 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@5.1.2): + /vite@5.1.3(sass@1.71.0): + resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + sass: 1.71.0 + optionalDependencies: + fsevents: 2.3.3 + + /vitefu@0.2.5(vite@5.1.3): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -7682,7 +7644,7 @@ packages: vite: optional: true dependencies: - vite: 5.1.2(@types/node@20.11.19) + vite: 5.1.3(@types/node@20.11.19) /vitest-fetch-mock@0.2.2(vitest@1.3.0): resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} @@ -7753,6 +7715,62 @@ packages: - terser dev: true + /vitest@1.3.0(@vitest/ui@1.3.0): + resolution: {integrity: sha512-V9qb276J1jjSx9xb75T2VoYXdO1UKi+qfflY7V7w93jzX7oA/+RtYE6TcifxksxsZvygSSMwu2Uw6di7yqDMwg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.0 + '@vitest/ui': 1.3.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 1.3.0 + '@vitest/runner': 1.3.0 + '@vitest/snapshot': 1.3.0 + '@vitest/spy': 1.3.0 + '@vitest/ui': 1.3.0(vitest@1.3.0) + '@vitest/utils': 1.3.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.7 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.3(sass@1.71.0) + vite-node: 1.3.0 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /volar-service-css@0.0.29(@volar/language-service@2.0.4): resolution: {integrity: sha512-2kNdgEYEiLeeer3wkagNBVDPa3Zj7mBDeM7D3iYmBXA0LCwd2tQL3eASzcDW9Gvac1g478UtptK468GxzUAEcA==} peerDependencies: @@ -7764,7 +7782,6 @@ packages: '@volar/language-service': 2.0.4 vscode-css-languageservice: 6.2.12 vscode-uri: 3.0.8 - dev: true /volar-service-emmet@0.0.29(@volar/language-service@2.0.4): resolution: {integrity: sha512-sXRMfQ970lpOQxUcKH9B4DqE7FCNhPy6V4m3gw+kgH17mADQ2rdL63b8osXFy5bnAMBcsXRhtJXJPmh/LgZXEw==} @@ -7777,7 +7794,6 @@ packages: '@volar/language-service': 2.0.4 '@vscode/emmet-helper': 2.9.2 volar-service-html: 0.0.29(@volar/language-service@2.0.4) - dev: true /volar-service-html@0.0.29(@volar/language-service@2.0.4): resolution: {integrity: sha512-ctTSU46KCLxcaR53mAod2wBWSEIXGdXdejqHEDPSX33H5rA2X89zyYEpuk9BOVzIHG8G8rggVXCGnGaXxmYrCw==} @@ -7790,7 +7806,6 @@ packages: '@volar/language-service': 2.0.4 vscode-html-languageservice: 5.1.2 vscode-uri: 3.0.8 - dev: true /volar-service-prettier@0.0.29(@volar/language-service@2.0.4)(prettier@3.2.5): resolution: {integrity: sha512-GxcDKfiVv3fc4XUtUOkQpX0QlFjWppRCVWIBp751gOKJwDex142xMlbTxP9la9tollbmj2O/tVUrqqLDGQ+Lsg==} @@ -7806,7 +7821,6 @@ packages: '@volar/language-service': 2.0.4 prettier: 3.2.5 vscode-uri: 3.0.8 - dev: true /volar-service-typescript-twoslash-queries@0.0.29(@volar/language-service@2.0.4): resolution: {integrity: sha512-hdI8ZO1Wc/I5+iwKKnOfXW7ktpBe0qLoXz5+8viS6aV9gycKSAKAs6sayLTATQZcZ1EAESUqTqGS/vJOUgZOsg==} @@ -7817,7 +7831,6 @@ packages: optional: true dependencies: '@volar/language-service': 2.0.4 - dev: true /volar-service-typescript@0.0.29(@volar/language-service@2.0.4)(@volar/typescript@2.0.4): resolution: {integrity: sha512-ssBhGT0Wrh670NRTrLoikzoRbszd72jIa02IKbrfI9QIIONvygOmIJ9jSqj4jxHEWz/KSCgCEhCyR7hEH80kGg==} @@ -7836,7 +7849,6 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 vscode-uri: 3.0.8 - dev: true /vscode-css-languageservice@6.2.12: resolution: {integrity: sha512-PS9r7HgNjqzRl3v91sXpCyZPc8UDotNo6gntFNtGCKPhGA9Frk7g/VjX1Mbv3F00pn56D+rxrFzR9ep4cawOgA==} @@ -7845,7 +7857,6 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: true /vscode-html-languageservice@5.1.2: resolution: {integrity: sha512-wkWfEx/IIR3s2P5yD4aTGHiOb8IAzFxgkSt1uSC3itJ4oDAm23yG7o0L29JljUdnXDDgLafPAvhv8A2I/8riHw==} @@ -7854,46 +7865,37 @@ packages: vscode-languageserver-textdocument: 1.0.11 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - dev: true /vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} - dev: true /vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - dev: true /vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - dev: true /vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - dev: true /vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true dependencies: vscode-languageserver-protocol: 3.17.5 - dev: true /vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - dev: true /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - dev: true /vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - dev: true /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} From 1f850db9de5f8921108370382e63ef6a066ab3f7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 00:12:07 +0000 Subject: [PATCH 4/6] Add changeset for dependabot updates Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/curvy-ties-sing.md | 10 ++++++++++ .changeset/orange-singers-mix.md | 10 ++++++++++ .changeset/rare-experts-shake.md | 10 ++++++++++ .changeset/strange-singers-wink.md | 10 ++++++++++ .changeset/three-hotels-boil.md | 10 ++++++++++ 5 files changed, 50 insertions(+) create mode 100644 .changeset/curvy-ties-sing.md create mode 100644 .changeset/orange-singers-mix.md create mode 100644 .changeset/rare-experts-shake.md create mode 100644 .changeset/strange-singers-wink.md create mode 100644 .changeset/three-hotels-boil.md diff --git a/.changeset/curvy-ties-sing.md b/.changeset/curvy-ties-sing.md new file mode 100644 index 00000000..449fd32f --- /dev/null +++ b/.changeset/curvy-ties-sing.md @@ -0,0 +1,10 @@ +--- +"@matthiesenxyz/create-astro-ghostcms": patch +--- + +Bump dependencies: + +- astro from to +- vite from to +- astro-seo from to +- sass from to diff --git a/.changeset/orange-singers-mix.md b/.changeset/orange-singers-mix.md new file mode 100644 index 00000000..69624abb --- /dev/null +++ b/.changeset/orange-singers-mix.md @@ -0,0 +1,10 @@ +--- +"@matthiesenxyz/astro-ghostcms-catppuccin": patch +--- + +Bump dependencies: + +- astro from to +- vite from to +- astro-seo from to +- sass from to diff --git a/.changeset/rare-experts-shake.md b/.changeset/rare-experts-shake.md new file mode 100644 index 00000000..be3f484b --- /dev/null +++ b/.changeset/rare-experts-shake.md @@ -0,0 +1,10 @@ +--- +"@matthiesenxyz/astro-ghostcms": patch +--- + +Bump dependencies: + +- astro from to +- vite from to +- astro-seo from to +- sass from to diff --git a/.changeset/strange-singers-wink.md b/.changeset/strange-singers-wink.md new file mode 100644 index 00000000..157c1aa9 --- /dev/null +++ b/.changeset/strange-singers-wink.md @@ -0,0 +1,10 @@ +--- +"@matthiesenxyz/astro-ghostcms-theme-default": patch +--- + +Bump dependencies: + +- astro from to +- vite from to +- astro-seo from to +- sass from to diff --git a/.changeset/three-hotels-boil.md b/.changeset/three-hotels-boil.md new file mode 100644 index 00000000..b7c8c4f1 --- /dev/null +++ b/.changeset/three-hotels-boil.md @@ -0,0 +1,10 @@ +--- +"@matthiesenxyz/astro-ghostcms-rendercontent": patch +--- + +Bump dependencies: + +- astro from to +- vite from to +- astro-seo from to +- sass from to From 495429d1e1fe840272389da04484e6ac7eb659ca Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <30383579+Adammatthiesen@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:33:35 -0800 Subject: [PATCH 5/6] Update changeset-dependabot.yml --- .github/workflows/changeset-dependabot.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/changeset-dependabot.yml b/.github/workflows/changeset-dependabot.yml index 3e500c07..f26197e8 100644 --- a/.github/workflows/changeset-dependabot.yml +++ b/.github/workflows/changeset-dependabot.yml @@ -1,6 +1,8 @@ name: "Changesets: Build Changesets for Dependabot" -on: pull_request +#on: pull_request +on: + workflow_dispatch: permissions: contents: write From 1c1c3cf1659377ee0c7950c696913239913de1ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 20 Feb 2024 00:35:26 +0000 Subject: [PATCH 6/6] chore: update versions --- .changeset/curly-weeks-deliver.md | 2 - .changeset/curvy-ties-sing.md | 10 - .changeset/orange-singers-mix.md | 10 - .changeset/rare-experts-shake.md | 10 - .changeset/strange-singers-wink.md | 10 - .changeset/three-hotels-boil.md | 10 - ...e44a70ce8686bacc572827a2c73a669513075ec5d9 | 943 + ...1a955e337d8c7e1e996811976c01bf09777565faa6 | 22 + ...43f39a49a2c709cc52d6e94ddc2011f87f83576da0 | 33 + ...c0cb4fe28dd44e1cc59ad8cffa25533-index.json | 1 + ...7723f0034fea600943fa7e5d4e73224ac1fc4262e8 | 30 + ...ab408a20fcb6b6fdde25691cd16dfbd7d919b9708f | 16 + ...d0d30926c5e1f3938ba3942a21bdcb20292dcc6f2b | 43 + ...60ce1467d0db928e3b186e19c666f0a302e21848bb | 56 + ...212799d2677f5f37133774d67a38138-index.json | 1 + ...81bcebcf1ecbd4258f7ed549259751493370896510 | 64 + ...26c4d8ff758975ad189471a127d49f3e327e205faf | 62 + ...a0afcf4d608d5346a3642800c26ea913337a97445c | 276 + ...0e31919c3a59452c233e98194d0842740cde252d2d | 37 + ...4d402413052c1d30cea4e64409a54e9199d579b300 | 2 + ...faad807f769c22fd1cc20464f3438b20cb91720578 | 46 + ...e94f647f4797c436a6f1e81d9b887848f518557cf9 | 253 + ...812a037acc3201627764105f570ec96843e88a1b0a | 21 + ...20c08d8887bcff5b3be0817bb2f4285d6de2d48be7 | 2 + ...8e360fd09d6e4714617041e10fc7134e89d44ed851 | 47 + ...5957b81e3efba5d3e399416b0670ee66e2697fa2d9 | 133 + ...b58691210a528f5124f66d8bcfe8226e0e96519920 | 2 + ...e2b50ee53ab5f1f275c41adc108554d8753e09d4a2 | 25 + ...783a5a9b3dfb4602c70d68dbb6f1bf3-index.json | 1 + ...7acc9caa35b0a10e2fb7c84c0fcd06dd64ff1ff213 | 2 + ...4be4e5535513a3de7090f859e4ff62246d85336096 | 179 + ...b03a4ac021e3d775923456dfd82d442af10cbd165f | 5 + ...c2b114d2462ab9c0c8c71222027189104556205be5 | 7 + ...6e69a98c4d241f14717eeb87f08fe6097da49ab327 | 33 + ...f5bcb23e43a08a43b305dcba2957f75407fa7e2bb0 | 308 + ...39523fce639d508c0cf90dbd4978e6d484152e0050 | 4574 + ...f2c952bccb0b6168d8459aa77c67e72-index.json | 1 + ...23a1fbba7b6c4a6cbdee39f2d93931cb6ca0ddc12a | 57 + ...84f87d71d31547c82837982c73818a02caaaea914d | 26 + ...666859527ac2bb092af7830df2169158a09682566c | 678 + ...81001db6b8fcbc0e1783c9490f52f4fb5b5af93e8d | 12 + ...9f696d637fe817ab9cee624ef6cfe9125968568792 | 109 + ...4dc8f56d3eeefd502aee100d1f814e6de4d26e0e1c | 14 + ...dd9cdaa21527692fc82f38000a79d3ba2898aeadf2 | 2376 + ...a47ee3dc1d8bb82b2ddd7ae227e7e90e510047c2d2 | 333 + ...0a2ee40cb3f5ed11d499f9a604cb602eda5633e06c | 20 + ...d1f073d155a69670bf0b81d05fa53f97ba855e3e7b | 64 + ...f5c5013d040a1dbcc1fdb40bac28353-index.json | 1 + ...09df0185aa910795ac94862d3185eab4d7896b5d70 | 2 + ...efe247611c16161c087c1038ebf13716e629ba1294 | 4 + ...d341f7e65cabdcfd4fb928387a1e0572e5b46cae61 | 2 + ...d849e53b9faf51b0c6ccc96b38f3f7e21696eaf5d8 | 24 + ...da33e6c564d6574928a277d15a2a4756b677224355 | 2 + ...544fa3d02794ac8632a883e5a215188a1195696603 | 36 + ...822e7152089c51207e954301c899351a7fdae95754 | 17 + ...db7a45439ee6d339dd631e7839d7130bc1607feef5 | 38 + ...a1f754fa73595828138a08244364c45d9cbb34ae76 | 162 + ...2ca3e1dcdeec0b411aeec3f9b2fb2ea9b1cb2986eb | 1 + ...d75f0485c25b64c3c95927ffc88821110c37977d1b | 35 + ...0b5731a357432bfa237b966ba1742e6088252a614c | 12 + ...070375736810cf11a81cc5e056f53a996659da818a | 129 + ...60fee4914de66f8597863d171368cfc61f39d0a030 | 15 + ...526844c56f8c1dff6321ebcb2cde797d7010dde906 | 120 + ...aef3fc2b5e549ba6c9cb045f6135b13b0e6f183610 | 4867 + ...4bac9e0c6ce087d2d20431878b529f75c6ab50acdc | 21 + ...ddb74d7ed538bb563eb510025403c3c5c112e14920 | 99 + ...5cccdc131806238e2e027d4899fa18e1d46ac40877 | 465 + ...e8c3c571e0deded77f2600af8ee06a6f449828e9b5 | 66 + ...fe457d68385729d8014cacfcbda7eaf03f4e5108b4 | 573 + ...b5119e6fad3c652495660a500776b7bb79bd22a6fe | 323 + ...3c9c5295cc8fd8a9313704b9523f13b6ce6e2ed28a | 25 + ...72ac5b01dc32d110558e3bfca08a03118eb0477dc5 | 245 + ...d41060ca3c7fdac710710a633d8f924d82f5d719ec | 38 + ...5800b5033e8e30e6b57fb65c8ba642002537c953dd | 589 + ...795c91208e728809d494406ef5410d53065569b974 | 2 + ...b7fda4ff2227e1b1bff66d1ac8600a8151707f6dd0 | 252 + ...fd793cb387722a14580b71ec3d1cf1c6df5cd1b1aa | 20976 +++ ...855b65adfc34e7d607fb9c5a77b2c54-index.json | 1 + ...4e7e362b53c4d9dd5dd7a134aefd82083449c4ff2d | 75 + ...6d90ccc8fc0c624d74fc25199da0f3f054ce5095a8 | 148 + ...51ec5d8e22a32d2b76e99e54fa9f5a6085bf294d89 | 76 + ...7a979fe43d43f93649dec33f34777ac2d66932a19e | 14 + ...65749f5e16733ec445f11c85eb62227-index.json | 1 + ...fe128fd260305b75bd19eef81c0c97b-index.json | 1 + ...869204e9bf919f5f0998718088e06465b77575eb7c | 167 + ...b843331bbaaf636a4d5b349957be6357ac0dbbc59f | 26 + ...88995ccbd5f0aa5dcf44cdc2c392b8d820ee1d7420 | 126 + ...ba24d5ab21f95b5036abb0d7d094a529bf43349173 | 30 + ...67bfbd27b96937369c93214eb441baedfa85ce231f | 69 + ...9e047f38cf5b00be58c2a0d0f60c298f05f86862a5 | Bin 0 -> 2731200 bytes ...ae0f4d621adb6291b71db642bda5efaaa170a409e2 | 251 + ...52dcf74d8426d3f563ec06dcd61752236209235b04 | 25 + ...6db2b91fb3397c646f61f22f87336393a6035fc80b | 10 + ...5199673ea7e7ea6ad41895153cc2803c5c6591773b | 660 + ...6fca0492330bb6530e9d8bbcaa0ccc2-index.json | 1 + ...f261f899d3b626129d582c22999789f78666ed8d2d | 385 + ...77739512b6de60fa2b42fe39e20347f7ce54283310 | 105 + ...8fc06cc963b8aa0474a479ff62dc3e1bd936d5dcaf | 110 + ...add95aca879617e4d130347dada8c50e9c887c1a3a | 7646 + ...91ec3557c75bc10f5c6da6f97247d36fdc9f7a615b | 12 + ...d7688408625aed6cb925c55681861b74f2f2570f48 | 6 + ...5677dccdd3b8127f3d218bbf08177877cab3c3cf9a | 2 + ...4ddf48f7657cfdafc1bc68018eb80cc432303424c0 | 68202 +++++++++ ...81293f1fdabdbb01428701d40b28853d8161ffbf1b | 79 + ...afd5dff8879c2f11b4154919d4edf76828ec5946c5 | 11 + ...c549ea51fc3c5c6a7a7bc6be6a3f1b9ca37b6849e5 | 34 + ...ebedebb17aef2d0a94db61402ba9d01226264aac65 | 263 + ...31e7cb7863241f7b88d3433106c54a0abdd0e05680 | 100 + ...174580ec45d98c042bee7413d55bf13e0df63d4b35 | 61 + ...3d30f635be8b2b395242ce9c0872d65b2fb73c4248 | 7 + ...f6319680f054529d27b210f3038c1e0ee29037fa4c | 41 + ...677ee92f70812b37c0c5688718b8a8e2b6ebe96c68 | 143 + ...035cfc10e9f8d0a705e9e776010d692b48481eefd0 | 97 + ...5be4f0240973fb93546d0149d2239f7feeb29e49ff | 1005 + ...f5568db24872171435d5ca63506a6437d904b38abf | 45 + ...7fdaa8d20e8e73c1e4ef4b847b658d5cad9f02eb05 | 925 + ...e354b426aef5f15cdcfe7cd3e6375e27f81ad75446 | 168 + ...f0e90c5acd441aa3f954fa1598e432d2910f4c2275 | 94 + ...2848ef56c1448e80514ca3f0d5e96ad83a0e03f8ef | 54 + ...abcf4e2d50901f297be85a154de6d96e787702127e | 709 + ...ffb0e7e9b3074275eeaf107c34c0b55fdbaf4b5a96 | 49 + ...eb19cc99ac7e9364baa278df868c8b685c6369ac2f | 40 + ...cc3e2508cd9e1970a793a09a134ab3bcb41ebfa65a | 920 + ...d689b8c55fd28fdd25cc5b9e4ebc8414fdbea47cf1 | 2690 + ...8860df0b6b50f9f3e2fdcf67555f87202b49f3c144 | 60 + ...dfc7112499e8db2728ac2b03eedb92daaa38e74629 | 18 + ...c709388c6394a65d28e5c2a2a15a28ebaf81a95f3e | 2 + ...9183bcd8b5ac9a1125f42080c09b93bd27d3bb57b3 | 564 + ...d0b50f3fa41082932b5804c75526fc1c02feed1bf5 | 11 + ...fe59e1f868ec9b087decbcb94093c526ab7520a093 | 53 + ...0165cfe7612bf5fc65f7f3467619bd9259c3a21b88 | 2 + ...a9fd2975e1f33045a388f6cc3b641a3bbd897155e0 | 34 + ...a9b9b942ccb7996f670d14eaa5de2d6c07265f3ffa | 21 + ...e70f35b18c98a8bd6c147f1c62a54e30059654b363 | 62 + ...66272cbe5e4a919760f71badf4908b651f4bb123f6 | 439 + ...1fe1a237d66af5dd48d8e8602e5c228-index.json | 1 + ...d90d2cdceea63dea7e21ac43f2d4d69-index.json | 1 + ...244b309e056d7864c5586a8edfc76e12096d88b887 | 240 + ...ae8dc46c4a36685b1b9b77dbb0ec5ffeeeddbb2185 | 38 + ...4ebda8e13b77b69248b2437dd754c18e251e2bfb2b | 2161 + ...ce5f77b45177681b44862e09d9a2b1cec6f011baf0 | 15 + ...764c1a69c4dd483ae77581a9efcce1863b378df802 | 22 + ...1be94233f7aa812e54acefd4fc3e9b2464e187c4ef | 2 + ...92192ed65bb4502aff00c3e6f4626a3251dcd13bbd | 7 + ...5b63d934182c87b270c302e71b546c085624132967 | 2 + ...f78e93e4b5ce0f77e8e58eacdf6cf74296f7b9f180 | 3 + ...d5c19c2e07fbbee0573a96fd6436b2f82e760f9fec | 87 + ...05de458ba710cb6fb1bd1b1e15b9b937d45e6b5f37 | 12 + ...96138ac382b67a015f76058bafb82ccebb7523fcd5 | 285 + ...9db04d12dbd79dc315a0ee052b27450a972e3ee92b | 262 + ...d62cddf12cbf1a591af000908a16efcad6ffa8eea4 | 94 + ...aafc7832ac502b9dbdf5b41fea5d5e41ad6c63dfea | 192 + ...aa1670ce04a0d3079c8eca21d918cd76c11404d7af | 13 + ...bb4fbab0055174fd5750ab1ca65e4c22b8fb916867 | 1661 + ...bd17f0182420166f80c127486660277a0814894a7f | 562 + ...66cd1e41bc9cdf7a1b7d5b6ada968154c3b43a46bc | 96 + ...62ca648bc0cf6c80e7537811445f6c98a06eb9fe08 | 186 + ...0d948dedac777f62ae26233d8f4561270303f39e84 | 54 + ...7df7dc536cb562124b9bcde699bf939509852b4f7e | 36 + ...0276f9149da5113640b8ae699a6875656fa8824c71 | 11 + ...d95b249e8574a587aa5ee6411795c6cfc79d1e5b61 | 43 + ...4faccd39f95bc7738c4ffb95878eceb021ad29bea1 | 4771 + ...cd4f77c71f3c129842530fa12cfcb3b23834b92755 | 84 + ...40fc8c9728806af247204321a5eb18eb90acbb6652 | 43 + ...2659a197ab3a234ccc3c79ebabdfc966c29bb1c164 | 123 + ...4ea1e6ed20e9030dd332f87167d8241561567d203d | 158 + ...8c60da3eaebaca86db52e14ac7724d1c194173da41 | 13394 ++ ...76e3f3c7ce5c6b21503485d077bbde7ab33c24e6ec | 311 + ...ab5b5a519c7f6c8e92bb7a5c87414abcb25a103082 | 11 + ...cdebeda8e5cbd33cfb657a696297877b985bda35b3 | 148 + ...15508287154a5cee3bdff1429f20cdf-index.json | 1 + ...9a762987d5ed17d5c1544967446d9224a7e2f57f26 | 1273 + ...e610a12e0b44ad6f10cc2e02a673ddbd8735aeb12e | 10 + ...4cd4fa5031183579c58042ecf1d0dd4c6bf7e3bbdf | 82 + ...193efb8e99ea08b1f3669266697d07df62be09a9df | 1617 + ...5cb93e823d84faf3f84a53b6d4c2134d8618f1e1f9 | 35 + ...5b622bc55c190d4ffaa2d50dd7d714141a080b240f | 8 + ...d6a308d53caf0c8dc862164fe11c7fca283cceb235 | 19 + ...6b63ba28aa7f2d979fcbfd342b9e43dc32b1fb4cca | 119 + ...d3abf4d3353ca62769479682be3d6523e4f42828ce | 38 + ...6ce2cfeba0dd06240fb8cbb61cded5e0d55848a88e | 99 + ...32afdd2a697923ea5e8d1ba7defb56e834001200a7 | 2 + ...a775635352f559696507497d5d9db308af58601923 | 2 + ...2584d6ff89a74a84767d74ced1e23c1396009b148e | 95 + ...79f0cd5b5db5583fc57c7c2a26ef10259ff3f2c393 | 22 + ...856cf022b3547d90ad1cbcdea50cf40-index.json | 1 + ...242cdb95735617303bca837ee855a9089aa7865b53 | 60 + ...588bff1b4107164dc7a7e4a2ff34dbcf4a4428cdcc | 1531 + ...53006a9b786ae9dc776e9dbe0052401f79357d5a44 | 117436 +++++++++++++++ ...11069a0d4966490ad0b5eca437e9340bddf59c9fba | 29 + ...8fbad57a136724515de38eec48ab35feec5a176e24 | 2 + ...2269e406d14f8f81a8948503247da7ff13b03195f0 | 34 + ...0a041c24da0f333eb4c30386ed481fd-index.json | 1 + ...d637a48680373c9e2ebfe4e0df29245bac1d7c128d | 22 + ...37d84cfa93e3a3495151648740bbc81d62307af454 | 15 + ...07f1aef5098c05828d6947d76add65a880aaa695b5 | 123 + ...49cbe11e48166d328eb8186d48cf30965fbaebd984 | 109 + ...64b89d316a9b307a882520fdfc0c236f8f2aa2f2e0 | 30 + ...a5e6a7c77531c74faa7ba89a8a032cb7244cb87a36 | 36 + ...5061c28da7e5038779ef58685d8c7c142c7890edcf | 38 + ...56dd3f447aec10fbfbcb442abf052490e1d123c4e6 | 74 + ...3b58d111632744581aa17100f71b6161b0cdb8136c | 68 + ...bb843a54109adb8ea83b8f6ae7091677fb9c7993b9 | 35 + ...eb4dccb63301deb5aa416103a160bc889ef7d0f2ad | 124 + ...e9651f9f4b1f89f0160335b175bdf8ae38526a2234 | 229 + ...0da8b07bd5e5dc13485197ac31b9a8b7a4104a2eac | 371 + ...c2f5aec34665ed78a90cdb20592f5b69d4fa537e44 | 52 + ...92b1e78bdfd95f2d0daebece6ed58f4-index.json | 1 + ...a578ad7e39851d360c497ee3f5e0a65e55f6d0f36b | 723 + ...e71edf5083efd5e610ddc640d5d1946986c98880da | 4927 + ...2810a0206b4943a166b90cfe940965f69e47bb5da1 | 546 + ...5501c1f0fc2de8483120aba9876f2afbaacd038760 | 19 + ...10990fa950aca043919356859dc6b450b8a5e8affa | 194 + ...a14b4840d8bd6f59c43265d75cede009faee21d3d1 | 29 + ...4c8ba204ede349ef663d05bf71f2bb572a79be3302 | 22 + ...14017a91f3affadaad6e92fc0688089f75054da3a9 | 227 + ...dace7e4139c49769f42f5410798868df6181bc5438 | 416 + ...9d9f6ac245dad9dfa2fa4486bfafc98660aad38fcc | 4 + ...436863037fca056e71d1bdbf3243c6125cf7985136 | 388 + ...acb13063d0e18955dc144e7cff946dd66bce528a39 | 15 + ...5a92d2bf8663af9496e85fed459b5b49e96b5fdc65 | 26 + ...0499fdb0fd2b3c8c4097057e550f03b9e3b152dda0 | 196 + ...a4be79cf9164574b0423c381b10ace3e37cc54ef9d | 2 + ...f91121362e1fdd950631e9375bbdd99cebf9a78b78 | 954 + ...521e073634fc0b7075a399afdf58f10c153cd73944 | 144 + ...c261c52ade3af888d07b802daa97c5d021bbcc12de | 57 + ...680b331a5d45410f9501851c873ab0b459ebb8b45d | 17 + ...66016fc7260e00f5497ffcd1a7b1c219d53013c6c9 | 2 + ...eedd150269fbde8b2a543860cd56747e04a26b270c | 303 + ...38a2895feaee37bb733f6c885edd797981db432c68 | 85 + ...d38772fb7e54d0556afb4b9ef91f0466cac9ff4c68 | 8 + ...e4cf79ca70ba522da408b5fee034f5f77e61f9d5e2 | 1399 + ...e54f2f08189cdd22156af5fe1cd1ca512e0d8b7ede | 260 + ...68be7673ae06499ddca5382bbf5099664a61fb1bfd | 185 + ...f284a2390c85f4b52771f6825372756ab28a780567 | 100 + ...f43afd1c0d2893ca4e23ff7c8461a46ff0b142f915 | 2 + ...53b0b80948d9f0c8017b2ab1d37c56843882b-exec | 1763 + ...4004b74a0df0d3e82a24d5ad9ae94841de19b49045 | 3531 + ...2174156a4d9a3a6ab90d2beb52019b146eaa7da67a | 5 + ...3d09d41a89edab34b35ee61c0e85dcebb9be1a7927 | 199 + ...b4de61bd9618cc48a15a2b58ec831b1ae7f3a5d9b4 | 18 + ...26df29c055eb83d0d27ea2e5aaedd496bb88829250 | 2 + ...7173152b273a044d067d97e154280453479312d62c | 15 + ...f643071a19f1b8249e9038c46761f511df5d52ae00 | 47 + ...50a9f204b8cf0b25bb98d407a4ec11e6958aa97e60 | 16 + ...94af228c76fb22d67dbb05cea32fd0d-index.json | 1 + ...649736cf0f55f77ea7ec1f0dd2a5aa5-index.json | 1 + ...31dd7bf70e49de50d449e6f9ffcdee3728915fb0c3 | 21 + ...1357a59d9cbbc8eaba9baae311020c633026ec6c15 | 33 + ...318d42e9695abdaeb89a5fc708f0d4d51e59bcea33 | 20969 +++ ...4ecc2d43227395f9c213fbbcc16ac05-index.json | 1 + ...ffcfcfb51af05d95eae220eaaee2b520cb10a3f7cb | 89 + ...a946703ef90e0eaa036d3df3adcfcda2d54cd9859b | 1012 + ...8a27398d6935a62aab6e832a5a7331e75326ccdef6 | 3 + ...de633e30d416bbb0d0c71391d219513657f1498572 | 9 + ...8a6da5d307a88bd93e429b209ce83b45d472f4e71d | 2 + ...473ecb2f85ed3e3aff744fba7f75771542de19955f | 50 + ...56d8bab85f787c29ef1caafb6fd547a9f8db2ef7c0 | Bin 0 -> 2726936 bytes ...e9787e16d30bbe4cf7444dd4e47f12c6731a35f29e | 56 + ...c7d7e7e085e2cece90f81f57bb2c333a33c6f7ab63 | 1 + ...87b21712b84c95956773befd979980b-index.json | 1 + ...3a1a4c4ae2e4c7f6064eb248f4fbfe57e41bd742de | 26 + ...2a35a7608f6eefe2a085190bfd6e4a511d0b33395e | 69 + ...766fa8bd4036bf86b0806f94effa2d2a569b6aaaa7 | 89 + ...699f109e1e376b5f859f2635da2d4c808968268c88 | 2 + ...4e0ae8251cc44069b1d1ed6d72ea607910eee9e90c | 22 + .../astro-ghostcms-brutalbyelian/CHANGELOG.md | 9 + .../astro-ghostcms-brutalbyelian/package.json | 6 +- .../astro-ghostcms-catppuccin/CHANGELOG.md | 14 + .../astro-ghostcms-catppuccin/package.json | 4 +- .../astro-ghostcms-rendercontent/CHANGELOG.md | 11 + .../astro-ghostcms-rendercontent/package.json | 2 +- .../astro-ghostcms-theme-default/CHANGELOG.md | 14 + .../astro-ghostcms-theme-default/package.json | 4 +- packages/astro-ghostcms/CHANGELOG.md | 14 + packages/astro-ghostcms/package.json | 4 +- packages/create-astro-ghostcms/CHANGELOG.md | 11 + packages/create-astro-ghostcms/package.json | 2 +- 278 files changed, 315364 insertions(+), 63 deletions(-) delete mode 100644 .changeset/curly-weeks-deliver.md delete mode 100644 .changeset/curvy-ties-sing.md delete mode 100644 .changeset/orange-singers-mix.md delete mode 100644 .changeset/rare-experts-shake.md delete mode 100644 .changeset/strange-singers-wink.md delete mode 100644 .changeset/three-hotels-boil.md create mode 100644 .pnpm-store/v3/files/00/49b747cbd561ea1ea344e30317af8d33e6bb375e48bb4aae3fb1e43196d2ec067cb92dfb5493b11b6f20e44a70ce8686bacc572827a2c73a669513075ec5d9 create mode 100644 .pnpm-store/v3/files/01/7872a06cf8c816a7597dc04c632d33e0f7abd980d148881fe4950f1a0885af1ec2d963a1208851f1b3481a955e337d8c7e1e996811976c01bf09777565faa6 create mode 100644 .pnpm-store/v3/files/01/bb938b55acb0779f0fa49545abc946fe900cc7be9d3591974290f52cdb5d76aed3ee5f12c795924b899943f39a49a2c709cc52d6e94ddc2011f87f83576da0 create mode 100644 .pnpm-store/v3/files/02/4094d13859ba732f6e50e93ca823222d36e54c51f15ecc67f83f1309801a98c8ba32d55765faac66069b11360f81496c0cb4fe28dd44e1cc59ad8cffa25533-index.json create mode 100644 .pnpm-store/v3/files/08/39e77ef8a237912d04ea59b3733c22a0f19b49c6e9915b1e348576ab7a1b38f4cf5f9d2ca4f31f468c447723f0034fea600943fa7e5d4e73224ac1fc4262e8 create mode 100644 .pnpm-store/v3/files/08/c88a7aa9128e6e5a964956f516fb6c5ce5e15f82eefeb0e05c214e746651cbbdcf571485a70d95d0ed81ab408a20fcb6b6fdde25691cd16dfbd7d919b9708f create mode 100644 .pnpm-store/v3/files/08/dc5aa928f4150a620e44ea131da297bc2ce39d78494438771444fc1b52c95eb149cf6e7da1195ea491e3d0d30926c5e1f3938ba3942a21bdcb20292dcc6f2b create mode 100644 .pnpm-store/v3/files/0f/09181d1bee2002b6a933b8aac37a6e4895ab1e63d72bc8b0f296d0252fcfa691354b85f8613694fea32b60ce1467d0db928e3b186e19c666f0a302e21848bb create mode 100644 .pnpm-store/v3/files/0f/fa220d5070ef95cc9e30179deff87de0a4084c1c6ebd925356e302109c7c8e41ab75683878e2f3fc023c07d490321ea212799d2677f5f37133774d67a38138-index.json create mode 100644 .pnpm-store/v3/files/10/14f86d5b849fbcca013f5e0bfbf28c13d8a006af93f5ce6a8c5b4350441e135b78a53c0b79264795d98c81bcebcf1ecbd4258f7ed549259751493370896510 create mode 100644 .pnpm-store/v3/files/11/9fbbf6f0b7cf12442679b6fecb52b1bc168a70cbfec060cea39afc704ea17e8263623afb216c6482a0f326c4d8ff758975ad189471a127d49f3e327e205faf create mode 100644 .pnpm-store/v3/files/11/f2383eb0a9675b1231c8fdfe45d7564789468d2f038ca714969928746706fa1f3c14b5bb50b0fc17616ea0afcf4d608d5346a3642800c26ea913337a97445c create mode 100644 .pnpm-store/v3/files/12/ebb2009d4aafdb46dba0c7714896bc75fc071e328b3038cb5812b3fc05964211829407f5d6b0f87356470e31919c3a59452c233e98194d0842740cde252d2d create mode 100644 .pnpm-store/v3/files/13/252681fde62dc3af36b542b481c49b731abb6ec7b711f1817d234e4953114a70b0f6c909ef75d3937d3d4d402413052c1d30cea4e64409a54e9199d579b300 create mode 100644 .pnpm-store/v3/files/13/d2ec98c28d1a065043a688d490f63f390ea5b54296751f029ffee5e686d84c76a432f4556ffc97d6090efaad807f769c22fd1cc20464f3438b20cb91720578 create mode 100644 .pnpm-store/v3/files/14/fb21b80bbb96904ea3eaeeccef485c2012eea43af240155dd14cd99c6022f4cf98b0fc39a90ea3995476e94f647f4797c436a6f1e81d9b887848f518557cf9 create mode 100644 .pnpm-store/v3/files/15/845a58b974a901600f30fea8cf7340da32232769cc6b306ba1f59c5d9a65fced4cb77862ce5c4f760749812a037acc3201627764105f570ec96843e88a1b0a create mode 100644 .pnpm-store/v3/files/17/219f0bf01c3561d0b3d7b93101439f17439c5fb172322a79585bc3d958ac793514a437a13647972dc1f420c08d8887bcff5b3be0817bb2f4285d6de2d48be7 create mode 100644 .pnpm-store/v3/files/1a/27604bfde8fbf0824c0553bdb9528590fd3a75b042724a8a04b15632e80309d22ca1d79e3e332ee0a29d8e360fd09d6e4714617041e10fc7134e89d44ed851 create mode 100644 .pnpm-store/v3/files/1a/b6ed2a1a87b2d45fc48f6786d6fc4478906e3a4a9be5044d07426185a02791a8c4a8dd26680962df3a435957b81e3efba5d3e399416b0670ee66e2697fa2d9 create mode 100644 .pnpm-store/v3/files/1a/c65dcabde2b9bd269366cacdb1e17574e33a7fe2b1fe840152ab1eb814dc3e9de7d60b2083931fe56f92b58691210a528f5124f66d8bcfe8226e0e96519920 create mode 100644 .pnpm-store/v3/files/1b/843dc4eac7162eb10903a6bac267939613703b9112c47ea6f81b528782bc6ad5e7399199ae701939ac5de2b50ee53ab5f1f275c41adc108554d8753e09d4a2 create mode 100644 .pnpm-store/v3/files/1c/a28829fe3d564c65adabf717fc3aa91b8f7262261956c85c9d88dca83454c03edc16affbcc84f46e5798fe65323ea79783a5a9b3dfb4602c70d68dbb6f1bf3-index.json create mode 100644 .pnpm-store/v3/files/1d/5446c76b7b462b4028e893f684372e3f72959f53cd0ed934e624f6aef0068f1c5ef92d46fd4158d79ff87acc9caa35b0a10e2fb7c84c0fcd06dd64ff1ff213 create mode 100644 .pnpm-store/v3/files/1e/d4fef3cbde885a17f9ff9575629b16fc11f000daf800d2c91f5df51d48aff95af34822b1e6160a5924ac4be4e5535513a3de7090f859e4ff62246d85336096 create mode 100644 .pnpm-store/v3/files/1f/20a1a6a4510059a7ba3dfbc1af277bb5d58cde35ab1ec36e8e86eac9a72dc4f7da06642b154c6c193acbb03a4ac021e3d775923456dfd82d442af10cbd165f create mode 100644 .pnpm-store/v3/files/22/86654a9b5916384bf0841c2331e8d684946b751841083901db018cc613913f450d72847203a5d7e6af75c2b114d2462ab9c0c8c71222027189104556205be5 create mode 100644 .pnpm-store/v3/files/22/89489137211a617f656d144bdc13f35a6edda8f1d54bed85ec4abfb0c7a23f5e5ec6467a6cc5362692b06e69a98c4d241f14717eeb87f08fe6097da49ab327 create mode 100644 .pnpm-store/v3/files/23/6425533b425764e1abdc30d7b8645b64d189000a64334c30253c2fefb4fc3bad34fef1354eed8324556af5bcb23e43a08a43b305dcba2957f75407fa7e2bb0 create mode 100644 .pnpm-store/v3/files/23/c6cd34f4fa6ed216625dafefd26603b7d550a9b5efb6b4f639011d442119be5b023d2119c7a2153c2a6439523fce639d508c0cf90dbd4978e6d484152e0050 create mode 100644 .pnpm-store/v3/files/24/0b0cae6d59e96e08aa0f50ecb5bfea5097aea6b88e77443a547fcaeecd18d3f406b3f048cf22e3ecb3c9aea1c60b0dbf2c952bccb0b6168d8459aa77c67e72-index.json create mode 100644 .pnpm-store/v3/files/25/76c7ca09e74eb53512c9c02296681db9a6dc6167334a782b8684cd7a412ee6360a855440f85d5829078a23a1fbba7b6c4a6cbdee39f2d93931cb6ca0ddc12a create mode 100644 .pnpm-store/v3/files/26/2e162f6742d1416f7e38d97f9abaedf001fbd5c1e5b7aaa7ad99bc708fc881733c0d756150fb77b25a8c84f87d71d31547c82837982c73818a02caaaea914d create mode 100644 .pnpm-store/v3/files/26/9d009ca03ead242699bba1b68bc199becca647c0c973f0d02341473d5a2c5144ccb32cff6ee198795c2b666859527ac2bb092af7830df2169158a09682566c create mode 100644 .pnpm-store/v3/files/28/db8a314c63c15433999ab36798d14b66282fb22c72a50360d9bb95c4cea0fbed9a4d12c5c6e46cd1e2b681001db6b8fcbc0e1783c9490f52f4fb5b5af93e8d create mode 100644 .pnpm-store/v3/files/29/6dd6f4a8bbfecca28fc18b4f1140f7a0c13fe786a14ec7e054b1d3b8e447623f127378fa9ec32d4de4d19f696d637fe817ab9cee624ef6cfe9125968568792 create mode 100644 .pnpm-store/v3/files/29/ed56ad22d455dfbaacd7be5c555299bb5b5146ff43a8cef6dd425167eadd34d92dc820940c526de8ca474dc8f56d3eeefd502aee100d1f814e6de4d26e0e1c create mode 100644 .pnpm-store/v3/files/2b/627e8b98d63f9c818cb61d137a0a2fbded72c68b4874b692d801d558f113620fcf655d394d3e8e653890dd9cdaa21527692fc82f38000a79d3ba2898aeadf2 create mode 100644 .pnpm-store/v3/files/2b/bfb60577e1948bcc077d7da6d34b8d5ac896e584f051a8b9361bdc506ee5c2840db25527a33ed91ea87aa47ee3dc1d8bb82b2ddd7ae227e7e90e510047c2d2 create mode 100644 .pnpm-store/v3/files/2d/cc7ae5e354f0fd557d219cf595dde85519d880ed3684a02e046607fab6b7aaf562ad8cc2fe8f62bbbed00a2ee40cb3f5ed11d499f9a604cb602eda5633e06c create mode 100644 .pnpm-store/v3/files/2d/ee51368533b16026a0042497abcf2678280c73e3d7ee95cb48e3b9844e08e018636703c9756fa7971922d1f073d155a69670bf0b81d05fa53f97ba855e3e7b create mode 100644 .pnpm-store/v3/files/2d/f15d4613675b4cdd32f7426f914db96965b3659b6d2ae2749bf13af61681204e619b6005f5bd5063491bffebc0ca935f5c5013d040a1dbcc1fdb40bac28353-index.json create mode 100644 .pnpm-store/v3/files/2f/c732a2b774a7237131aa64ba551dd60103edbf5733f77ad7de1e6c80e8a8f72a40d64f0cd7d5e25ef1bc09df0185aa910795ac94862d3185eab4d7896b5d70 create mode 100644 .pnpm-store/v3/files/33/64fd1e75c2be91f3862fd90f9520474788e5ccc05ea976b758cb3fe2bbe3f98f6c63b5f2a14ff77509e1efe247611c16161c087c1038ebf13716e629ba1294 create mode 100644 .pnpm-store/v3/files/33/ae446bd0526b081c91e1c7c64a431f311e9c10dadcaf4f20126954bc9bcb13b12a1c633a1fefa01de194d341f7e65cabdcfd4fb928387a1e0572e5b46cae61 create mode 100644 .pnpm-store/v3/files/34/ede7ee7f4589dfda07ac24323184fcc6a33de3e269a3199e6348624cffdcf06600a18708fc3bdb9ea962d849e53b9faf51b0c6ccc96b38f3f7e21696eaf5d8 create mode 100644 .pnpm-store/v3/files/35/088c61fb060f18c07c0eccad9b358fd50edfd36ecba4679bc6c1e394972ec9907431d752ec327e4a5a02da33e6c564d6574928a277d15a2a4756b677224355 create mode 100644 .pnpm-store/v3/files/35/7286d137deb2388841681aca7a1fd053d6edefcf01df57ea75250257f0fd7d8e72f579a1ce520d45a933544fa3d02794ac8632a883e5a215188a1195696603 create mode 100644 .pnpm-store/v3/files/35/920d138618bd9f5804a573823da8083ab1ec6d7dbdf0b0248ee62460fa23081a0317a7273e68244d5d99822e7152089c51207e954301c899351a7fdae95754 create mode 100644 .pnpm-store/v3/files/37/3641871a0a88373d64c2460ca3815411de16ea7e31e327c4db545cf984f7ba16f74af17f8a211408c970db7a45439ee6d339dd631e7839d7130bc1607feef5 create mode 100644 .pnpm-store/v3/files/37/5f072f1fe5f813886cd58af1862786c554b8ca5c88e63f925bd4d0e6cb06d15c500ab53ac74928ecbb47a1f754fa73595828138a08244364c45d9cbb34ae76 create mode 100644 .pnpm-store/v3/files/3a/09c7e1eeed1b9b6d00131ec38b541b4227dddce79cbe042718db8dfad28150f554ae6a7af251ea84b51e2ca3e1dcdeec0b411aeec3f9b2fb2ea9b1cb2986eb create mode 100644 .pnpm-store/v3/files/3a/54cbf1f8fedf3bdbf9fd47e80675775311f960f586f84b3340761a092d42f2c51b417467b9cca28055d3d75f0485c25b64c3c95927ffc88821110c37977d1b create mode 100644 .pnpm-store/v3/files/3d/a68f20e53c783df493551fb4e9a3a50d73e384df5522d4f70406e116a03660398c83ea445e77c142b0940b5731a357432bfa237b966ba1742e6088252a614c create mode 100644 .pnpm-store/v3/files/3d/a76baa752c3bf6f7e661d803e410f34f9b953f14c148ddf6b67a4103086a1d11926a6956c1179fe9eb1f070375736810cf11a81cc5e056f53a996659da818a create mode 100644 .pnpm-store/v3/files/3e/b701afaecc6fb5edb011aebb06a890d468aa094642d04c44a06f01b4c7c382036185d47d080c0dcc02f360fee4914de66f8597863d171368cfc61f39d0a030 create mode 100644 .pnpm-store/v3/files/3f/c9f8ca482507b249bc830b478c9021e62d6eb055afd687e03a9282c88c725277018ba09aa1cf1b8c18d4526844c56f8c1dff6321ebcb2cde797d7010dde906 create mode 100644 .pnpm-store/v3/files/40/1d8084b97dc521e613f1b5a1cf7c495d47fcc008074d0c9dbf06addd9946f12a06b4a979023203922523aef3fc2b5e549ba6c9cb045f6135b13b0e6f183610 create mode 100644 .pnpm-store/v3/files/41/8b2163d59e5f3d113f88e30747a346316f5fd00ea025c02d40e5e9f4dd60b8c164cc25abcabaeb3e1f694bac9e0c6ce087d2d20431878b529f75c6ab50acdc create mode 100644 .pnpm-store/v3/files/42/02ce2180671234bb56a9d9e2bc4167987a0d26356610ab65139cb6f072cc227b9ede2b0dfa19c4a726e9ddb74d7ed538bb563eb510025403c3c5c112e14920 create mode 100644 .pnpm-store/v3/files/42/13cda1f2c8a5cd1785b5b7b20152ca23531f21927f2d4ba5fcda64814ebf6d7689f43129ee88e522b9255cccdc131806238e2e027d4899fa18e1d46ac40877 create mode 100644 .pnpm-store/v3/files/42/7df259b2d341e31a7c961fa08b8928a14bd39fafea34b91eb91529a1088a51853c6f213e46e264a04184e8c3c571e0deded77f2600af8ee06a6f449828e9b5 create mode 100644 .pnpm-store/v3/files/42/c622f7bfdd6356fc995ea021d06688381b1a5ed2403a587e524a6448402f52952903c8cb6d86331c4b0ffe457d68385729d8014cacfcbda7eaf03f4e5108b4 create mode 100644 .pnpm-store/v3/files/43/ba32d7420a1e795a7fc1ec3531c15a51b5cc1c1391db1dc6c936e76c3e639a5bc8512817e7baca83b225b5119e6fad3c652495660a500776b7bb79bd22a6fe create mode 100644 .pnpm-store/v3/files/44/13961f9863bdc3f367383fc7695757477cd58baf0ab6d08b726e6489d29d64c5ad2b8f3a56e8d1d133673c9c5295cc8fd8a9313704b9523f13b6ce6e2ed28a create mode 100644 .pnpm-store/v3/files/45/adcf2658e3d765e92c8f980eea9b0fac68eb2a25457ca1484b44ea6479e30bb7a187aa0320767d6945bb72ac5b01dc32d110558e3bfca08a03118eb0477dc5 create mode 100644 .pnpm-store/v3/files/46/cf43ce90d52a3e8e4b400d0c07f44705d2ddc6897fc0702cdaca5c5dc34432cd56094489dac3bf1495ced41060ca3c7fdac710710a633d8f924d82f5d719ec create mode 100644 .pnpm-store/v3/files/46/d54576b93339bc2cf8f3a8d1c126fce84d51ea6d383712936bc3514f1243d50d8b83aa6a699b5a257b2e5800b5033e8e30e6b57fb65c8ba642002537c953dd create mode 100644 .pnpm-store/v3/files/48/ff25e25cc02b737dc987421549b438b6b31a8755437c069e04e53da186b0a46ebcb9eb252f9ab60c2a74795c91208e728809d494406ef5410d53065569b974 create mode 100644 .pnpm-store/v3/files/49/0bad38fec9eb98abfe02f3d514fad4f10d882a4b5d0bec4648635ef9833951d4ef9ec2093825f52a5a3fb7fda4ff2227e1b1bff66d1ac8600a8151707f6dd0 create mode 100644 .pnpm-store/v3/files/4b/38ebc6464cf592cd06d2610d9de3c4ac1d65f3612d2e92ee3414f8449fef73a96753a75ca73af8b8a417fd793cb387722a14580b71ec3d1cf1c6df5cd1b1aa create mode 100644 .pnpm-store/v3/files/4d/e9d085954eb70ff7a8a38f6bb77e42091e33ac58d0bb70cd1f0ea659b22f92eb8135885e94d0836436c9c05ff239be4855b65adfc34e7d607fb9c5a77b2c54-index.json create mode 100644 .pnpm-store/v3/files/4f/656cfcbadd5ebd08b1690411c9cca4a02ef7a99592c5b55a0c256ddb8562c4886be08d9c45b9e091f56e4e7e362b53c4d9dd5dd7a134aefd82083449c4ff2d create mode 100644 .pnpm-store/v3/files/4f/b404c1ce650ddbaf0a144c626f38bda40c6b27e18d7d8749d9c0552865db371e808d80209dab5183e8ff6d90ccc8fc0c624d74fc25199da0f3f054ce5095a8 create mode 100644 .pnpm-store/v3/files/4f/cf6bff00debd8546ffe7c3c4bf8ad4f8f2b9d7b6906d57709c8d3fd54fa63aece270b53e8957d817973351ec5d8e22a32d2b76e99e54fa9f5a6085bf294d89 create mode 100644 .pnpm-store/v3/files/50/3c841702025569617d082ee973fac2253ba10ea36892ac30f92c5562041cc5fb3452985611987f5bdb717a979fe43d43f93649dec33f34777ac2d66932a19e create mode 100644 .pnpm-store/v3/files/51/f24c71225cf92117125f651ff54b1d265b4e14322e9c35bcb3b52dbfa3e11583bc6dcdd9fef28f73d5400ddc9a44c1365749f5e16733ec445f11c85eb62227-index.json create mode 100644 .pnpm-store/v3/files/51/f9940f7e832a4aa18bf17be51af1bcfa6bcbef7eb5392b5df30d643f926e866a04232cc4ab4ee765de1b3cee87b8a8cfe128fd260305b75bd19eef81c0c97b-index.json create mode 100644 .pnpm-store/v3/files/52/e138d862e4d8b641ad4dbf179cc7126f5b27ffa6ba707371ed5c57685c4f245ddc398d3cee49a5555687869204e9bf919f5f0998718088e06465b77575eb7c create mode 100644 .pnpm-store/v3/files/53/b64beea00c1975a9a38ae12686dd38b24b04b560f1990c8dc8cf3a8d71d3d1a738a63f414aae5b4cb4b1b843331bbaaf636a4d5b349957be6357ac0dbbc59f create mode 100644 .pnpm-store/v3/files/53/ea34b9a2a9a9a6712180bc9f210b04178d8b56fc8c30c0149314ac90a89b85776b016d62065b339c68c388995ccbd5f0aa5dcf44cdc2c392b8d820ee1d7420 create mode 100644 .pnpm-store/v3/files/54/f3e2041fcb066d2a6a377e115601417a35ff6397120996b9dd330690bc71076775fe4f68b2e814c1ce97ba24d5ab21f95b5036abb0d7d094a529bf43349173 create mode 100644 .pnpm-store/v3/files/55/1e06332eae2df5dd0801b139fcfcea269e1e197a430fb7d0f62b2367d9c07d3c603369548b3333c0b67167bfbd27b96937369c93214eb441baedfa85ce231f create mode 100644 .pnpm-store/v3/files/55/415ed00e2ed3bd7686a9c03bd8b6bbf5be43f4c68f1444597dbfeef9e631a23b37e2a40382d4fcd6fe2c9e047f38cf5b00be58c2a0d0f60c298f05f86862a5 create mode 100644 .pnpm-store/v3/files/55/929b2f8616ff4b1904316d4b69af5ecc1df13f74540d449c9bfa8672c4984b4c3829a613f7805e171ab0ae0f4d621adb6291b71db642bda5efaaa170a409e2 create mode 100644 .pnpm-store/v3/files/55/c56a17de38e10b4cc26bcdfdb0814b3740d5b4d07d320cfd61687e27b2e6bcae547bececdc9c1f3cc5b552dcf74d8426d3f563ec06dcd61752236209235b04 create mode 100644 .pnpm-store/v3/files/57/9c06a3a1f7c8b7203675f4aa8d0030c21019e25f3af49119fe6f73d292e839ad08659c33dd0c76f7d7896db2b91fb3397c646f61f22f87336393a6035fc80b create mode 100644 .pnpm-store/v3/files/57/d07cb8bf5afeeec359eeeb461db9c837660adf91cf40ca4219ca08efe5151e587b14dabdbb6fbfc967f45199673ea7e7ea6ad41895153cc2803c5c6591773b create mode 100644 .pnpm-store/v3/files/57/da9bdbbe89d638d2c7dc5bef94f656861774ed542a2faa7df958ed5ef0f778f35fba00ffe46d604e937227f192cc6c66fca0492330bb6530e9d8bbcaa0ccc2-index.json create mode 100644 .pnpm-store/v3/files/58/342fd7435fd4d145c92316c2a4b7288105ff575c0f965ff2cda2e86db7ab23d6b377745c882cc7e2596bf261f899d3b626129d582c22999789f78666ed8d2d create mode 100644 .pnpm-store/v3/files/58/5ae2a90f10ddef1a6fa5f317d4d6ae8f83f0051521adfa7bf480e283a3414570f106f620fbe06316a00177739512b6de60fa2b42fe39e20347f7ce54283310 create mode 100644 .pnpm-store/v3/files/58/c579b80ee78ef252e2c6106eebce9242f021fa8da1700b240713aa9ab5871d25dbeb37990a12f93941e98fc06cc963b8aa0474a479ff62dc3e1bd936d5dcaf create mode 100644 .pnpm-store/v3/files/59/77be9e9aaf1932aeda8ee75070fb928e3c7d564435f45329aeafa197c617c0df91993dbe9f9c43a30508add95aca879617e4d130347dada8c50e9c887c1a3a create mode 100644 .pnpm-store/v3/files/5a/6e07667646646438d7353099f12c2a3682420120a0bbf527998cfbd0e49fa07cef2296aaa60beff2e93d91ec3557c75bc10f5c6da6f97247d36fdc9f7a615b create mode 100644 .pnpm-store/v3/files/5b/b0e6f66487512320d9c9d6ca406f2063266cb22a7c6939afb446190abd450cdc772b6575861c90953194d7688408625aed6cb925c55681861b74f2f2570f48 create mode 100644 .pnpm-store/v3/files/5c/518f5c48e5846104cfd7279ac49ff47c9750d1754e2446c84e94ef99dd55016a26d1f26bea7d736ee5165677dccdd3b8127f3d218bbf08177877cab3c3cf9a create mode 100644 .pnpm-store/v3/files/5c/83855a45479996993847c77ee793f5e43f54e23cda5026c8d83b13241c3001e2ce46e4f5e1a7511dff734ddf48f7657cfdafc1bc68018eb80cc432303424c0 create mode 100644 .pnpm-store/v3/files/5e/bc97647625d1c2d3b01938759fa34e77f1d23c5d1d815a717c6bc7ec0f031e80c5a10d8ad4d7121ed60a81293f1fdabdbb01428701d40b28853d8161ffbf1b create mode 100644 .pnpm-store/v3/files/60/72b5953352666549faf0384507c898290a88c0140a863d854f1caf876516974e36a5c3aec6fddee521fdafd5dff8879c2f11b4154919d4edf76828ec5946c5 create mode 100644 .pnpm-store/v3/files/61/15325d30ed5362f5ee662dc50c49a7a224f88a14d213a4bf55c43197e495e3769e1909600885e010dd92c549ea51fc3c5c6a7a7bc6be6a3f1b9ca37b6849e5 create mode 100644 .pnpm-store/v3/files/63/72a0b672d2c74726e375b8b43052625559751c701b81c7018c4a4c53343d46199dc0e30a88ea39bf37d5ebedebb17aef2d0a94db61402ba9d01226264aac65 create mode 100644 .pnpm-store/v3/files/64/3eafa753962a493e3841cd01af57cbf5f8391331ac212ee854ffd58a4daeaa8baeebf3d9c8c5d98cbc6731e7cb7863241f7b88d3433106c54a0abdd0e05680 create mode 100644 .pnpm-store/v3/files/65/d14cc82f0b04178550c4458ce16398d525e000c9268e15f63ed99b7497df7bb853e9d45d6644fc1abae0174580ec45d98c042bee7413d55bf13e0df63d4b35 create mode 100644 .pnpm-store/v3/files/66/07c8823eb9abc693f576e6cb336a3ddd981c3dd0f9cd0eb1741ee7b6cf2da1dfd7fe66b0599dc4c370e23d30f635be8b2b395242ce9c0872d65b2fb73c4248 create mode 100644 .pnpm-store/v3/files/66/3b18826c7622416773cb3498119f83c22a913b6f26f003838b20ee1c29ea1fd9442e2c80a5a2924e6e22f6319680f054529d27b210f3038c1e0ee29037fa4c create mode 100644 .pnpm-store/v3/files/66/8b0a72625f3cf046eef12313f32708d1bf773780a45c04970ac13554c6aad1775e20a2eb2d2fba7a178d677ee92f70812b37c0c5688718b8a8e2b6ebe96c68 create mode 100644 .pnpm-store/v3/files/67/169573fe2f229f218163fe297c8fd753848c5f9140bbf44194334596e7666cbb495a09eb53a55a93abdd035cfc10e9f8d0a705e9e776010d692b48481eefd0 create mode 100644 .pnpm-store/v3/files/67/6d9c09b5d8113f5aa59653fc6d4bd288c4130fc58ad4ddcc0f90dd135d69a8594be30a1bf9533214f5ec5be4f0240973fb93546d0149d2239f7feeb29e49ff create mode 100644 .pnpm-store/v3/files/67/de25f87dcba19f59fddec562d91e5b328449812051b16c8337d670fabdb1a158aa782a45360ace367823f5568db24872171435d5ca63506a6437d904b38abf create mode 100644 .pnpm-store/v3/files/69/efc2214faeedaf398e9b964254deed608f8e03f41e41fc77ab563337dd7b26718002d1bf8657c1cccff47fdaa8d20e8e73c1e4ef4b847b658d5cad9f02eb05 create mode 100644 .pnpm-store/v3/files/6b/3f25a6e4e33873a400117e083f2827c85bbb8fade0424710ce763c3e81055a93b0e9bcbdfd2c3bc5b50ee354b426aef5f15cdcfe7cd3e6375e27f81ad75446 create mode 100644 .pnpm-store/v3/files/6b/57bad5505c4738088b2dcbf3c16b2ca0f6890acab76091080303301e3fd800af3329d5c40a6dc9b18c6cf0e90c5acd441aa3f954fa1598e432d2910f4c2275 create mode 100644 .pnpm-store/v3/files/6b/773380cf438f4ccf6f42a539c27adab54cbc6dd25646db62875ab128f34a45d3283f6789f207b4c853b72848ef56c1448e80514ca3f0d5e96ad83a0e03f8ef create mode 100644 .pnpm-store/v3/files/6d/dd264f1d3cae6f0cff6a0e2aa02f65dcbd8bb4ae129a4703ad7dc420b2d0708cb26491bae1fe1477df7fabcf4e2d50901f297be85a154de6d96e787702127e create mode 100644 .pnpm-store/v3/files/6f/5489404f3b2ae18858d2918cdb0846c923ba003f993ecc8dbc1b57281fd16796c1b909fdfc39d8f57085ffb0e7e9b3074275eeaf107c34c0b55fdbaf4b5a96 create mode 100644 .pnpm-store/v3/files/6f/c9c2197a479731977a2aa1e534e23a9d1702de68d05c09352698c90458f487ad29d0f92f9edd62cfc3b5eb19cc99ac7e9364baa278df868c8b685c6369ac2f create mode 100644 .pnpm-store/v3/files/70/c229b11ffdf2fbc4880e4fd3d0585ab94d9310bf5ed7f00d9efdca058e987c5fc3b8c34d8d893c6e4336cc3e2508cd9e1970a793a09a134ab3bcb41ebfa65a create mode 100644 .pnpm-store/v3/files/70/e5d958f23658558a3809c12490614d80029b5337c23d73eddbff6b9bba11d706c7f216a229a8968e61b0d689b8c55fd28fdd25cc5b9e4ebc8414fdbea47cf1 create mode 100644 .pnpm-store/v3/files/71/be82648fdc01c5ceba91ccb3f525278312058a677893e8165b9361bcf084de8d5ea8ae0cc68a7f6b2aff8860df0b6b50f9f3e2fdcf67555f87202b49f3c144 create mode 100644 .pnpm-store/v3/files/76/19ae98039220f9706e0b50bf33068342bdcc4c1de7d7c6f08819d5dd774bb23f576200750dc87dc3b66edfc7112499e8db2728ac2b03eedb92daaa38e74629 create mode 100644 .pnpm-store/v3/files/76/2081e205700aa0931625b119c47ded47fdbccbb73c8fec6b339c35d83f70d7709fd1a4507a099aae9fc4c709388c6394a65d28e5c2a2a15a28ebaf81a95f3e create mode 100644 .pnpm-store/v3/files/77/a8cd9970fc6d5873d7952196ea46d827466e10de7384fb056658f47735d28c5b8ac4c60cbbce418be69b9183bcd8b5ac9a1125f42080c09b93bd27d3bb57b3 create mode 100644 .pnpm-store/v3/files/77/b5fba4de6b0f4897ec37a6cebc1873ad08a8f963eba08ff24f502b27eb9e6bafb8e9ecad375d32bdeeb3d0b50f3fa41082932b5804c75526fc1c02feed1bf5 create mode 100644 .pnpm-store/v3/files/78/d8f2ec08148f7d7142214072694ee4d60ffb42c74a2b386149913b2b262150f5fca1b6204e9edcf382d6fe59e1f868ec9b087decbcb94093c526ab7520a093 create mode 100644 .pnpm-store/v3/files/79/ab845c1816caaf3970b2dd60c3cdff67ec97def1cfa4c6635ca48c5364aed36b543f3ca944d07aa9c1760165cfe7612bf5fc65f7f3467619bd9259c3a21b88 create mode 100644 .pnpm-store/v3/files/7b/594ec29b2a01b7a316c3004226f1f1965a912e043a93240758abce6e5be8fa997d88b8dfa66c3d159445a9fd2975e1f33045a388f6cc3b641a3bbd897155e0 create mode 100644 .pnpm-store/v3/files/7d/31fbce0bdd747d14cf58648a055289a3588f609b43496818c8b6f748a89ac2bf39dd03d329e73f8ce105a9b9b942ccb7996f670d14eaa5de2d6c07265f3ffa create mode 100644 .pnpm-store/v3/files/7d/b84cdcf9fe01b2c06039accb8c95dcd617c1f5225c7089f9c49fe02d2e15967df59bf752aca9930b0b45e70f35b18c98a8bd6c147f1c62a54e30059654b363 create mode 100644 .pnpm-store/v3/files/7f/96ca959e18fc88146a94bf2553f5dec3c2571a77fe5dac2720b8ce7a035eff0923c8fbd0f720a88f5e7966272cbe5e4a919760f71badf4908b651f4bb123f6 create mode 100644 .pnpm-store/v3/files/7f/dbc782c09606adae80702418c8a2618f80606d03fdc6e5a0a2a0d2785a69a48db2e8dd188a555c236cac9a422abe4cd1fe1a237d66af5dd48d8e8602e5c228-index.json create mode 100644 .pnpm-store/v3/files/80/318405475dacf389bc5e1ed2721e281cf5c21883b61071041d0e5006d4aa76341f1270aa52a0f51db9ed2c687a1d50ed90d2cdceea63dea7e21ac43f2d4d69-index.json create mode 100644 .pnpm-store/v3/files/82/eec010b3d649605c7df6921cf13faf6abe7231770d029c399add8503ae6169147c2fd484736372472220244b309e056d7864c5586a8edfc76e12096d88b887 create mode 100644 .pnpm-store/v3/files/83/4f112f35c7ebf383e3ac5c4dc16c0a3b55be0f2a8ffefb512447f8cfc2e77e22274dad734649b79da4d7ae8dc46c4a36685b1b9b77dbb0ec5ffeeeddbb2185 create mode 100644 .pnpm-store/v3/files/83/7b34830820fc819ada93013e5665257d7bddf29607fad199780d2d3d2d225963ce30165d9fac7e82d02b4ebda8e13b77b69248b2437dd754c18e251e2bfb2b create mode 100644 .pnpm-store/v3/files/83/8b343fa114e0f186e1406bc30d0a79ac199410f7b4138d09bef9b73e73231de9fbff0fdf8e2ac6c5f6d1ce5f77b45177681b44862e09d9a2b1cec6f011baf0 create mode 100644 .pnpm-store/v3/files/85/d5569e410ce90ffedcc8b3790baa127bbb2e3c99838b4d04f3dbaf02a4fb76ccb38a83d112c75eb890e5764c1a69c4dd483ae77581a9efcce1863b378df802 create mode 100644 .pnpm-store/v3/files/86/22cff6345c24b160ac14be3df629fb40a29ebf93c1d85f26466a64122aba636dc968cdf175e4a9382d641be94233f7aa812e54acefd4fc3e9b2464e187c4ef create mode 100644 .pnpm-store/v3/files/86/4363419c1c0d71b5430772825a5e89418dc6a59e25a45a0598bf1528716c77b2221574ed742e6cb3a7d492192ed65bb4502aff00c3e6f4626a3251dcd13bbd create mode 100644 .pnpm-store/v3/files/87/8d47f75f21ff2c40951d2365b6095d75adb641d9bce87692f6110ea643449bbfe0c5b3e39565622e4e105b63d934182c87b270c302e71b546c085624132967 create mode 100644 .pnpm-store/v3/files/88/269cce17141d22df94eaf6717fcc9cce01fbc08b8a41d35367108209484b1a39a898578bb4493046bec8f78e93e4b5ce0f77e8e58eacdf6cf74296f7b9f180 create mode 100644 .pnpm-store/v3/files/88/72b2c41489beb78062d9d28e8f2730fa8fc43403a1eff39cf1238d0101febe2f008dc14181ab7f438cfed5c19c2e07fbbee0573a96fd6436b2f82e760f9fec create mode 100644 .pnpm-store/v3/files/88/d6958e3f293b7f45aca1f90feb7ef7ef7d13813a160e1dccf4e1f6049b4cce8ce227b49c46910d86c49805de458ba710cb6fb1bd1b1e15b9b937d45e6b5f37 create mode 100644 .pnpm-store/v3/files/8a/96d111dd8f5be031c9b8678455e18e60193c72adfaec042146b85b9656f367c65a6cb18086ed439fda9f96138ac382b67a015f76058bafb82ccebb7523fcd5 create mode 100644 .pnpm-store/v3/files/8b/96f0c94017ccf33585bdfe76d6f1dde758f2e5fd8811db5d854a6379e62a6157045494f5507d904b574f9db04d12dbd79dc315a0ee052b27450a972e3ee92b create mode 100644 .pnpm-store/v3/files/8c/f43ef7536c81d3d15dd125c48f8e84bfefd6a6448bc231524b130a83dd6149f54a6f7812c9f9e3a0f894d62cddf12cbf1a591af000908a16efcad6ffa8eea4 create mode 100644 .pnpm-store/v3/files/8d/e924c4d838f7dac02427a645462bb42a09b19abe1ecbc151fa8862ad54221d70931138356033adab7fc5aafc7832ac502b9dbdf5b41fea5d5e41ad6c63dfea create mode 100644 .pnpm-store/v3/files/8e/2a061ff1bee412573c1ab6aec712e307f62aeea05570d1e0008a7e48f87c9ddd0b663c4f8346e3d11413aa1670ce04a0d3079c8eca21d918cd76c11404d7af create mode 100644 .pnpm-store/v3/files/8f/dead7b8297e079d6ac049c05f449fe42782421ed4828ed26676580141e26fd793805f758e519149b0e2cbb4fbab0055174fd5750ab1ca65e4c22b8fb916867 create mode 100644 .pnpm-store/v3/files/8f/fbb593d09e66162154603325784ab6493e7ebfe1de913d4d1fde4a15d2b3f3e1ef6e3ee0be5e28354764bd17f0182420166f80c127486660277a0814894a7f create mode 100644 .pnpm-store/v3/files/91/c8d98f8a52b1b2849493ed88c88f6888c933ba3b2f05ff6893287c994a29cbf72164ebcf0efc45c88bb466cd1e41bc9cdf7a1b7d5b6ada968154c3b43a46bc create mode 100644 .pnpm-store/v3/files/93/9a1ff247736e9abd3cb2ef4d5ee470937b54876a7975042e2e0635693ce46f6fef0c3c689dc69a3a78fc62ca648bc0cf6c80e7537811445f6c98a06eb9fe08 create mode 100644 .pnpm-store/v3/files/93/9a6715aaae6a76189a49d29ac1f696efb310164f312f9b9587c4b033051d95ea5b8d6a10905632d8eec00d948dedac777f62ae26233d8f4561270303f39e84 create mode 100644 .pnpm-store/v3/files/96/b08ac9bca796e085cd3a8628c47f7b8048c5933675a40b0d959146ebeb75417255b28071df538c1a3f7b7df7dc536cb562124b9bcde699bf939509852b4f7e create mode 100644 .pnpm-store/v3/files/99/890e570e01cc6da25b1f25e0d2655f3487554b02b62417807b35530280f4cc2285c463a5fcd7d7e27a070276f9149da5113640b8ae699a6875656fa8824c71 create mode 100644 .pnpm-store/v3/files/9a/5cf0f7852cf64734507cbbf0eb88ee00d85d6b1fd3b3c6c8f3b87449a193db28f5449079683f1165e235d95b249e8574a587aa5ee6411795c6cfc79d1e5b61 create mode 100644 .pnpm-store/v3/files/9a/6f74b81eeea629305d8f8b0dfdc3fb91140539af4690101e39ccea1abf67ca852e2a48e8c96dffe6b3fe4faccd39f95bc7738c4ffb95878eceb021ad29bea1 create mode 100644 .pnpm-store/v3/files/9b/ed9ef4da5ff0cbc68e3fba80c650910eb0f8ceb069b017325fafc5b1351d885b9c9e564bd37d728f85f5cd4f77c71f3c129842530fa12cfcb3b23834b92755 create mode 100644 .pnpm-store/v3/files/9d/b9c1853417d0fefa693caed42b8f03e7e1618c61e9fdaa7937deb5db6ab84e87b3f76d29753238a61afe40fc8c9728806af247204321a5eb18eb90acbb6652 create mode 100644 .pnpm-store/v3/files/9f/0f29de0250b6c4133178ebb8e6b49fe2892c34faa5803b0e8709641c03df99667b3978e4f9b75864faed2659a197ab3a234ccc3c79ebabdfc966c29bb1c164 create mode 100644 .pnpm-store/v3/files/a0/ccf5af341ffd7d5af887722e8ac8cc22b422e4aa1c6020115736e5b1f85a88fd2081d84eed317f16f8a64ea1e6ed20e9030dd332f87167d8241561567d203d create mode 100644 .pnpm-store/v3/files/a0/d1a794df05c791a04c385c51cb1e13b0cb3bce8761783b1909bddc46d6319d35deabac83ef1cca8405558c60da3eaebaca86db52e14ac7724d1c194173da41 create mode 100644 .pnpm-store/v3/files/a1/60433b0153c0f3a0fd4177a4f608eec0b4572d2c6ac5c898bbe2941052a8cae2ca60a7fab6b8cc2631e776e3f3c7ce5c6b21503485d077bbde7ab33c24e6ec create mode 100644 .pnpm-store/v3/files/a1/b92ab961dd2c3325fec34082ab234dccb15c61409cb789e07fb2af42e0b5160d5f71426a1dd9129c1050ab5b5a519c7f6c8e92bb7a5c87414abcb25a103082 create mode 100644 .pnpm-store/v3/files/a1/e5a2e39d7e7fb87682efa4b31ee65cc6c4efa5d1613857e6a098f493451807bae7fc0c7d294b46df8142cdebeda8e5cbd33cfb657a696297877b985bda35b3 create mode 100644 .pnpm-store/v3/files/a2/39178d1dcad19cf78e7091f34b6a3cbfb4caf6d993f944a1d6fa4485632f3ed6f11540db0af0f329bf0b30a95cef52615508287154a5cee3bdff1429f20cdf-index.json create mode 100644 .pnpm-store/v3/files/a3/483aeedf723cc97e12dd3a34047692b79023c9e2a5c1d652d5dd11531a2fb5046e31f13396655e0a03879a762987d5ed17d5c1544967446d9224a7e2f57f26 create mode 100644 .pnpm-store/v3/files/a4/3aa5b5a861c537d00e197fce7cecf8b2b9d169a02d4e7b718c61b916ec1fa6492d5bc331a55730b6cb06e610a12e0b44ad6f10cc2e02a673ddbd8735aeb12e create mode 100644 .pnpm-store/v3/files/a4/9ac41b3079d7748ba1e9b8e2164881debcda0917336606f342d710544fa08788fc13abe904f6a195ccf94cd4fa5031183579c58042ecf1d0dd4c6bf7e3bbdf create mode 100644 .pnpm-store/v3/files/a7/ca0471e42bc3152cbf1760227e88ecbf7e4d69b79a76d4377e05b9abcd2b423e43067f5c3844836738e7193efb8e99ea08b1f3669266697d07df62be09a9df create mode 100644 .pnpm-store/v3/files/a7/d037fc1debd7bd616accc78d235b40881366d207506ac8d3c358ff5ba791157e0418e9e7661075bb1e7e5cb93e823d84faf3f84a53b6d4c2134d8618f1e1f9 create mode 100644 .pnpm-store/v3/files/a9/3f10f743384e9b30199eeb082924696ca3b568dfa0eab879320814b9fddcabd4b4c78e9dc0ca828f9c435b622bc55c190d4ffaa2d50dd7d714141a080b240f create mode 100644 .pnpm-store/v3/files/aa/f7531c65c4f8c8a929bb3a05d469d47260ed9f25db74d9bfbb7e364d3c33730b8fcb543902f18e659481d6a308d53caf0c8dc862164fe11c7fca283cceb235 create mode 100644 .pnpm-store/v3/files/ab/6ea202d307578a2866db27bc4e634b029f111b44f0be3331fda40711d3ec03eb860421f874f6069faa876b63ba28aa7f2d979fcbfd342b9e43dc32b1fb4cca create mode 100644 .pnpm-store/v3/files/ae/97f2cbcad3856c779a14084f5712b4406dfc7f688dfefb5a33ea64244e278571dd68c6968bf719d0a458d3abf4d3353ca62769479682be3d6523e4f42828ce create mode 100644 .pnpm-store/v3/files/af/190caee5a7bcd8389155d1be905c42f32fddda8843ffc66633b50103c016f5bf77d4d599750db86bc14a6ce2cfeba0dd06240fb8cbb61cded5e0d55848a88e create mode 100644 .pnpm-store/v3/files/b1/3f5a63517e41a4984f6d83b75308900985b24b82e7291c255c12946abb7a415b3d5231374fd1b17d679132afdd2a697923ea5e8d1ba7defb56e834001200a7 create mode 100644 .pnpm-store/v3/files/b1/e7a64000bc3aa785e9a7159ffb0b3cf29ff629677583ab272b4fe1e83dba175384093f52d4970feb6647a775635352f559696507497d5d9db308af58601923 create mode 100644 .pnpm-store/v3/files/b2/62218b78bcc2d2e0793c691f14ce6bda60843fae55abfe723ce931f085926486c35fcd49a4bd49f770212584d6ff89a74a84767d74ced1e23c1396009b148e create mode 100644 .pnpm-store/v3/files/b2/709bfc392d67c5ea27bb5e6148b85e41a71408099620b7b3457b28e1c5db1967211f5313fc98620f574f79f0cd5b5db5583fc57c7c2a26ef10259ff3f2c393 create mode 100644 .pnpm-store/v3/files/b3/09a4b5cbe25553d8c7d5384844172d5e80118e7563a6d9d788c0db2a3a4e033143787e65888ed188401c624da74a210856cf022b3547d90ad1cbcdea50cf40-index.json create mode 100644 .pnpm-store/v3/files/b3/78b9aad63c722c46d84147fd224f837dac11767d8d3daf300a45ff0dc79c698a3f1580e4796800728a26242cdb95735617303bca837ee855a9089aa7865b53 create mode 100644 .pnpm-store/v3/files/b3/e6b16f6d9ef6b82a1f87d5537f43c54d5cf11c3ffa18e8f80554f90d4d9a9d4962d1513386a81c87ae8a588bff1b4107164dc7a7e4a2ff34dbcf4a4428cdcc create mode 100644 .pnpm-store/v3/files/b9/9e9705c0d484022ac7cc47398a260fdd26f2cc9ba80ffc6ad0a2eff25ab3415c30f87504d105162f6aa453006a9b786ae9dc776e9dbe0052401f79357d5a44 create mode 100644 .pnpm-store/v3/files/b9/9fd65ecd89edac3ebdf7d8fe030d6c2b3f41e7fb7556b14c163684b2043d2d9024d32ad54880df3316f911069a0d4966490ad0b5eca437e9340bddf59c9fba create mode 100644 .pnpm-store/v3/files/bd/9d9ad1c31dd65652c4f30cc47e1597f8f2a9df101aedcc9189eb6462d29da4843c5b13b3fe6d974f81d38fbad57a136724515de38eec48ab35feec5a176e24 create mode 100644 .pnpm-store/v3/files/be/63317ceff9c4903b8c8af66348c3513ddb494cf4055eaf73e2ec217a3a525be812c82da7a7d42278b0e52269e406d14f8f81a8948503247da7ff13b03195f0 create mode 100644 .pnpm-store/v3/files/c3/3ebac27e2dd4e1c8270dfe5d4ee6249415ff63407f0e4e024e86e87a28df372fcff5ce7d0e765608be00de14c68c62d0a041c24da0f333eb4c30386ed481fd-index.json create mode 100644 .pnpm-store/v3/files/c6/318dd9f8feaaebc7a38d05fbe3f4bb7993e186eb735cabcdbaadb5a2276f64a5c278bdd50c03843d37ced637a48680373c9e2ebfe4e0df29245bac1d7c128d create mode 100644 .pnpm-store/v3/files/ca/a7907ecf6b8b923fa77240c3a5d28389e2bfe7c962ac49c13c1be7398a5c7ba9ccc10f51acf2a0cef09c37d84cfa93e3a3495151648740bbc81d62307af454 create mode 100644 .pnpm-store/v3/files/cb/dcdc082dd74e31212afff722a816637ddac477d53fd8e6e6d792e2fcd67225598d798efefe842847699b07f1aef5098c05828d6947d76add65a880aaa695b5 create mode 100644 .pnpm-store/v3/files/cc/60385729c4988e99575796a25518b6fc42d7b919c8ceba3a1188e2fce792452e972bd0fc8880dacb194249cbe11e48166d328eb8186d48cf30965fbaebd984 create mode 100644 .pnpm-store/v3/files/cc/9d856f57c03701c47d8ca2717c0a6a0ef39d123e4a2717912ae29c96d05e7cbe0b5b5c7d2d3ac6f6312064b89d316a9b307a882520fdfc0c236f8f2aa2f2e0 create mode 100644 .pnpm-store/v3/files/cc/b108d4167a25f44ec32f7c0bee0064ed83e5af74333024634ec423d8e7934466a2a0cf50f781c256daaba5e6a7c77531c74faa7ba89a8a032cb7244cb87a36 create mode 100644 .pnpm-store/v3/files/ce/b75751db17e3beef4ad19ef865bc94ccfecba75cc41c1c21ba33daecc571fddd2c088c8042ba59bb72d85061c28da7e5038779ef58685d8c7c142c7890edcf create mode 100644 .pnpm-store/v3/files/cf/61e108a4d92522ad8257781dd29185fe98d37141bbbfa7f2eb14434ed24e49fd62c70dffd0151b68168956dd3f447aec10fbfbcb442abf052490e1d123c4e6 create mode 100644 .pnpm-store/v3/files/d0/1d834ddbd4503d5336c15ae6ad7983b5531faf43fd63a7ea0105ff75ba8dd1cc1efd28d98f594016d6ec3b58d111632744581aa17100f71b6161b0cdb8136c create mode 100644 .pnpm-store/v3/files/d0/9dfd2a8ce2b39d7fcb0102de751295ad1fc37f5d9c7b5385aed08def0d02b14e10eca4038b5bf511bc6abb843a54109adb8ea83b8f6ae7091677fb9c7993b9 create mode 100644 .pnpm-store/v3/files/d0/cbf43c99c27b65ff7537bdaf892f7f65d295fa32fd105ec6fdcfbd5aa1f681b6ab4afdede6e8ae6eb3aceb4dccb63301deb5aa416103a160bc889ef7d0f2ad create mode 100644 .pnpm-store/v3/files/d0/dfe8b1d5cea5c2a448e3abb063a5cf9a526df93b1f2d1e0038bbdd5ccd4a10d899c1352f54a314ea0a54e9651f9f4b1f89f0160335b175bdf8ae38526a2234 create mode 100644 .pnpm-store/v3/files/d1/5416249612bbdbfdb8a789f21dacf97bec0ce6e2589b25049de16047088cc2e92d49723f72b80d803dc50da8b07bd5e5dc13485197ac31b9a8b7a4104a2eac create mode 100644 .pnpm-store/v3/files/d3/7e66734708f6588f41deff0592ef666838724f45a2cfd81944033120d2f3daa011af161346262ac50dbfc2f5aec34665ed78a90cdb20592f5b69d4fa537e44 create mode 100644 .pnpm-store/v3/files/d4/96f5e55a3f3b2ee6c19e5b5e2ef36e0b33b1d20136373822a3fc269afff117410b89c5d424f32009f677162fa45d67192b1e78bdfd95f2d0daebece6ed58f4-index.json create mode 100644 .pnpm-store/v3/files/d5/0a1b4628045a5153d596791019714f656ee43d1772f0ec132a09f1f6de4f53b4c9460c0637bafb7450a5a578ad7e39851d360c497ee3f5e0a65e55f6d0f36b create mode 100644 .pnpm-store/v3/files/d5/7af02a7b24532e3435b6cdbfa6e69d9e90dbe33625bad2bd795e11e8790a3bc6282c90bd19a3108ae856e71edf5083efd5e610ddc640d5d1946986c98880da create mode 100644 .pnpm-store/v3/files/d5/9a877800f3ae17154150f709accbf777b7750fb0ca1a8930fbd4ca3f2fc79250994307a81ee7027d4d2e2810a0206b4943a166b90cfe940965f69e47bb5da1 create mode 100644 .pnpm-store/v3/files/d6/74075bc2156fc171ea80f0d3331b08b98d3d17d16297ddfdfd6ec5dafd9b062236814396b7be6b8f69d75501c1f0fc2de8483120aba9876f2afbaacd038760 create mode 100644 .pnpm-store/v3/files/d7/f19931a2815570b00b0f7c5ce91df87224f8d888346e9966038b02a71589c13a20bce3838595e7a760ef10990fa950aca043919356859dc6b450b8a5e8affa create mode 100644 .pnpm-store/v3/files/d8/34c394090c9255cf9acd27b43296155d782442b930272c0cd78c63555fe673dfa97c5a05a469f088989ea14b4840d8bd6f59c43265d75cede009faee21d3d1 create mode 100644 .pnpm-store/v3/files/d8/c26a9388eb3c3876fe97231d3216254da9eb7800b085a251c2ef474f0c225efca60a805cf77757f5d5f64c8ba204ede349ef663d05bf71f2bb572a79be3302 create mode 100644 .pnpm-store/v3/files/d9/978f6c6ddc67765955f5debf0214fdeba2d04a13618734a09f73646c90e70e9311fc478c1f789deb229914017a91f3affadaad6e92fc0688089f75054da3a9 create mode 100644 .pnpm-store/v3/files/d9/a5b522ebfc1396ec33e36e3d863fa2ff7058e94088385532f24a0e5c9faff74ae2af55ca0bbbc399932ddace7e4139c49769f42f5410798868df6181bc5438 create mode 100644 .pnpm-store/v3/files/da/8de9474dd535eab9c4378d04460b09f8d1cdf50263e59397b92c49229a883cbc2ca8adedd1a4114096e29d9f6ac245dad9dfa2fa4486bfafc98660aad38fcc create mode 100644 .pnpm-store/v3/files/da/a0b0f76fcd59f958e79fbd32e656603a8ad2b7b1e7d61094e228c388f9d9100353c335dba785c3a594af436863037fca056e71d1bdbf3243c6125cf7985136 create mode 100644 .pnpm-store/v3/files/db/68e7d9d677dbefdef1f081b0a7fd30ee0ce8e3a76b2f5819fd5faa2f1f73d288062ab49b696ae16f7df8acb13063d0e18955dc144e7cff946dd66bce528a39 create mode 100644 .pnpm-store/v3/files/db/b514f966c8b165a21b637436ccda9427b7ebe153ccac2829dcef5b1c00202cd56c466fdb12c4543542515a92d2bf8663af9496e85fed459b5b49e96b5fdc65 create mode 100644 .pnpm-store/v3/files/dc/8366a76c394ad2ffc22830fe348c05f4a0aeb0e94a70b4db0e814e1f015cd92cb142ffb1bf62c3c465500499fdb0fd2b3c8c4097057e550f03b9e3b152dda0 create mode 100644 .pnpm-store/v3/files/dc/8c7ab1886e95fa275e09d36d99e2fcd99e9a019ad0e780adbf39eeb0661c781c823e89163f3461d14b97a4be79cf9164574b0423c381b10ace3e37cc54ef9d create mode 100644 .pnpm-store/v3/files/dc/e78b51015f81d55192d096e0f151eb8e81299e8529c6f3726d3004d4fa5ded0e1497796aa59db122bfe2f91121362e1fdd950631e9375bbdd99cebf9a78b78 create mode 100644 .pnpm-store/v3/files/dd/2150c940dab801ef322b3ae4a19a91e652971fcfcf5f1beaf7999bad65b432c35d230a52195722ba4f07521e073634fc0b7075a399afdf58f10c153cd73944 create mode 100644 .pnpm-store/v3/files/de/cfdee301f274539f9fcb434f8005f1891b8b6076a9660afb784765967587b336098bdc52c90f4c7a94a1c261c52ade3af888d07b802daa97c5d021bbcc12de create mode 100644 .pnpm-store/v3/files/de/f6917a0f3c700a8524deeb33d21d8c31b63cd1311ccf1b8174bdc3c3091ae99927caeac834d4573c66b4680b331a5d45410f9501851c873ab0b459ebb8b45d create mode 100644 .pnpm-store/v3/files/de/f9de27f4b1f0787dcbcb233fee08aff4746e037572d4bd369c79f422e6411cefae9474e7a6c893f70bbe66016fc7260e00f5497ffcd1a7b1c219d53013c6c9 create mode 100644 .pnpm-store/v3/files/df/6996fbc721d91df3e69f4635d004241d1c20f8bc39d97f6d3cc6555e7e7b371413f8a5c3c376d9e22f52eedd150269fbde8b2a543860cd56747e04a26b270c create mode 100644 .pnpm-store/v3/files/df/7fa243eb3a014f74ccd82eddc5575f92218df19146a138ba8363c4a9a367100ca47b995a014372a40d5438a2895feaee37bb733f6c885edd797981db432c68 create mode 100644 .pnpm-store/v3/files/e0/6603bd5e1bda7d388ff508c2728c131fbc31927979d41a115de3a0a68e94f9d9b322e6c4cb84e4b188e1d38772fb7e54d0556afb4b9ef91f0466cac9ff4c68 create mode 100644 .pnpm-store/v3/files/e0/70c9aedceb88857005a717d49227c56e88ba4fc22665de1cedf7e48a97669afd93e8df9c97ee72b76efde4cf79ca70ba522da408b5fee034f5f77e61f9d5e2 create mode 100644 .pnpm-store/v3/files/e1/8197607933da612b3b962b300f7f77bbf1f8cf901b0c393c6a14b21458eaa852adf857c73d2f4c1aad42e54f2f08189cdd22156af5fe1cd1ca512e0d8b7ede create mode 100644 .pnpm-store/v3/files/e1/e6c111024fcb6de34e7a6b34e921ce72219bfe4e07cf450e362554509120b88c28f8bd94e12e2a2af76468be7673ae06499ddca5382bbf5099664a61fb1bfd create mode 100644 .pnpm-store/v3/files/e2/d661f6d54688622b73ea0c645909f86fcba7a07a56da9633d399f1f31af8b79016c8a53e7843ccd37041f284a2390c85f4b52771f6825372756ab28a780567 create mode 100644 .pnpm-store/v3/files/e4/2416fc072dbd15adc362b2a6a4ca73481f12c2b23e65800ba33773eff41e7c6d4668b59d8247c0d7be7af43afd1c0d2893ca4e23ff7c8461a46ff0b142f915 create mode 100755 .pnpm-store/v3/files/e5/a52399b8448247b9cfb84aa777537ac1f43664b44ebce80656a64f110792205dcde435a24440dc656c36228c153b0b80948d9f0c8017b2ab1d37c56843882b-exec create mode 100644 .pnpm-store/v3/files/e7/fc93fb9fa18bdea8760494cb062639e567ef49c51862313bd22cf4fe003a4918969d0332e179b54c07d24004b74a0df0d3e82a24d5ad9ae94841de19b49045 create mode 100644 .pnpm-store/v3/files/e8/84f87e614d9c52d07c264e66ffecb0238d28b0d0dc95907f5feaae67ebc660259cf495b60765c6f28e062174156a4d9a3a6ab90d2beb52019b146eaa7da67a create mode 100644 .pnpm-store/v3/files/e8/bd46c41d6c83e2f614dc017eadf7cf654bf6693ea2c9ab4101dcc735bc6ce130209691efed7b3fad0f023d09d41a89edab34b35ee61c0e85dcebb9be1a7927 create mode 100644 .pnpm-store/v3/files/e9/0d2d96358624e348d719d6690733aa8ac7eaa017755f2c152ea7b41cf19bb72de8d1aabc4ae242571cdcb4de61bd9618cc48a15a2b58ec831b1ae7f3a5d9b4 create mode 100644 .pnpm-store/v3/files/ea/bc41d5d9a8d6f86234dac55cde13d07fac65fdb13f64136da3a33df684b737dfd30674f0bb7a97fcdb1226df29c055eb83d0d27ea2e5aaedd496bb88829250 create mode 100644 .pnpm-store/v3/files/eb/c2d60430b935f1cc0c7cbda58d8c9d18e5efc86c19dbcde49b7b4a9bdd5b5cb72f15568bc71b238aa5d07173152b273a044d067d97e154280453479312d62c create mode 100644 .pnpm-store/v3/files/ec/157f23aec989d6799b4c72bc1ac8610fe2a14b52e555e83ca005ad9c1019ae762ded2faffbca7d21f752f643071a19f1b8249e9038c46761f511df5d52ae00 create mode 100644 .pnpm-store/v3/files/ed/6f61b5f9d81049f352a2da88c6c6a42a278f01f3cfb13e168502aaa10f963adc9b253cd92b3aff4dc7cb50a9f204b8cf0b25bb98d407a4ec11e6958aa97e60 create mode 100644 .pnpm-store/v3/files/ed/b5add2f053663d3c07e224bfbd009cb462728858c0583336316aa3d4b1c6a1c7c5295424649798244e4613a744c8ac894af228c76fb22d67dbb05cea32fd0d-index.json create mode 100644 .pnpm-store/v3/files/ef/132754471916ed038a462358e951abb3533c44eb9bbb5ea944f65a4423ad3224120532c86756b23fd983c6c426de533649736cf0f55f77ea7ec1f0dd2a5aa5-index.json create mode 100644 .pnpm-store/v3/files/ef/3abaedddcde6b2bf8e5a83b48fab6acc3eabc5a115454d0d02fb1464e4e16cfea8c658e1e296798bfe7631dd7bf70e49de50d449e6f9ffcdee3728915fb0c3 create mode 100644 .pnpm-store/v3/files/f0/f4dca0abf8d47a801effaf5c4ce07099e0ea2972d5ba9eadbff3828847bc4300f801e3768236890dc9161357a59d9cbbc8eaba9baae311020c633026ec6c15 create mode 100644 .pnpm-store/v3/files/f5/3b4a24cdc9d41745fbef679626c8e1e1aa0f092ad54b27219a01f16ed6b02567b0f9117d0d0c4bb6504d318d42e9695abdaeb89a5fc708f0d4d51e59bcea33 create mode 100644 .pnpm-store/v3/files/f6/1bbedb2d106e8392845972f6bf8b71ab1f10eb1616157918acec7e73c6e246cd9bd9aa5ee10fed8ad4b7b5eb100eeb24ecc2d43227395f9c213fbbcc16ac05-index.json create mode 100644 .pnpm-store/v3/files/f6/8c74b9d5fea840a18216b46ceaf7b42ec3acbce56979f74814480944aecb816716e6530d4f587601e9afffcfcfb51af05d95eae220eaaee2b520cb10a3f7cb create mode 100644 .pnpm-store/v3/files/f6/8dab0cfc4e77c0e49df81965fbd063775f06a18af237ae6d1ce597299e1ae541da7f40dd4915d3fc8685a946703ef90e0eaa036d3df3adcfcda2d54cd9859b create mode 100644 .pnpm-store/v3/files/f7/74f5f547e9195f83715b6c875e1cdbae3bc3b64531d748bcec455b7963a90fe3f387618728ee42731d808a27398d6935a62aab6e832a5a7331e75326ccdef6 create mode 100644 .pnpm-store/v3/files/f8/25d135b92d6ea44fc35a5c8687c914ce5a6b4add077217b730eb168dab8243cc368bc43e54a7a736f564de633e30d416bbb0d0c71391d219513657f1498572 create mode 100644 .pnpm-store/v3/files/f8/3c701aaa0f3d38b04f67dadc56b6b09f84dd245841af9a206513c1ffc9ff2f9398d7f9293c2b25d402a38a6da5d307a88bd93e429b209ce83b45d472f4e71d create mode 100644 .pnpm-store/v3/files/fa/35b6862f05e4a4dd458a043c47db6fc6703135fcff3a428a598c17a7ffbb6661d3ec197b7a6901c1a80d473ecb2f85ed3e3aff744fba7f75771542de19955f create mode 100644 .pnpm-store/v3/files/fa/9397ff42f48883a963f67ce3882c962b8af9073b0cac119f4d68dd0d3a4acc819f746292c8527638f51956d8bab85f787c29ef1caafb6fd547a9f8db2ef7c0 create mode 100644 .pnpm-store/v3/files/fb/c45a3f596c49c978a066185967b6d2ee8d6984c1616bcb62fd0bd9f39a10e1ebe1db5fd30a391d40b3e6e9787e16d30bbe4cf7444dd4e47f12c6731a35f29e create mode 100644 .pnpm-store/v3/files/fc/4d97eec946e9c2c4b1affa96318a0a9c785d986669753b234585730bd1a30bf734429a3829c3dcac527dc7d7e7e085e2cece90f81f57bb2c333a33c6f7ab63 create mode 100644 .pnpm-store/v3/files/fc/b89b118fdf91a5d0b9f8b81839506618a442c3ced9e9ed04ab5fbb2229af58d5e03a5a79ab2a91e1e385d3a1536e2f487b21712b84c95956773befd979980b-index.json create mode 100644 .pnpm-store/v3/files/fd/93fb54caa25d3ce2d711866855b0acf41d9ae088b0c0d80c5feb783bac4a6517c161d292e4dff194888b3a1a4c4ae2e4c7f6064eb248f4fbfe57e41bd742de create mode 100644 .pnpm-store/v3/files/fe/34a405bd4e1accf4f625e506b4aa8a59a698397c40b05d03d84d8ea6f4158cb03c3231d535e5956dbfa42a35a7608f6eefe2a085190bfd6e4a511d0b33395e create mode 100644 .pnpm-store/v3/files/fe/7359ba023c071de830d69996ade7fbbd90057d5ff7d6c637248326ec2a6516c84bb1e9eb14cb9ceef8f3766fa8bd4036bf86b0806f94effa2d2a569b6aaaa7 create mode 100644 .pnpm-store/v3/files/fe/aac8a504d51df7c16bdb2d1d612bfbf6c189a537ddf7334b4fabdaaad5b1ca9d7fa68f8a88ab67f3c4d6699f109e1e376b5f859f2635da2d4c808968268c88 create mode 100644 .pnpm-store/v3/files/fe/bef1ee4ec53c63fea5ffcfaac3a33ac5a89b699b0e6967929d52f7d4c1f0d3e85c0853bfee95ffd754094e0ae8251cc44069b1d1ed6d72ea607910eee9e90c diff --git a/.changeset/curly-weeks-deliver.md b/.changeset/curly-weeks-deliver.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/curly-weeks-deliver.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/.changeset/curvy-ties-sing.md b/.changeset/curvy-ties-sing.md deleted file mode 100644 index 449fd32f..00000000 --- a/.changeset/curvy-ties-sing.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@matthiesenxyz/create-astro-ghostcms": patch ---- - -Bump dependencies: - -- astro from to -- vite from to -- astro-seo from to -- sass from to diff --git a/.changeset/orange-singers-mix.md b/.changeset/orange-singers-mix.md deleted file mode 100644 index 69624abb..00000000 --- a/.changeset/orange-singers-mix.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@matthiesenxyz/astro-ghostcms-catppuccin": patch ---- - -Bump dependencies: - -- astro from to -- vite from to -- astro-seo from to -- sass from to diff --git a/.changeset/rare-experts-shake.md b/.changeset/rare-experts-shake.md deleted file mode 100644 index be3f484b..00000000 --- a/.changeset/rare-experts-shake.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@matthiesenxyz/astro-ghostcms": patch ---- - -Bump dependencies: - -- astro from to -- vite from to -- astro-seo from to -- sass from to diff --git a/.changeset/strange-singers-wink.md b/.changeset/strange-singers-wink.md deleted file mode 100644 index 157c1aa9..00000000 --- a/.changeset/strange-singers-wink.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@matthiesenxyz/astro-ghostcms-theme-default": patch ---- - -Bump dependencies: - -- astro from to -- vite from to -- astro-seo from to -- sass from to diff --git a/.changeset/three-hotels-boil.md b/.changeset/three-hotels-boil.md deleted file mode 100644 index b7c8c4f1..00000000 --- a/.changeset/three-hotels-boil.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@matthiesenxyz/astro-ghostcms-rendercontent": patch ---- - -Bump dependencies: - -- astro from to -- vite from to -- astro-seo from to -- sass from to diff --git a/.pnpm-store/v3/files/00/49b747cbd561ea1ea344e30317af8d33e6bb375e48bb4aae3fb1e43196d2ec067cb92dfb5493b11b6f20e44a70ce8686bacc572827a2c73a669513075ec5d9 b/.pnpm-store/v3/files/00/49b747cbd561ea1ea344e30317af8d33e6bb375e48bb4aae3fb1e43196d2ec067cb92dfb5493b11b6f20e44a70ce8686bacc572827a2c73a669513075ec5d9 new file mode 100644 index 00000000..df62bea3 --- /dev/null +++ b/.pnpm-store/v3/files/00/49b747cbd561ea1ea344e30317af8d33e6bb375e48bb4aae3fb1e43196d2ec067cb92dfb5493b11b6f20e44a70ce8686bacc572827a2c73a669513075ec5d9 @@ -0,0 +1,943 @@ +import limit from 'p-limit'; +import { getSafeTimers, isObject, createDefer, format, objDisplay, objectAttr, toArray, shuffle } from '@vitest/utils'; +import { processError } from '@vitest/utils/error'; +export { processError } from '@vitest/utils/error'; +import { j as createChainable, g as generateHash, c as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, p as partitionSuiteChildren, h as hasTests, e as hasFailed } from './chunk-tasks.js'; +import { relative } from 'pathe'; + +const fnMap = /* @__PURE__ */ new WeakMap(); +const fixtureMap = /* @__PURE__ */ new WeakMap(); +const hooksMap = /* @__PURE__ */ new WeakMap(); +function setFn(key, fn) { + fnMap.set(key, fn); +} +function getFn(key) { + return fnMap.get(key); +} +function setFixture(key, fixture) { + fixtureMap.set(key, fixture); +} +function getFixture(key) { + return fixtureMap.get(key); +} +function setHooks(key, hooks) { + hooksMap.set(key, hooks); +} +function getHooks(key) { + return hooksMap.get(key); +} + +class PendingError extends Error { + constructor(message, task) { + super(message); + this.message = message; + this.taskId = task.id; + } + code = "VITEST_PENDING"; + taskId; +} + +const collectorContext = { + tasks: [], + currentSuite: null +}; +function collectTask(task) { + var _a; + (_a = collectorContext.currentSuite) == null ? void 0 : _a.tasks.push(task); +} +async function runWithSuite(suite, fn) { + const prev = collectorContext.currentSuite; + collectorContext.currentSuite = suite; + await fn(); + collectorContext.currentSuite = prev; +} +function withTimeout(fn, timeout, isHook = false) { + if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) + return fn; + const { setTimeout, clearTimeout } = getSafeTimers(); + return (...args) => { + return Promise.race([fn(...args), new Promise((resolve, reject) => { + var _a; + const timer = setTimeout(() => { + clearTimeout(timer); + reject(new Error(makeTimeoutMsg(isHook, timeout))); + }, timeout); + (_a = timer.unref) == null ? void 0 : _a.call(timer); + })]); + }; +} +function createTestContext(test, runner) { + var _a; + const context = function() { + throw new Error("done() callback is deprecated, use promise instead"); + }; + context.task = test; + context.skip = () => { + test.pending = true; + throw new PendingError("test is skipped; abort execution", test); + }; + context.onTestFailed = (fn) => { + test.onFailed || (test.onFailed = []); + test.onFailed.push(fn); + }; + context.onTestFinished = (fn) => { + test.onFinished || (test.onFinished = []); + test.onFinished.push(fn); + }; + return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context; +} +function makeTimeoutMsg(isHook, timeout) { + return `${isHook ? "Hook" : "Test"} timed out in ${timeout}ms. +If this is a long-running ${isHook ? "hook" : "test"}, pass a timeout value as the last argument or configure it globally with "${isHook ? "hookTimeout" : "testTimeout"}".`; +} + +function mergeContextFixtures(fixtures, context = {}) { + const fixtureOptionKeys = ["auto"]; + const fixtureArray = Object.entries(fixtures).map(([prop, value]) => { + const fixtureItem = { value }; + if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) { + Object.assign(fixtureItem, value[1]); + fixtureItem.value = value[0]; + } + fixtureItem.prop = prop; + fixtureItem.isFn = typeof fixtureItem.value === "function"; + return fixtureItem; + }); + if (Array.isArray(context.fixtures)) + context.fixtures = context.fixtures.concat(fixtureArray); + else + context.fixtures = fixtureArray; + fixtureArray.forEach((fixture) => { + if (fixture.isFn) { + const usedProps = getUsedProps(fixture.value); + if (usedProps.length) + fixture.deps = context.fixtures.filter(({ prop }) => prop !== fixture.prop && usedProps.includes(prop)); + } + }); + return context; +} +const fixtureValueMaps = /* @__PURE__ */ new Map(); +const cleanupFnArrayMap = /* @__PURE__ */ new Map(); +async function callFixtureCleanup(context) { + const cleanupFnArray = cleanupFnArrayMap.get(context) ?? []; + for (const cleanup of cleanupFnArray.reverse()) + await cleanup(); + cleanupFnArrayMap.delete(context); +} +function withFixtures(fn, testContext) { + return (hookContext) => { + const context = hookContext || testContext; + if (!context) + return fn({}); + const fixtures = getFixture(context); + if (!(fixtures == null ? void 0 : fixtures.length)) + return fn(context); + const usedProps = getUsedProps(fn); + const hasAutoFixture = fixtures.some(({ auto }) => auto); + if (!usedProps.length && !hasAutoFixture) + return fn(context); + if (!fixtureValueMaps.get(context)) + fixtureValueMaps.set(context, /* @__PURE__ */ new Map()); + const fixtureValueMap = fixtureValueMaps.get(context); + if (!cleanupFnArrayMap.has(context)) + cleanupFnArrayMap.set(context, []); + const cleanupFnArray = cleanupFnArrayMap.get(context); + const usedFixtures = fixtures.filter(({ prop, auto }) => auto || usedProps.includes(prop)); + const pendingFixtures = resolveDeps(usedFixtures); + if (!pendingFixtures.length) + return fn(context); + async function resolveFixtures() { + for (const fixture of pendingFixtures) { + if (fixtureValueMap.has(fixture)) + continue; + const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value; + context[fixture.prop] = resolvedValue; + fixtureValueMap.set(fixture, resolvedValue); + cleanupFnArray.unshift(() => { + fixtureValueMap.delete(fixture); + }); + } + } + return resolveFixtures().then(() => fn(context)); + }; +} +async function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) { + const useFnArgPromise = createDefer(); + let isUseFnArgResolved = false; + const fixtureReturn = fixtureFn(context, async (useFnArg) => { + isUseFnArgResolved = true; + useFnArgPromise.resolve(useFnArg); + const useReturnPromise = createDefer(); + cleanupFnArray.push(async () => { + useReturnPromise.resolve(); + await fixtureReturn; + }); + await useReturnPromise; + }).catch((e) => { + if (!isUseFnArgResolved) { + useFnArgPromise.reject(e); + return; + } + throw e; + }); + return useFnArgPromise; +} +function resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) { + fixtures.forEach((fixture) => { + if (pendingFixtures.includes(fixture)) + return; + if (!fixture.isFn || !fixture.deps) { + pendingFixtures.push(fixture); + return; + } + if (depSet.has(fixture)) + throw new Error(`Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(" <- ")}`); + depSet.add(fixture); + resolveDeps(fixture.deps, depSet, pendingFixtures); + pendingFixtures.push(fixture); + depSet.clear(); + }); + return pendingFixtures; +} +function getUsedProps(fn) { + const match = fn.toString().match(/[^(]*\(([^)]*)/); + if (!match) + return []; + const args = splitByComma(match[1]); + if (!args.length) + return []; + const first = args[0]; + if (!(first.startsWith("{") && first.endsWith("}"))) + throw new Error(`The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received "${first}".`); + const _first = first.slice(1, -1).replace(/\s/g, ""); + const props = splitByComma(_first).map((prop) => { + return prop.replace(/\:.*|\=.*/g, ""); + }); + const last = props.at(-1); + if (last && last.startsWith("...")) + throw new Error(`Rest parameters are not supported in fixtures, received "${last}".`); + return props; +} +function splitByComma(s) { + const result = []; + const stack = []; + let start = 0; + for (let i = 0; i < s.length; i++) { + if (s[i] === "{" || s[i] === "[") { + stack.push(s[i] === "{" ? "}" : "]"); + } else if (s[i] === stack[stack.length - 1]) { + stack.pop(); + } else if (!stack.length && s[i] === ",") { + const token = s.substring(start, i).trim(); + if (token) + result.push(token); + start = i + 1; + } + } + const lastToken = s.substring(start).trim(); + if (lastToken) + result.push(lastToken); + return result; +} + +let _test; +function setCurrentTest(test) { + _test = test; +} +function getCurrentTest() { + return _test; +} + +const suite = createSuite(); +const test = createTest( + function(name, optionsOrFn, optionsOrTest) { + if (getCurrentTest()) + throw new Error('Calling the test function inside another test function is not allowed. Please put it inside "describe" or "suite" so it can be properly collected.'); + getCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest); + } +); +const describe = suite; +const it = test; +let runner; +let defaultSuite; +function getDefaultSuite() { + return defaultSuite; +} +function getRunner() { + return runner; +} +function clearCollectorContext(currentRunner) { + if (!defaultSuite) + defaultSuite = currentRunner.config.sequence.shuffle ? suite.shuffle("") : currentRunner.config.sequence.concurrent ? suite.concurrent("") : suite(""); + runner = currentRunner; + collectorContext.tasks.length = 0; + defaultSuite.clear(); + collectorContext.currentSuite = defaultSuite; +} +function getCurrentSuite() { + return collectorContext.currentSuite || defaultSuite; +} +function createSuiteHooks() { + return { + beforeAll: [], + afterAll: [], + beforeEach: [], + afterEach: [] + }; +} +function parseArguments(optionsOrFn, optionsOrTest) { + let options = {}; + let fn = () => { + }; + if (typeof optionsOrTest === "object") { + if (typeof optionsOrFn === "object") + throw new TypeError("Cannot use two objects as arguments. Please provide options and a function callback in that order."); + options = optionsOrTest; + } else if (typeof optionsOrTest === "number") { + options = { timeout: optionsOrTest }; + } else if (typeof optionsOrFn === "object") { + options = optionsOrFn; + } + if (typeof optionsOrFn === "function") { + if (typeof optionsOrTest === "function") + throw new TypeError("Cannot use two functions as arguments. Please use the second argument for options."); + fn = optionsOrFn; + } else if (typeof optionsOrTest === "function") { + fn = optionsOrTest; + } + return { + options, + handler: fn + }; +} +function createSuiteCollector(name, factory = () => { +}, mode, shuffle, each, suiteOptions) { + const tasks = []; + const factoryQueue = []; + let suite2; + initSuite(); + const task = function(name2 = "", options = {}) { + const task2 = { + id: "", + name: name2, + suite: void 0, + each: options.each, + fails: options.fails, + context: void 0, + type: "custom", + retry: options.retry ?? runner.config.retry, + repeats: options.repeats, + mode: options.only ? "only" : options.skip ? "skip" : options.todo ? "todo" : "run", + meta: options.meta ?? /* @__PURE__ */ Object.create(null) + }; + const handler = options.handler; + if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) + task2.concurrent = true; + if (shuffle) + task2.shuffle = true; + const context = createTestContext(task2, runner); + Object.defineProperty(task2, "context", { + value: context, + enumerable: false + }); + setFixture(context, options.fixtures); + if (handler) { + setFn(task2, withTimeout( + withFixtures(handler, context), + (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout + )); + } + tasks.push(task2); + return task2; + }; + const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) { + let { options, handler } = parseArguments( + optionsOrFn, + optionsOrTest + ); + if (typeof suiteOptions === "object") + options = Object.assign({}, suiteOptions, options); + options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent); + options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential); + const test3 = task( + formatName(name2), + { ...this, ...options, handler } + ); + test3.type = "test"; + }); + const collector = { + type: "collector", + name, + mode, + options: suiteOptions, + test: test2, + tasks, + collect, + task, + clear, + on: addHook + }; + function addHook(name2, ...fn) { + getHooks(suite2)[name2].push(...fn); + } + function initSuite() { + if (typeof suiteOptions === "number") + suiteOptions = { timeout: suiteOptions }; + suite2 = { + id: "", + type: "suite", + name, + mode, + each, + shuffle, + tasks: [], + meta: /* @__PURE__ */ Object.create(null), + projectName: "" + }; + setHooks(suite2, createSuiteHooks()); + } + function clear() { + tasks.length = 0; + factoryQueue.length = 0; + initSuite(); + } + async function collect(file) { + factoryQueue.length = 0; + if (factory) + await runWithSuite(collector, () => factory(test2)); + const allChildren = []; + for (const i of [...factoryQueue, ...tasks]) + allChildren.push(i.type === "collector" ? await i.collect(file) : i); + suite2.file = file; + suite2.tasks = allChildren; + allChildren.forEach((task2) => { + task2.suite = suite2; + if (file) + task2.file = file; + }); + return suite2; + } + collectTask(collector); + return collector; +} +function createSuite() { + function suiteFn(name, factoryOrOptions, optionsOrFactory = {}) { + const mode = this.only ? "only" : this.skip ? "skip" : this.todo ? "todo" : "run"; + const currentSuite = getCurrentSuite(); + let { options, handler: factory } = parseArguments( + factoryOrOptions, + optionsOrFactory + ); + if (currentSuite == null ? void 0 : currentSuite.options) + options = { ...currentSuite.options, ...options }; + options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent); + options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential); + return createSuiteCollector(formatName(name), factory, mode, this.shuffle, this.each, options); + } + suiteFn.each = function(cases, ...args) { + const suite2 = this.withContext(); + this.setContext("each", true); + if (Array.isArray(cases) && args.length) + cases = formatTemplateString(cases, args); + return (name, optionsOrFn, fnOrOptions) => { + const _name = formatName(name); + const arrayOnlyCases = cases.every(Array.isArray); + const { options, handler } = parseArguments( + optionsOrFn, + fnOrOptions + ); + cases.forEach((i, idx) => { + const items = Array.isArray(i) ? i : [i]; + arrayOnlyCases ? suite2(formatTitle(_name, items, idx), options, () => handler(...items)) : suite2(formatTitle(_name, items, idx), options, () => handler(i)); + }); + this.setContext("each", void 0); + }; + }; + suiteFn.skipIf = (condition) => condition ? suite.skip : suite; + suiteFn.runIf = (condition) => condition ? suite : suite.skip; + return createChainable( + ["concurrent", "sequential", "shuffle", "skip", "only", "todo"], + suiteFn + ); +} +function createTaskCollector(fn, context) { + const taskFn = fn; + taskFn.each = function(cases, ...args) { + const test2 = this.withContext(); + this.setContext("each", true); + if (Array.isArray(cases) && args.length) + cases = formatTemplateString(cases, args); + return (name, optionsOrFn, fnOrOptions) => { + const _name = formatName(name); + const arrayOnlyCases = cases.every(Array.isArray); + const { options, handler } = parseArguments( + optionsOrFn, + fnOrOptions + ); + cases.forEach((i, idx) => { + const items = Array.isArray(i) ? i : [i]; + arrayOnlyCases ? test2(formatTitle(_name, items, idx), options, () => handler(...items)) : test2(formatTitle(_name, items, idx), options, () => handler(i)); + }); + this.setContext("each", void 0); + }; + }; + taskFn.skipIf = function(condition) { + return condition ? this.skip : this; + }; + taskFn.runIf = function(condition) { + return condition ? this : this.skip; + }; + taskFn.extend = function(fixtures) { + const _context = mergeContextFixtures(fixtures, context); + return createTest(function fn2(name, optionsOrFn, optionsOrTest) { + getCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest); + }, _context); + }; + const _test = createChainable( + ["concurrent", "sequential", "skip", "only", "todo", "fails"], + taskFn + ); + if (context) + _test.mergeContext(context); + return _test; +} +function createTest(fn, context) { + return createTaskCollector(fn, context); +} +function formatName(name) { + return typeof name === "string" ? name : name instanceof Function ? name.name || "" : String(name); +} +function formatTitle(template, items, idx) { + if (template.includes("%#")) { + template = template.replace(/%%/g, "__vitest_escaped_%__").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, "%%"); + } + const count = template.split("%").length - 1; + let formatted = format(template, ...items.slice(0, count)); + if (isObject(items[0])) { + formatted = formatted.replace( + /\$([$\w_.]+)/g, + // https://github.com/chaijs/chai/pull/1490 + (_, key) => { + var _a, _b; + return objDisplay(objectAttr(items[0], key), { truncate: (_b = (_a = runner == null ? void 0 : runner.config) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold }); + } + ); + } + return formatted; +} +function formatTemplateString(cases, args) { + const header = cases.join("").trim().replace(/ /g, "").split("\n").map((i) => i.split("|"))[0]; + const res = []; + for (let i = 0; i < Math.floor(args.length / header.length); i++) { + const oneCase = {}; + for (let j = 0; j < header.length; j++) + oneCase[header[j]] = args[i * header.length + j]; + res.push(oneCase); + } + return res; +} + +async function runSetupFiles(config, runner) { + const files = toArray(config.setupFiles); + if (config.sequence.setupFiles === "parallel") { + await Promise.all( + files.map(async (fsPath) => { + await runner.importFile(fsPath, "setup"); + }) + ); + } else { + for (const fsPath of files) + await runner.importFile(fsPath, "setup"); + } +} + +const now$1 = Date.now; +async function collectTests(paths, runner) { + const files = []; + const config = runner.config; + for (const filepath of paths) { + const path = relative(config.root, filepath); + const file = { + id: generateHash(`${path}${config.name || ""}`), + name: path, + type: "suite", + mode: "run", + filepath, + tasks: [], + meta: /* @__PURE__ */ Object.create(null), + projectName: config.name + }; + clearCollectorContext(runner); + try { + const setupStart = now$1(); + await runSetupFiles(config, runner); + const collectStart = now$1(); + file.setupDuration = collectStart - setupStart; + await runner.importFile(filepath, "collect"); + const defaultTasks = await getDefaultSuite().collect(file); + setHooks(file, getHooks(defaultTasks)); + for (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) { + if (c.type === "test") { + file.tasks.push(c); + } else if (c.type === "custom") { + file.tasks.push(c); + } else if (c.type === "suite") { + file.tasks.push(c); + } else if (c.type === "collector") { + const suite = await c.collect(file); + if (suite.name || suite.tasks.length) + file.tasks.push(suite); + } + } + file.collectDuration = now$1() - collectStart; + } catch (e) { + const error = processError(e); + file.result = { + state: "fail", + errors: [error] + }; + } + calculateSuiteHash(file); + const hasOnlyTasks = someTasksAreOnly(file); + interpretTaskModes(file, config.testNamePattern, hasOnlyTasks, false, config.allowOnly); + files.push(file); + } + return files; +} + +const now = Date.now; +function updateSuiteHookState(suite, name, state, runner) { + var _a; + if (!suite.result) + suite.result = { state: "run" }; + if (!((_a = suite.result) == null ? void 0 : _a.hooks)) + suite.result.hooks = {}; + const suiteHooks = suite.result.hooks; + if (suiteHooks) { + suiteHooks[name] = state; + updateTask(suite, runner); + } +} +function getSuiteHooks(suite, name, sequence) { + const hooks = getHooks(suite)[name]; + if (sequence === "stack" && (name === "afterAll" || name === "afterEach")) + return hooks.slice().reverse(); + return hooks; +} +async function callSuiteHook(suite, currentTask, name, runner, args) { + const sequence = runner.config.sequence.hooks; + const callbacks = []; + if (name === "beforeEach" && suite.suite) { + callbacks.push( + ...await callSuiteHook(suite.suite, currentTask, name, runner, args) + ); + } + updateSuiteHookState(currentTask, name, "run", runner); + const hooks = getSuiteHooks(suite, name, sequence); + if (sequence === "parallel") { + callbacks.push(...await Promise.all(hooks.map((fn) => fn(...args)))); + } else { + for (const hook of hooks) + callbacks.push(await hook(...args)); + } + updateSuiteHookState(currentTask, name, "pass", runner); + if (name === "afterEach" && suite.suite) { + callbacks.push( + ...await callSuiteHook(suite.suite, currentTask, name, runner, args) + ); + } + return callbacks; +} +const packs = /* @__PURE__ */ new Map(); +let updateTimer; +let previousUpdate; +function updateTask(task, runner) { + packs.set(task.id, [task.result, task.meta]); + const { clearTimeout, setTimeout } = getSafeTimers(); + clearTimeout(updateTimer); + updateTimer = setTimeout(() => { + previousUpdate = sendTasksUpdate(runner); + }, 10); +} +async function sendTasksUpdate(runner) { + var _a; + const { clearTimeout } = getSafeTimers(); + clearTimeout(updateTimer); + await previousUpdate; + if (packs.size) { + const taskPacks = Array.from(packs).map(([id, task]) => { + return [ + id, + task[0], + task[1] + ]; + }); + const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks); + packs.clear(); + return p; + } +} +async function callCleanupHooks(cleanups) { + await Promise.all(cleanups.map(async (fn) => { + if (typeof fn !== "function") + return; + await fn(); + })); +} +async function runTest(test, runner) { + var _a, _b, _c, _d, _e, _f, _g, _h; + await ((_a = runner.onBeforeRunTask) == null ? void 0 : _a.call(runner, test)); + if (test.mode !== "run") + return; + if (((_b = test.result) == null ? void 0 : _b.state) === "fail") { + updateTask(test, runner); + return; + } + const start = now(); + test.result = { + state: "run", + startTime: start, + retryCount: 0 + }; + updateTask(test, runner); + setCurrentTest(test); + const repeats = test.repeats ?? 0; + for (let repeatCount = 0; repeatCount <= repeats; repeatCount++) { + const retry = test.retry ?? 0; + for (let retryCount = 0; retryCount <= retry; retryCount++) { + let beforeEachCleanups = []; + try { + await ((_c = runner.onBeforeTryTask) == null ? void 0 : _c.call(runner, test, { retry: retryCount, repeats: repeatCount })); + test.result.repeatCount = repeatCount; + beforeEachCleanups = await callSuiteHook(test.suite, test, "beforeEach", runner, [test.context, test.suite]); + if (runner.runTask) { + await runner.runTask(test); + } else { + const fn = getFn(test); + if (!fn) + throw new Error("Test function is not found. Did you add it using `setFn`?"); + await fn(); + } + if (test.promises) { + const result = await Promise.allSettled(test.promises); + const errors = result.map((r) => r.status === "rejected" ? r.reason : void 0).filter(Boolean); + if (errors.length) + throw errors; + } + await ((_d = runner.onAfterTryTask) == null ? void 0 : _d.call(runner, test, { retry: retryCount, repeats: repeatCount })); + if (test.result.state !== "fail") { + if (!test.repeats) + test.result.state = "pass"; + else if (test.repeats && retry === retryCount) + test.result.state = "pass"; + } + } catch (e) { + failTask(test.result, e, runner.config.diffOptions); + } + if (test.pending || ((_e = test.result) == null ? void 0 : _e.state) === "skip") { + test.mode = "skip"; + test.result = { state: "skip" }; + updateTask(test, runner); + setCurrentTest(void 0); + return; + } + try { + await callSuiteHook(test.suite, test, "afterEach", runner, [test.context, test.suite]); + await callCleanupHooks(beforeEachCleanups); + await callFixtureCleanup(test.context); + } catch (e) { + failTask(test.result, e, runner.config.diffOptions); + } + if (test.result.state === "pass") + break; + if (retryCount < retry) { + test.result.state = "run"; + test.result.retryCount = (test.result.retryCount ?? 0) + 1; + } + updateTask(test, runner); + } + } + try { + await Promise.all(((_f = test.onFinished) == null ? void 0 : _f.map((fn) => fn(test.result))) || []); + } catch (e) { + failTask(test.result, e, runner.config.diffOptions); + } + if (test.result.state === "fail") { + try { + await Promise.all(((_g = test.onFailed) == null ? void 0 : _g.map((fn) => fn(test.result))) || []); + } catch (e) { + failTask(test.result, e, runner.config.diffOptions); + } + } + if (test.fails) { + if (test.result.state === "pass") { + const error = processError(new Error("Expect test to fail")); + test.result.state = "fail"; + test.result.errors = [error]; + } else { + test.result.state = "pass"; + test.result.errors = void 0; + } + } + setCurrentTest(void 0); + test.result.duration = now() - start; + await ((_h = runner.onAfterRunTask) == null ? void 0 : _h.call(runner, test)); + updateTask(test, runner); +} +function failTask(result, err, diffOptions) { + if (err instanceof PendingError) { + result.state = "skip"; + return; + } + result.state = "fail"; + const errors = Array.isArray(err) ? err : [err]; + for (const e of errors) { + const error = processError(e, diffOptions); + result.errors ?? (result.errors = []); + result.errors.push(error); + } +} +function markTasksAsSkipped(suite, runner) { + suite.tasks.forEach((t) => { + t.mode = "skip"; + t.result = { ...t.result, state: "skip" }; + updateTask(t, runner); + if (t.type === "suite") + markTasksAsSkipped(t, runner); + }); +} +async function runSuite(suite, runner) { + var _a, _b, _c, _d; + await ((_a = runner.onBeforeRunSuite) == null ? void 0 : _a.call(runner, suite)); + if (((_b = suite.result) == null ? void 0 : _b.state) === "fail") { + markTasksAsSkipped(suite, runner); + updateTask(suite, runner); + return; + } + const start = now(); + suite.result = { + state: "run", + startTime: start + }; + updateTask(suite, runner); + let beforeAllCleanups = []; + if (suite.mode === "skip") { + suite.result.state = "skip"; + } else if (suite.mode === "todo") { + suite.result.state = "todo"; + } else { + try { + beforeAllCleanups = await callSuiteHook(suite, suite, "beforeAll", runner, [suite]); + if (runner.runSuite) { + await runner.runSuite(suite); + } else { + for (let tasksGroup of partitionSuiteChildren(suite)) { + if (tasksGroup[0].concurrent === true) { + const mutex = limit(runner.config.maxConcurrency); + await Promise.all(tasksGroup.map((c) => mutex(() => runSuiteChild(c, runner)))); + } else { + const { sequence } = runner.config; + if (sequence.shuffle || suite.shuffle) { + const suites = tasksGroup.filter((group) => group.type === "suite"); + const tests = tasksGroup.filter((group) => group.type === "test"); + const groups = shuffle([suites, tests], sequence.seed); + tasksGroup = groups.flatMap((group) => shuffle(group, sequence.seed)); + } + for (const c of tasksGroup) + await runSuiteChild(c, runner); + } + } + } + } catch (e) { + failTask(suite.result, e, runner.config.diffOptions); + } + try { + await callSuiteHook(suite, suite, "afterAll", runner, [suite]); + await callCleanupHooks(beforeAllCleanups); + } catch (e) { + failTask(suite.result, e, runner.config.diffOptions); + } + if (suite.mode === "run") { + if (!runner.config.passWithNoTests && !hasTests(suite)) { + suite.result.state = "fail"; + if (!((_c = suite.result.errors) == null ? void 0 : _c.length)) { + const error = processError(new Error(`No test found in suite ${suite.name}`)); + suite.result.errors = [error]; + } + } else if (hasFailed(suite)) { + suite.result.state = "fail"; + } else { + suite.result.state = "pass"; + } + } + updateTask(suite, runner); + suite.result.duration = now() - start; + await ((_d = runner.onAfterRunSuite) == null ? void 0 : _d.call(runner, suite)); + } +} +async function runSuiteChild(c, runner) { + if (c.type === "test" || c.type === "custom") + return runTest(c, runner); + else if (c.type === "suite") + return runSuite(c, runner); +} +async function runFiles(files, runner) { + var _a, _b; + for (const file of files) { + if (!file.tasks.length && !runner.config.passWithNoTests) { + if (!((_b = (_a = file.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.length)) { + const error = processError(new Error(`No test suite found in file ${file.filepath}`)); + file.result = { + state: "fail", + errors: [error] + }; + } + } + await runSuite(file, runner); + } +} +async function startTests(paths, runner) { + var _a, _b, _c, _d; + await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths)); + const files = await collectTests(paths, runner); + (_b = runner.onCollected) == null ? void 0 : _b.call(runner, files); + await ((_c = runner.onBeforeRunFiles) == null ? void 0 : _c.call(runner, files)); + await runFiles(files, runner); + await ((_d = runner.onAfterRunFiles) == null ? void 0 : _d.call(runner, files)); + await sendTasksUpdate(runner); + return files; +} + +function getDefaultHookTimeout() { + return getRunner().config.hookTimeout; +} +function beforeAll(fn, timeout) { + return getCurrentSuite().on("beforeAll", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)); +} +function afterAll(fn, timeout) { + return getCurrentSuite().on("afterAll", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)); +} +function beforeEach(fn, timeout) { + return getCurrentSuite().on("beforeEach", withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)); +} +function afterEach(fn, timeout) { + return getCurrentSuite().on("afterEach", withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)); +} +const onTestFailed = createTestHook("onTestFailed", (test, handler) => { + test.onFailed || (test.onFailed = []); + test.onFailed.push(handler); +}); +const onTestFinished = createTestHook("onTestFinished", (test, handler) => { + test.onFinished || (test.onFinished = []); + test.onFinished.push(handler); +}); +function createTestHook(name, handler) { + return (fn) => { + const current = getCurrentTest(); + if (!current) + throw new Error(`Hook ${name}() can only be called inside a test`); + return handler(current, fn); + }; +} + +export { afterAll, afterEach, beforeAll, beforeEach, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask }; diff --git a/.pnpm-store/v3/files/01/7872a06cf8c816a7597dc04c632d33e0f7abd980d148881fe4950f1a0885af1ec2d963a1208851f1b3481a955e337d8c7e1e996811976c01bf09777565faa6 b/.pnpm-store/v3/files/01/7872a06cf8c816a7597dc04c632d33e0f7abd980d148881fe4950f1a0885af1ec2d963a1208851f1b3481a955e337d8c7e1e996811976c01bf09777565faa6 new file mode 100644 index 00000000..5f8d891e --- /dev/null +++ b/.pnpm-store/v3/files/01/7872a06cf8c816a7597dc04c632d33e0f7abd980d148881fe4950f1a0885af1ec2d963a1208851f1b3481a955e337d8c7e1e996811976c01bf09777565faa6 @@ -0,0 +1,22 @@ +{ + "name": "@rollup/rollup-linux-x64-gnu", + "version": "4.12.0", + "os": [ + "linux" + ], + "cpu": [ + "x64" + ], + "files": [ + "rollup.linux-x64-gnu.node" + ], + "description": "Native bindings for Rollup", + "author": "Lukas Taegert-Atkinson", + "homepage": "https://rollupjs.org/", + "license": "MIT", + "repository": "rollup/rollup", + "libc": [ + "glibc" + ], + "main": "./rollup.linux-x64-gnu.node" +} \ No newline at end of file diff --git a/.pnpm-store/v3/files/01/bb938b55acb0779f0fa49545abc946fe900cc7be9d3591974290f52cdb5d76aed3ee5f12c795924b899943f39a49a2c709cc52d6e94ddc2011f87f83576da0 b/.pnpm-store/v3/files/01/bb938b55acb0779f0fa49545abc946fe900cc7be9d3591974290f52cdb5d76aed3ee5f12c795924b899943f39a49a2c709cc52d6e94ddc2011f87f83576da0 new file mode 100644 index 00000000..e6393190 --- /dev/null +++ b/.pnpm-store/v3/files/01/bb938b55acb0779f0fa49545abc946fe900cc7be9d3591974290f52cdb5d76aed3ee5f12c795924b899943f39a49a2c709cc52d6e94ddc2011f87f83576da0 @@ -0,0 +1,33 @@ +import { VitestRunner } from './types.js'; +export { CancelReason, VitestRunnerConfig, VitestRunnerConstructor, VitestRunnerImportSource } from './types.js'; +import { T as Task, F as File, d as SuiteAPI, e as TestAPI, f as SuiteCollector, g as CustomAPI, h as SuiteHooks, O as OnTestFailedHandler, i as OnTestFinishedHandler, a as Test, C as Custom, S as Suite } from './tasks-_kyNRBhz.js'; +export { D as DoneCallback, E as ExtendedContext, t as Fixture, s as FixtureFn, r as FixtureOptions, u as Fixtures, v as HookCleanupCallback, H as HookListener, I as InferFixturesTypes, R as RunMode, y as RuntimeContext, B as SequenceHooks, G as SequenceSetupFiles, x as SuiteFactory, k as TaskBase, A as TaskContext, w as TaskCustomOptions, m as TaskMeta, l as TaskPopulated, n as TaskResult, o as TaskResultPack, j as TaskState, z as TestContext, p as TestFunction, q as TestOptions, U as Use } from './tasks-_kyNRBhz.js'; +import { Awaitable } from '@vitest/utils'; +export { processError } from '@vitest/utils/error'; +import '@vitest/utils/diff'; + +declare function updateTask(task: Task, runner: VitestRunner): void; +declare function startTests(paths: string[], runner: VitestRunner): Promise; + +declare const suite: SuiteAPI; +declare const test: TestAPI; +declare const describe: SuiteAPI; +declare const it: TestAPI; +declare function getCurrentSuite(): SuiteCollector; +declare function createTaskCollector(fn: (...args: any[]) => any, context?: Record): CustomAPI; + +declare function beforeAll(fn: SuiteHooks['beforeAll'][0], timeout?: number): void; +declare function afterAll(fn: SuiteHooks['afterAll'][0], timeout?: number): void; +declare function beforeEach(fn: SuiteHooks['beforeEach'][0], timeout?: number): void; +declare function afterEach(fn: SuiteHooks['afterEach'][0], timeout?: number): void; +declare const onTestFailed: (fn: OnTestFailedHandler) => void; +declare const onTestFinished: (fn: OnTestFinishedHandler) => void; + +declare function setFn(key: Test | Custom, fn: (() => Awaitable)): void; +declare function getFn(key: Task): (() => Awaitable); +declare function setHooks(key: Suite, hooks: SuiteHooks): void; +declare function getHooks(key: Suite): SuiteHooks; + +declare function getCurrentTest(): T; + +export { Custom, CustomAPI, File, OnTestFailedHandler, OnTestFinishedHandler, Suite, SuiteAPI, SuiteCollector, SuiteHooks, Task, Test, TestAPI, VitestRunner, afterAll, afterEach, beforeAll, beforeEach, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask }; diff --git a/.pnpm-store/v3/files/02/4094d13859ba732f6e50e93ca823222d36e54c51f15ecc67f83f1309801a98c8ba32d55765faac66069b11360f81496c0cb4fe28dd44e1cc59ad8cffa25533-index.json b/.pnpm-store/v3/files/02/4094d13859ba732f6e50e93ca823222d36e54c51f15ecc67f83f1309801a98c8ba32d55765faac66069b11360f81496c0cb4fe28dd44e1cc59ad8cffa25533-index.json new file mode 100644 index 00000000..48411a57 --- /dev/null +++ b/.pnpm-store/v3/files/02/4094d13859ba732f6e50e93ca823222d36e54c51f15ecc67f83f1309801a98c8ba32d55765faac66069b11360f81496c0cb4fe28dd44e1cc59ad8cffa25533-index.json @@ -0,0 +1 @@ +{"files":{"dist/index.js":{"checkedAt":1708389320583,"integrity":"sha512-0kfv/XwgTPS6RyTL5LIFATgQuRD5jYMCdTx7E8nZXsVKlDXgjxXiVp+GGLNrSv7vYnplmk9k50iJzI4avpZ8kQ==","mode":420,"size":3831},"README.md":{"checkedAt":1708389320583,"integrity":"sha512-YgFkqdxPqbLCzh8GS6hPgLDlcZeiqSNZJZdjRo6aUxmM1uuqzOEPC/KDWSVXjvnKbnab3ZQqQqLh7h6MAW2xcg==","mode":420,"size":63},"dist/index.d.ts":{"checkedAt":1708389320584,"integrity":"sha512-ipbREd2PW+AxybhnhFXhjmAZPHKt+uwEIUa4W5ZW82fGWmyxgIbtQ5/an5YTisOCtnoBX3YFi6+4LM67dSP81Q==","mode":420,"size":12089},"LICENSE":{"checkedAt":1708389320584,"integrity":"sha512-UVFpfPJvKX+pFZi9kICLGeKXa7aMp5oeTmTQJBxCYHGrecls8D80KYY+DoSbK71Xw3IjeSGb/B31WXPYaplODw==","mode":420,"size":1177},"package.json":{"checkedAt":1708389320584,"integrity":"sha512-g08RLzXH6/OD46xcTcFsCjtVvg8qj/77USRH+M/C534iJ02tc0ZJt52k166NxGxKNmhbG5t327DsX/7u3bshhQ==","mode":420,"size":909}}} \ No newline at end of file diff --git a/.pnpm-store/v3/files/08/39e77ef8a237912d04ea59b3733c22a0f19b49c6e9915b1e348576ab7a1b38f4cf5f9d2ca4f31f468c447723f0034fea600943fa7e5d4e73224ac1fc4262e8 b/.pnpm-store/v3/files/08/39e77ef8a237912d04ea59b3733c22a0f19b49c6e9915b1e348576ab7a1b38f4cf5f9d2ca4f31f468c447723f0034fea600943fa7e5d4e73224ac1fc4262e8 new file mode 100644 index 00000000..8a630b8b --- /dev/null +++ b/.pnpm-store/v3/files/08/39e77ef8a237912d04ea59b3733c22a0f19b49c6e9915b1e348576ab7a1b38f4cf5f9d2ca4f31f468c447723f0034fea600943fa7e5d4e73224ac1fc4262e8 @@ -0,0 +1,30 @@ +export { c as createForksRpcOptions, a as createThreadsRpcOptions, u as unwrapForksConfig } from './vendor/utils.GbToHGHI.js'; +export { p as provideWorkerState } from './vendor/global.CkGT_TMy.js'; +export { run as runVitestWorker } from './worker.js'; +export { r as runVmTests } from './vendor/vm.UmCkcXp-.js'; +export { r as runBaseTests } from './vendor/base.RpormaJz.js'; +import '@vitest/utils'; +import 'node:url'; +import 'tinypool'; +import 'vite-node/client'; +import 'pathe'; +import './vendor/index.GVFv9dZ0.js'; +import 'node:console'; +import './vendor/base.knFzp7G3.js'; +import 'node:module'; +import './vendor/rpc.joBhAkyK.js'; +import './vendor/index.8bPxjt7g.js'; +import 'node:vm'; +import './chunks/runtime-console.Iloo9fIt.js'; +import 'node:stream'; +import 'node:path'; +import './vendor/date.Ns1pGd_X.js'; +import './vendor/execute.aFSzc0Da.js'; +import 'vite-node/utils'; +import '@vitest/utils/error'; +import './path.js'; +import 'node:fs'; +import 'vite-node/constants'; +import './vendor/index.ir9i0ywP.js'; +import 'std-env'; +import '@vitest/runner/utils'; diff --git a/.pnpm-store/v3/files/08/c88a7aa9128e6e5a964956f516fb6c5ce5e15f82eefeb0e05c214e746651cbbdcf571485a70d95d0ed81ab408a20fcb6b6fdde25691cd16dfbd7d919b9708f b/.pnpm-store/v3/files/08/c88a7aa9128e6e5a964956f516fb6c5ce5e15f82eefeb0e05c214e746651cbbdcf571485a70d95d0ed81ab408a20fcb6b6fdde25691cd16dfbd7d919b9708f new file mode 100644 index 00000000..bbf8518f --- /dev/null +++ b/.pnpm-store/v3/files/08/c88a7aa9128e6e5a964956f516fb6c5ce5e15f82eefeb0e05c214e746651cbbdcf571485a70d95d0ed81ab408a20fcb6b6fdde25691cd16dfbd7d919b9708f @@ -0,0 +1,16 @@ +export { createTaskCollector, getCurrentSuite, getFn, getHooks, setFn, setHooks } from '@vitest/runner'; +export { createChainable } from '@vitest/runner/utils'; +export { g as getBenchFn, a as getBenchOptions } from './suite-xGC-mxBC.js'; +import './reporters-QGe8gs4b.js'; +import 'vite'; +import 'vite-node'; +import '@vitest/snapshot'; +import '@vitest/expect'; +import '@vitest/utils'; +import 'tinybench'; +import 'vite-node/client'; +import '@vitest/snapshot/manager'; +import 'vite-node/server'; +import 'node:worker_threads'; +import 'node:fs'; +import 'chai'; diff --git a/.pnpm-store/v3/files/08/dc5aa928f4150a620e44ea131da297bc2ce39d78494438771444fc1b52c95eb149cf6e7da1195ea491e3d0d30926c5e1f3938ba3942a21bdcb20292dcc6f2b b/.pnpm-store/v3/files/08/dc5aa928f4150a620e44ea131da297bc2ce39d78494438771444fc1b52c95eb149cf6e7da1195ea491e3d0d30926c5e1f3938ba3942a21bdcb20292dcc6f2b new file mode 100644 index 00000000..3cdacc3a --- /dev/null +++ b/.pnpm-store/v3/files/08/dc5aa928f4150a620e44ea131da297bc2ce39d78494438771444fc1b52c95eb149cf6e7da1195ea491e3d0d30926c5e1f3938ba3942a21bdcb20292dcc6f2b @@ -0,0 +1,43 @@ +import { readUInt16LE } from "./utils.js"; +const TYPE_ICON = 1; +const SIZE_HEADER = 2 + 2 + 2; +const SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; +function getSizeFromOffset(input, offset) { + const value = input[offset]; + return value === 0 ? 256 : value; +} +function getImageSize(input, imageIndex) { + const offset = SIZE_HEADER + imageIndex * SIZE_IMAGE_ENTRY; + return { + height: getSizeFromOffset(input, offset + 1), + width: getSizeFromOffset(input, offset) + }; +} +const ICO = { + validate(input) { + const reserved = readUInt16LE(input, 0); + const imageCount = readUInt16LE(input, 4); + if (reserved !== 0 || imageCount === 0) + return false; + const imageType = readUInt16LE(input, 2); + return imageType === TYPE_ICON; + }, + calculate(input) { + const nbImages = readUInt16LE(input, 4); + const imageSize = getImageSize(input, 0); + if (nbImages === 1) + return imageSize; + const imgs = [imageSize]; + for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { + imgs.push(getImageSize(input, imageIndex)); + } + return { + height: imageSize.height, + images: imgs, + width: imageSize.width + }; + } +}; +export { + ICO +}; diff --git a/.pnpm-store/v3/files/0f/09181d1bee2002b6a933b8aac37a6e4895ab1e63d72bc8b0f296d0252fcfa691354b85f8613694fea32b60ce1467d0db928e3b186e19c666f0a302e21848bb b/.pnpm-store/v3/files/0f/09181d1bee2002b6a933b8aac37a6e4895ab1e63d72bc8b0f296d0252fcfa691354b85f8613694fea32b60ce1467d0db928e3b186e19c666f0a302e21848bb new file mode 100644 index 00000000..3cef924e --- /dev/null +++ b/.pnpm-store/v3/files/0f/09181d1bee2002b6a933b8aac37a6e4895ab1e63d72bc8b0f296d0252fcfa691354b85f8613694fea32b60ce1467d0db928e3b186e19c666f0a302e21848bb @@ -0,0 +1,56 @@ +import { extname } from "node:path"; +function extendManualChunks(outputOptions, hooks) { + const manualChunks = outputOptions.manualChunks; + outputOptions.manualChunks = function(id, meta) { + if (hooks.before) { + let value = hooks.before(id, meta); + if (value) { + return value; + } + } + if (typeof manualChunks == "object") { + if (id in manualChunks) { + let value = manualChunks[id]; + return value[0]; + } + } else if (typeof manualChunks === "function") { + const outid = manualChunks.call(this, id, meta); + if (outid) { + return outid; + } + } + if (hooks.after) { + return hooks.after(id, meta) || null; + } + return null; + }; +} +const ASTRO_PAGE_EXTENSION_POST_PATTERN = "@_@"; +function getVirtualModulePageNameFromPath(virtualModulePrefix, path) { + const extension = extname(path); + return `${virtualModulePrefix}${path.replace( + extension, + extension.replace(".", ASTRO_PAGE_EXTENSION_POST_PATTERN) + )}`; +} +function getPathFromVirtualModulePageName(virtualModulePrefix, id) { + const pageName = id.slice(virtualModulePrefix.length); + return pageName.replace(ASTRO_PAGE_EXTENSION_POST_PATTERN, "."); +} +function shouldInlineAsset(assetContent, assetPath, assetsInlineLimit) { + if (typeof assetsInlineLimit === "number") { + return Buffer.byteLength(assetContent) < assetsInlineLimit; + } + const result = assetsInlineLimit(assetPath, Buffer.from(assetContent)); + if (result != null) { + return result; + } + return Buffer.byteLength(assetContent) < 4096; +} +export { + ASTRO_PAGE_EXTENSION_POST_PATTERN, + extendManualChunks, + getPathFromVirtualModulePageName, + getVirtualModulePageNameFromPath, + shouldInlineAsset +}; diff --git a/.pnpm-store/v3/files/0f/fa220d5070ef95cc9e30179deff87de0a4084c1c6ebd925356e302109c7c8e41ab75683878e2f3fc023c07d490321ea212799d2677f5f37133774d67a38138-index.json b/.pnpm-store/v3/files/0f/fa220d5070ef95cc9e30179deff87de0a4084c1c6ebd925356e302109c7c8e41ab75683878e2f3fc023c07d490321ea212799d2677f5f37133774d67a38138-index.json new file mode 100644 index 00000000..caec699a --- /dev/null +++ b/.pnpm-store/v3/files/0f/fa220d5070ef95cc9e30179deff87de0a4084c1c6ebd925356e302109c7c8e41ab75683878e2f3fc023c07d490321ea212799d2677f5f37133774d67a38138-index.json @@ -0,0 +1 @@ +{"files":{"dist/chunk-hmr.cjs":{"checkedAt":1708389320846,"integrity":"sha512-4YGXYHkz2mErO5YrMA9/d7vx+M+QGww5PGoUshRY6qhSrfhXxz0vTBqtQuVPLwgYnN0iFWr1/hzRylEuDYt+3g==","mode":420,"size":8015},"dist/cli.cjs":{"checkedAt":1708389320847,"integrity":"sha512-U+o0uaKpqaZxIYC8nyELBBeNi1b8jDDAFJMUrJCom4V3awFtYgZbM5xow4iZXMvV8Kpdz0TNwsOSuNgg7h10IA==","mode":420,"size":4724},"dist/client.cjs":{"checkedAt":1708389320847,"integrity":"sha512-10YrbuYgrq3bpxphpgUxxQe1tftp4j8SzqRLEB604+aOG4wgaAvA8h37XfaxYSZ5HqxBTKOF1ioMJTyVdHNZwg==","mode":420,"size":14640},"dist/constants.cjs":{"checkedAt":1708389320847,"integrity":"sha512-SheXa/EbBZkGj04GYNLDyphYnIhOqZZSHVblgRyqrDBpJvtIYp/LKpocB0rsSGpfc8Kif80c7lp+mtHr0k2wpg==","mode":420,"size":621},"dist/hmr.cjs":{"checkedAt":1708389320847,"integrity":"sha512-7zq67d3N5rK/jlqDtI+rasw+q8WhFUVNDQL7FGTk4Wz+qMZY4eKWeYv+djHde/cOSd5Q1Enm+f/N7jcokV+www==","mode":420,"size":533},"dist/index.cjs":{"checkedAt":1708389320847,"integrity":"sha512-deBZmuLJzOYKea4VWud3vCmIPjtw1tR58QIgPRyZb6ByoMfi8zKY6CXn6h0EFSMVMnsk2/P3IvSvydjYPyHAbA==","mode":420,"size":15},"dist/server.cjs":{"checkedAt":1708389320847,"integrity":"sha512-P+hKrKb5bh6ZdK+p6K1m4c6nWbkxDbt2HSPSx9Y82i7NrUqx95YqAfHkt9tg5f0+R7kZ/qpCNvWlsk6WtyJmTg==","mode":420,"size":15870},"dist/source-map.cjs":{"checkedAt":1708389320848,"integrity":"sha512-P882rJ5shCEVUKNwm3K2Ga7/DDxffWKxSOUjmdULPR/HEY1zisJM/sAD9OvOBe+psfBz95kQYiIX2yaxR7St6w==","mode":420,"size":30807},"dist/types.cjs":{"checkedAt":1708389320848,"integrity":"sha512-deBZmuLJzOYKea4VWud3vCmIPjtw1tR58QIgPRyZb6ByoMfi8zKY6CXn6h0EFSMVMnsk2/P3IvSvydjYPyHAbA==","mode":420,"size":15},"dist/utils.cjs":{"checkedAt":1708389320848,"integrity":"sha512-/1I7694ajp7A6ozBvvlqX6Hkb3fkhw/eIBH1uiBVWcQvQVFZRzp8j7b0nbkYmI4kzYYxon2WIdTcY5PqWUqozg==","mode":420,"size":6388},"README.md":{"checkedAt":1708389320848,"integrity":"sha512-k5of8kdzbpq9PLLvTV7kcJN7VIdqeXUELi4GNWk85G9v7ww8aJ3Gmjp4/GLKZIvAz2yA51N4EURfbJigbrn+CA==","mode":420,"size":5218},"dist/chunk-hmr.mjs":{"checkedAt":1708389320848,"integrity":"sha512-SQutOP7J65ir/gLz1RT61PENiCpLXQvsRkhjXvmDOVHU757CCTgl9SpaP7f9pP8iJ+Gxv/ZtGshgCoFRcH9t0A==","mode":420,"size":7862},"dist/cli.mjs":{"checkedAt":1708389320848,"integrity":"sha512-0Mv0PJnCe2X/dTe9r4kvf2XSlfoy/RBexv3PvVqh9oG2q0r97eborm6zrOtNzLYzAd61qkFhA6FgvIie99DyrQ==","mode":420,"size":4702},"dist/client.mjs":{"checkedAt":1708389320849,"integrity":"sha512-BcLj+S4G1I+EPWO7nAnlte6gBolXbK/jR2thhNcRiy49aVcYZN0v9mcbptwedpIzVvZtf5CunEKW/kw+UCXdUA==","mode":420,"size":14579},"dist/constants.mjs":{"checkedAt":1708389320849,"integrity":"sha512-EkhUIh6RESNj+juioKuJiPhOUqoTL7B7p62g7z+lvgacDs1FLY1D8+zpqinFGpWqd0vP11bvfVONcSQ3xbWiig==","mode":420,"size":541},"dist/hmr.mjs":{"checkedAt":1708389320849,"integrity":"sha512-+CXRNbktbqRPw1pchofJFM5aa0rdB3IXtzDrFo2rgkPMNovEPlSnpzb1ZN5jPjDUFruw0McTkdIZUTZX8UmFcg==","mode":420,"size":332},"dist/index.mjs":{"checkedAt":1708389320849,"integrity":"sha512-vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==","mode":420,"size":1},"dist/server.mjs":{"checkedAt":1708389320849,"integrity":"sha512-S1SA7qt9dDSIPmZe7+XDjc62IyqJJKf/YtsItHQluLmE7LItILQJLVllbo51nJhnYTp0kSeMdISBn8lMJ+/9zQ==","mode":420,"size":15750},"dist/source-map.mjs":{"checkedAt":1708389320849,"integrity":"sha512-rBJd+JCkwETyOoTrXZfPB9rAle0QR94x9sVBYJej6uRFrlBLNs+W9frG51iVoAO2UaYd2LRL8fbRW62LnSp0Sg==","mode":420,"size":30733},"dist/types.mjs":{"checkedAt":1708389320849,"integrity":"sha512-vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==","mode":420,"size":1},"dist/utils.mjs":{"checkedAt":1708389320850,"integrity":"sha512-uY4X6J8DYEEIRAbfUup8j5cmi9cMcBHV4FJaeRkp6f2rcG5ilH/CkRAsSDMPWzptAR8rVNSUOvHTaP2Neiq44w==","mode":420,"size":5951},"vite-node.mjs":{"checkedAt":1708389320850,"integrity":"sha512-2NAKfBynW5zMwc4j8alXIBMIiMalMjpJdrajbOi9CU92P9ClYCYqAn/J+LQvWG4IYiRx73+12lEcwsdO2ZOfJQ==","mode":493,"size":45},"dist/cli.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-FYRaWLl0qQFgDzD+qM9zQNoyIydpzGswa6H1nF2aZfztTLd4Ys5cT3YHSYEqA3rMMgFid2QQX1cOyWhD6IobCg==","mode":420,"size":915},"dist/client.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-ZoGAxamSdskBjsPSNUers5mSlSsU6m3ms+gvklfKVnE2Xv6soDfceBlx4lTv3vwtW3C/6zxNh35Z35v3TgvWUg==","mode":420,"size":148},"dist/constants.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-PqFy90Ji6IlFsateP0ZmBOLAUIae1wbwQ6LaW811jXHC5u4WIEnbQ3T/azk7iT7mAO+0qZKccnnN8Tu1pl561A==","mode":420,"size":178},"dist/hmr.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-a3czgM9Dj0zPb0KlOcJ62rVMvG3SVkbbYodasSjzSkXTKD9nifIHtMhTtyhI71bBRI6AUUyj8NXpatg6DgP47w==","mode":420,"size":2611},"dist/index-WT31LSgS.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-JfkAjZRgqsnVryYGkEpKmDs2R5XXcamTTKiqdEdR0p3NQ0drWndyIQ2c1xspcxMJQAiUABje2wHJ5xFbieVRDg==","mode":420,"size":9235},"dist/index.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-ptiLBavrZEocVxGoYWY6ntUz8YCluXqokl1D88+ty0FNXzBaDkHDx+EH+1XI4UJngPcI8hyY2lojmeDjSXf11g==","mode":420,"size":519},"dist/server.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-WIvXz3ndm1rfvzz5sH6YeCNhzfuM3I5DsyFyCeBWZ74/o7hZFef3KXkth/3ylj2ZF9Mrizp1CjaOvOdL23MPfA==","mode":420,"size":2532},"dist/source-map.d.ts":{"checkedAt":1708389320850,"integrity":"sha512-RwrrkAyIvNJhpO+rgN4xpWpE3t6u+6YjuPYOI9AR/vg9xAbihDfBMawyoMiZkXUTz48FZc2tk0TBuloMYeW8+w==","mode":420,"size":607},"dist/trace-mapping.d-xyIfZtPm.d.ts":{"checkedAt":1708389320851,"integrity":"sha512-YkebWD8kFsU05PzeNOiWPn8ZXxAs49J6bC06ptl7KPv9JYR0bXXDzj36sdnuXcmCfguMrZf9heaD1mYTWX+lPw==","mode":420,"size":1906},"dist/types.d.ts":{"checkedAt":1708389320851,"integrity":"sha512-ptiLBavrZEocVxGoYWY6ntUz8YCluXqokl1D88+ty0FNXzBaDkHDx+EH+1XI4UJngPcI8hyY2lojmeDjSXf11g==","mode":420,"size":519},"dist/utils.d.ts":{"checkedAt":1708389320851,"integrity":"sha512-0IgMheo6cdGro0e2g0qSkbRAt9d2hLqbBTEQm34iW7L1ZXb1Jau8nklWLr7QpThYmlpVb1WAemK/tUv6iAnb+Q==","mode":420,"size":1613},"LICENSE":{"checkedAt":1708389320851,"integrity":"sha512-UVFpfPJvKX+pFZi9kICLGeKXa7aMp5oeTmTQJBxCYHGrecls8D80KYY+DoSbK71Xw3IjeSGb/B31WXPYaplODw==","mode":420,"size":1177},"package.json":{"checkedAt":1708389320851,"integrity":"sha512-smIhi3i8wtLgeTxpHxTOa9pghD+uVav+cjzpMfCFkmSGw1/NSaS9SfdwISWE1v+Jp0qEdn10ztHiPBOWAJsUjg==","mode":420,"size":2323}}} \ No newline at end of file diff --git a/.pnpm-store/v3/files/10/14f86d5b849fbcca013f5e0bfbf28c13d8a006af93f5ce6a8c5b4350441e135b78a53c0b79264795d98c81bcebcf1ecbd4258f7ed549259751493370896510 b/.pnpm-store/v3/files/10/14f86d5b849fbcca013f5e0bfbf28c13d8a006af93f5ce6a8c5b4350441e135b78a53c0b79264795d98c81bcebcf1ecbd4258f7ed549259751493370896510 new file mode 100644 index 00000000..d04cc8e2 --- /dev/null +++ b/.pnpm-store/v3/files/10/14f86d5b849fbcca013f5e0bfbf28c13d8a006af93f5ce6a8c5b4350441e135b78a53c0b79264795d98c81bcebcf1ecbd4258f7ed549259751493370896510 @@ -0,0 +1,64 @@ +/* + @license + Rollup.js v4.12.0 + Fri, 16 Feb 2024 13:31:42 GMT - commit 0146b84be33a8416b4df4b9382549a7ca19dd64a + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +const getLogFilter = filters => { + if (filters.length === 0) + return () => true; + const normalizedFilters = filters.map(filter => filter.split('&').map(subFilter => { + const inverted = subFilter.startsWith('!'); + if (inverted) + subFilter = subFilter.slice(1); + const [key, ...value] = subFilter.split(':'); + return { inverted, key: key.split('.'), parts: value.join(':').split('*') }; + })); + return (log) => { + nextIntersectedFilter: for (const intersectedFilters of normalizedFilters) { + for (const { inverted, key, parts } of intersectedFilters) { + const isFilterSatisfied = testFilter(log, key, parts); + if (inverted ? isFilterSatisfied : !isFilterSatisfied) { + continue nextIntersectedFilter; + } + } + return true; + } + return false; + }; +}; +const testFilter = (log, key, parts) => { + let rawValue = log; + for (let index = 0; index < key.length; index++) { + if (!rawValue) { + return false; + } + const part = key[index]; + if (!(part in rawValue)) { + return false; + } + rawValue = rawValue[part]; + } + let value = typeof rawValue === 'object' ? JSON.stringify(rawValue) : String(rawValue); + if (parts.length === 1) { + return value === parts[0]; + } + if (!value.startsWith(parts[0])) { + return false; + } + const lastPartIndex = parts.length - 1; + for (let index = 1; index < lastPartIndex; index++) { + const part = parts[index]; + const position = value.indexOf(part); + if (position === -1) { + return false; + } + value = value.slice(position + part.length); + } + return value.endsWith(parts[lastPartIndex]); +}; + +export { getLogFilter }; diff --git a/.pnpm-store/v3/files/11/9fbbf6f0b7cf12442679b6fecb52b1bc168a70cbfec060cea39afc704ea17e8263623afb216c6482a0f326c4d8ff758975ad189471a127d49f3e327e205faf b/.pnpm-store/v3/files/11/9fbbf6f0b7cf12442679b6fecb52b1bc168a70cbfec060cea39afc704ea17e8263623afb216c6482a0f326c4d8ff758975ad189471a127d49f3e327e205faf new file mode 100644 index 00000000..d003a3f6 --- /dev/null +++ b/.pnpm-store/v3/files/11/9fbbf6f0b7cf12442679b6fecb52b1bc168a70cbfec060cea39afc704ea17e8263623afb216c6482a0f326c4d8ff758975ad189471a127d49f3e327e205faf @@ -0,0 +1,62 @@ +{ + "name": "strip-literal", + "version": "2.0.0", + "packageManager": "pnpm@8.13.1", + "description": "Strip comments and string literals from JavaScript code", + "author": "Anthony Fu ", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/antfu/strip-literal#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/antfu/strip-literal.git" + }, + "bugs": { + "url": "https://github.com/antfu/strip-literal/issues" + }, + "keywords": [], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "unbuild", + "dev": "unbuild --stub", + "lint": "eslint .", + "prepublishOnly": "nr build", + "release": "bumpp --commit --push --tag && npm publish", + "start": "esmo src/index.ts", + "test": "vitest", + "bench": "vitest bench", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "js-tokens": "^8.0.2" + }, + "devDependencies": { + "@antfu/eslint-config": "^2.6.1", + "@antfu/ni": "^0.21.12", + "@types/node": "^20.10.5", + "bumpp": "^9.2.1", + "eslint": "^8.56.0", + "esmo": "^4.0.0", + "pnpm": "^8.13.1", + "rimraf": "^5.0.5", + "three": "^0.160.0", + "typescript": "^5.3.3", + "unbuild": "^2.0.0", + "vite": "^5.0.10", + "vitest": "^1.1.0", + "vue": "^3.4.0" + } +} diff --git a/.pnpm-store/v3/files/11/f2383eb0a9675b1231c8fdfe45d7564789468d2f038ca714969928746706fa1f3c14b5bb50b0fc17616ea0afcf4d608d5346a3642800c26ea913337a97445c b/.pnpm-store/v3/files/11/f2383eb0a9675b1231c8fdfe45d7564789468d2f038ca714969928746706fa1f3c14b5bb50b0fc17616ea0afcf4d608d5346a3642800c26ea913337a97445c new file mode 100644 index 00000000..0e65c232 --- /dev/null +++ b/.pnpm-store/v3/files/11/f2383eb0a9675b1231c8fdfe45d7564789468d2f038ca714969928746706fa1f3c14b5bb50b0fc17616ea0afcf4d608d5346a3642800c26ea913337a97445c @@ -0,0 +1,276 @@ +import { ErrorWithDiff, Awaitable } from '@vitest/utils'; + +type ChainableFunction any, C = {}> = F & { + [x in T]: ChainableFunction; +} & { + fn: (this: Record, ...args: Parameters) => ReturnType; +} & C; +declare function createChainable(keys: T[], fn: (this: Record, ...args: Args) => R): ChainableFunction R>; + +interface FixtureItem extends FixtureOptions { + prop: string; + value: any; + /** + * Indicates whether the fixture is a function + */ + isFn: boolean; + /** + * The dependencies(fixtures) of current fixture function. + */ + deps?: FixtureItem[]; +} + +type RunMode = 'run' | 'skip' | 'only' | 'todo'; +type TaskState = RunMode | 'pass' | 'fail'; +interface TaskBase { + id: string; + name: string; + mode: RunMode; + meta: TaskMeta; + each?: boolean; + concurrent?: boolean; + shuffle?: boolean; + suite?: Suite; + file?: File; + result?: TaskResult; + retry?: number; + repeats?: number; +} +interface TaskPopulated extends TaskBase { + suite: Suite; + pending?: boolean; + result?: TaskResult; + fails?: boolean; + onFailed?: OnTestFailedHandler[]; + onFinished?: OnTestFinishedHandler[]; + /** + * Store promises (from async expects) to wait for them before finishing the test + */ + promises?: Promise[]; +} +interface TaskMeta { +} +interface TaskResult { + state: TaskState; + duration?: number; + startTime?: number; + heap?: number; + errors?: ErrorWithDiff[]; + htmlError?: string; + hooks?: Partial>; + retryCount?: number; + repeatCount?: number; +} +type TaskResultPack = [id: string, result: TaskResult | undefined, meta: TaskMeta]; +interface Suite extends TaskBase { + type: 'suite'; + tasks: Task[]; + filepath?: string; + projectName: string; +} +interface File extends Suite { + filepath: string; + collectDuration?: number; + setupDuration?: number; +} +interface Test extends TaskPopulated { + type: 'test'; + context: TaskContext & ExtraContext & TestContext; +} +interface Custom extends TaskPopulated { + type: 'custom'; + context: TaskContext & ExtraContext & TestContext; +} +type Task = Test | Suite | Custom | File; +type DoneCallback = (error?: any) => void; +type TestFunction = (context: ExtendedContext & ExtraContext) => Awaitable | void; +type ExtractEachCallbackArgs> = { + 1: [T[0]]; + 2: [T[0], T[1]]; + 3: [T[0], T[1], T[2]]; + 4: [T[0], T[1], T[2], T[3]]; + 5: [T[0], T[1], T[2], T[3], T[4]]; + 6: [T[0], T[1], T[2], T[3], T[4], T[5]]; + 7: [T[0], T[1], T[2], T[3], T[4], T[5], T[6]]; + 8: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7]]; + 9: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]]; + 10: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9]]; + fallback: Array ? U : any>; +}[T extends Readonly<[any]> ? 1 : T extends Readonly<[any, any]> ? 2 : T extends Readonly<[any, any, any]> ? 3 : T extends Readonly<[any, any, any, any]> ? 4 : T extends Readonly<[any, any, any, any, any]> ? 5 : T extends Readonly<[any, any, any, any, any, any]> ? 6 : T extends Readonly<[any, any, any, any, any, any, any]> ? 7 : T extends Readonly<[any, any, any, any, any, any, any, any]> ? 8 : T extends Readonly<[any, any, any, any, any, any, any, any, any]> ? 9 : T extends Readonly<[any, any, any, any, any, any, any, any, any, any]> ? 10 : 'fallback']; +interface EachFunctionReturn { + /** + * @deprecated Use options as the second argument instead + */ + (name: string | Function, fn: (...args: T) => Awaitable, options: TestOptions): void; + (name: string | Function, fn: (...args: T) => Awaitable, options?: number | TestOptions): void; + (name: string | Function, options: TestOptions, fn: (...args: T) => Awaitable): void; +} +interface TestEachFunction { + (cases: ReadonlyArray): EachFunctionReturn; + >(cases: ReadonlyArray): EachFunctionReturn>; + (cases: ReadonlyArray): EachFunctionReturn; + (...args: [TemplateStringsArray, ...any]): EachFunctionReturn; +} +interface TestCollectorCallable { + /** + * @deprecated Use options as the second argument instead + */ + (name: string | Function, fn: TestFunction, options: TestOptions): void; + (name: string | Function, fn?: TestFunction, options?: number | TestOptions): void; + (name: string | Function, options?: TestOptions, fn?: TestFunction): void; +} +type ChainableTestAPI = ChainableFunction<'concurrent' | 'sequential' | 'only' | 'skip' | 'todo' | 'fails', TestCollectorCallable, { + each: TestEachFunction; +}>; +interface TestOptions { + /** + * Test timeout. + */ + timeout?: number; + /** + * Times to retry the test if fails. Useful for making flaky tests more stable. + * When retries is up, the last test error will be thrown. + * + * @default 0 + */ + retry?: number; + /** + * How many times the test will run. + * Only inner tests will repeat if set on `describe()`, nested `describe()` will inherit parent's repeat by default. + * + * @default 0 + */ + repeats?: number; + /** + * Whether tests run concurrently. + * Tests inherit `concurrent` from `describe()` and nested `describe()` will inherit from parent's `concurrent`. + */ + concurrent?: boolean; + /** + * Whether tests run sequentially. + * Tests inherit `sequential` from `describe()` and nested `describe()` will inherit from parent's `sequential`. + */ + sequential?: boolean; + /** + * Whether the test should be skipped. + */ + skip?: boolean; + /** + * Should this test be the only one running in a suite. + */ + only?: boolean; + /** + * Whether the test should be skipped and marked as a todo. + */ + todo?: boolean; + /** + * Whether the test is expected to fail. If it does, the test will pass, otherwise it will fail. + */ + fails?: boolean; +} +interface ExtendedAPI { + skipIf: (condition: any) => ChainableTestAPI; + runIf: (condition: any) => ChainableTestAPI; +} +type CustomAPI = ChainableTestAPI & ExtendedAPI & { + extend: = {}>(fixtures: Fixtures) => CustomAPI<{ + [K in keyof T | keyof ExtraContext]: K extends keyof T ? T[K] : K extends keyof ExtraContext ? ExtraContext[K] : never; + }>; +}; +type TestAPI = ChainableTestAPI & ExtendedAPI & { + extend: = {}>(fixtures: Fixtures) => TestAPI<{ + [K in keyof T | keyof ExtraContext]: K extends keyof T ? T[K] : K extends keyof ExtraContext ? ExtraContext[K] : never; + }>; +}; +interface FixtureOptions { + /** + * Whether to automatically set up current fixture, even though it's not being used in tests. + */ + auto?: boolean; +} +type Use = (value: T) => Promise; +type FixtureFn = (context: Omit & ExtraContext, use: Use) => Promise; +type Fixture = ((...args: any) => any) extends T[K] ? (T[K] extends any ? FixtureFn>> : never) : T[K] | (T[K] extends any ? FixtureFn>> : never); +type Fixtures, ExtraContext = {}> = { + [K in keyof T]: Fixture> | [Fixture>, FixtureOptions?]; +}; +type InferFixturesTypes = T extends TestAPI ? C : T; +interface SuiteCollectorCallable { + /** + * @deprecated Use options as the second argument instead + */ + (name: string | Function, fn: SuiteFactory, options: TestOptions): SuiteCollector; + (name: string | Function, fn?: SuiteFactory, options?: number | TestOptions): SuiteCollector; + (name: string | Function, options: TestOptions, fn?: SuiteFactory): SuiteCollector; +} +type ChainableSuiteAPI = ChainableFunction<'concurrent' | 'sequential' | 'only' | 'skip' | 'todo' | 'shuffle', SuiteCollectorCallable, { + each: TestEachFunction; +}>; +type SuiteAPI = ChainableSuiteAPI & { + skipIf: (condition: any) => ChainableSuiteAPI; + runIf: (condition: any) => ChainableSuiteAPI; +}; +type HookListener = (...args: T) => Awaitable; +type HookCleanupCallback = (() => Awaitable) | void; +interface SuiteHooks { + beforeAll: HookListener<[Readonly], HookCleanupCallback>[]; + afterAll: HookListener<[Readonly]>[]; + beforeEach: HookListener<[ExtendedContext & ExtraContext, Readonly], HookCleanupCallback>[]; + afterEach: HookListener<[ExtendedContext & ExtraContext, Readonly]>[]; +} +interface TaskCustomOptions extends TestOptions { + concurrent?: boolean; + sequential?: boolean; + skip?: boolean; + only?: boolean; + todo?: boolean; + fails?: boolean; + each?: boolean; + meta?: Record; + fixtures?: FixtureItem[]; + handler?: (context: TaskContext) => Awaitable; +} +interface SuiteCollector { + readonly name: string; + readonly mode: RunMode; + options?: TestOptions; + type: 'collector'; + test: TestAPI; + tasks: (Suite | Custom | Test | SuiteCollector)[]; + task: (name: string, options?: TaskCustomOptions) => Custom; + collect: (file?: File) => Promise; + clear: () => void; + on: >(name: T, ...fn: SuiteHooks[T]) => void; +} +type SuiteFactory = (test: (name: string | Function, fn: TestFunction) => void) => Awaitable; +interface RuntimeContext { + tasks: (SuiteCollector | Test)[]; + currentSuite: SuiteCollector | null; +} +interface TestContext { +} +interface TaskContext { + /** + * Metadata of the current test + */ + task: Readonly; + /** + * Extract hooks on test failed + */ + onTestFailed: (fn: OnTestFailedHandler) => void; + /** + * Extract hooks on test failed + */ + onTestFinished: (fn: OnTestFinishedHandler) => void; + /** + * Mark tests as skipped. All execution after this call will be skipped. + */ + skip: () => void; +} +type ExtendedContext = TaskContext & TestContext; +type OnTestFailedHandler = (result: TaskResult) => Awaitable; +type OnTestFinishedHandler = (result: TaskResult) => Awaitable; +type SequenceHooks = 'stack' | 'list' | 'parallel'; +type SequenceSetupFiles = 'list' | 'parallel'; + +export { type TaskContext as A, type SequenceHooks as B, type Custom as C, type DoneCallback as D, type ExtendedContext as E, type File as F, type SequenceSetupFiles as G, type HookListener as H, type InferFixturesTypes as I, type OnTestFailedHandler as O, type RunMode as R, type Suite as S, type Task as T, type Use as U, type Test as a, type ChainableFunction as b, createChainable as c, type SuiteAPI as d, type TestAPI as e, type SuiteCollector as f, type CustomAPI as g, type SuiteHooks as h, type OnTestFinishedHandler as i, type TaskState as j, type TaskBase as k, type TaskPopulated as l, type TaskMeta as m, type TaskResult as n, type TaskResultPack as o, type TestFunction as p, type TestOptions as q, type FixtureOptions as r, type FixtureFn as s, type Fixture as t, type Fixtures as u, type HookCleanupCallback as v, type TaskCustomOptions as w, type SuiteFactory as x, type RuntimeContext as y, type TestContext as z }; diff --git a/.pnpm-store/v3/files/12/ebb2009d4aafdb46dba0c7714896bc75fc071e328b3038cb5812b3fc05964211829407f5d6b0f87356470e31919c3a59452c233e98194d0842740cde252d2d b/.pnpm-store/v3/files/12/ebb2009d4aafdb46dba0c7714896bc75fc071e328b3038cb5812b3fc05964211829407f5d6b0f87356470e31919c3a59452c233e98194d0842740cde252d2d new file mode 100644 index 00000000..228e7fad --- /dev/null +++ b/.pnpm-store/v3/files/12/ebb2009d4aafdb46dba0c7714896bc75fc071e328b3038cb5812b3fc05964211829407f5d6b0f87356470e31919c3a59452c233e98194d0842740cde252d2d @@ -0,0 +1,37 @@ +/* + @license + Rollup.js v4.12.0 + Fri, 16 Feb 2024 13:31:42 GMT - commit 0146b84be33a8416b4df4b9382549a7ca19dd64a + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +'use strict'; + +let fsEvents; +let fsEventsImportError; +async function loadFsEvents() { + try { + ({ default: fsEvents } = await import('fsevents')); + } + catch (error) { + fsEventsImportError = error; + } +} +// A call to this function will be injected into the chokidar code +function getFsEvents() { + if (fsEventsImportError) + throw fsEventsImportError; + return fsEvents; +} + +const fseventsImporter = /*#__PURE__*/Object.defineProperty({ + __proto__: null, + getFsEvents, + loadFsEvents +}, Symbol.toStringTag, { value: 'Module' }); + +exports.fseventsImporter = fseventsImporter; +exports.loadFsEvents = loadFsEvents; +//# sourceMappingURL=fsevents-importer.js.map diff --git a/.pnpm-store/v3/files/13/252681fde62dc3af36b542b481c49b731abb6ec7b711f1817d234e4953114a70b0f6c909ef75d3937d3d4d402413052c1d30cea4e64409a54e9199d579b300 b/.pnpm-store/v3/files/13/252681fde62dc3af36b542b481c49b731abb6ec7b711f1817d234e4953114a70b0f6c909ef75d3937d3d4d402413052c1d30cea4e64409a54e9199d579b300 new file mode 100644 index 00000000..55cdcdc3 --- /dev/null +++ b/.pnpm-store/v3/files/13/252681fde62dc3af36b542b481c49b731abb6ec7b711f1817d234e4953114a70b0f6c909ef75d3937d3d4d402413052c1d30cea4e64409a54e9199d579b300 @@ -0,0 +1,2 @@ +import type { IImage } from './interface.ts'; +export declare const GIF: IImage; diff --git a/.pnpm-store/v3/files/13/d2ec98c28d1a065043a688d490f63f390ea5b54296751f029ffee5e686d84c76a432f4556ffc97d6090efaad807f769c22fd1cc20464f3438b20cb91720578 b/.pnpm-store/v3/files/13/d2ec98c28d1a065043a688d490f63f390ea5b54296751f029ffee5e686d84c76a432f4556ffc97d6090efaad807f769c22fd1cc20464f3438b20cb91720578 new file mode 100644 index 00000000..fed59672 --- /dev/null +++ b/.pnpm-store/v3/files/13/d2ec98c28d1a065043a688d490f63f390ea5b54296751f029ffee5e686d84c76a432f4556ffc97d6090efaad807f769c22fd1cc20464f3438b20cb91720578 @@ -0,0 +1,46 @@ +import { VitestRunner, VitestRunnerImportSource, Suite, Task, CancelReason, Test, Custom, TaskContext, ExtendedContext } from '@vitest/runner'; +import { R as ResolvedConfig } from './reporters-QGe8gs4b.js'; +import * as tinybench from 'tinybench'; +import 'vite'; +import 'vite-node'; +import '@vitest/snapshot'; +import '@vitest/expect'; +import '@vitest/runner/utils'; +import '@vitest/utils'; +import 'vite-node/client'; +import '@vitest/snapshot/manager'; +import 'vite-node/server'; +import 'node:worker_threads'; +import 'node:fs'; +import 'chai'; + +declare class VitestTestRunner implements VitestRunner { + config: ResolvedConfig; + private snapshotClient; + private workerState; + private __vitest_executor; + private cancelRun; + constructor(config: ResolvedConfig); + importFile(filepath: string, source: VitestRunnerImportSource): unknown; + onBeforeRunFiles(): void; + onAfterRunSuite(suite: Suite): Promise; + onAfterRunTask(test: Task): void; + onCancel(_reason: CancelReason): void; + onBeforeRunTask(test: Task): Promise; + onBeforeRunSuite(suite: Suite): Promise; + onBeforeTryTask(test: Task): void; + onAfterTryTask(test: Task): void; + extendTaskContext(context: TaskContext): ExtendedContext; +} + +declare class NodeBenchmarkRunner implements VitestRunner { + config: ResolvedConfig; + private __vitest_executor; + constructor(config: ResolvedConfig); + importTinybench(): Promise; + importFile(filepath: string, source: VitestRunnerImportSource): unknown; + runSuite(suite: Suite): Promise; + runTask(): Promise; +} + +export { NodeBenchmarkRunner, VitestTestRunner }; diff --git a/.pnpm-store/v3/files/14/fb21b80bbb96904ea3eaeeccef485c2012eea43af240155dd14cd99c6022f4cf98b0fc39a90ea3995476e94f647f4797c436a6f1e81d9b887848f518557cf9 b/.pnpm-store/v3/files/14/fb21b80bbb96904ea3eaeeccef485c2012eea43af240155dd14cd99c6022f4cf98b0fc39a90ea3995476e94f647f4797c436a6f1e81d9b887848f518557cf9 new file mode 100644 index 00000000..d18b61c4 --- /dev/null +++ b/.pnpm-store/v3/files/14/fb21b80bbb96904ea3eaeeccef485c2012eea43af240155dd14cd99c6022f4cf98b0fc39a90ea3995476e94f647f4797c436a6f1e81d9b887848f518557cf9 @@ -0,0 +1,253 @@ +import * as _vitest_utils from '@vitest/utils'; +import { stringify, Constructable } from '@vitest/utils'; +export { setupColors } from '@vitest/utils'; +import { diff } from '@vitest/utils/diff'; +export { DiffOptions } from '@vitest/utils/diff'; + +type Formatter = (input: string | number | null | undefined) => string; + +declare function getMatcherUtils(): { + EXPECTED_COLOR: _vitest_utils.ColorMethod; + RECEIVED_COLOR: _vitest_utils.ColorMethod; + INVERTED_COLOR: _vitest_utils.ColorMethod; + BOLD_WEIGHT: _vitest_utils.ColorMethod; + DIM_COLOR: _vitest_utils.ColorMethod; + matcherHint: (matcherName: string, received?: string, expected?: string, options?: MatcherHintOptions) => string; + printReceived: (object: unknown) => string; + printExpected: (value: unknown) => string; +}; +declare function addCustomEqualityTesters(newTesters: Array): void; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +type ChaiPlugin = Chai.ChaiPlugin; +type Tester = (this: TesterContext, a: any, b: any, customTesters: Array) => boolean | undefined; +interface TesterContext { + equals: (a: unknown, b: unknown, customTesters?: Array, strictCheck?: boolean) => boolean; +} + +interface MatcherHintOptions { + comment?: string; + expectedColor?: Formatter; + isDirectExpectCall?: boolean; + isNot?: boolean; + promise?: string; + receivedColor?: Formatter; + secondArgument?: string; + secondArgumentColor?: Formatter; +} +interface MatcherState { + customTesters: Array; + assertionCalls: number; + currentTestName?: string; + dontThrow?: () => void; + error?: Error; + equals: (a: unknown, b: unknown, customTesters?: Array, strictCheck?: boolean) => boolean; + expand?: boolean; + expectedAssertionsNumber?: number | null; + expectedAssertionsNumberErrorGen?: (() => Error) | null; + isExpectingAssertions?: boolean; + isExpectingAssertionsError?: Error | null; + isNot: boolean; + promise: string; + suppressedErrors: Array; + testPath?: string; + utils: ReturnType & { + diff: typeof diff; + stringify: typeof stringify; + iterableEquality: Tester; + subsetEquality: Tester; + }; + soft?: boolean; +} +interface SyncExpectationResult { + pass: boolean; + message: () => string; + actual?: any; + expected?: any; +} +type AsyncExpectationResult = Promise; +type ExpectationResult = SyncExpectationResult | AsyncExpectationResult; +interface RawMatcherFn { + (this: T, received: any, expected: any, options?: any): ExpectationResult; +} +type MatchersObject = Record>; +interface ExpectStatic extends Chai.ExpectStatic, AsymmetricMatchersContaining { + (actual: T, message?: string): Assertion; + unreachable: (message?: string) => never; + soft: (actual: T, message?: string) => Assertion; + extend: (expects: MatchersObject) => void; + addEqualityTesters: (testers: Array) => void; + assertions: (expected: number) => void; + hasAssertions: () => void; + anything: () => any; + any: (constructor: unknown) => any; + getState: () => MatcherState; + setState: (state: Partial) => void; + not: AsymmetricMatchersContaining; +} +interface AsymmetricMatchersContaining { + stringContaining: (expected: string) => any; + objectContaining: (expected: T) => any; + arrayContaining: (expected: Array) => any; + stringMatching: (expected: string | RegExp) => any; + closeTo: (expected: number, precision?: number) => any; +} +interface JestAssertion extends jest.Matchers { + toEqual: (expected: E) => void; + toStrictEqual: (expected: E) => void; + toBe: (expected: E) => void; + toMatch: (expected: string | RegExp) => void; + toMatchObject: (expected: E) => void; + toContain: (item: E) => void; + toContainEqual: (item: E) => void; + toBeTruthy: () => void; + toBeFalsy: () => void; + toBeGreaterThan: (num: number | bigint) => void; + toBeGreaterThanOrEqual: (num: number | bigint) => void; + toBeLessThan: (num: number | bigint) => void; + toBeLessThanOrEqual: (num: number | bigint) => void; + toBeNaN: () => void; + toBeUndefined: () => void; + toBeNull: () => void; + toBeDefined: () => void; + toBeInstanceOf: (expected: E) => void; + toBeCalledTimes: (times: number) => void; + toHaveLength: (length: number) => void; + toHaveProperty: (property: string | (string | number)[], value?: E) => void; + toBeCloseTo: (number: number, numDigits?: number) => void; + toHaveBeenCalledTimes: (times: number) => void; + toHaveBeenCalled: () => void; + toBeCalled: () => void; + toHaveBeenCalledWith: (...args: E) => void; + toBeCalledWith: (...args: E) => void; + toHaveBeenNthCalledWith: (n: number, ...args: E) => void; + nthCalledWith: (nthCall: number, ...args: E) => void; + toHaveBeenLastCalledWith: (...args: E) => void; + lastCalledWith: (...args: E) => void; + toThrow: (expected?: string | Constructable | RegExp | Error) => void; + toThrowError: (expected?: string | Constructable | RegExp | Error) => void; + toReturn: () => void; + toHaveReturned: () => void; + toReturnTimes: (times: number) => void; + toHaveReturnedTimes: (times: number) => void; + toReturnWith: (value: E) => void; + toHaveReturnedWith: (value: E) => void; + toHaveLastReturnedWith: (value: E) => void; + lastReturnedWith: (value: E) => void; + toHaveNthReturnedWith: (nthCall: number, value: E) => void; + nthReturnedWith: (nthCall: number, value: E) => void; +} +type VitestAssertion = { + [K in keyof A]: A[K] extends Chai.Assertion ? Assertion : A[K] extends (...args: any[]) => any ? A[K] : VitestAssertion; +} & ((type: string, message?: string) => Assertion); +type Promisify = { + [K in keyof O]: O[K] extends (...args: infer A) => infer R ? O extends R ? Promisify : (...args: A) => Promise : O[K]; +}; +interface Assertion extends VitestAssertion, JestAssertion { + toBeTypeOf: (expected: 'bigint' | 'boolean' | 'function' | 'number' | 'object' | 'string' | 'symbol' | 'undefined') => void; + toHaveBeenCalledOnce: () => void; + toSatisfy: (matcher: (value: E) => boolean, message?: string) => void; + resolves: Promisify>; + rejects: Promisify>; +} +declare global { + namespace jest { + interface Matchers { + } + } +} + +interface AsymmetricMatcherInterface { + asymmetricMatch: (other: unknown) => boolean; + toString: () => string; + getExpectedType?: () => string; + toAsymmetricMatcher?: () => string; +} +declare abstract class AsymmetricMatcher implements AsymmetricMatcherInterface { + protected sample: T; + protected inverse: boolean; + $$typeof: symbol; + constructor(sample: T, inverse?: boolean); + protected getMatcherContext(expect?: Chai.ExpectStatic): State; + abstract asymmetricMatch(other: unknown): boolean; + abstract toString(): string; + getExpectedType?(): string; + toAsymmetricMatcher?(): string; +} +declare class StringContaining extends AsymmetricMatcher { + constructor(sample: string, inverse?: boolean); + asymmetricMatch(other: string): boolean; + toString(): string; + getExpectedType(): string; +} +declare class Anything extends AsymmetricMatcher { + asymmetricMatch(other: unknown): boolean; + toString(): string; + toAsymmetricMatcher(): string; +} +declare class ObjectContaining extends AsymmetricMatcher> { + constructor(sample: Record, inverse?: boolean); + getPrototype(obj: object): any; + hasProperty(obj: object | null, property: string): boolean; + asymmetricMatch(other: any): boolean; + toString(): string; + getExpectedType(): string; +} +declare class ArrayContaining extends AsymmetricMatcher> { + constructor(sample: Array, inverse?: boolean); + asymmetricMatch(other: Array): boolean; + toString(): string; + getExpectedType(): string; +} +declare class Any extends AsymmetricMatcher { + constructor(sample: unknown); + fnNameFor(func: Function): string; + asymmetricMatch(other: unknown): boolean; + toString(): string; + getExpectedType(): string; + toAsymmetricMatcher(): string; +} +declare class StringMatching extends AsymmetricMatcher { + constructor(sample: string | RegExp, inverse?: boolean); + asymmetricMatch(other: string): boolean; + toString(): string; + getExpectedType(): string; +} +declare const JestAsymmetricMatchers: ChaiPlugin; + +declare function equals(a: unknown, b: unknown, customTesters?: Array, strictCheck?: boolean): boolean; +declare function isAsymmetric(obj: any): boolean; +declare function hasAsymmetric(obj: any, seen?: Set): boolean; +declare function isA(typeName: string, value: unknown): boolean; +declare function fnNameFor(func: Function): string; +declare function hasProperty(obj: object | null, property: string): boolean; +declare function isImmutableUnorderedKeyed(maybeKeyed: any): boolean; +declare function isImmutableUnorderedSet(maybeSet: any): boolean; +declare function iterableEquality(a: any, b: any, customTesters?: Array, aStack?: Array, bStack?: Array): boolean | undefined; +declare function subsetEquality(object: unknown, subset: unknown, customTesters?: Array): boolean | undefined; +declare function typeEquality(a: any, b: any): boolean | undefined; +declare function arrayBufferEquality(a: unknown, b: unknown): boolean | undefined; +declare function sparseArrayEquality(a: unknown, b: unknown, customTesters?: Array): boolean | undefined; +declare function generateToBeMessage(deepEqualityName: string, expected?: string, actual?: string): string; +declare function pluralize(word: string, count: number): string; + +declare const MATCHERS_OBJECT: unique symbol; +declare const JEST_MATCHERS_OBJECT: unique symbol; +declare const GLOBAL_EXPECT: unique symbol; +declare const ASYMMETRIC_MATCHERS_OBJECT: unique symbol; + +declare function getState(expect: ExpectStatic): State; +declare function setState(state: Partial, expect: ExpectStatic): void; + +declare const JestChaiExpect: ChaiPlugin; + +declare const JestExtend: ChaiPlugin; + +export { ASYMMETRIC_MATCHERS_OBJECT, Any, Anything, ArrayContaining, type Assertion, AsymmetricMatcher, type AsymmetricMatcherInterface, type AsymmetricMatchersContaining, type AsyncExpectationResult, type ChaiPlugin, type ExpectStatic, type ExpectationResult, GLOBAL_EXPECT, JEST_MATCHERS_OBJECT, type JestAssertion, JestAsymmetricMatchers, JestChaiExpect, JestExtend, MATCHERS_OBJECT, type MatcherHintOptions, type MatcherState, type MatchersObject, ObjectContaining, type RawMatcherFn, StringContaining, StringMatching, type SyncExpectationResult, type Tester, type TesterContext, addCustomEqualityTesters, arrayBufferEquality, equals, fnNameFor, generateToBeMessage, getState, hasAsymmetric, hasProperty, isA, isAsymmetric, isImmutableUnorderedKeyed, isImmutableUnorderedSet, iterableEquality, pluralize, setState, sparseArrayEquality, subsetEquality, typeEquality }; diff --git a/.pnpm-store/v3/files/15/845a58b974a901600f30fea8cf7340da32232769cc6b306ba1f59c5d9a65fced4cb77862ce5c4f760749812a037acc3201627764105f570ec96843e88a1b0a b/.pnpm-store/v3/files/15/845a58b974a901600f30fea8cf7340da32232769cc6b306ba1f59c5d9a65fced4cb77862ce5c4f760749812a037acc3201627764105f570ec96843e88a1b0a new file mode 100644 index 00000000..6deb371d --- /dev/null +++ b/.pnpm-store/v3/files/15/845a58b974a901600f30fea8cf7340da32232769cc6b306ba1f59c5d9a65fced4cb77862ce5c4f760749812a037acc3201627764105f570ec96843e88a1b0a @@ -0,0 +1,21 @@ +import { V as ViteNodeServerOptions } from './index-WT31LSgS.js'; +import './trace-mapping.d-xyIfZtPm.js'; + +interface CliOptions { + 'root'?: string; + 'script'?: boolean; + 'config'?: string; + 'mode'?: string; + 'watch'?: boolean; + 'options'?: ViteNodeServerOptionsCLI; + 'version'?: boolean; + 'help'?: boolean; + '--'?: string[]; +} +type Optional = T | undefined; +type ComputeViteNodeServerOptionsCLI> = { + [K in keyof T]: T[K] extends Optional ? string | string[] : T[K] extends Optional<(string | RegExp)[]> ? string | string[] : T[K] extends Optional<(string | RegExp)[] | true> ? string | string[] | true : T[K] extends Optional> ? ComputeViteNodeServerOptionsCLI : T[K]; +}; +type ViteNodeServerOptionsCLI = ComputeViteNodeServerOptionsCLI; + +export type { CliOptions, ViteNodeServerOptionsCLI }; diff --git a/.pnpm-store/v3/files/17/219f0bf01c3561d0b3d7b93101439f17439c5fb172322a79585bc3d958ac793514a437a13647972dc1f420c08d8887bcff5b3be0817bb2f4285d6de2d48be7 b/.pnpm-store/v3/files/17/219f0bf01c3561d0b3d7b93101439f17439c5fb172322a79585bc3d958ac793514a437a13647972dc1f420c08d8887bcff5b3be0817bb2f4285d6de2d48be7 new file mode 100644 index 00000000..2661f6f1 --- /dev/null +++ b/.pnpm-store/v3/files/17/219f0bf01c3561d0b3d7b93101439f17439c5fb172322a79585bc3d958ac793514a437a13647972dc1f420c08d8887bcff5b3be0817bb2f4285d6de2d48be7 @@ -0,0 +1,2 @@ +import type { ISize } from './vendor/image-size/types/interface.ts'; +export declare function probe(url: string): Promise; diff --git a/.pnpm-store/v3/files/1a/27604bfde8fbf0824c0553bdb9528590fd3a75b042724a8a04b15632e80309d22ca1d79e3e332ee0a29d8e360fd09d6e4714617041e10fc7134e89d44ed851 b/.pnpm-store/v3/files/1a/27604bfde8fbf0824c0553bdb9528590fd3a75b042724a8a04b15632e80309d22ca1d79e3e332ee0a29d8e360fd09d6e4714617041e10fc7134e89d44ed851 new file mode 100644 index 00000000..6f56a62c --- /dev/null +++ b/.pnpm-store/v3/files/1a/27604bfde8fbf0824c0553bdb9528590fd3a75b042724a8a04b15632e80309d22ca1d79e3e332ee0a29d8e360fd09d6e4714617041e10fc7134e89d44ed851 @@ -0,0 +1,47 @@ +{ + "name": "@vitest/expect", + "type": "module", + "version": "1.3.0", + "description": "Jest's expect matchers as a Chai plugin", + "license": "MIT", + "funding": "https://opencollective.com/vitest", + "homepage": "https://github.com/vitest-dev/vitest/tree/main/packages/expect#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vitest-dev/vitest.git", + "directory": "packages/expect" + }, + "bugs": { + "url": "https://github.com/vitest-dev/vitest/issues" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./index.d.ts", + "default": "./dist/index.js" + }, + "./*": "./*" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./index.d.ts", + "files": [ + "*.d.ts", + "dist" + ], + "dependencies": { + "chai": "^4.3.10", + "@vitest/spy": "1.3.0", + "@vitest/utils": "1.3.0" + }, + "devDependencies": { + "@types/chai": "4.3.6", + "picocolors": "^1.0.0", + "rollup-plugin-copy": "^3.5.0", + "@vitest/runner": "1.3.0" + }, + "scripts": { + "build": "rimraf dist && rollup -c", + "dev": "rollup -c --watch" + } +} \ No newline at end of file diff --git a/.pnpm-store/v3/files/1a/b6ed2a1a87b2d45fc48f6786d6fc4478906e3a4a9be5044d07426185a02791a8c4a8dd26680962df3a435957b81e3efba5d3e399416b0670ee66e2697fa2d9 b/.pnpm-store/v3/files/1a/b6ed2a1a87b2d45fc48f6786d6fc4478906e3a4a9be5044d07426185a02791a8c4a8dd26680962df3a435957b81e3efba5d3e399416b0670ee66e2697fa2d9 new file mode 100644 index 00000000..30cc57bd --- /dev/null +++ b/.pnpm-store/v3/files/1a/b6ed2a1a87b2d45fc48f6786d6fc4478906e3a4a9be5044d07426185a02791a8c4a8dd26680962df3a435957b81e3efba5d3e399416b0670ee66e2697fa2d9 @@ -0,0 +1,133 @@ +'use strict'; + +var os = require('node:os'); +var stdEnv = require('std-env'); +var vite = require('vite'); + +var _a$1; +typeof process < "u" && typeof process.stdout < "u" && !((_a$1 = process.versions) == null ? void 0 : _a$1.deno) && !globalThis.window; + +var _a, _b; +const defaultInclude = ["**/*.{test,spec}.?(c|m)[jt]s?(x)"]; +const defaultExclude = ["**/node_modules/**", "**/dist/**", "**/cypress/**", "**/.{idea,git,cache,output,temp}/**", "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*"]; +const defaultCoverageExcludes = [ + "coverage/**", + "dist/**", + "**/[.]**", + "packages/*/test?(s)/**", + "**/*.d.ts", + "**/virtual:*", + "**/__x00__*", + "**/\0*", + "cypress/**", + "test?(s)/**", + "test?(-*).?(c|m)[jt]s?(x)", + "**/*{.,-}{test,spec}.?(c|m)[jt]s?(x)", + "**/__tests__/**", + "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*", + "**/vitest.{workspace,projects}.[jt]s?(on)", + "**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}" +]; +const coverageConfigDefaults = { + provider: "v8", + enabled: false, + all: true, + clean: true, + cleanOnRerun: true, + reportsDirectory: "./coverage", + exclude: defaultCoverageExcludes, + reportOnFailure: false, + reporter: [["text", {}], ["html", {}], ["clover", {}], ["json", {}]], + extension: [".js", ".cjs", ".mjs", ".ts", ".mts", ".cts", ".tsx", ".jsx", ".vue", ".svelte", ".marko"], + allowExternal: false, + processingConcurrency: Math.min(20, ((_b = (_a = os).availableParallelism) == null ? void 0 : _b.call(_a)) ?? os.cpus().length) +}; +const fakeTimersDefaults = { + loopLimit: 1e4, + shouldClearNativeTimers: true, + toFake: [ + "setTimeout", + "clearTimeout", + "setInterval", + "clearInterval", + "setImmediate", + "clearImmediate", + "Date" + ] +}; +const config = { + allowOnly: !stdEnv.isCI, + isolate: true, + watch: !stdEnv.isCI, + globals: false, + environment: "node", + pool: "threads", + clearMocks: false, + restoreMocks: false, + mockReset: false, + include: defaultInclude, + exclude: defaultExclude, + testTimeout: 5e3, + hookTimeout: 1e4, + teardownTimeout: 1e4, + watchExclude: ["**/node_modules/**", "**/dist/**"], + forceRerunTriggers: [ + "**/package.json/**", + "**/{vitest,vite}.config.*/**" + ], + update: false, + reporters: [], + silent: false, + hideSkippedTests: false, + api: false, + ui: false, + uiBase: "/__vitest__/", + open: !stdEnv.isCI, + css: { + include: [] + }, + coverage: coverageConfigDefaults, + fakeTimers: fakeTimersDefaults, + maxConcurrency: 5, + dangerouslyIgnoreUnhandledErrors: false, + typecheck: { + checker: "tsc", + include: ["**/*.{test,spec}-d.?(c|m)[jt]s?(x)"], + exclude: defaultExclude + }, + slowTestThreshold: 300, + disableConsoleIntercept: false +}; +const configDefaults = Object.freeze(config); + +const extraInlineDeps = [ + /^(?!.*(?:node_modules)).*\.mjs$/, + /^(?!.*(?:node_modules)).*\.cjs\.js$/, + // Vite client + /vite\w*\/dist\/client\/env.mjs/, + // Nuxt + "@nuxt/test-utils" +]; + +function defineConfig(config) { + return config; +} +function defineProject(config) { + return config; +} +function defineWorkspace(config) { + return config; +} + +Object.defineProperty(exports, "mergeConfig", { + enumerable: true, + get: function () { return vite.mergeConfig; } +}); +exports.configDefaults = configDefaults; +exports.coverageConfigDefaults = coverageConfigDefaults; +exports.defaultExclude = defaultExclude; +exports.defaultInclude = defaultInclude; +exports.defineConfig = defineConfig; +exports.defineProject = defineProject; +exports.defineWorkspace = defineWorkspace; +exports.extraInlineDeps = extraInlineDeps; diff --git a/.pnpm-store/v3/files/1a/c65dcabde2b9bd269366cacdb1e17574e33a7fe2b1fe840152ab1eb814dc3e9de7d60b2083931fe56f92b58691210a528f5124f66d8bcfe8226e0e96519920 b/.pnpm-store/v3/files/1a/c65dcabde2b9bd269366cacdb1e17574e33a7fe2b1fe840152ab1eb814dc3e9de7d60b2083931fe56f92b58691210a528f5124f66d8bcfe8226e0e96519920 new file mode 100644 index 00000000..26401a47 --- /dev/null +++ b/.pnpm-store/v3/files/1a/c65dcabde2b9bd269366cacdb1e17574e33a7fe2b1fe840152ab1eb814dc3e9de7d60b2083931fe56f92b58691210a528f5124f66d8bcfe8226e0e96519920 @@ -0,0 +1,2 @@ +import type { IImage } from './interface.ts'; +export declare const BMP: IImage; diff --git a/.pnpm-store/v3/files/1b/843dc4eac7162eb10903a6bac267939613703b9112c47ea6f81b528782bc6ad5e7399199ae701939ac5de2b50ee53ab5f1f275c41adc108554d8753e09d4a2 b/.pnpm-store/v3/files/1b/843dc4eac7162eb10903a6bac267939613703b9112c47ea6f81b528782bc6ad5e7399199ae701939ac5de2b50ee53ab5f1f275c41adc108554d8753e09d4a2 new file mode 100644 index 00000000..b842ed04 --- /dev/null +++ b/.pnpm-store/v3/files/1b/843dc4eac7162eb10903a6bac267939613703b9112c47ea6f81b528782bc6ad5e7399199ae701939ac5de2b50ee53ab5f1f275c41adc108554d8753e09d4a2 @@ -0,0 +1,25 @@ +import type { BuildOptions, Rollup, Plugin as VitePlugin } from 'vite'; +type OutputOptionsHook = Extract; +type OutputOptions = Parameters[0]; +type ExtendManualChunksHooks = { + before?: Rollup.GetManualChunk; + after?: Rollup.GetManualChunk; +}; +export declare function extendManualChunks(outputOptions: OutputOptions, hooks: ExtendManualChunksHooks): void; +export declare const ASTRO_PAGE_EXTENSION_POST_PATTERN = "@_@"; +/** + * 1. We add a fixed prefix, which is used as virtual module naming convention; + * 2. We replace the dot that belongs extension with an arbitrary string. + * + * @param virtualModulePrefix + * @param path + */ +export declare function getVirtualModulePageNameFromPath(virtualModulePrefix: string, path: string): string; +/** + * + * @param virtualModulePrefix + * @param id + */ +export declare function getPathFromVirtualModulePageName(virtualModulePrefix: string, id: string): string; +export declare function shouldInlineAsset(assetContent: string, assetPath: string, assetsInlineLimit: NonNullable): boolean; +export {}; diff --git a/.pnpm-store/v3/files/1c/a28829fe3d564c65adabf717fc3aa91b8f7262261956c85c9d88dca83454c03edc16affbcc84f46e5798fe65323ea79783a5a9b3dfb4602c70d68dbb6f1bf3-index.json b/.pnpm-store/v3/files/1c/a28829fe3d564c65adabf717fc3aa91b8f7262261956c85c9d88dca83454c03edc16affbcc84f46e5798fe65323ea79783a5a9b3dfb4602c70d68dbb6f1bf3-index.json new file mode 100644 index 00000000..1c0bb33d --- /dev/null +++ b/.pnpm-store/v3/files/1c/a28829fe3d564c65adabf717fc3aa91b8f7262261956c85c9d88dca83454c03edc16affbcc84f46e5798fe65323ea79783a5a9b3dfb4602c70d68dbb6f1bf3-index.json @@ -0,0 +1 @@ +{"files":{"LICENSE":{"checkedAt":1708389320834,"integrity":"sha512-j96te4KX4HnWrAScBfRJ/kJ4JCHtSCjtJmdlgBQeJv15OAX3WOUZFJsOLLtPurAFUXT9V1CrHKZeTCK4+5FoZw==","mode":420,"size":84951},"sass.default.cjs":{"checkedAt":1708389320834,"integrity":"sha512-cjTefWyVUZRmwjRH2z6pAE8ChxtJCU2ea28vz9rcY350JJU0dhgb+NeEJ6hNP/Oa+1lkAhNTWpZ42YNufIwa1A==","mode":420,"size":235},"sass.dart.js":{"checkedAt":1708389320845,"integrity":"sha512-uZ6XBcDUhAIqx8xHOYomD90m8sybqA/8atCi7/Jas0FcMPh1BNEFFi9qpFMAapt4auncd26dvgBSQB95NX1aRA==","mode":420,"size":4916759},"sass.default.js":{"checkedAt":1708389320845,"integrity":"sha512-VtuSYSWAZMK0f4OEsqNqrVJh2eSqbtfZ4F32q2QUQwNj7o4CRZz5t1EVMBUrL4STGQf7zrMMAB2BQCFEBjjscA==","mode":420,"size":2205},"sass.js":{"checkedAt":1708389320845,"integrity":"sha512-QBYhE/GeVCdBUcQ2phWPWDFdcXNuBA0gqg3fsotL5Ol3YLviJpVJmk0AB4SSw/MU/lV1aGJlydviN6HjQwTA7Q==","mode":493,"size":418},"sass.node.js":{"checkedAt":1708389320845,"integrity":"sha512-czfHidKjz1QzGFPROR4QYH86fdjxyjUIRqwLiXCw86NnwYzoKYW3pA+fFDREb5XAbxmXuyrYoyrPEVht/NR7Hg==","mode":420,"size":310},"package.json":{"checkedAt":1708389320845,"integrity":"sha512-/E2X7slG6cLEsa/6ljGKCpx4XZhmaXU7I0WFcwvRowv3NEKaOCnD3KxSfcfX5+CF4s7OkPgfV7ssMzozxverYw==","mode":420,"size":810},"README.md":{"checkedAt":1708389320846,"integrity":"sha512-jY2W2Qy9nWbHl0gYo4PoGSpK5hyXvAFKqKle5vfE/+UznUaKFlqmVvwyBlt7KnPOYInDr8pRE92wfLAMkNxL6w==","mode":420,"size":7403},"sass.node.mjs":{"checkedAt":1708389320846,"integrity":"sha512-nCQjE4K/KHNZHAVtshs7c/IWnltSPcx60B7I8kp6ieGH5jfU2eXuUpdCYXtlNdyATWXjU4n3OyUL6m6WeiwWtw==","mode":420,"size":4974},"types/value/argument_list.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-1NPjCLrWb8pnITIY273jvdfZz0eBL5HkOpKrn+/7IvNZsEbDBYHf3lJdzp1J/px4BX85QwB+UZg+Vg9iBWIO0Q==","mode":420,"size":1592},"types/value/boolean.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-BT08sMqjuezFyjgoTo1CuK1DltBCNacNxGMwdMtjdlO2MpR9e+vVV2tA2Mn+uM6vK61ADzyQBCYitFajdGil0g==","mode":420,"size":616},"types/value/calculation.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-6SyRE4uDkBtkqYftkyfefDLMHROLex5iavx/eh/bKbCNqjKUSLm61vDz0fABjtydbwoW8sOHsfV7GborsYJgBw==","mode":420,"size":4000},"types/value/color.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-6myGIXDWKF9drvKKzmaAp4I80Ko/3xL52u1HrL9KvsjEJvnU6QfAFbnQDCw9tHtz/zEtuPVB8DtlCVTZdObRCA==","mode":420,"size":3775},"types/compile.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-hhmkh+6M/51hsgu0GLnfREjfM9qKFjhPCFPM9y7BJEMjaEmuS+RIN4s/dP24KCmn7yCiWtCfo0eVplLz6VU/tQ==","mode":420,"size":11071},"types/exception.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-M5DnucxERBRFZPehxuIe21npvhXE36DOglszNzVeWN0SmuoF6fO85m30AKkBV5DL9djt6Yr5qHdlr/ahECSsiw==","mode":420,"size":1148},"types/legacy/exception.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-K/TUwlAlgSgm5VRWTjGUbRMcu2nL1sqNhTLLMc2e9ZQZFXk/eKs5qF//ngaKK2GfJfrdLjnQgposrCqPpc4qPg==","mode":420,"size":1862},"types/legacy/function.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-yOMv090w2WWzE2OcKO6XPD1TzqefJlYXrYf2x88Vw6abyzJqmCSPHlCagknENSJP5SRWXPGQPFCLnDW6AKBXkg==","mode":420,"size":22983},"types/value/function.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-mwy4Y3ZaW5QZuD6udyAadJTWvOan3/CUORh3jQ0UuKdRqewk0gaDGSFqFM7B0aGwGmaIV9OhXGKEYQN98Vnv4g==","mode":420,"size":863},"types/importer.d.ts":{"checkedAt":1708389320846,"integrity":"sha512-QhPNofLIpc0XhbW3sgFSyiNTHyGSfy1LpfzaZIFOv212ifQxKe6I5SK5JVzM3BMYBiOOLgJ9SJn6GOHUasQIdw==","mode":420,"size":18734},"types/legacy/importer.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-GBjjh5gslwuv7t8TKZzE0Lx8hfqOXdBGZmz6kXYLYPOb1Ydi9/RXw7vRwFG+r9lI72TxtGJuqkzv+ITCy5RIvA==","mode":420,"size":6358},"types/index.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-kcjZj4pSsbKElJPtiMiPaIjJM7o7LwX/aJMofJlKKcv3IWTrzw78RciLtGbNHkG8nN96G31batqWgVTDtDpGvA==","mode":420,"size":2273},"types/logger/index.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-OVwoXFV8NRcl68mis4anq8fJRkk2mwp7kr8bV2fmOZhpxeSycnjr8jG2/2NphIi9Y6l/D5rI2u+FTnfzS5U4Qw==","mode":420,"size":2437},"types/value/index.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-Q1+fntd5B5I2RsvPaLmKUOfvvHCtWy0a4b/6Eg2/pxx3acHj+l0U7RMsKokrRAHKje/7d9jPeeJnFkNkvWJpfA==","mode":420,"size":6391},"types/value/list.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-0kuWRJnnO/SKv2SHOoZlE9lnnjoYD+3rPZulY1jR5EykoTaOriOwdZTahS5TqJHS/HUKvU3jcJW/OQf3bP9aIQ==","mode":420,"size":1479},"types/value/map.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-izPPRsNF08+20xemaDWWJ79ORRcKHpTsuWm52R2VtT7gT+HBGJ7+nsGKZYSTi1kxSz/nWDRY7cnVjXQKfB4UDg==","mode":420,"size":1115},"types/value/mixin.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-PPIFGcD6yVP4Z9EsOrda2ZXfY75+HqOMYgqbj7v9frpYvLx2m/k0yPH/D5x8SD5lC4S9KUe2YXnJpiY9mIi9NA==","mode":420,"size":342},"types/value/number.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-+KQJo0mdkRoPRJ1nfccCf1a6HXtrYax8eHisq9JNO3cteNgj4XFp3ydDdTsOSYiwk8G8BnByTyv1MHKC6cdVKQ==","mode":420,"size":11699},"types/legacy/options.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-V9B8uL9a/u7DWe7rRh25yDdmCt+Rz0DKQhnKCO/lFR5YexTavbtvv8ln9FGZZz6n5+pq1BiVFTzCgDxcZZF3Ow==","mode":420,"size":20877},"types/options.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-f5bKlZ4Y/IgUapS/JVP13sPCVxp3/l2sJyC4znoDXv8JI8j70PcgqI9eeWYnLL5eSpGXYPcbrfSQi2UfS7Ej9g==","mode":420,"size":15562},"types/legacy/plugin_this.d.ts":{"checkedAt":1708389320847,"integrity":"sha512-MlTYIBXThoQirEFx/fP0Iu8BwiyHyhpIND4thco1wTiwRAGrY2hA3z5hQe2TYv/VM5KwrHdRKhTCjjKTh+OlnA==","mode":420,"size":2107},"types/util/promise_or.d.ts":{"checkedAt":1708389320848,"integrity":"sha512-+txmFrLv8clSVVY02vSW20FaotfCWrAW23xM79JZ1+L8tTdD4JZKfa88r9yVFeiB5ksjyAWMJzdfu4ja8TXdaw==","mode":420,"size":660},"types/legacy/render.d.ts":{"checkedAt":1708389320848,"integrity":"sha512-DyDT4n0fTpiL0bkIK1y+ySInPm8jAzRsfl/EM27Z/bEMjNrcwEuibbIQXEqG72uTnKyre1Pc0buIl0YHZesbXQ==","mode":420,"size":4443},"types/logger/source_location.d.ts":{"checkedAt":1708389320848,"integrity":"sha512-SAdXAj5F+VBQne8wHiXaV2oQNsbNlH2V0BuspfDNVnK/RVd6S66IhbUTJscR0uEq2Tvqc8w42z9fEDlYgz1QkA==","mode":420,"size":486},"types/logger/source_span.d.ts":{"checkedAt":1708389320848,"integrity":"sha512-KFN3fL+PNM+3bDEkXv1vtg90YDgDG3aFNDJKOg2TrZPXLAI+4zJX2t3IrSw0wZP2UUPCT2GKoLhPR6RnRuVsyg==","mode":420,"size":837},"types/value/string.d.ts":{"checkedAt":1708389320848,"integrity":"sha512-L9nE9vUOI2u/Qk6mNygUptZjiMOJg+38eAQbJB6pykcEzy3hnsRU9m4S62DallpYpgDukGEPla8b0Vo2cAYQ+g==","mode":420,"size":3189}}} \ No newline at end of file diff --git a/.pnpm-store/v3/files/1d/5446c76b7b462b4028e893f684372e3f72959f53cd0ed934e624f6aef0068f1c5ef92d46fd4158d79ff87acc9caa35b0a10e2fb7c84c0fcd06dd64ff1ff213 b/.pnpm-store/v3/files/1d/5446c76b7b462b4028e893f684372e3f72959f53cd0ed934e624f6aef0068f1c5ef92d46fd4158d79ff87acc9caa35b0a10e2fb7c84c0fcd06dd64ff1ff213 new file mode 100644 index 00000000..b93fd505 --- /dev/null +++ b/.pnpm-store/v3/files/1d/5446c76b7b462b4028e893f684372e3f72959f53cd0ed934e624f6aef0068f1c5ef92d46fd4158d79ff87acc9caa35b0a10e2fb7c84c0fcd06dd64ff1ff213 @@ -0,0 +1,2 @@ +import type { imageType } from './types/index.js'; +export declare function detector(input: Uint8Array): imageType | undefined; diff --git a/.pnpm-store/v3/files/1e/d4fef3cbde885a17f9ff9575629b16fc11f000daf800d2c91f5df51d48aff95af34822b1e6160a5924ac4be4e5535513a3de7090f859e4ff62246d85336096 b/.pnpm-store/v3/files/1e/d4fef3cbde885a17f9ff9575629b16fc11f000daf800d2c91f5df51d48aff95af34822b1e6160a5924ac4be4e5535513a3de7090f859e4ff62246d85336096 new file mode 100644 index 00000000..ca679696 --- /dev/null +++ b/.pnpm-store/v3/files/1e/d4fef3cbde885a17f9ff9575629b16fc11f000daf800d2c91f5df51d48aff95af34822b1e6160a5924ac4be4e5535513a3de7090f859e4ff62246d85336096 @@ -0,0 +1,179 @@ +import { fade, slide } from "../../transitions/index.js"; +import { markHTMLString } from "./escape.js"; +import cssesc from "cssesc"; +const transitionNameMap = /* @__PURE__ */ new WeakMap(); +function incrementTransitionNumber(result) { + let num = 1; + if (transitionNameMap.has(result)) { + num = transitionNameMap.get(result) + 1; + } + transitionNameMap.set(result, num); + return num; +} +function createTransitionScope(result, hash) { + const num = incrementTransitionNumber(result); + return `astro-${hash}-${num}`; +} +const getAnimations = (name) => { + if (name === "fade") + return fade(); + if (name === "slide") + return slide(); + if (typeof name === "object") + return name; +}; +const addPairs = (animations, stylesheet) => { + for (const [direction, images] of Object.entries(animations)) { + for (const [image, rules] of Object.entries(images)) { + stylesheet.addAnimationPair(direction, image, rules); + } + } +}; +const reEncodeValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".split("").reduce((v, c) => (v[c.charCodeAt(0)] = c, v), []); +const reEncodeInValidStart = "-0123456789_".split("").reduce((v, c) => (v[c.charCodeAt(0)] = c, v), []); +function reEncode(s) { + let result = ""; + let codepoint; + for (let i = 0; i < s.length; i += (codepoint ?? 0) > 65535 ? 2 : 1) { + codepoint = s.codePointAt(i); + if (codepoint !== void 0) { + result += codepoint < 128 ? codepoint === 95 ? "__" : reEncodeValidChars[codepoint] ?? "_" + codepoint.toString(16).padStart(2, "0") : String.fromCodePoint(codepoint); + } + } + return reEncodeInValidStart[result.codePointAt(0) ?? 0] ? "_" + result : result; +} +function renderTransition(result, hash, animationName, transitionName) { + if (!animationName) + animationName = "fade"; + const scope = createTransitionScope(result, hash); + const name = transitionName ? cssesc(reEncode(transitionName), { isIdentifier: true }) : scope; + const sheet = new ViewTransitionStyleSheet(scope, name); + const animations = getAnimations(animationName); + if (animations) { + addPairs(animations, sheet); + } else if (animationName === "none") { + sheet.addFallback("old", "animation: none; mix-blend-mode: normal;"); + sheet.addModern("old", "animation: none; opacity: 0; mix-blend-mode: normal;"); + sheet.addAnimationRaw("new", "animation: none; mix-blend-mode: normal;"); + } + result._metadata.extraHead.push(markHTMLString(``)); + return scope; +} +function createAnimationScope(transitionName, animations) { + const hash = Math.random().toString(36).slice(2, 8); + const scope = `astro-${hash}`; + const sheet = new ViewTransitionStyleSheet(scope, transitionName); + addPairs(animations, sheet); + return { scope, styles: sheet.toString().replaceAll('"', "") }; +} +class ViewTransitionStyleSheet { + constructor(scope, name) { + this.scope = scope; + this.name = name; + } + modern = []; + fallback = []; + toString() { + const { scope, name } = this; + const [modern, fallback] = [this.modern, this.fallback].map((rules) => rules.join("")); + return [ + `[data-astro-transition-scope="${scope}"] { view-transition-name: ${name}; }`, + this.layer(modern), + fallback + ].join(""); + } + layer(cssText) { + return cssText ? `@layer astro { ${cssText} }` : ""; + } + addRule(target, cssText) { + this[target].push(cssText); + } + addAnimationRaw(image, animation) { + this.addModern(image, animation); + this.addFallback(image, animation); + } + addModern(image, animation) { + const { name } = this; + this.addRule("modern", `::view-transition-${image}(${name}) { ${animation} }`); + } + addFallback(image, animation) { + const { scope } = this; + this.addRule( + "fallback", + // Two selectors here, the second in case there is an animation on the root. + `[data-astro-transition-fallback="${image}"] [data-astro-transition-scope="${scope}"], + [data-astro-transition-fallback="${image}"][data-astro-transition-scope="${scope}"] { ${animation} }` + ); + } + addAnimationPair(direction, image, rules) { + const { scope, name } = this; + const animation = stringifyAnimation(rules); + const prefix = direction === "backwards" ? `[data-astro-transition=back]` : direction === "forwards" ? "" : `[data-astro-transition=${direction}]`; + this.addRule("modern", `${prefix}::view-transition-${image}(${name}) { ${animation} }`); + this.addRule( + "fallback", + `${prefix}[data-astro-transition-fallback="${image}"] [data-astro-transition-scope="${scope}"], + ${prefix}[data-astro-transition-fallback="${image}"][data-astro-transition-scope="${scope}"] { ${animation} }` + ); + } +} +function addAnimationProperty(builder, prop, value) { + let arr = builder[prop]; + if (Array.isArray(arr)) { + arr.push(value.toString()); + } else { + builder[prop] = [value.toString()]; + } +} +function animationBuilder() { + return { + toString() { + let out = ""; + for (let k in this) { + let value = this[k]; + if (Array.isArray(value)) { + out += ` + ${k}: ${value.join(", ")};`; + } + } + return out; + } + }; +} +function stringifyAnimation(anim) { + if (Array.isArray(anim)) { + return stringifyAnimations(anim); + } else { + return stringifyAnimations([anim]); + } +} +function stringifyAnimations(anims) { + const builder = animationBuilder(); + for (const anim of anims) { + if (anim.duration) { + addAnimationProperty(builder, "animation-duration", toTimeValue(anim.duration)); + } + if (anim.easing) { + addAnimationProperty(builder, "animation-timing-function", anim.easing); + } + if (anim.direction) { + addAnimationProperty(builder, "animation-direction", anim.direction); + } + if (anim.delay) { + addAnimationProperty(builder, "animation-delay", anim.delay); + } + if (anim.fillMode) { + addAnimationProperty(builder, "animation-fill-mode", anim.fillMode); + } + addAnimationProperty(builder, "animation-name", anim.name); + } + return builder.toString(); +} +function toTimeValue(num) { + return typeof num === "number" ? num + "ms" : num; +} +export { + createAnimationScope, + createTransitionScope, + renderTransition +}; diff --git a/.pnpm-store/v3/files/1f/20a1a6a4510059a7ba3dfbc1af277bb5d58cde35ab1ec36e8e86eac9a72dc4f7da06642b154c6c193acbb03a4ac021e3d775923456dfd82d442af10cbd165f b/.pnpm-store/v3/files/1f/20a1a6a4510059a7ba3dfbc1af277bb5d58cde35ab1ec36e8e86eac9a72dc4f7da06642b154c6c193acbb03a4ac021e3d775923456dfd82d442af10cbd165f new file mode 100644 index 00000000..afb8aa15 --- /dev/null +++ b/.pnpm-store/v3/files/1f/20a1a6a4510059a7ba3dfbc1af277bb5d58cde35ab1ec36e8e86eac9a72dc4f7da06642b154c6c193acbb03a4ac021e3d775923456dfd82d442af10cbd165f @@ -0,0 +1,5 @@ +// @ts-ignore +export { default as SEO } from "./SEO.astro"; + +// @ts-ignore +export * from "./SEO.astro"; diff --git a/.pnpm-store/v3/files/22/86654a9b5916384bf0841c2331e8d684946b751841083901db018cc613913f450d72847203a5d7e6af75c2b114d2462ab9c0c8c71222027189104556205be5 b/.pnpm-store/v3/files/22/86654a9b5916384bf0841c2331e8d684946b751841083901db018cc613913f450d72847203a5d7e6af75c2b114d2462ab9c0c8c71222027189104556205be5 new file mode 100644 index 00000000..00a446c7 --- /dev/null +++ b/.pnpm-store/v3/files/22/86654a9b5916384bf0841c2331e8d684946b751841083901db018cc613913f450d72847203a5d7e6af75c2b114d2462ab9c0c8c71222027189104556205be5 @@ -0,0 +1,7 @@ +/** + * This file is prebuilt from packages/astro/src/runtime/server/astro-island.ts + * Do not edit this directly, but instead edit that file and rerun the prebuild + * to generate this file. + */ +declare const _default: "(()=>{var v=Object.defineProperty;var A=(c,s,a)=>s in c?v(c,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):c[s]=a;var l=(c,s,a)=>(A(c,typeof s!=\"symbol\"?s+\"\":s,a),a);var m;{let c={0:t=>y(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},s=t=>{let[e,n]=t;return e in c?c[e](n):void 0},a=t=>t.map(s),y=t=>typeof t!=\"object\"||t===null?t:Object.fromEntries(Object.entries(t).map(([e,n])=>[e,s(n)]));customElements.get(\"astro-island\")||customElements.define(\"astro-island\",(m=class extends HTMLElement{constructor(){super(...arguments);l(this,\"Component\");l(this,\"hydrator\");l(this,\"hydrate\",async()=>{var f;if(!this.hydrator||!this.isConnected)return;let e=(f=this.parentElement)==null?void 0:f.closest(\"astro-island[ssr]\");if(e){e.addEventListener(\"astro:hydrate\",this.hydrate,{once:!0});return}let n=this.querySelectorAll(\"astro-slot\"),r={},h=this.querySelectorAll(\"template[data-astro-template]\");for(let o of h){let i=o.closest(this.tagName);i!=null&&i.isSameNode(this)&&(r[o.getAttribute(\"data-astro-template\")||\"default\"]=o.innerHTML,o.remove())}for(let o of n){let i=o.closest(this.tagName);i!=null&&i.isSameNode(this)&&(r[o.getAttribute(\"name\")||\"default\"]=o.innerHTML)}let p;try{p=this.hasAttribute(\"props\")?y(JSON.parse(this.getAttribute(\"props\"))):{}}catch(o){let i=this.getAttribute(\"component-url\")||\"\",b=this.getAttribute(\"component-export\");throw b&&(i+=` (export ${b})`),console.error(`[hydrate] Error parsing props for component ${i}`,this.getAttribute(\"props\"),o),o}let d,u=this.hydrator(this);d=performance.now(),await u(this.Component,p,r,{client:this.getAttribute(\"client\")}),d&&this.setAttribute(\"client-render-time\",(performance.now()-d).toString()),this.removeAttribute(\"ssr\"),this.dispatchEvent(new CustomEvent(\"astro:hydrate\"))});l(this,\"unmount\",()=>{this.isConnected||this.dispatchEvent(new CustomEvent(\"astro:unmount\"))})}disconnectedCallback(){document.removeEventListener(\"astro:after-swap\",this.unmount),document.addEventListener(\"astro:after-swap\",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute(\"await-children\")||document.readyState===\"interactive\"||document.readyState===\"complete\")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener(\"DOMContentLoaded\",e),n.disconnect(),this.childrenConnectedCallback()},n=new MutationObserver(()=>{var r;((r=this.lastChild)==null?void 0:r.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue===\"astro:end\"&&(this.lastChild.remove(),e())});n.observe(this,{childList:!0}),document.addEventListener(\"DOMContentLoaded\",e)}}async childrenConnectedCallback(){let e=this.getAttribute(\"before-hydration-url\");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute(\"opts\")),n=this.getAttribute(\"client\");if(Astro[n]===void 0){window.addEventListener(`astro:${n}`,()=>this.start(),{once:!0});return}try{await Astro[n](async()=>{let r=this.getAttribute(\"renderer-url\"),[h,{default:p}]=await Promise.all([import(this.getAttribute(\"component-url\")),r?import(r):()=>()=>{}]),d=this.getAttribute(\"component-export\")||\"default\";if(!d.includes(\".\"))this.Component=h[d];else{this.Component=h;for(let u of d.split(\".\"))this.Component=this.Component[u]}return this.hydrator=p,this.hydrate},e,this)}catch(r){console.error(`[astro-island] Error hydrating ${this.getAttribute(\"component-url\")}`,r)}}attributeChangedCallback(){this.hydrate()}},l(m,\"observedAttributes\",[\"props\"]),m))}})();"; +export default _default; diff --git a/.pnpm-store/v3/files/22/89489137211a617f656d144bdc13f35a6edda8f1d54bed85ec4abfb0c7a23f5e5ec6467a6cc5362692b06e69a98c4d241f14717eeb87f08fe6097da49ab327 b/.pnpm-store/v3/files/22/89489137211a617f656d144bdc13f35a6edda8f1d54bed85ec4abfb0c7a23f5e5ec6467a6cc5362692b06e69a98c4d241f14717eeb87f08fe6097da49ab327 new file mode 100644 index 00000000..371be699 --- /dev/null +++ b/.pnpm-store/v3/files/22/89489137211a617f656d144bdc13f35a6edda8f1d54bed85ec4abfb0c7a23f5e5ec6467a6cc5362692b06e69a98c4d241f14717eeb87f08fe6097da49ab327 @@ -0,0 +1,33 @@ +{ + "name": "@medv/finder", + "version": "3.1.0", + "description": "CSS Selector Generator", + "type": "module", + "main": "finder.js", + "types": "finder.d.ts", + "files": [ + "*.ts", + "*.js" + ], + "scripts": { + "build": "tsc", + "test": "tsc && uvu", + "release": "release-it --access public" + }, + "devDependencies": { + "css.escape": "^1.5.1", + "jsdom": "^21.1.0", + "release-it": "^15.7.0", + "typescript": "4.9.5", + "uvu": "^0.5.6" + }, + "author": "Anton Medvedev ", + "license": "MIT", + "homepage": "https://github.com/antonmedv/finder", + "repository": "antonmedv/finder", + "keywords": [ + "css", + "selector", + "generator" + ] +} diff --git a/.pnpm-store/v3/files/23/6425533b425764e1abdc30d7b8645b64d189000a64334c30253c2fefb4fc3bad34fef1354eed8324556af5bcb23e43a08a43b305dcba2957f75407fa7e2bb0 b/.pnpm-store/v3/files/23/6425533b425764e1abdc30d7b8645b64d189000a64334c30253c2fefb4fc3bad34fef1354eed8324556af5bcb23e43a08a43b305dcba2957f75407fa7e2bb0 new file mode 100644 index 00000000..5a0e581a --- /dev/null +++ b/.pnpm-store/v3/files/23/6425533b425764e1abdc30d7b8645b64d189000a64334c30253c2fefb4fc3bad34fef1354eed8324556af5bcb23e43a08a43b305dcba2957f75407fa7e2bb0 @@ -0,0 +1,308 @@ +import { + attachTooltipToHighlight, + createHighlight, + getElementsPositionInDocument, + positionHighlight +} from "../utils/highlight.js"; +import { createWindowElement } from "../utils/window.js"; +import { a11y } from "./a11y.js"; +import { finder } from "@medv/finder"; +import { perf } from "./perf.js"; +const icon = ''; +const rules = [...a11y, ...perf]; +const dynamicAuditRuleKeys = ["title", "message"]; +function resolveAuditRule(rule, element) { + let resolved = { ...rule }; + for (const key of dynamicAuditRuleKeys) { + const value = rule[key]; + if (typeof value === "string") + continue; + resolved[key] = value(element); + } + return resolved; +} +var audit_default = { + id: "astro:audit", + name: "Audit", + icon, + async init(canvas, eventTarget) { + let audits = []; + await lint(); + document.addEventListener("astro:after-swap", async () => lint()); + document.addEventListener("astro:page-load", async () => refreshLintPositions); + function onPageClick(event) { + const target = event.target; + if (!target) + return; + if (!target.closest) + return; + if (target.closest("astro-dev-toolbar")) + return; + eventTarget.dispatchEvent( + new CustomEvent("toggle-app", { + detail: { + state: false + } + }) + ); + } + eventTarget.addEventListener("app-toggled", (event) => { + if (event.detail.state === true) { + document.addEventListener("click", onPageClick, true); + } else { + document.removeEventListener("click", onPageClick, true); + } + }); + async function lint() { + audits.forEach(({ highlightElement }) => { + highlightElement.remove(); + }); + audits = []; + canvas.getElementById("no-audit")?.remove(); + const selectorCache = /* @__PURE__ */ new Map(); + for (const rule of rules) { + const elements = selectorCache.get(rule.selector) ?? document.querySelectorAll(rule.selector); + let matches = []; + if (typeof rule.match === "undefined") { + matches = Array.from(elements); + } else { + for (const element of elements) { + if (await rule.match(element)) { + matches.push(element); + } + } + } + for (const element of matches) { + if (audits.some((audit) => audit.auditedElement === element)) + continue; + await createAuditProblem(rule, element); + } + } + if (audits.length > 0) { + eventTarget.dispatchEvent( + new CustomEvent("toggle-notification", { + detail: { + state: true + } + }) + ); + const auditListWindow = createWindowElement( + ` + + +
+

Audits

+ ${audits.length} problem${audits.length > 1 ? "s" : ""} found +
+
` + ); + const auditListUl = document.createElement("ul"); + auditListUl.id = "audit-list"; + audits.forEach((audit, index) => { + const resolvedRule = resolveAuditRule(audit.rule, audit.auditedElement); + const card = document.createElement("astro-dev-toolbar-card"); + card.shadowRoot.innerHTML = ` + `; + card.clickAction = () => { + audit.highlightElement.scrollIntoView(); + audit.highlightElement.focus(); + }; + const h3 = document.createElement("h3"); + h3.innerText = finder(audit.auditedElement); + card.appendChild(h3); + const div = document.createElement("div"); + const title = document.createElement("span"); + title.classList.add("audit-title"); + title.innerHTML = resolvedRule.title; + div.appendChild(title); + card.appendChild(div); + auditListUl.appendChild(card); + }); + auditListWindow.appendChild(auditListUl); + canvas.append(auditListWindow); + } else { + eventTarget.dispatchEvent( + new CustomEvent("toggle-notification", { + detail: { + state: false + } + }) + ); + const window2 = createWindowElement( + ` +
+

No accessibility or performance issues detected.

+
+

+ Nice work! This app scans the page and highlights common accessibility and performance issues for you, like a missing "alt" attribute on an image, or a image not using performant attributes. +

+ ` + ); + canvas.append(window2); + } + ["scroll", "resize"].forEach((event) => { + window.addEventListener(event, refreshLintPositions); + }); + } + function refreshLintPositions() { + const noAuditBlock = canvas.getElementById("no-audit"); + if (noAuditBlock) { + const devOverlayRect = document.querySelector("astro-dev-toolbar")?.shadowRoot.querySelector("#dev-toolbar-root")?.getBoundingClientRect(); + noAuditBlock.style.top = `${(devOverlayRect?.top ?? 0) - (devOverlayRect?.height ?? 0) - 16}px`; + } + audits.forEach(({ highlightElement, auditedElement }) => { + const rect = auditedElement.getBoundingClientRect(); + positionHighlight(highlightElement, rect); + }); + } + async function createAuditProblem(rule, originalElement) { + const computedStyle = window.getComputedStyle(originalElement); + const targetedElement = originalElement.children[0] || originalElement; + if (targetedElement.offsetParent === null || computedStyle.display === "none") { + return; + } + if (originalElement.nodeName === "IMG" && !originalElement.complete) { + return; + } + const rect = originalElement.getBoundingClientRect(); + const highlight = createHighlight(rect, "warning", { "data-audit-code": rule.code }); + const tooltip = buildAuditTooltip(rule, originalElement); + const { isFixed } = getElementsPositionInDocument(originalElement); + if (isFixed) { + tooltip.style.position = highlight.style.position = "fixed"; + } + attachTooltipToHighlight(highlight, tooltip, originalElement); + canvas.append(highlight); + audits.push({ + highlightElement: highlight, + auditedElement: originalElement, + rule + }); + } + function buildAuditTooltip(rule, element) { + const tooltip = document.createElement("astro-dev-toolbar-tooltip"); + const { title, message } = resolveAuditRule(rule, element); + tooltip.sections = [ + { + icon: "warning", + title: escapeHtml(title) + }, + { + content: escapeHtml(message) + } + ]; + const elementFile = element.getAttribute("data-astro-source-file"); + const elementPosition = element.getAttribute("data-astro-source-loc"); + if (elementFile) { + const elementFileWithPosition = elementFile + (elementPosition ? ":" + elementPosition : ""); + tooltip.sections.push({ + content: elementFileWithPosition.slice( + window.__astro_dev_toolbar__.root.length - 1 + // We want to keep the final slash, so minus one. + ), + clickDescription: "Click to go to file", + async clickAction() { + await fetch("/__open-in-editor?file=" + encodeURIComponent(elementFileWithPosition)); + } + }); + } + return tooltip; + } + function escapeHtml(unsafe) { + return unsafe.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); + } + } +}; +export { + audit_default as default +}; diff --git a/.pnpm-store/v3/files/23/c6cd34f4fa6ed216625dafefd26603b7d550a9b5efb6b4f639011d442119be5b023d2119c7a2153c2a6439523fce639d508c0cf90dbd4978e6d484152e0050 b/.pnpm-store/v3/files/23/c6cd34f4fa6ed216625dafefd26603b7d550a9b5efb6b4f639011d442119be5b023d2119c7a2153c2a6439523fce639d508c0cf90dbd4978e6d484152e0050 new file mode 100644 index 00000000..cca1ebb0 --- /dev/null +++ b/.pnpm-store/v3/files/23/c6cd34f4fa6ed216625dafefd26603b7d550a9b5efb6b4f639011d442119be5b023d2119c7a2153c2a6439523fce639d508c0cf90dbd4978e6d484152e0050 @@ -0,0 +1,4574 @@ +/* + @license + Rollup.js v4.12.0 + Fri, 16 Feb 2024 13:31:42 GMT - commit 0146b84be33a8416b4df4b9382549a7ca19dd64a + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +'use strict'; + +const rollup = require('./rollup.js'); +const require$$0$1 = require('fs'); +const require$$2 = require('util'); +const require$$1 = require('stream'); +const require$$0$2 = require('path'); +const require$$2$1 = require('os'); +const fseventsImporter = require('./fsevents-importer.js'); +const require$$0$3 = require('events'); + +var chokidar = {}; + +const fs$3 = require$$0$1; +const { Readable } = require$$1; +const sysPath$3 = require$$0$2; +const { promisify: promisify$3 } = require$$2; +const picomatch$1 = rollup.picomatch; + +const readdir$1 = promisify$3(fs$3.readdir); +const stat$3 = promisify$3(fs$3.stat); +const lstat$2 = promisify$3(fs$3.lstat); +const realpath$1 = promisify$3(fs$3.realpath); + +/** + * @typedef {Object} EntryInfo + * @property {String} path + * @property {String} fullPath + * @property {fs.Stats=} stats + * @property {fs.Dirent=} dirent + * @property {String} basename + */ + +const BANG$2 = '!'; +const RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR'; +const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]); +const FILE_TYPE = 'files'; +const DIR_TYPE = 'directories'; +const FILE_DIR_TYPE = 'files_directories'; +const EVERYTHING_TYPE = 'all'; +const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE]; + +const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code); +const [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10)); +const wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5)); + +const normalizeFilter = filter => { + if (filter === undefined) return; + if (typeof filter === 'function') return filter; + + if (typeof filter === 'string') { + const glob = picomatch$1(filter.trim()); + return entry => glob(entry.basename); + } + + if (Array.isArray(filter)) { + const positive = []; + const negative = []; + for (const item of filter) { + const trimmed = item.trim(); + if (trimmed.charAt(0) === BANG$2) { + negative.push(picomatch$1(trimmed.slice(1))); + } else { + positive.push(picomatch$1(trimmed)); + } + } + + if (negative.length > 0) { + if (positive.length > 0) { + return entry => + positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename)); + } + return entry => !negative.some(f => f(entry.basename)); + } + return entry => positive.some(f => f(entry.basename)); + } +}; + +class ReaddirpStream extends Readable { + static get defaultOptions() { + return { + root: '.', + /* eslint-disable no-unused-vars */ + fileFilter: (path) => true, + directoryFilter: (path) => true, + /* eslint-enable no-unused-vars */ + type: FILE_TYPE, + lstat: false, + depth: 2147483648, + alwaysStat: false + }; + } + + constructor(options = {}) { + super({ + objectMode: true, + autoDestroy: true, + highWaterMark: options.highWaterMark || 4096 + }); + const opts = { ...ReaddirpStream.defaultOptions, ...options }; + const { root, type } = opts; + + this._fileFilter = normalizeFilter(opts.fileFilter); + this._directoryFilter = normalizeFilter(opts.directoryFilter); + + const statMethod = opts.lstat ? lstat$2 : stat$3; + // Use bigint stats if it's windows and stat() supports options (node 10+). + if (wantBigintFsStats) { + this._stat = path => statMethod(path, { bigint: true }); + } else { + this._stat = statMethod; + } + + this._maxDepth = opts.depth; + this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsEverything = type === EVERYTHING_TYPE; + this._root = sysPath$3.resolve(root); + this._isDirent = ('Dirent' in fs$3) && !opts.alwaysStat; + this._statsProp = this._isDirent ? 'dirent' : 'stats'; + this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent }; + + // Launch stream with one parent, the root dir. + this.parents = [this._exploreDir(root, 1)]; + this.reading = false; + this.parent = undefined; + } + + async _read(batch) { + if (this.reading) return; + this.reading = true; + + try { + while (!this.destroyed && batch > 0) { + const { path, depth, files = [] } = this.parent || {}; + + if (files.length > 0) { + const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path)); + for (const entry of await Promise.all(slice)) { + if (this.destroyed) return; + + const entryType = await this._getEntryType(entry); + if (entryType === 'directory' && this._directoryFilter(entry)) { + if (depth <= this._maxDepth) { + this.parents.push(this._exploreDir(entry.fullPath, depth + 1)); + } + + if (this._wantsDir) { + this.push(entry); + batch--; + } + } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) { + if (this._wantsFile) { + this.push(entry); + batch--; + } + } + } + } else { + const parent = this.parents.pop(); + if (!parent) { + this.push(null); + break; + } + this.parent = await parent; + if (this.destroyed) return; + } + } + } catch (error) { + this.destroy(error); + } finally { + this.reading = false; + } + } + + async _exploreDir(path, depth) { + let files; + try { + files = await readdir$1(path, this._rdOptions); + } catch (error) { + this._onError(error); + } + return { files, depth, path }; + } + + async _formatEntry(dirent, path) { + let entry; + try { + const basename = this._isDirent ? dirent.name : dirent; + const fullPath = sysPath$3.resolve(sysPath$3.join(path, basename)); + entry = { path: sysPath$3.relative(this._root, fullPath), fullPath, basename }; + entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath); + } catch (err) { + this._onError(err); + } + return entry; + } + + _onError(err) { + if (isNormalFlowError(err) && !this.destroyed) { + this.emit('warn', err); + } else { + this.destroy(err); + } + } + + async _getEntryType(entry) { + // entry may be undefined, because a warning or an error were emitted + // and the statsProp is undefined + const stats = entry && entry[this._statsProp]; + if (!stats) { + return; + } + if (stats.isFile()) { + return 'file'; + } + if (stats.isDirectory()) { + return 'directory'; + } + if (stats && stats.isSymbolicLink()) { + const full = entry.fullPath; + try { + const entryRealPath = await realpath$1(full); + const entryRealPathStats = await lstat$2(entryRealPath); + if (entryRealPathStats.isFile()) { + return 'file'; + } + if (entryRealPathStats.isDirectory()) { + const len = entryRealPath.length; + if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath$3.sep) { + const recursiveError = new Error( + `Circular symlink detected: "${full}" points to "${entryRealPath}"` + ); + recursiveError.code = RECURSIVE_ERROR_CODE; + return this._onError(recursiveError); + } + return 'directory'; + } + } catch (error) { + this._onError(error); + } + } + } + + _includeAsFile(entry) { + const stats = entry && entry[this._statsProp]; + + return stats && this._wantsEverything && !stats.isDirectory(); + } +} + +/** + * @typedef {Object} ReaddirpArguments + * @property {Function=} fileFilter + * @property {Function=} directoryFilter + * @property {String=} type + * @property {Number=} depth + * @property {String=} root + * @property {Boolean=} lstat + * @property {Boolean=} bigint + */ + +/** + * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. + * @param {String} root Root directory + * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth + */ +const readdirp$1 = (root, options = {}) => { + let type = options.entryType || options.type; + if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility + if (type) options.type = type; + if (!root) { + throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)'); + } else if (typeof root !== 'string') { + throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)'); + } else if (type && !ALL_TYPES.includes(type)) { + throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`); + } + + options.root = root; + return new ReaddirpStream(options); +}; + +const readdirpPromise = (root, options = {}) => { + return new Promise((resolve, reject) => { + const files = []; + readdirp$1(root, options) + .on('data', entry => files.push(entry)) + .on('end', () => resolve(files)) + .on('error', error => reject(error)); + }); +}; + +readdirp$1.promise = readdirpPromise; +readdirp$1.ReaddirpStream = ReaddirpStream; +readdirp$1.default = readdirp$1; + +var readdirp_1 = readdirp$1; + +var anymatch$2 = {exports: {}}; + +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +var normalizePath$2 = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } + + if (path === '\\' || path === '/') return '/'; + + var len = path.length; + if (len <= 1) return path; + + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } + + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; + +var anymatch_1 = anymatch$2.exports; + +Object.defineProperty(anymatch_1, "__esModule", { value: true }); + +const picomatch = rollup.picomatch; +const normalizePath$1 = normalizePath$2; + +/** + * @typedef {(testString: string) => boolean} AnymatchFn + * @typedef {string|RegExp|AnymatchFn} AnymatchPattern + * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher + */ +const BANG$1 = '!'; +const DEFAULT_OPTIONS = {returnIndex: false}; +const arrify$1 = (item) => Array.isArray(item) ? item : [item]; + +/** + * @param {AnymatchPattern} matcher + * @param {object} options + * @returns {AnymatchFn} + */ +const createPattern = (matcher, options) => { + if (typeof matcher === 'function') { + return matcher; + } + if (typeof matcher === 'string') { + const glob = picomatch(matcher, options); + return (string) => matcher === string || glob(string); + } + if (matcher instanceof RegExp) { + return (string) => matcher.test(string); + } + return (string) => false; +}; + +/** + * @param {Array} patterns + * @param {Array} negPatterns + * @param {String|Array} args + * @param {Boolean} returnIndex + * @returns {boolean|number} + */ +const matchPatterns = (patterns, negPatterns, args, returnIndex) => { + const isList = Array.isArray(args); + const _path = isList ? args[0] : args; + if (!isList && typeof _path !== 'string') { + throw new TypeError('anymatch: second argument must be a string: got ' + + Object.prototype.toString.call(_path)) + } + const path = normalizePath$1(_path, false); + + for (let index = 0; index < negPatterns.length; index++) { + const nglob = negPatterns[index]; + if (nglob(path)) { + return returnIndex ? -1 : false; + } + } + + const applied = isList && [path].concat(args.slice(1)); + for (let index = 0; index < patterns.length; index++) { + const pattern = patterns[index]; + if (isList ? pattern(...applied) : pattern(path)) { + return returnIndex ? index : true; + } + } + + return returnIndex ? -1 : false; +}; + +/** + * @param {AnymatchMatcher} matchers + * @param {Array|string} testString + * @param {object} options + * @returns {boolean|number|Function} + */ +const anymatch$1 = (matchers, testString, options = DEFAULT_OPTIONS) => { + if (matchers == null) { + throw new TypeError('anymatch: specify first argument'); + } + const opts = typeof options === 'boolean' ? {returnIndex: options} : options; + const returnIndex = opts.returnIndex || false; + + // Early cache for matchers. + const mtchers = arrify$1(matchers); + const negatedGlobs = mtchers + .filter(item => typeof item === 'string' && item.charAt(0) === BANG$1) + .map(item => item.slice(1)) + .map(item => picomatch(item, opts)); + const patterns = mtchers + .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG$1)) + .map(matcher => createPattern(matcher, opts)); + + if (testString == null) { + return (testString, ri = false) => { + const returnIndex = typeof ri === 'boolean' ? ri : false; + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); + } + } + + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); +}; + +anymatch$1.default = anymatch$1; +anymatch$2.exports = anymatch$1; + +var anymatchExports = anymatch$2.exports; + +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + +var isExtglob$1 = function isExtglob(str) { + if (typeof str !== 'string' || str === '') { + return false; + } + + var match; + while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { + if (match[2]) return true; + str = str.slice(match.index + match[0].length); + } + + return false; +}; + +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +var isExtglob = isExtglob$1; +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === '*') { + return true; + } + + if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) { + return true; + } + + if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf(']', index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } + + if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') { + closeCurlyIndex = str.indexOf('}', index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } + + if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') { + closeParenIndex = str.indexOf(')', index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + + if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') { + if (pipeIndex < index) { + pipeIndex = str.indexOf('|', index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') { + closeParenIndex = str.indexOf(')', pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf('\\', pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +var relaxedCheck = function(str) { + if (str[0] === '!') { + return true; + } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } + + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } + + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; + +var isGlob$2 = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } + + if (isExtglob(str)) { + return true; + } + + var check = strictCheck; + + // optionally relax check + if (options && options.strict === false) { + check = relaxedCheck; + } + + return check(str); +}; + +var isGlob$1 = isGlob$2; +var pathPosixDirname = require$$0$2.posix.dirname; +var isWin32 = require$$2$1.platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + * @returns {string} + */ +var globParent$1 = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob$1(str) || globby.test(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; + +var utils$3 = {}; + +(function (exports) { + + exports.isInteger = num => { + if (typeof num === 'number') { + return Number.isInteger(num); + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isInteger(Number(num)); + } + return false; + }; + + /** + * Find a node of the given type + */ + + exports.find = (node, type) => node.nodes.find(node => node.type === type); + + /** + * Find a node of the given type + */ + + exports.exceedsLimit = (min, max, step = 1, limit) => { + if (limit === false) return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) return false; + return ((Number(max) - Number(min)) / Number(step)) >= limit; + }; + + /** + * Escape the given node with '\\' before node.value + */ + + exports.escapeNode = (block, n = 0, type) => { + let node = block.nodes[n]; + if (!node) return; + + if ((type && node.type === type) || node.type === 'open' || node.type === 'close') { + if (node.escaped !== true) { + node.value = '\\' + node.value; + node.escaped = true; + } + } + }; + + /** + * Returns true if the given brace node should be enclosed in literal braces + */ + + exports.encloseBrace = node => { + if (node.type !== 'brace') return false; + if ((node.commas >> 0 + node.ranges >> 0) === 0) { + node.invalid = true; + return true; + } + return false; + }; + + /** + * Returns true if a brace node is invalid. + */ + + exports.isInvalidBrace = block => { + if (block.type !== 'brace') return false; + if (block.invalid === true || block.dollar) return true; + if ((block.commas >> 0 + block.ranges >> 0) === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; + }; + + /** + * Returns true if a node is an open or close node + */ + + exports.isOpenOrClose = node => { + if (node.type === 'open' || node.type === 'close') { + return true; + } + return node.open === true || node.close === true; + }; + + /** + * Reduce an array of text nodes. + */ + + exports.reduce = nodes => nodes.reduce((acc, node) => { + if (node.type === 'text') acc.push(node.value); + if (node.type === 'range') node.type = 'text'; + return acc; + }, []); + + /** + * Flatten an array + */ + + exports.flatten = (...args) => { + const result = []; + const flat = arr => { + for (let i = 0; i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele) : ele !== void 0 && result.push(ele); + } + return result; + }; + flat(args); + return result; + }; +} (utils$3)); + +const utils$2 = utils$3; + +var stringify$4 = (ast, options = {}) => { + let stringify = (node, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils$2.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let output = ''; + + if (node.value) { + if ((invalidBlock || invalidNode) && utils$2.isOpenOrClose(node)) { + return '\\' + node.value; + } + return node.value; + } + + if (node.value) { + return node.value; + } + + if (node.nodes) { + for (let child of node.nodes) { + output += stringify(child); + } + } + return output; + }; + + return stringify(ast); +}; + +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + +var isNumber$2 = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; +}; + +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ + +const isNumber$1 = isNumber$2; + +const toRegexRange$1 = (min, max, options) => { + if (isNumber$1(min) === false) { + throw new TypeError('toRegexRange: expected the first argument to be a number'); + } + + if (max === void 0 || min === max) { + return String(min); + } + + if (isNumber$1(max) === false) { + throw new TypeError('toRegexRange: expected the second argument to be a number.'); + } + + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === 'boolean') { + opts.relaxZeros = opts.strictZeros === false; + } + + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap = String(opts.wrap); + let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; + + if (toRegexRange$1.cache.hasOwnProperty(cacheKey)) { + return toRegexRange$1.cache[cacheKey].result; + } + + let a = Math.min(min, max); + let b = Math.max(min, max); + + if (Math.abs(a - b) === 1) { + let result = min + '|' + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; + + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives); + + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { + state.result = `(?:${state.result})`; + } + + toRegexRange$1.cache[cacheKey] = state; + return state.result; +}; + +function collatePatterns(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, '-', false) || []; + let onlyPositive = filterPatterns(pos, neg, '', false) || []; + let intersected = filterPatterns(neg, pos, '-?', true) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join('|'); +} + +function splitToRanges(min, max) { + let nines = 1; + let zeros = 1; + + let stop = countNines(min, nines); + let stops = new Set([max]); + + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + + stop = countZeros(max + 1, zeros) - 1; + + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + + stops = [...stops]; + stops.sort(compare); + return stops; +} + +/** + * Convert a range to a regex pattern + * @param {Number} `start` + * @param {Number} `stop` + * @return {String} + */ + +function rangeToPattern(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ''; + let count = 0; + + for (let i = 0; i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + + if (startDigit === stopDigit) { + pattern += startDigit; + + } else if (startDigit !== '0' || stopDigit !== '9') { + pattern += toCharacterClass(startDigit, stopDigit); + + } else { + count++; + } + } + + if (count) { + pattern += options.shorthand === true ? '\\d' : '[0-9]'; + } + + return { pattern, count: [count], digits }; +} + +function splitToPatterns(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + + for (let i = 0; i < ranges.length; i++) { + let max = ranges[i]; + let obj = rangeToPattern(String(start), String(max), options); + let zeros = ''; + + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max + 1; + continue; + } + + if (tok.isPadded) { + zeros = padZeros(max, tok, options); + } + + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max + 1; + prev = obj; + } + + return tokens; +} + +function filterPatterns(arr, comparison, prefix, intersection, options) { + let result = []; + + for (let ele of arr) { + let { string } = ele; + + // only push if _both_ are negative... + if (!intersection && !contains(comparison, 'string', string)) { + result.push(prefix + string); + } + + // or _both_ are positive + if (intersection && contains(comparison, 'string', string)) { + result.push(prefix + string); + } + } + return result; +} + +/** + * Zip strings + */ + +function zip(a, b) { + let arr = []; + for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); + return arr; +} + +function compare(a, b) { + return a > b ? 1 : b > a ? -1 : 0; +} + +function contains(arr, key, val) { + return arr.some(ele => ele[key] === val); +} + +function countNines(min, len) { + return Number(String(min).slice(0, -len) + '9'.repeat(len)); +} + +function countZeros(integer, zeros) { + return integer - (integer % Math.pow(10, zeros)); +} + +function toQuantifier(digits) { + let [start = 0, stop = ''] = digits; + if (stop || start > 1) { + return `{${start + (stop ? ',' + stop : '')}}`; + } + return ''; +} + +function toCharacterClass(a, b, options) { + return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; +} + +function hasPadding(str) { + return /^-?(0+)\d/.test(str); +} + +function padZeros(value, tok, options) { + if (!tok.isPadded) { + return value; + } + + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + + switch (diff) { + case 0: + return ''; + case 1: + return relax ? '0?' : '0'; + case 2: + return relax ? '0{0,2}' : '00'; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } +} + +/** + * Cache + */ + +toRegexRange$1.cache = {}; +toRegexRange$1.clearCache = () => (toRegexRange$1.cache = {}); + +/** + * Expose `toRegexRange` + */ + +var toRegexRange_1 = toRegexRange$1; + +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ + +const util = require$$2; +const toRegexRange = toRegexRange_1; + +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); + +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; + +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; + +const isNumber = num => Number.isInteger(+num); + +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; + +const stringify$3 = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; + } + return options.stringify === true; +}; + +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; + +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; +}; + +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; + + if (parts.positives.length) { + positives = parts.positives.join('|'); + } + + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } + + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + + if (options.wrap) { + return `(${prefix}${result})`; + } + + return result; +}; + +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); + } + + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; +}; + +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange(start, end, options); +}; + +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + util.inspect(...args)); +}; + +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; +}; + +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } + + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; + + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify$3(start, end, options) === false; + let format = options.transform || transform(toNumber); + + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } + + return range; +}; + +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { + return invalidRange(start, end, options); + } + + + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + + return range; +}; + +const fill$2 = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + + if (typeof step === 'function') { + return fill$2(start, end, 1, { transform: step }); + } + + if (isObject(step)) { + return fill$2(start, end, 0, step); + } + + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; + + if (!isNumber(step)) { + if (step != null && !isObject(step)) return invalidStep(step, opts); + return fill$2(start, end, 1, step); + } + + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } + + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); +}; + +var fillRange = fill$2; + +const fill$1 = fillRange; +const utils$1 = utils$3; + +const compile$1 = (ast, options = {}) => { + let walk = (node, parent = {}) => { + let invalidBlock = utils$1.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? '\\' : ''; + let output = ''; + + if (node.isOpen === true) { + return prefix + node.value; + } + if (node.isClose === true) { + return prefix + node.value; + } + + if (node.type === 'open') { + return invalid ? (prefix + node.value) : '('; + } + + if (node.type === 'close') { + return invalid ? (prefix + node.value) : ')'; + } + + if (node.type === 'comma') { + return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|'); + } + + if (node.value) { + return node.value; + } + + if (node.nodes && node.ranges > 0) { + let args = utils$1.reduce(node.nodes); + let range = fill$1(...args, { ...options, wrap: false, toRegex: true }); + + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + + if (node.nodes) { + for (let child of node.nodes) { + output += walk(child, node); + } + } + return output; + }; + + return walk(ast); +}; + +var compile_1 = compile$1; + +const fill = fillRange; +const stringify$2 = stringify$4; +const utils = utils$3; + +const append = (queue = '', stash = '', enclose = false) => { + let result = []; + + queue = [].concat(queue); + stash = [].concat(stash); + + if (!stash.length) return queue; + if (!queue.length) { + return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash; + } + + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === 'string') ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele)); + } + } + } + return utils.flatten(result); +}; + +const expand$1 = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit; + + let walk = (node, parent = {}) => { + node.queue = []; + + let p = parent; + let q = parent.queue; + + while (p.type !== 'brace' && p.type !== 'root' && p.parent) { + p = p.parent; + q = p.queue; + } + + if (node.invalid || node.dollar) { + q.push(append(q.pop(), stringify$2(node, options))); + return; + } + + if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) { + q.push(append(q.pop(), ['{}'])); + return; + } + + if (node.nodes && node.ranges > 0) { + let args = utils.reduce(node.nodes); + + if (utils.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); + } + + let range = fill(...args, options); + if (range.length === 0) { + range = stringify$2(node, options); + } + + q.push(append(q.pop(), range)); + node.nodes = []; + return; + } + + let enclose = utils.encloseBrace(node); + let queue = node.queue; + let block = node; + + while (block.type !== 'brace' && block.type !== 'root' && block.parent) { + block = block.parent; + queue = block.queue; + } + + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + + if (child.type === 'comma' && node.type === 'brace') { + if (i === 1) queue.push(''); + queue.push(''); + continue; + } + + if (child.type === 'close') { + q.push(append(q.pop(), queue, enclose)); + continue; + } + + if (child.value && child.type !== 'open') { + queue.push(append(queue.pop(), child.value)); + continue; + } + + if (child.nodes) { + walk(child, node); + } + } + + return queue; + }; + + return utils.flatten(walk(ast)); +}; + +var expand_1 = expand$1; + +var constants$1 = { + MAX_LENGTH: 1024 * 64, + + // Digits + CHAR_0: '0', /* 0 */ + CHAR_9: '9', /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 'A', /* A */ + CHAR_LOWERCASE_A: 'a', /* a */ + CHAR_UPPERCASE_Z: 'Z', /* Z */ + CHAR_LOWERCASE_Z: 'z', /* z */ + + CHAR_LEFT_PARENTHESES: '(', /* ( */ + CHAR_RIGHT_PARENTHESES: ')', /* ) */ + + CHAR_ASTERISK: '*', /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: '&', /* & */ + CHAR_AT: '@', /* @ */ + CHAR_BACKSLASH: '\\', /* \ */ + CHAR_BACKTICK: '`', /* ` */ + CHAR_CARRIAGE_RETURN: '\r', /* \r */ + CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */ + CHAR_COLON: ':', /* : */ + CHAR_COMMA: ',', /* , */ + CHAR_DOLLAR: '$', /* . */ + CHAR_DOT: '.', /* . */ + CHAR_DOUBLE_QUOTE: '"', /* " */ + CHAR_EQUAL: '=', /* = */ + CHAR_EXCLAMATION_MARK: '!', /* ! */ + CHAR_FORM_FEED: '\f', /* \f */ + CHAR_FORWARD_SLASH: '/', /* / */ + CHAR_HASH: '#', /* # */ + CHAR_HYPHEN_MINUS: '-', /* - */ + CHAR_LEFT_ANGLE_BRACKET: '<', /* < */ + CHAR_LEFT_CURLY_BRACE: '{', /* { */ + CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */ + CHAR_LINE_FEED: '\n', /* \n */ + CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */ + CHAR_PERCENT: '%', /* % */ + CHAR_PLUS: '+', /* + */ + CHAR_QUESTION_MARK: '?', /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */ + CHAR_RIGHT_CURLY_BRACE: '}', /* } */ + CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */ + CHAR_SEMICOLON: ';', /* ; */ + CHAR_SINGLE_QUOTE: '\'', /* ' */ + CHAR_SPACE: ' ', /* */ + CHAR_TAB: '\t', /* \t */ + CHAR_UNDERSCORE: '_', /* _ */ + CHAR_VERTICAL_LINE: '|', /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */ +}; + +const stringify$1 = stringify$4; + +/** + * Constants + */ + +const { + MAX_LENGTH, + CHAR_BACKSLASH, /* \ */ + CHAR_BACKTICK, /* ` */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_RIGHT_SQUARE_BRACKET, /* ] */ + CHAR_DOUBLE_QUOTE, /* " */ + CHAR_SINGLE_QUOTE, /* ' */ + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE +} = constants$1; + +/** + * parse + */ + +const parse$1 = (input, options = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + let opts = options || {}; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + + let ast = { type: 'root', input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + + /** + * Helpers + */ + + const advance = () => input[index++]; + const push = node => { + if (node.type === 'text' && prev.type === 'dot') { + prev.type = 'text'; + } + + if (prev && prev.type === 'text' && node.type === 'text') { + prev.value += node.value; + return; + } + + block.nodes.push(node); + node.parent = block; + node.prev = prev; + prev = node; + return node; + }; + + push({ type: 'bos' }); + + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + + /** + * Invalid chars + */ + + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + + /** + * Escaped chars + */ + + if (value === CHAR_BACKSLASH) { + push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() }); + continue; + } + + /** + * Right square bracket (literal): ']' + */ + + if (value === CHAR_RIGHT_SQUARE_BRACKET) { + push({ type: 'text', value: '\\' + value }); + continue; + } + + /** + * Left square bracket: '[' + */ + + if (value === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + let next; + + while (index < length && (next = advance())) { + value += next; + + if (next === CHAR_LEFT_SQUARE_BRACKET) { + brackets++; + continue; + } + + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + brackets--; + + if (brackets === 0) { + break; + } + } + } + + push({ type: 'text', value }); + continue; + } + + /** + * Parentheses + */ + + if (value === CHAR_LEFT_PARENTHESES) { + block = push({ type: 'paren', nodes: [] }); + stack.push(block); + push({ type: 'text', value }); + continue; + } + + if (value === CHAR_RIGHT_PARENTHESES) { + if (block.type !== 'paren') { + push({ type: 'text', value }); + continue; + } + block = stack.pop(); + push({ type: 'text', value }); + block = stack[stack.length - 1]; + continue; + } + + /** + * Quotes: '|"|` + */ + + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + + if (options.keepQuotes !== true) { + value = ''; + } + + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + + if (next === open) { + if (options.keepQuotes === true) value += next; + break; + } + + value += next; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Left curly brace: '{' + */ + + if (value === CHAR_LEFT_CURLY_BRACE) { + depth++; + + let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true; + let brace = { + type: 'brace', + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + + block = push(brace); + stack.push(block); + push({ type: 'open', value }); + continue; + } + + /** + * Right curly brace: '}' + */ + + if (value === CHAR_RIGHT_CURLY_BRACE) { + if (block.type !== 'brace') { + push({ type: 'text', value }); + continue; + } + + let type = 'close'; + block = stack.pop(); + block.close = true; + + push({ type, value }); + depth--; + + block = stack[stack.length - 1]; + continue; + } + + /** + * Comma: ',' + */ + + if (value === CHAR_COMMA && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: 'text', value: stringify$1(block) }]; + } + + push({ type: 'comma', value }); + block.commas++; + continue; + } + + /** + * Dot: '.' + */ + + if (value === CHAR_DOT && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + + if (depth === 0 || siblings.length === 0) { + push({ type: 'text', value }); + continue; + } + + if (prev.type === 'dot') { + block.range = []; + prev.value += value; + prev.type = 'range'; + + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = 'text'; + continue; + } + + block.ranges++; + block.args = []; + continue; + } + + if (prev.type === 'range') { + siblings.pop(); + + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + + push({ type: 'dot', value }); + continue; + } + + /** + * Text + */ + + push({ type: 'text', value }); + } + + // Mark imbalanced braces and brackets as invalid + do { + block = stack.pop(); + + if (block.type !== 'root') { + block.nodes.forEach(node => { + if (!node.nodes) { + if (node.type === 'open') node.isOpen = true; + if (node.type === 'close') node.isClose = true; + if (!node.nodes) node.type = 'text'; + node.invalid = true; + } + }); + + // get the location of the block on parent.nodes (block's siblings) + let parent = stack[stack.length - 1]; + let index = parent.nodes.indexOf(block); + // replace the (invalid) block with it's nodes + parent.nodes.splice(index, 1, ...block.nodes); + } + } while (stack.length > 0); + + push({ type: 'eos' }); + return ast; +}; + +var parse_1 = parse$1; + +const stringify = stringify$4; +const compile = compile_1; +const expand = expand_1; +const parse = parse_1; + +/** + * Expand the given pattern or create a regex-compatible string. + * + * ```js + * const braces = require('braces'); + * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] + * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {String} + * @api public + */ + +const braces$1 = (input, options = {}) => { + let output = []; + + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces$1.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces$1.create(input, options)); + } + + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; +}; + +/** + * Parse the given `str` with the given `options`. + * + * ```js + * // braces.parse(pattern, [, options]); + * const ast = braces.parse('a/{b,c}/d'); + * console.log(ast); + * ``` + * @param {String} pattern Brace pattern to parse + * @param {Object} options + * @return {Object} Returns an AST + * @api public + */ + +braces$1.parse = (input, options = {}) => parse(input, options); + +/** + * Creates a braces string from an AST, or an AST node. + * + * ```js + * const braces = require('braces'); + * let ast = braces.parse('foo/{a,b}/bar'); + * console.log(stringify(ast.nodes[2])); //=> '{a,b}' + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces$1.stringify = (input, options = {}) => { + if (typeof input === 'string') { + return stringify(braces$1.parse(input, options), options); + } + return stringify(input, options); +}; + +/** + * Compiles a brace pattern into a regex-compatible, optimized string. + * This method is called by the main [braces](#braces) function by default. + * + * ```js + * const braces = require('braces'); + * console.log(braces.compile('a/{b,c}/d')); + * //=> ['a/(b|c)/d'] + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces$1.compile = (input, options = {}) => { + if (typeof input === 'string') { + input = braces$1.parse(input, options); + } + return compile(input, options); +}; + +/** + * Expands a brace pattern into an array. This method is called by the + * main [braces](#braces) function when `options.expand` is true. Before + * using this method it's recommended that you read the [performance notes](#performance)) + * and advantages of using [.compile](#compile) instead. + * + * ```js + * const braces = require('braces'); + * console.log(braces.expand('a/{b,c}/d')); + * //=> ['a/b/d', 'a/c/d']; + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces$1.expand = (input, options = {}) => { + if (typeof input === 'string') { + input = braces$1.parse(input, options); + } + + let result = expand(input, options); + + // filter out empty strings if specified + if (options.noempty === true) { + result = result.filter(Boolean); + } + + // filter out duplicates if specified + if (options.nodupes === true) { + result = [...new Set(result)]; + } + + return result; +}; + +/** + * Processes a brace pattern and returns either an expanded array + * (if `options.expand` is true), a highly optimized regex-compatible string. + * This method is called by the main [braces](#braces) function. + * + * ```js + * const braces = require('braces'); + * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) + * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces$1.create = (input, options = {}) => { + if (input === '' || input.length < 3) { + return [input]; + } + + return options.expand !== true + ? braces$1.compile(input, options) + : braces$1.expand(input, options); +}; + +/** + * Expose "braces" + */ + +var braces_1 = braces$1; + +const require$$0 = [ + "3dm", + "3ds", + "3g2", + "3gp", + "7z", + "a", + "aac", + "adp", + "ai", + "aif", + "aiff", + "alz", + "ape", + "apk", + "appimage", + "ar", + "arj", + "asf", + "au", + "avi", + "bak", + "baml", + "bh", + "bin", + "bk", + "bmp", + "btif", + "bz2", + "bzip2", + "cab", + "caf", + "cgm", + "class", + "cmx", + "cpio", + "cr2", + "cur", + "dat", + "dcm", + "deb", + "dex", + "djvu", + "dll", + "dmg", + "dng", + "doc", + "docm", + "docx", + "dot", + "dotm", + "dra", + "DS_Store", + "dsk", + "dts", + "dtshd", + "dvb", + "dwg", + "dxf", + "ecelp4800", + "ecelp7470", + "ecelp9600", + "egg", + "eol", + "eot", + "epub", + "exe", + "f4v", + "fbs", + "fh", + "fla", + "flac", + "flatpak", + "fli", + "flv", + "fpx", + "fst", + "fvt", + "g3", + "gh", + "gif", + "graffle", + "gz", + "gzip", + "h261", + "h263", + "h264", + "icns", + "ico", + "ief", + "img", + "ipa", + "iso", + "jar", + "jpeg", + "jpg", + "jpgv", + "jpm", + "jxr", + "key", + "ktx", + "lha", + "lib", + "lvp", + "lz", + "lzh", + "lzma", + "lzo", + "m3u", + "m4a", + "m4v", + "mar", + "mdi", + "mht", + "mid", + "midi", + "mj2", + "mka", + "mkv", + "mmr", + "mng", + "mobi", + "mov", + "movie", + "mp3", + "mp4", + "mp4a", + "mpeg", + "mpg", + "mpga", + "mxu", + "nef", + "npx", + "numbers", + "nupkg", + "o", + "odp", + "ods", + "odt", + "oga", + "ogg", + "ogv", + "otf", + "ott", + "pages", + "pbm", + "pcx", + "pdb", + "pdf", + "pea", + "pgm", + "pic", + "png", + "pnm", + "pot", + "potm", + "potx", + "ppa", + "ppam", + "ppm", + "pps", + "ppsm", + "ppsx", + "ppt", + "pptm", + "pptx", + "psd", + "pya", + "pyc", + "pyo", + "pyv", + "qt", + "rar", + "ras", + "raw", + "resources", + "rgb", + "rip", + "rlc", + "rmf", + "rmvb", + "rpm", + "rtf", + "rz", + "s3m", + "s7z", + "scpt", + "sgi", + "shar", + "snap", + "sil", + "sketch", + "slk", + "smv", + "snk", + "so", + "stl", + "suo", + "sub", + "swf", + "tar", + "tbz", + "tbz2", + "tga", + "tgz", + "thmx", + "tif", + "tiff", + "tlz", + "ttc", + "ttf", + "txz", + "udf", + "uvh", + "uvi", + "uvm", + "uvp", + "uvs", + "uvu", + "viv", + "vob", + "war", + "wav", + "wax", + "wbmp", + "wdp", + "weba", + "webm", + "webp", + "whl", + "wim", + "wm", + "wma", + "wmv", + "wmx", + "woff", + "woff2", + "wrm", + "wvx", + "xbm", + "xif", + "xla", + "xlam", + "xls", + "xlsb", + "xlsm", + "xlsx", + "xlt", + "xltm", + "xltx", + "xm", + "xmind", + "xpi", + "xpm", + "xwd", + "xz", + "z", + "zip", + "zipx" +]; + +var binaryExtensions$1 = require$$0; + +const path = require$$0$2; +const binaryExtensions = binaryExtensions$1; + +const extensions = new Set(binaryExtensions); + +var isBinaryPath$1 = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase()); + +var constants = {}; + +(function (exports) { + + const {sep} = require$$0$2; + const {platform} = process; + const os = require$$2$1; + + exports.EV_ALL = 'all'; + exports.EV_READY = 'ready'; + exports.EV_ADD = 'add'; + exports.EV_CHANGE = 'change'; + exports.EV_ADD_DIR = 'addDir'; + exports.EV_UNLINK = 'unlink'; + exports.EV_UNLINK_DIR = 'unlinkDir'; + exports.EV_RAW = 'raw'; + exports.EV_ERROR = 'error'; + + exports.STR_DATA = 'data'; + exports.STR_END = 'end'; + exports.STR_CLOSE = 'close'; + + exports.FSEVENT_CREATED = 'created'; + exports.FSEVENT_MODIFIED = 'modified'; + exports.FSEVENT_DELETED = 'deleted'; + exports.FSEVENT_MOVED = 'moved'; + exports.FSEVENT_CLONED = 'cloned'; + exports.FSEVENT_UNKNOWN = 'unknown'; + exports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1; + exports.FSEVENT_TYPE_FILE = 'file'; + exports.FSEVENT_TYPE_DIRECTORY = 'directory'; + exports.FSEVENT_TYPE_SYMLINK = 'symlink'; + + exports.KEY_LISTENERS = 'listeners'; + exports.KEY_ERR = 'errHandlers'; + exports.KEY_RAW = 'rawEmitters'; + exports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW]; + + exports.DOT_SLASH = `.${sep}`; + + exports.BACK_SLASH_RE = /\\/g; + exports.DOUBLE_SLASH_RE = /\/\//; + exports.SLASH_OR_BACK_SLASH_RE = /[/\\]/; + exports.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/; + exports.REPLACER_RE = /^\.[/\\]/; + + exports.SLASH = '/'; + exports.SLASH_SLASH = '//'; + exports.BRACE_START = '{'; + exports.BANG = '!'; + exports.ONE_DOT = '.'; + exports.TWO_DOTS = '..'; + exports.STAR = '*'; + exports.GLOBSTAR = '**'; + exports.ROOT_GLOBSTAR = '/**/*'; + exports.SLASH_GLOBSTAR = '/**'; + exports.DIR_SUFFIX = 'Dir'; + exports.ANYMATCH_OPTS = {dot: true}; + exports.STRING_TYPE = 'string'; + exports.FUNCTION_TYPE = 'function'; + exports.EMPTY_STR = ''; + exports.EMPTY_FN = () => {}; + exports.IDENTITY_FN = val => val; + + exports.isWindows = platform === 'win32'; + exports.isMacos = platform === 'darwin'; + exports.isLinux = platform === 'linux'; + exports.isIBMi = os.type() === 'OS400'; +} (constants)); + +const fs$2 = require$$0$1; +const sysPath$2 = require$$0$2; +const { promisify: promisify$2 } = require$$2; +const isBinaryPath = isBinaryPath$1; +const { + isWindows: isWindows$1, + isLinux, + EMPTY_FN: EMPTY_FN$2, + EMPTY_STR: EMPTY_STR$1, + KEY_LISTENERS, + KEY_ERR, + KEY_RAW, + HANDLER_KEYS, + EV_CHANGE: EV_CHANGE$2, + EV_ADD: EV_ADD$2, + EV_ADD_DIR: EV_ADD_DIR$2, + EV_ERROR: EV_ERROR$2, + STR_DATA: STR_DATA$1, + STR_END: STR_END$2, + BRACE_START: BRACE_START$1, + STAR +} = constants; + +const THROTTLE_MODE_WATCH = 'watch'; + +const open = promisify$2(fs$2.open); +const stat$2 = promisify$2(fs$2.stat); +const lstat$1 = promisify$2(fs$2.lstat); +const close = promisify$2(fs$2.close); +const fsrealpath = promisify$2(fs$2.realpath); + +const statMethods$1 = { lstat: lstat$1, stat: stat$2 }; + +// TODO: emit errors properly. Example: EMFILE on Macos. +const foreach = (val, fn) => { + if (val instanceof Set) { + val.forEach(fn); + } else { + fn(val); + } +}; + +const addAndConvert = (main, prop, item) => { + let container = main[prop]; + if (!(container instanceof Set)) { + main[prop] = container = new Set([container]); + } + container.add(item); +}; + +const clearItem = cont => key => { + const set = cont[key]; + if (set instanceof Set) { + set.clear(); + } else { + delete cont[key]; + } +}; + +const delFromSet = (main, prop, item) => { + const container = main[prop]; + if (container instanceof Set) { + container.delete(item); + } else if (container === item) { + delete main[prop]; + } +}; + +const isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val; + +/** + * @typedef {String} Path + */ + +// fs_watch helpers + +// object to hold per-process fs_watch instances +// (may be shared across chokidar FSWatcher instances) + +/** + * @typedef {Object} FsWatchContainer + * @property {Set} listeners + * @property {Set} errHandlers + * @property {Set} rawEmitters + * @property {fs.FSWatcher=} watcher + * @property {Boolean=} watcherUnusable + */ + +/** + * @type {Map} + */ +const FsWatchInstances = new Map(); + +/** + * Instantiates the fs_watch interface + * @param {String} path to be watched + * @param {Object} options to be passed to fs_watch + * @param {Function} listener main event handler + * @param {Function} errHandler emits info about errors + * @param {Function} emitRaw emits raw event data + * @returns {fs.FSWatcher} new fsevents instance + */ +function createFsWatchInstance(path, options, listener, errHandler, emitRaw) { + const handleEvent = (rawEvent, evPath) => { + listener(path); + emitRaw(rawEvent, evPath, {watchedPath: path}); + + // emit based on events occurring for files from a directory's watcher in + // case the file's watcher misses it (and rely on throttling to de-dupe) + if (evPath && path !== evPath) { + fsWatchBroadcast( + sysPath$2.resolve(path, evPath), KEY_LISTENERS, sysPath$2.join(path, evPath) + ); + } + }; + try { + return fs$2.watch(path, options, handleEvent); + } catch (error) { + errHandler(error); + } +} + +/** + * Helper for passing fs_watch event data to a collection of listeners + * @param {Path} fullPath absolute path bound to fs_watch instance + * @param {String} type listener type + * @param {*=} val1 arguments to be passed to listeners + * @param {*=} val2 + * @param {*=} val3 + */ +const fsWatchBroadcast = (fullPath, type, val1, val2, val3) => { + const cont = FsWatchInstances.get(fullPath); + if (!cont) return; + foreach(cont[type], (listener) => { + listener(val1, val2, val3); + }); +}; + +/** + * Instantiates the fs_watch interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path + * @param {String} fullPath absolute path + * @param {Object} options to be passed to fs_watch + * @param {Object} handlers container for event listener functions + */ +const setFsWatchListener = (path, fullPath, options, handlers) => { + const {listener, errHandler, rawEmitter} = handlers; + let cont = FsWatchInstances.get(fullPath); + + /** @type {fs.FSWatcher=} */ + let watcher; + if (!options.persistent) { + watcher = createFsWatchInstance( + path, options, listener, errHandler, rawEmitter + ); + return watcher.close.bind(watcher); + } + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_ERR, errHandler); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + watcher = createFsWatchInstance( + path, + options, + fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), + errHandler, // no need to use broadcast here + fsWatchBroadcast.bind(null, fullPath, KEY_RAW) + ); + if (!watcher) return; + watcher.on(EV_ERROR$2, async (error) => { + const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); + cont.watcherUnusable = true; // documented since Node 10.4.1 + // Workaround for https://github.com/joyent/node/issues/4337 + if (isWindows$1 && error.code === 'EPERM') { + try { + const fd = await open(path, 'r'); + await close(fd); + broadcastErr(error); + } catch (err) {} + } else { + broadcastErr(error); + } + }); + cont = { + listeners: listener, + errHandlers: errHandler, + rawEmitters: rawEmitter, + watcher + }; + FsWatchInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // removes this instance's listeners and closes the underlying fs_watch + // instance if there are no more listeners left + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_ERR, errHandler); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + // Check to protect against issue gh-730. + // if (cont.watcherUnusable) { + cont.watcher.close(); + // } + FsWatchInstances.delete(fullPath); + HANDLER_KEYS.forEach(clearItem(cont)); + cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +// fs_watchFile helpers + +// object to hold per-process fs_watchFile instances +// (may be shared across chokidar FSWatcher instances) +const FsWatchFileInstances = new Map(); + +/** + * Instantiates the fs_watchFile interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path to be watched + * @param {String} fullPath absolute path + * @param {Object} options options to be passed to fs_watchFile + * @param {Object} handlers container for event listener functions + * @returns {Function} closer + */ +const setFsWatchFileListener = (path, fullPath, options, handlers) => { + const {listener, rawEmitter} = handlers; + let cont = FsWatchFileInstances.get(fullPath); + + const copts = cont && cont.options; + if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) { + fs$2.unwatchFile(fullPath); + cont = undefined; + } + + /* eslint-enable no-unused-vars, prefer-destructuring */ + + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + // TODO + // listeners.add(listener); + // rawEmitters.add(rawEmitter); + cont = { + listeners: listener, + rawEmitters: rawEmitter, + options, + watcher: fs$2.watchFile(fullPath, options, (curr, prev) => { + foreach(cont.rawEmitters, (rawEmitter) => { + rawEmitter(EV_CHANGE$2, fullPath, {curr, prev}); + }); + const currmtime = curr.mtimeMs; + if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) { + foreach(cont.listeners, (listener) => listener(path, curr)); + } + }) + }; + FsWatchFileInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // Removes this instance's listeners and closes the underlying fs_watchFile + // instance if there are no more listeners left. + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + FsWatchFileInstances.delete(fullPath); + fs$2.unwatchFile(fullPath); + cont.options = cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +/** + * @mixin + */ +let NodeFsHandler$1 = class NodeFsHandler { + +/** + * @param {import("../index").FSWatcher} fsW + */ +constructor(fsW) { + this.fsw = fsW; + this._boundHandleError = (error) => fsW._handleError(error); +} + +/** + * Watch file for changes with fs_watchFile or fs_watch. + * @param {String} path to file or dir + * @param {Function} listener on fs change + * @returns {Function} closer for the watcher instance + */ +_watchWithNodeFs(path, listener) { + const opts = this.fsw.options; + const directory = sysPath$2.dirname(path); + const basename = sysPath$2.basename(path); + const parent = this.fsw._getWatchedDir(directory); + parent.add(basename); + const absolutePath = sysPath$2.resolve(path); + const options = {persistent: opts.persistent}; + if (!listener) listener = EMPTY_FN$2; + + let closer; + if (opts.usePolling) { + options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ? + opts.binaryInterval : opts.interval; + closer = setFsWatchFileListener(path, absolutePath, options, { + listener, + rawEmitter: this.fsw._emitRaw + }); + } else { + closer = setFsWatchListener(path, absolutePath, options, { + listener, + errHandler: this._boundHandleError, + rawEmitter: this.fsw._emitRaw + }); + } + return closer; +} + +/** + * Watch a file and emit add event if warranted. + * @param {Path} file Path + * @param {fs.Stats} stats result of fs_stat + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @returns {Function} closer for the watcher instance + */ +_handleFile(file, stats, initialAdd) { + if (this.fsw.closed) { + return; + } + const dirname = sysPath$2.dirname(file); + const basename = sysPath$2.basename(file); + const parent = this.fsw._getWatchedDir(dirname); + // stats is always present + let prevStats = stats; + + // if the file is already being watched, do nothing + if (parent.has(basename)) return; + + const listener = async (path, newStats) => { + if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; + if (!newStats || newStats.mtimeMs === 0) { + try { + const newStats = await stat$2(file); + if (this.fsw.closed) return; + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE$2, file, newStats); + } + if (isLinux && prevStats.ino !== newStats.ino) { + this.fsw._closeFile(path); + prevStats = newStats; + this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener)); + } else { + prevStats = newStats; + } + } catch (error) { + // Fix issues where mtime is null but file is still present + this.fsw._remove(dirname, basename); + } + // add is about to be emitted if file not already tracked in parent + } else if (parent.has(basename)) { + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE$2, file, newStats); + } + prevStats = newStats; + } + }; + // kick off the watcher + const closer = this._watchWithNodeFs(file, listener); + + // emit an add event if we're supposed to + if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) { + if (!this.fsw._throttle(EV_ADD$2, file, 0)) return; + this.fsw._emit(EV_ADD$2, file, stats); + } + + return closer; +} + +/** + * Handle symlinks encountered while reading a dir. + * @param {Object} entry returned by readdirp + * @param {String} directory path of dir being read + * @param {String} path of this item + * @param {String} item basename of this item + * @returns {Promise} true if no more processing is needed for this entry. + */ +async _handleSymlink(entry, directory, path, item) { + if (this.fsw.closed) { + return; + } + const full = entry.fullPath; + const dir = this.fsw._getWatchedDir(directory); + + if (!this.fsw.options.followSymlinks) { + // watch symlink directly (don't follow) and detect changes + this.fsw._incrReadyCount(); + + let linkPath; + try { + linkPath = await fsrealpath(path); + } catch (e) { + this.fsw._emitReady(); + return true; + } + + if (this.fsw.closed) return; + if (dir.has(item)) { + if (this.fsw._symlinkPaths.get(full) !== linkPath) { + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_CHANGE$2, path, entry.stats); + } + } else { + dir.add(item); + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_ADD$2, path, entry.stats); + } + this.fsw._emitReady(); + return true; + } + + // don't follow the same symlink more than once + if (this.fsw._symlinkPaths.has(full)) { + return true; + } + + this.fsw._symlinkPaths.set(full, true); +} + +_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) { + // Normalize the directory name on Windows + directory = sysPath$2.join(directory, EMPTY_STR$1); + + if (!wh.hasGlob) { + throttler = this.fsw._throttle('readdir', directory, 1000); + if (!throttler) return; + } + + const previous = this.fsw._getWatchedDir(wh.path); + const current = new Set(); + + let stream = this.fsw._readdirp(directory, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + depth: 0 + }).on(STR_DATA$1, async (entry) => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const item = entry.path; + let path = sysPath$2.join(directory, item); + current.add(item); + + if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) { + return; + } + + if (this.fsw.closed) { + stream = undefined; + return; + } + // Files that present in current directory snapshot + // but absent in previous are added to watch list and + // emit `add` event. + if (item === target || !target && !previous.has(item)) { + this.fsw._incrReadyCount(); + + // ensure relativeness of path is preserved in case of watcher reuse + path = sysPath$2.join(dir, sysPath$2.relative(dir, path)); + + this._addToNodeFs(path, initialAdd, wh, depth + 1); + } + }).on(EV_ERROR$2, this._boundHandleError); + + return new Promise(resolve => + stream.once(STR_END$2, () => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const wasThrottled = throttler ? throttler.clear() : false; + + resolve(); + + // Files that absent in current directory snapshot + // but present in previous emit `remove` event + // and are removed from @watched[directory]. + previous.getChildren().filter((item) => { + return item !== directory && + !current.has(item) && + // in case of intersecting globs; + // a path may have been filtered out of this readdir, but + // shouldn't be removed because it matches a different glob + (!wh.hasGlob || wh.filterPath({ + fullPath: sysPath$2.resolve(directory, item) + })); + }).forEach((item) => { + this.fsw._remove(directory, item); + }); + + stream = undefined; + + // one more time for any missed in case changes came in extremely quickly + if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler); + }) + ); +} + +/** + * Read directory to add / remove files from `@watched` list and re-read it on change. + * @param {String} dir fs path + * @param {fs.Stats} stats + * @param {Boolean} initialAdd + * @param {Number} depth relative to user-supplied path + * @param {String} target child path targeted for watch + * @param {Object} wh Common watch helpers for this path + * @param {String} realpath + * @returns {Promise} closer for the watcher instance. + */ +async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) { + const parentDir = this.fsw._getWatchedDir(sysPath$2.dirname(dir)); + const tracked = parentDir.has(sysPath$2.basename(dir)); + if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) { + if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR$2, dir, stats); + } + + // ensure dir is tracked (harmless if redundant) + parentDir.add(sysPath$2.basename(dir)); + this.fsw._getWatchedDir(dir); + let throttler; + let closer; + + const oDepth = this.fsw.options.depth; + if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) { + if (!target) { + await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler); + if (this.fsw.closed) return; + } + + closer = this._watchWithNodeFs(dir, (dirPath, stats) => { + // if current directory is removed, do nothing + if (stats && stats.mtimeMs === 0) return; + + this._handleRead(dirPath, false, wh, target, dir, depth, throttler); + }); + } + return closer; +} + +/** + * Handle added file, directory, or glob pattern. + * Delegates call to _handleFile / _handleDir after checks. + * @param {String} path to file or ir + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @param {Object} priorWh depth relative to user-supplied path + * @param {Number} depth Child path actually targeted for watch + * @param {String=} target Child path actually targeted for watch + * @returns {Promise} + */ +async _addToNodeFs(path, initialAdd, priorWh, depth, target) { + const ready = this.fsw._emitReady; + if (this.fsw._isIgnored(path) || this.fsw.closed) { + ready(); + return false; + } + + const wh = this.fsw._getWatchHelpers(path, depth); + if (!wh.hasGlob && priorWh) { + wh.hasGlob = priorWh.hasGlob; + wh.globFilter = priorWh.globFilter; + wh.filterPath = entry => priorWh.filterPath(entry); + wh.filterDir = entry => priorWh.filterDir(entry); + } + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods$1[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + ready(); + return false; + } + + const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START$1); + let closer; + if (stats.isDirectory()) { + const absPath = sysPath$2.resolve(path); + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); + if (this.fsw.closed) return; + // preserve this symlink's target path + if (absPath !== targetPath && targetPath !== undefined) { + this.fsw._symlinkPaths.set(absPath, targetPath); + } + } else if (stats.isSymbolicLink()) { + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + const parent = sysPath$2.dirname(wh.watchPath); + this.fsw._getWatchedDir(parent).add(wh.watchPath); + this.fsw._emit(EV_ADD$2, wh.watchPath, stats); + closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath); + if (this.fsw.closed) return; + + // preserve this symlink's target path + if (targetPath !== undefined) { + this.fsw._symlinkPaths.set(sysPath$2.resolve(path), targetPath); + } + } else { + closer = this._handleFile(wh.watchPath, stats, initialAdd); + } + ready(); + + this.fsw._addPathCloser(path, closer); + return false; + + } catch (error) { + if (this.fsw._handleError(error)) { + ready(); + return path; + } + } +} + +}; + +var nodefsHandler = NodeFsHandler$1; + +var fseventsHandler = {exports: {}}; + +const require$$3 = /*@__PURE__*/rollup.getAugmentedNamespace(fseventsImporter.fseventsImporter); + +const fs$1 = require$$0$1; +const sysPath$1 = require$$0$2; +const { promisify: promisify$1 } = require$$2; + +let fsevents; +try { + fsevents = require$$3.getFsEvents(); +} catch (error) { + if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error); +} + +if (fsevents) { + // TODO: real check + const mtch = process.version.match(/v(\d+)\.(\d+)/); + if (mtch && mtch[1] && mtch[2]) { + const maj = Number.parseInt(mtch[1], 10); + const min = Number.parseInt(mtch[2], 10); + if (maj === 8 && min < 16) { + fsevents = undefined; + } + } +} + +const { + EV_ADD: EV_ADD$1, + EV_CHANGE: EV_CHANGE$1, + EV_ADD_DIR: EV_ADD_DIR$1, + EV_UNLINK: EV_UNLINK$1, + EV_ERROR: EV_ERROR$1, + STR_DATA, + STR_END: STR_END$1, + FSEVENT_CREATED, + FSEVENT_MODIFIED, + FSEVENT_DELETED, + FSEVENT_MOVED, + // FSEVENT_CLONED, + FSEVENT_UNKNOWN, + FSEVENT_FLAG_MUST_SCAN_SUBDIRS, + FSEVENT_TYPE_FILE, + FSEVENT_TYPE_DIRECTORY, + FSEVENT_TYPE_SYMLINK, + + ROOT_GLOBSTAR, + DIR_SUFFIX, + DOT_SLASH, + FUNCTION_TYPE: FUNCTION_TYPE$1, + EMPTY_FN: EMPTY_FN$1, + IDENTITY_FN +} = constants; + +const Depth = (value) => isNaN(value) ? {} : {depth: value}; + +const stat$1 = promisify$1(fs$1.stat); +const lstat = promisify$1(fs$1.lstat); +const realpath = promisify$1(fs$1.realpath); + +const statMethods = { stat: stat$1, lstat }; + +/** + * @typedef {String} Path + */ + +/** + * @typedef {Object} FsEventsWatchContainer + * @property {Set} listeners + * @property {Function} rawEmitter + * @property {{stop: Function}} watcher + */ + +// fsevents instance helper functions +/** + * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances) + * @type {Map} + */ +const FSEventsWatchers = new Map(); + +// Threshold of duplicate path prefixes at which to start +// consolidating going forward +const consolidateThreshhold = 10; + +const wrongEventFlags = new Set([ + 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912 +]); + +/** + * Instantiates the fsevents interface + * @param {Path} path path to be watched + * @param {Function} callback called when fsevents is bound and ready + * @returns {{stop: Function}} new fsevents instance + */ +const createFSEventsInstance = (path, callback) => { + const stop = fsevents.watch(path, callback); + return {stop}; +}; + +/** + * Instantiates the fsevents interface or binds listeners to an existing one covering + * the same file tree. + * @param {Path} path - to be watched + * @param {Path} realPath - real path for symlinks + * @param {Function} listener - called when fsevents emits events + * @param {Function} rawEmitter - passes data to listeners of the 'raw' event + * @returns {Function} closer + */ +function setFSEventsListener(path, realPath, listener, rawEmitter) { + let watchPath = sysPath$1.extname(realPath) ? sysPath$1.dirname(realPath) : realPath; + + const parentPath = sysPath$1.dirname(watchPath); + let cont = FSEventsWatchers.get(watchPath); + + // If we've accumulated a substantial number of paths that + // could have been consolidated by watching one directory + // above the current one, create a watcher on the parent + // path instead, so that we do consolidate going forward. + if (couldConsolidate(parentPath)) { + watchPath = parentPath; + } + + const resolvedPath = sysPath$1.resolve(path); + const hasSymlink = resolvedPath !== realPath; + + const filteredListener = (fullPath, flags, info) => { + if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath); + if ( + fullPath === resolvedPath || + !fullPath.indexOf(resolvedPath + sysPath$1.sep) + ) listener(fullPath, flags, info); + }; + + // check if there is already a watcher on a parent path + // modifies `watchPath` to the parent path when it finds a match + let watchedParent = false; + for (const watchedPath of FSEventsWatchers.keys()) { + if (realPath.indexOf(sysPath$1.resolve(watchedPath) + sysPath$1.sep) === 0) { + watchPath = watchedPath; + cont = FSEventsWatchers.get(watchPath); + watchedParent = true; + break; + } + } + + if (cont || watchedParent) { + cont.listeners.add(filteredListener); + } else { + cont = { + listeners: new Set([filteredListener]), + rawEmitter, + watcher: createFSEventsInstance(watchPath, (fullPath, flags) => { + if (!cont.listeners.size) return; + if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return; + const info = fsevents.getInfo(fullPath, flags); + cont.listeners.forEach(list => { + list(fullPath, flags, info); + }); + + cont.rawEmitter(info.event, fullPath, info); + }) + }; + FSEventsWatchers.set(watchPath, cont); + } + + // removes this instance's listeners and closes the underlying fsevents + // instance if there are no more listeners left + return () => { + const lst = cont.listeners; + + lst.delete(filteredListener); + if (!lst.size) { + FSEventsWatchers.delete(watchPath); + if (cont.watcher) return cont.watcher.stop().then(() => { + cont.rawEmitter = cont.watcher = undefined; + Object.freeze(cont); + }); + } + }; +} + +// Decide whether or not we should start a new higher-level +// parent watcher +const couldConsolidate = (path) => { + let count = 0; + for (const watchPath of FSEventsWatchers.keys()) { + if (watchPath.indexOf(path) === 0) { + count++; + if (count >= consolidateThreshhold) { + return true; + } + } + } + + return false; +}; + +// returns boolean indicating whether fsevents can be used +const canUse = () => fsevents && FSEventsWatchers.size < 128; + +// determines subdirectory traversal levels from root to path +const calcDepth = (path, root) => { + let i = 0; + while (!path.indexOf(root) && (path = sysPath$1.dirname(path)) !== root) i++; + return i; +}; + +// returns boolean indicating whether the fsevents' event info has the same type +// as the one returned by fs.stat +const sameTypes = (info, stats) => ( + info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() || + info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() || + info.type === FSEVENT_TYPE_FILE && stats.isFile() +); + +/** + * @mixin + */ +let FsEventsHandler$1 = class FsEventsHandler { + +/** + * @param {import('../index').FSWatcher} fsw + */ +constructor(fsw) { + this.fsw = fsw; +} +checkIgnored(path, stats) { + const ipaths = this.fsw._ignoredPaths; + if (this.fsw._isIgnored(path, stats)) { + ipaths.add(path); + if (stats && stats.isDirectory()) { + ipaths.add(path + ROOT_GLOBSTAR); + } + return true; + } + + ipaths.delete(path); + ipaths.delete(path + ROOT_GLOBSTAR); +} + +addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + const event = watchedDir.has(item) ? EV_CHANGE$1 : EV_ADD$1; + this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts); +} + +async checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + try { + const stats = await stat$1(path); + if (this.fsw.closed) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK$1, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } catch (error) { + if (error.code === 'EACCES') { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK$1, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } +} + +handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) { + if (this.fsw.closed || this.checkIgnored(path)) return; + + if (event === EV_UNLINK$1) { + const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY; + // suppress unlink events on never before seen files + if (isDirectory || watchedDir.has(item)) { + this.fsw._remove(parent, item, isDirectory); + } + } else { + if (event === EV_ADD$1) { + // track new directories + if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path); + + if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) { + // push symlinks back to the top of the stack to get handled + const curDepth = opts.depth === undefined ? + undefined : calcDepth(fullPath, realPath) + 1; + return this._addToFsEvents(path, false, true, curDepth); + } + + // track new paths + // (other than symlinks being followed, which will be tracked soon) + this.fsw._getWatchedDir(parent).add(item); + } + /** + * @type {'add'|'addDir'|'unlink'|'unlinkDir'} + */ + const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event; + this.fsw._emit(eventName, path); + if (eventName === EV_ADD_DIR$1) this._addToFsEvents(path, false, true); + } +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} watchPath - file/dir path to be watched with fsevents + * @param {String} realPath - real path (in case of symlinks) + * @param {Function} transform - path transformer + * @param {Function} globFilter - path filter in case a glob pattern was provided + * @returns {Function} closer for the watcher instance +*/ +_watchWithFsEvents(watchPath, realPath, transform, globFilter) { + if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return; + const opts = this.fsw.options; + const watchCallback = async (fullPath, flags, info) => { + if (this.fsw.closed) return; + if ( + opts.depth !== undefined && + calcDepth(fullPath, realPath) > opts.depth + ) return; + const path = transform(sysPath$1.join( + watchPath, sysPath$1.relative(watchPath, fullPath) + )); + if (globFilter && !globFilter(path)) return; + // ensure directories are tracked + const parent = sysPath$1.dirname(path); + const item = sysPath$1.basename(path); + const watchedDir = this.fsw._getWatchedDir( + info.type === FSEVENT_TYPE_DIRECTORY ? path : parent + ); + + // correct for wrong events emitted + if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) { + if (typeof opts.ignored === FUNCTION_TYPE$1) { + let stats; + try { + stats = await stat$1(path); + } catch (error) {} + if (this.fsw.closed) return; + if (this.checkIgnored(path, stats)) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK$1, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + switch (info.event) { + case FSEVENT_CREATED: + case FSEVENT_MODIFIED: + return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + case FSEVENT_DELETED: + case FSEVENT_MOVED: + return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } + }; + + const closer = setFSEventsListener( + watchPath, + realPath, + watchCallback, + this.fsw._emitRaw + ); + + this.fsw._emitReady(); + return closer; +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} linkPath path to symlink + * @param {String} fullPath absolute path to the symlink + * @param {Function} transform pre-existing path transformer + * @param {Number} curDepth level of subdirectories traversed to where symlink is + * @returns {Promise} + */ +async _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) { + // don't follow the same symlink more than once + if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return; + + this.fsw._symlinkPaths.set(fullPath, true); + this.fsw._incrReadyCount(); + + try { + const linkTarget = await realpath(linkPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(linkTarget)) { + return this.fsw._emitReady(); + } + + this.fsw._incrReadyCount(); + + // add the linkTarget for watching with a wrapper for transform + // that causes emitted paths to incorporate the link's path + this._addToFsEvents(linkTarget || linkPath, (path) => { + let aliasedPath = linkPath; + if (linkTarget && linkTarget !== DOT_SLASH) { + aliasedPath = path.replace(linkTarget, linkPath); + } else if (path !== DOT_SLASH) { + aliasedPath = sysPath$1.join(linkPath, path); + } + return transform(aliasedPath); + }, false, curDepth); + } catch(error) { + if (this.fsw._handleError(error)) { + return this.fsw._emitReady(); + } + } +} + +/** + * + * @param {Path} newPath + * @param {fs.Stats} stats + */ +emitAdd(newPath, stats, processPath, opts, forceAdd) { + const pp = processPath(newPath); + const isDir = stats.isDirectory(); + const dirObj = this.fsw._getWatchedDir(sysPath$1.dirname(pp)); + const base = sysPath$1.basename(pp); + + // ensure empty dirs get tracked + if (isDir) this.fsw._getWatchedDir(pp); + if (dirObj.has(base)) return; + dirObj.add(base); + + if (!opts.ignoreInitial || forceAdd === true) { + this.fsw._emit(isDir ? EV_ADD_DIR$1 : EV_ADD$1, pp, stats); + } +} + +initWatch(realPath, path, wh, processPath) { + if (this.fsw.closed) return; + const closer = this._watchWithFsEvents( + wh.watchPath, + sysPath$1.resolve(realPath || wh.watchPath), + processPath, + wh.globFilter + ); + this.fsw._addPathCloser(path, closer); +} + +/** + * Handle added path with fsevents + * @param {String} path file/dir path or glob pattern + * @param {Function|Boolean=} transform converts working path to what the user expects + * @param {Boolean=} forceAdd ensure add is emitted + * @param {Number=} priorDepth Level of subdirectories already traversed. + * @returns {Promise} + */ +async _addToFsEvents(path, transform, forceAdd, priorDepth) { + if (this.fsw.closed) { + return; + } + const opts = this.fsw.options; + const processPath = typeof transform === FUNCTION_TYPE$1 ? transform : IDENTITY_FN; + + const wh = this.fsw._getWatchHelpers(path); + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + throw null; + } + if (stats.isDirectory()) { + // emit addDir unless this is a glob parent + if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd); + + // don't recurse further if it would exceed depth setting + if (priorDepth && priorDepth > opts.depth) return; + + // scan the contents of the dir + this.fsw._readdirp(wh.watchPath, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + ...Depth(opts.depth - (priorDepth || 0)) + }).on(STR_DATA, (entry) => { + // need to check filterPath on dirs b/c filterDir is less restrictive + if (this.fsw.closed) { + return; + } + if (entry.stats.isDirectory() && !wh.filterPath(entry)) return; + + const joinedPath = sysPath$1.join(wh.watchPath, entry.path); + const {fullPath} = entry; + + if (wh.followSymlinks && entry.stats.isSymbolicLink()) { + // preserve the current depth here since it can't be derived from + // real paths past the symlink + const curDepth = opts.depth === undefined ? + undefined : calcDepth(joinedPath, sysPath$1.resolve(wh.watchPath)) + 1; + + this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth); + } else { + this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd); + } + }).on(EV_ERROR$1, EMPTY_FN$1).on(STR_END$1, () => { + this.fsw._emitReady(); + }); + } else { + this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd); + this.fsw._emitReady(); + } + } catch (error) { + if (!error || this.fsw._handleError(error)) { + // TODO: Strange thing: "should not choke on an ignored watch path" will be failed without 2 ready calls -__- + this.fsw._emitReady(); + this.fsw._emitReady(); + } + } + + if (opts.persistent && forceAdd !== true) { + if (typeof transform === FUNCTION_TYPE$1) { + // realpath has already been resolved + this.initWatch(undefined, path, wh, processPath); + } else { + let realPath; + try { + realPath = await realpath(wh.watchPath); + } catch (e) {} + this.initWatch(realPath, path, wh, processPath); + } + } +} + +}; + +fseventsHandler.exports = FsEventsHandler$1; +fseventsHandler.exports.canUse = canUse; + +var fseventsHandlerExports = fseventsHandler.exports; + +const { EventEmitter } = require$$0$3; +const fs = require$$0$1; +const sysPath = require$$0$2; +const { promisify } = require$$2; +const readdirp = readdirp_1; +const anymatch = anymatchExports.default; +const globParent = globParent$1; +const isGlob = isGlob$2; +const braces = braces_1; +const normalizePath = normalizePath$2; + +const NodeFsHandler = nodefsHandler; +const FsEventsHandler = fseventsHandlerExports; +const { + EV_ALL, + EV_READY, + EV_ADD, + EV_CHANGE, + EV_UNLINK, + EV_ADD_DIR, + EV_UNLINK_DIR, + EV_RAW, + EV_ERROR, + + STR_CLOSE, + STR_END, + + BACK_SLASH_RE, + DOUBLE_SLASH_RE, + SLASH_OR_BACK_SLASH_RE, + DOT_RE, + REPLACER_RE, + + SLASH, + SLASH_SLASH, + BRACE_START, + BANG, + ONE_DOT, + TWO_DOTS, + GLOBSTAR, + SLASH_GLOBSTAR, + ANYMATCH_OPTS, + STRING_TYPE, + FUNCTION_TYPE, + EMPTY_STR, + EMPTY_FN, + + isWindows, + isMacos, + isIBMi +} = constants; + +const stat = promisify(fs.stat); +const readdir = promisify(fs.readdir); + +/** + * @typedef {String} Path + * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName + * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType + */ + +/** + * + * @typedef {Object} WatchHelpers + * @property {Boolean} followSymlinks + * @property {'stat'|'lstat'} statMethod + * @property {Path} path + * @property {Path} watchPath + * @property {Function} entryPath + * @property {Boolean} hasGlob + * @property {Object} globFilter + * @property {Function} filterPath + * @property {Function} filterDir + */ + +const arrify = (value = []) => Array.isArray(value) ? value : [value]; +const flatten = (list, result = []) => { + list.forEach(item => { + if (Array.isArray(item)) { + flatten(item, result); + } else { + result.push(item); + } + }); + return result; +}; + +const unifyPaths = (paths_) => { + /** + * @type {Array} + */ + const paths = flatten(arrify(paths_)); + if (!paths.every(p => typeof p === STRING_TYPE)) { + throw new TypeError(`Non-string provided as watch path: ${paths}`); + } + return paths.map(normalizePathToUnix); +}; + +// If SLASH_SLASH occurs at the beginning of path, it is not replaced +// because "//StoragePC/DrivePool/Movies" is a valid network path +const toUnix = (string) => { + let str = string.replace(BACK_SLASH_RE, SLASH); + let prepend = false; + if (str.startsWith(SLASH_SLASH)) { + prepend = true; + } + while (str.match(DOUBLE_SLASH_RE)) { + str = str.replace(DOUBLE_SLASH_RE, SLASH); + } + if (prepend) { + str = SLASH + str; + } + return str; +}; + +// Our version of upath.normalize +// TODO: this is not equal to path-normalize module - investigate why +const normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path))); + +const normalizeIgnored = (cwd = EMPTY_STR) => (path) => { + if (typeof path !== STRING_TYPE) return path; + return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path)); +}; + +const getAbsolutePath = (path, cwd) => { + if (sysPath.isAbsolute(path)) { + return path; + } + if (path.startsWith(BANG)) { + return BANG + sysPath.join(cwd, path.slice(1)); + } + return sysPath.join(cwd, path); +}; + +const undef = (opts, key) => opts[key] === undefined; + +/** + * Directory entry. + * @property {Path} path + * @property {Set} items + */ +class DirEntry { + /** + * @param {Path} dir + * @param {Function} removeWatcher + */ + constructor(dir, removeWatcher) { + this.path = dir; + this._removeWatcher = removeWatcher; + /** @type {Set} */ + this.items = new Set(); + } + + add(item) { + const {items} = this; + if (!items) return; + if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item); + } + + async remove(item) { + const {items} = this; + if (!items) return; + items.delete(item); + if (items.size > 0) return; + + const dir = this.path; + try { + await readdir(dir); + } catch (err) { + if (this._removeWatcher) { + this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir)); + } + } + } + + has(item) { + const {items} = this; + if (!items) return; + return items.has(item); + } + + /** + * @returns {Array} + */ + getChildren() { + const {items} = this; + if (!items) return; + return [...items.values()]; + } + + dispose() { + this.items.clear(); + delete this.path; + delete this._removeWatcher; + delete this.items; + Object.freeze(this); + } +} + +const STAT_METHOD_F = 'stat'; +const STAT_METHOD_L = 'lstat'; +class WatchHelper { + constructor(path, watchPath, follow, fsw) { + this.fsw = fsw; + this.path = path = path.replace(REPLACER_RE, EMPTY_STR); + this.watchPath = watchPath; + this.fullWatchPath = sysPath.resolve(watchPath); + this.hasGlob = watchPath !== path; + /** @type {object|boolean} */ + if (path === EMPTY_STR) this.hasGlob = false; + this.globSymlink = this.hasGlob && follow ? undefined : false; + this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; + this.dirParts = this.getDirParts(path); + this.dirParts.forEach((parts) => { + if (parts.length > 1) parts.pop(); + }); + this.followSymlinks = follow; + this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L; + } + + checkGlobSymlink(entry) { + // only need to resolve once + // first entry should always have entry.parentDir === EMPTY_STR + if (this.globSymlink === undefined) { + this.globSymlink = entry.fullParentDir === this.fullWatchPath ? + false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath}; + } + + if (this.globSymlink) { + return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath); + } + + return entry.fullPath; + } + + entryPath(entry) { + return sysPath.join(this.watchPath, + sysPath.relative(this.watchPath, this.checkGlobSymlink(entry)) + ); + } + + filterPath(entry) { + const {stats} = entry; + if (stats && stats.isSymbolicLink()) return this.filterDir(entry); + const resolvedPath = this.entryPath(entry); + const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ? + this.globFilter(resolvedPath) : true; + return matchesGlob && + this.fsw._isntIgnored(resolvedPath, stats) && + this.fsw._hasReadPermissions(stats); + } + + getDirParts(path) { + if (!this.hasGlob) return []; + const parts = []; + const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path]; + expandedPath.forEach((path) => { + parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE)); + }); + return parts; + } + + filterDir(entry) { + if (this.hasGlob) { + const entryParts = this.getDirParts(this.checkGlobSymlink(entry)); + let globstar = false; + this.unmatchedGlob = !this.dirParts.some((parts) => { + return parts.every((part, i) => { + if (part === GLOBSTAR) globstar = true; + return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); + }); + }); + } + return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats); + } +} + +/** + * Watches files & directories for changes. Emitted events: + * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error` + * + * new FSWatcher() + * .add(directories) + * .on('add', path => log('File', path, 'was added')) + */ +class FSWatcher extends EventEmitter { +// Not indenting methods for history sake; for now. +constructor(_opts) { + super(); + + const opts = {}; + if (_opts) Object.assign(opts, _opts); // for frozen objects + + /** @type {Map} */ + this._watched = new Map(); + /** @type {Map} */ + this._closers = new Map(); + /** @type {Set} */ + this._ignoredPaths = new Set(); + + /** @type {Map} */ + this._throttled = new Map(); + + /** @type {Map} */ + this._symlinkPaths = new Map(); + + this._streams = new Set(); + this.closed = false; + + // Set up default options. + if (undef(opts, 'persistent')) opts.persistent = true; + if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false; + if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false; + if (undef(opts, 'interval')) opts.interval = 100; + if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300; + if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false; + opts.enableBinaryInterval = opts.binaryInterval !== opts.interval; + + // Enable fsevents on OS X when polling isn't explicitly enabled. + if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling; + + // If we can't use fsevents, ensure the options reflect it's disabled. + const canUseFsEvents = FsEventsHandler.canUse(); + if (!canUseFsEvents) opts.useFsEvents = false; + + // Use polling on Mac if not using fsevents. + // Other platforms use non-polling fs_watch. + if (undef(opts, 'usePolling') && !opts.useFsEvents) { + opts.usePolling = isMacos; + } + + // Always default to polling on IBM i because fs.watch() is not available on IBM i. + if(isIBMi) { + opts.usePolling = true; + } + + // Global override (useful for end-developers that need to force polling for all + // instances of chokidar, regardless of usage/dependency depth) + const envPoll = process.env.CHOKIDAR_USEPOLLING; + if (envPoll !== undefined) { + const envLower = envPoll.toLowerCase(); + + if (envLower === 'false' || envLower === '0') { + opts.usePolling = false; + } else if (envLower === 'true' || envLower === '1') { + opts.usePolling = true; + } else { + opts.usePolling = !!envLower; + } + } + const envInterval = process.env.CHOKIDAR_INTERVAL; + if (envInterval) { + opts.interval = Number.parseInt(envInterval, 10); + } + + // Editor atomic write normalization enabled by default with fs.watch + if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents; + if (opts.atomic) this._pendingUnlinks = new Map(); + + if (undef(opts, 'followSymlinks')) opts.followSymlinks = true; + + if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false; + if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {}; + const awf = opts.awaitWriteFinish; + if (awf) { + if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000; + if (!awf.pollInterval) awf.pollInterval = 100; + this._pendingWrites = new Map(); + } + if (opts.ignored) opts.ignored = arrify(opts.ignored); + + let readyCalls = 0; + this._emitReady = () => { + readyCalls++; + if (readyCalls >= this._readyCount) { + this._emitReady = EMPTY_FN; + this._readyEmitted = true; + // use process.nextTick to allow time for listener to be bound + process.nextTick(() => this.emit(EV_READY)); + } + }; + this._emitRaw = (...args) => this.emit(EV_RAW, ...args); + this._readyEmitted = false; + this.options = opts; + + // Initialize with proper watcher. + if (opts.useFsEvents) { + this._fsEventsHandler = new FsEventsHandler(this); + } else { + this._nodeFsHandler = new NodeFsHandler(this); + } + + // You’re frozen when your heart’s not open. + Object.freeze(opts); +} + +// Public methods + +/** + * Adds paths to be watched on an existing FSWatcher instance + * @param {Path|Array} paths_ + * @param {String=} _origAdd private; for handling non-existent paths to be watched + * @param {Boolean=} _internal private; indicates a non-user add + * @returns {FSWatcher} for chaining + */ +add(paths_, _origAdd, _internal) { + const {cwd, disableGlobbing} = this.options; + this.closed = false; + let paths = unifyPaths(paths_); + if (cwd) { + paths = paths.map((path) => { + const absPath = getAbsolutePath(path, cwd); + + // Check `path` instead of `absPath` because the cwd portion can't be a glob + if (disableGlobbing || !isGlob(path)) { + return absPath; + } + return normalizePath(absPath); + }); + } + + // set aside negated glob strings + paths = paths.filter((path) => { + if (path.startsWith(BANG)) { + this._ignoredPaths.add(path.slice(1)); + return false; + } + + // if a path is being added that was previously ignored, stop ignoring it + this._ignoredPaths.delete(path); + this._ignoredPaths.delete(path + SLASH_GLOBSTAR); + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + + return true; + }); + + if (this.options.useFsEvents && this._fsEventsHandler) { + if (!this._readyCount) this._readyCount = paths.length; + if (this.options.persistent) this._readyCount += paths.length; + paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); + } else { + if (!this._readyCount) this._readyCount = 0; + this._readyCount += paths.length; + Promise.all( + paths.map(async path => { + const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd); + if (res) this._emitReady(); + return res; + }) + ).then(results => { + if (this.closed) return; + results.filter(item => item).forEach(item => { + this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item)); + }); + }); + } + + return this; +} + +/** + * Close watchers or start ignoring events from specified paths. + * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs + * @returns {FSWatcher} for chaining +*/ +unwatch(paths_) { + if (this.closed) return this; + const paths = unifyPaths(paths_); + const {cwd} = this.options; + + paths.forEach((path) => { + // convert to absolute path unless relative path already matches + if (!sysPath.isAbsolute(path) && !this._closers.has(path)) { + if (cwd) path = sysPath.join(cwd, path); + path = sysPath.resolve(path); + } + + this._closePath(path); + + this._ignoredPaths.add(path); + if (this._watched.has(path)) { + this._ignoredPaths.add(path + SLASH_GLOBSTAR); + } + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + }); + + return this; +} + +/** + * Close watchers and remove all listeners from watched paths. + * @returns {Promise}. +*/ +close() { + if (this.closed) return this._closePromise; + this.closed = true; + + // Memory management. + this.removeAllListeners(); + const closers = []; + this._closers.forEach(closerList => closerList.forEach(closer => { + const promise = closer(); + if (promise instanceof Promise) closers.push(promise); + })); + this._streams.forEach(stream => stream.destroy()); + this._userIgnored = undefined; + this._readyCount = 0; + this._readyEmitted = false; + this._watched.forEach(dirent => dirent.dispose()); + ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => { + this[`_${key}`].clear(); + }); + + this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve(); + return this._closePromise; +} + +/** + * Expose list of watched paths + * @returns {Object} for chaining +*/ +getWatched() { + const watchList = {}; + this._watched.forEach((entry, dir) => { + const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir; + watchList[key || ONE_DOT] = entry.getChildren().sort(); + }); + return watchList; +} + +emitWithAll(event, args) { + this.emit(...args); + if (event !== EV_ERROR) this.emit(EV_ALL, ...args); +} + +// Common helpers +// -------------- + +/** + * Normalize and emit events. + * Calling _emit DOES NOT MEAN emit() would be called! + * @param {EventName} event Type of event + * @param {Path} path File or directory path + * @param {*=} val1 arguments to be passed with event + * @param {*=} val2 + * @param {*=} val3 + * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +async _emit(event, path, val1, val2, val3) { + if (this.closed) return; + + const opts = this.options; + if (isWindows) path = sysPath.normalize(path); + if (opts.cwd) path = sysPath.relative(opts.cwd, path); + /** @type Array */ + const args = [event, path]; + if (val3 !== undefined) args.push(val1, val2, val3); + else if (val2 !== undefined) args.push(val1, val2); + else if (val1 !== undefined) args.push(val1); + + const awf = opts.awaitWriteFinish; + let pw; + if (awf && (pw = this._pendingWrites.get(path))) { + pw.lastChange = new Date(); + return this; + } + + if (opts.atomic) { + if (event === EV_UNLINK) { + this._pendingUnlinks.set(path, args); + setTimeout(() => { + this._pendingUnlinks.forEach((entry, path) => { + this.emit(...entry); + this.emit(EV_ALL, ...entry); + this._pendingUnlinks.delete(path); + }); + }, typeof opts.atomic === 'number' ? opts.atomic : 100); + return this; + } + if (event === EV_ADD && this._pendingUnlinks.has(path)) { + event = args[0] = EV_CHANGE; + this._pendingUnlinks.delete(path); + } + } + + if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) { + const awfEmit = (err, stats) => { + if (err) { + event = args[0] = EV_ERROR; + args[1] = err; + this.emitWithAll(event, args); + } else if (stats) { + // if stats doesn't exist the file must have been deleted + if (args.length > 2) { + args[2] = stats; + } else { + args.push(stats); + } + this.emitWithAll(event, args); + } + }; + + this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit); + return this; + } + + if (event === EV_CHANGE) { + const isThrottled = !this._throttle(EV_CHANGE, path, 50); + if (isThrottled) return this; + } + + if (opts.alwaysStat && val1 === undefined && + (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE) + ) { + const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path; + let stats; + try { + stats = await stat(fullPath); + } catch (err) {} + // Suppress event when fs_stat fails, to avoid sending undefined 'stat' + if (!stats || this.closed) return; + args.push(stats); + } + this.emitWithAll(event, args); + + return this; +} + +/** + * Common handler for errors + * @param {Error} error + * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +_handleError(error) { + const code = error && error.code; + if (error && code !== 'ENOENT' && code !== 'ENOTDIR' && + (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES')) + ) { + this.emit(EV_ERROR, error); + } + return error || this.closed; +} + +/** + * Helper utility for throttling + * @param {ThrottleType} actionType type being throttled + * @param {Path} path being acted upon + * @param {Number} timeout duration of time to suppress duplicate actions + * @returns {Object|false} tracking object or false if action should be suppressed + */ +_throttle(actionType, path, timeout) { + if (!this._throttled.has(actionType)) { + this._throttled.set(actionType, new Map()); + } + + /** @type {Map} */ + const action = this._throttled.get(actionType); + /** @type {Object} */ + const actionPath = action.get(path); + + if (actionPath) { + actionPath.count++; + return false; + } + + let timeoutObject; + const clear = () => { + const item = action.get(path); + const count = item ? item.count : 0; + action.delete(path); + clearTimeout(timeoutObject); + if (item) clearTimeout(item.timeoutObject); + return count; + }; + timeoutObject = setTimeout(clear, timeout); + const thr = {timeoutObject, clear, count: 0}; + action.set(path, thr); + return thr; +} + +_incrReadyCount() { + return this._readyCount++; +} + +/** + * Awaits write operation to finish. + * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback. + * @param {Path} path being acted upon + * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished + * @param {EventName} event + * @param {Function} awfEmit Callback to be called when ready for event to be emitted. + */ +_awaitWriteFinish(path, threshold, event, awfEmit) { + let timeoutHandler; + + let fullPath = path; + if (this.options.cwd && !sysPath.isAbsolute(path)) { + fullPath = sysPath.join(this.options.cwd, path); + } + + const now = new Date(); + + const awaitWriteFinish = (prevStat) => { + fs.stat(fullPath, (err, curStat) => { + if (err || !this._pendingWrites.has(path)) { + if (err && err.code !== 'ENOENT') awfEmit(err); + return; + } + + const now = Number(new Date()); + + if (prevStat && curStat.size !== prevStat.size) { + this._pendingWrites.get(path).lastChange = now; + } + const pw = this._pendingWrites.get(path); + const df = now - pw.lastChange; + + if (df >= threshold) { + this._pendingWrites.delete(path); + awfEmit(undefined, curStat); + } else { + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval, + curStat + ); + } + }); + }; + + if (!this._pendingWrites.has(path)) { + this._pendingWrites.set(path, { + lastChange: now, + cancelWait: () => { + this._pendingWrites.delete(path); + clearTimeout(timeoutHandler); + return event; + } + }); + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval + ); + } +} + +_getGlobIgnored() { + return [...this._ignoredPaths.values()]; +} + +/** + * Determines whether user has asked to ignore this path. + * @param {Path} path filepath or dir + * @param {fs.Stats=} stats result of fs.stat + * @returns {Boolean} + */ +_isIgnored(path, stats) { + if (this.options.atomic && DOT_RE.test(path)) return true; + if (!this._userIgnored) { + const {cwd} = this.options; + const ign = this.options.ignored; + + const ignored = ign && ign.map(normalizeIgnored(cwd)); + const paths = arrify(ignored) + .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) + .map((path) => path + SLASH_GLOBSTAR); + const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); + this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); + } + + return this._userIgnored([path, stats]); +} + +_isntIgnored(path, stat) { + return !this._isIgnored(path, stat); +} + +/** + * Provides a set of common helpers and properties relating to symlink and glob handling. + * @param {Path} path file, directory, or glob pattern being watched + * @param {Number=} depth at any depth > 0, this isn't a glob + * @returns {WatchHelper} object containing helpers for this path + */ +_getWatchHelpers(path, depth) { + const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path); + const follow = this.options.followSymlinks; + + return new WatchHelper(path, watchPath, follow, this); +} + +// Directory helpers +// ----------------- + +/** + * Provides directory tracking objects + * @param {String} directory path of the directory + * @returns {DirEntry} the directory's tracking object + */ +_getWatchedDir(directory) { + if (!this._boundRemove) this._boundRemove = this._remove.bind(this); + const dir = sysPath.resolve(directory); + if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove)); + return this._watched.get(dir); +} + +// File helpers +// ------------ + +/** + * Check for read permissions. + * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405 + * @param {fs.Stats} stats - object, result of fs_stat + * @returns {Boolean} indicates whether the file can be read +*/ +_hasReadPermissions(stats) { + if (this.options.ignorePermissionErrors) return true; + + // stats.mode may be bigint + const md = stats && Number.parseInt(stats.mode, 10); + const st = md & 0o777; + const it = Number.parseInt(st.toString(8)[0], 10); + return Boolean(4 & it); +} + +/** + * Handles emitting unlink events for + * files and directories, and via recursion, for + * files and directories within directories that are unlinked + * @param {String} directory within which the following item is located + * @param {String} item base path of item/directory + * @returns {void} +*/ +_remove(directory, item, isDirectory) { + // if what is being deleted is a directory, get that directory's paths + // for recursive deleting and cleaning of watched object + // if it is not a directory, nestedDirectoryChildren will be empty array + const path = sysPath.join(directory, item); + const fullPath = sysPath.resolve(path); + isDirectory = isDirectory != null + ? isDirectory + : this._watched.has(path) || this._watched.has(fullPath); + + // prevent duplicate handling in case of arriving here nearly simultaneously + // via multiple paths (such as _handleFile and _handleDir) + if (!this._throttle('remove', path, 100)) return; + + // if the only watched file is removed, watch for its return + if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) { + this.add(directory, item, true); + } + + // This will create a new entry in the watched object in either case + // so we got to do the directory check beforehand + const wp = this._getWatchedDir(path); + const nestedDirectoryChildren = wp.getChildren(); + + // Recursively remove children directories / files. + nestedDirectoryChildren.forEach(nested => this._remove(path, nested)); + + // Check if item was on the watched list and remove it + const parent = this._getWatchedDir(directory); + const wasTracked = parent.has(item); + parent.remove(item); + + // Fixes issue #1042 -> Relative paths were detected and added as symlinks + // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), + // but never removed from the map in case the path was deleted. + // This leads to an incorrect state if the path was recreated: + // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 + if (this._symlinkPaths.has(fullPath)) { + this._symlinkPaths.delete(fullPath); + } + + // If we wait for this file to be fully written, cancel the wait. + let relPath = path; + if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path); + if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { + const event = this._pendingWrites.get(relPath).cancelWait(); + if (event === EV_ADD) return; + } + + // The Entry will either be a directory that just got removed + // or a bogus entry to a file, in either case we have to remove it + this._watched.delete(path); + this._watched.delete(fullPath); + const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK; + if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path); + + // Avoid conflicts if we later create another file with the same name + if (!this.options.useFsEvents) { + this._closePath(path); + } +} + +/** + * Closes all watchers for a path + * @param {Path} path + */ +_closePath(path) { + this._closeFile(path); + const dir = sysPath.dirname(path); + this._getWatchedDir(dir).remove(sysPath.basename(path)); +} + +/** + * Closes only file-specific watchers + * @param {Path} path + */ +_closeFile(path) { + const closers = this._closers.get(path); + if (!closers) return; + closers.forEach(closer => closer()); + this._closers.delete(path); +} + +/** + * + * @param {Path} path + * @param {Function} closer + */ +_addPathCloser(path, closer) { + if (!closer) return; + let list = this._closers.get(path); + if (!list) { + list = []; + this._closers.set(path, list); + } + list.push(closer); +} + +_readdirp(root, opts) { + if (this.closed) return; + const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts}; + let stream = readdirp(root, options); + this._streams.add(stream); + stream.once(STR_CLOSE, () => { + stream = undefined; + }); + stream.once(STR_END, () => { + if (stream) { + this._streams.delete(stream); + stream = undefined; + } + }); + return stream; +} + +} + +// Export FSWatcher class +chokidar.FSWatcher = FSWatcher; + +/** + * Instantiates watcher with paths to be tracked. + * @param {String|Array} paths file/directory paths and/or globs + * @param {Object=} options chokidar opts + * @returns an instance of FSWatcher for chaining. + */ +const watch = (paths, options) => { + const watcher = new FSWatcher(options); + watcher.add(paths); + return watcher; +}; + +chokidar.watch = watch; + +exports.chokidar = chokidar; +//# sourceMappingURL=index.js.map diff --git a/.pnpm-store/v3/files/24/0b0cae6d59e96e08aa0f50ecb5bfea5097aea6b88e77443a547fcaeecd18d3f406b3f048cf22e3ecb3c9aea1c60b0dbf2c952bccb0b6168d8459aa77c67e72-index.json b/.pnpm-store/v3/files/24/0b0cae6d59e96e08aa0f50ecb5bfea5097aea6b88e77443a547fcaeecd18d3f406b3f048cf22e3ecb3c9aea1c60b0dbf2c952bccb0b6168d8459aa77c67e72-index.json new file mode 100644 index 00000000..0308010e --- /dev/null +++ b/.pnpm-store/v3/files/24/0b0cae6d59e96e08aa0f50ecb5bfea5097aea6b88e77443a547fcaeecd18d3f406b3f048cf22e3ecb3c9aea1c60b0dbf2c952bccb0b6168d8459aa77c67e72-index.json @@ -0,0 +1 @@ +{"files":{"components/Code.astro":{"checkedAt":1708389320223,"integrity":"sha512-7pD8v4/NI/l+H95kn7+G+SR1i/Tj4+x4CJFXNe8z8OUxiMfbjsDF4wJQRORVj7RYXKifCovhs6LE2e3Dz1lyuQ==","mode":420,"size":2504},"components/Debug.astro":{"checkedAt":1708389320223,"integrity":"sha512-idkgSWCx+HMSCHMnu3kqieWPqV6H8HUThhNBrGptvytMeIBmAV5EpyalkhSpiBqX+0bD7NjjssdZgGD0GjQd8g==","mode":420,"size":1223},"components/Image.astro":{"checkedAt":1708389320224,"integrity":"sha512-rpfyy8rThWx3mhQIT1cStEBt/H9ojf77WjPqZCROJ4Vx3WjGlov3GdCkWNOr9NM1PKYnaUeWgr49ZSPk9Cgozg==","mode":420,"size":1354},"components/Picture.astro":{"checkedAt":1708389320224,"integrity":"sha512-iHKyxBSJvreAYtnSjo8nMPqPxDQDoe/znPEjjQEB/r4vAI3BQYGrf0OM/tXBnC4H+77gVzqW/WQ2svgudg+f7A==","mode":420,"size":2860},"components/ViewTransitions.astro":{"checkedAt":1708389320224,"integrity":"sha512-zWNqE9wVHmfxoWP64Y7sEJfMLvZXR89INb2ix7ewqR6aOTQ/0Jh3H2gpnrIEBAP4rG40BVr1Jyk+uEc1/jOSBg==","mode":420,"size":4343},"components/viewtransitions.css":{"checkedAt":1708389320226,"integrity":"sha512-yEG8ABs6wyDd30N4jyuqQPyAW9VxS/4vpG+msuDO6xbjyu2msVbUDBrf5F7qSt+ezbrgoc/yVpMvMa9VIxGyAw==","mode":420,"size":708},"dist/template/4xx.js":{"checkedAt":1708389320226,"integrity":"sha512-0AK1caaJRZ5mt6arq/kEAdeS4d2yJ8+pPHzLkh04yfT3Sd/XrunCAEtDrcDebbKPgtPwRVZVvIXZB+Th4tg++g==","mode":420,"size":5142},"dist/runtime/client/dev-toolbar/apps/audit/a11y.js":{"checkedAt":1708389320226,"integrity":"sha512-IDPoo3BA/hw6WkHmCjk9Q8lDk/gOXhK+V2/dWgD8ekTJT3FG56HtuP+FbecZfzoMVVlrCNsWTRnsabLwc+R4KQ==","mode":420,"size":21966},"dist/core/build/add-rollup-input.js":{"checkedAt":1708389320226,"integrity":"sha512-xmoybo1JcI4GiNKGvgRaXKvcyTVRLy0gwu+TLLt+gYdNxbgTe5AcL3paWF7CppZ2sv5pZtiJpfcoiUCYdesnsg==","mode":420,"size":905},"dist/runtime/server/render/any.js":{"checkedAt":1708389320226,"integrity":"sha512-wHpHIo8B7lP0WL9+LDh9A7s9vNmmffHtJMs1XuTxaF8l9N1mvnKQjuOjnmravs6ivGlzlPN3Pmk0+ESdrFlG6g==","mode":420,"size":1688},"dist/@types/app.d.js":{"checkedAt":1708389320226,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/runtime/server/astro-component.js":{"checkedAt":1708389320227,"integrity":"sha512-4qsJLsrzG3Q1aN3l8D7jx5HloGDQ/jSpFfzh4E2ppUCN6FelEdk9tjM/zMeA5oLCbxrOwlsx3Da0fzX3C6k0DQ==","mode":420,"size":1172},"dist/runtime/server/astro-global.js":{"checkedAt":1708389320227,"integrity":"sha512-crPNGFmhjlBK4YUSEc/CLWAhAEGfkNI3zk6KH+eL/nsV1IfYivqZed/6t8fTh2AgClNYsUbd5lqF3PzMeNFELA==","mode":420,"size":1006},"dist/runtime/server/astro-island.js":{"checkedAt":1708389320227,"integrity":"sha512-UuE42GLk2LZBrU2/F5zHEm9bJ/+munBzce1cV2hcTyRd3DmNPO5JpVVWh4aSBOm/kZ9fCZhxgIjgZGW3dXXrfA==","mode":420,"size":6537},"dist/runtime/server/astro-island.prebuilt-dev.js":{"checkedAt":1708389320227,"integrity":"sha512-2o3pR03VNeq5xDeNBEYLCfjRzfUCY+WTl7ksSSKaiDy8LKit7dGkEUCW4p2fasJF2tnfovpEhr+vyYZgqtOPzA==","mode":420,"size":3678},"dist/runtime/server/astro-island.prebuilt.js":{"checkedAt":1708389320227,"integrity":"sha512-M2T9HnXCvpHzhi/ZD5UgR0eI5czAXql2t1jLP+K74/mPbGO18qFP93UJ4e/iR2EcFhYcCHwQOOvxNxbmKboSlA==","mode":420,"size":3570},"astro.js":{"checkedAt":1708389320228,"integrity":"sha512-qcbaODqx3hs92zICxc8sAx7HD3iyyTrBkEzI0c98VqKC55hFxqtNAW/jjGs4LabdIYSedBr36l0rWZRPgTVZ2A==","mode":493,"size":2478},"dist/@types/astro.js":{"checkedAt":1708389320228,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/runtime/client/dev-toolbar/apps/astro.js":{"checkedAt":1708389320228,"integrity":"sha512-WDQv10Nf1NFFySMWwqS3KIEF/1dcD5Zf8s2i6G23qyPWs3d0XIgsx+JZa/Jh+JnTtiYSnVgsIpmXifeGZu2NLQ==","mode":420,"size":18793},"dist/integrations/astroFeaturesValidation.js":{"checkedAt":1708389320228,"integrity":"sha512-ER2RqMLEtk0HWqMZAxJ7yFwXGV8T9aTbefyweipCDYF+AoMHxXgCnmhpUmyzngjFE0vmdLHJWE/paJqb6ZLjFA==","mode":420,"size":3744},"dist/assets/services/vendor/squoosh/avif/avif_enc.d.js":{"checkedAt":1708389320228,"integrity":"sha512-tCXrlpIm3CNsJHfNYSvczTAUobT6W9Wm+xtcE2s4UXUF/xfg6xVKYhb6yIKMB+YjnpEHY7gwqaLO4iqiBjtp9A==","mode":420,"size":320},"dist/assets/services/vendor/squoosh/avif/avif_node_dec.js":{"checkedAt":1708389320229,"integrity":"sha512-m+ZEepdqob02UEQutRzq2A4D4sto182KeoixsOSFUANiVYE7B9qiLSNKDTFQiJYNpuwOn3AjS7C4EiZNZOqATg==","mode":420,"size":52725},"dist/assets/services/vendor/squoosh/avif/avif_node_dec.wasm.js":{"checkedAt":1708389320236,"integrity":"sha512-Z2iiBhkfaRvdfQwzs6qMLjmlhq+5x5s8wxuvLyn8b/6xiWq9pGxGlEsZ9n2LnAyfrSmum7A5Eybus/BHd8hOiA==","mode":420,"size":1818860},"dist/assets/services/vendor/squoosh/avif/avif_node_enc.js":{"checkedAt":1708389320237,"integrity":"sha512-0d86AfPjkISAiU4ls2x2T29i7hCC99NLoRZMmKcSlrwQSwD/ocpbdumO295S5m56Ur++NWX/foO/1EV0RL8y9A==","mode":420,"size":60125},"dist/assets/services/vendor/squoosh/avif/avif_node_enc.wasm.js":{"checkedAt":1708389320252,"integrity":"sha512-vdkECsefhG4CPHXgl9P8aCi9NBrRl7XAamnUH+bG4zgt0mCcCp/hmtm6TpsOoHhBG0x8wEwKeyFHcuJX4H2exQ==","mode":420,"size":3523040},"dist/cli/add/babel.js":{"checkedAt":1708389320253,"integrity":"sha512-29whWLcqYbVQdyHnOO941RHoiAtVBzQGSr5OI1cu0gQBCuFXeafT5ar+rIATd0FzEUbYEX+mTxHkaAWPt1gBrg==","mode":420,"size":453},"dist/jsx/babel.js":{"checkedAt":1708389320253,"integrity":"sha512-fhZjLsjcbzo2yRjQEl1zsQGWDprHAhn4nraKr0EreaEXrreFxtIC25vzsUOIVMN0Jesy3v8xtZPueQul+AfafA==","mode":420,"size":11372},"dist/runtime/client/dev-toolbar/ui-library/badge.js":{"checkedAt":1708389320253,"integrity":"sha512-n94LHQfiCw8+qDg2aZMq7R6CluZbPvLOI7FY+wwJ/NqBp5s4eQbVqtznCFdNoiIEI2VwEr01acjux3OPN9ScZQ==","mode":420,"size":1568},"dist/vite-plugin-astro-server/base.js":{"checkedAt":1708389320253,"integrity":"sha512-v7ChA3UwqC1Xg/gDriGrMo0EkG5aybtqWH2wR5WIY1AITE0jy5HmdWJOOqcksXvxe9664QjVhp2vO+lqQjvL8w==","mode":420,"size":2183},"dist/assets/utils/vendor/image-size/types/bmp.js":{"checkedAt":1708389320253,"integrity":"sha512-obkquWHdLDMl/sNAgqsjTcyxXGFAnLeJ4H+yr0LgtRYNX3FCah3ZEpwQUKtbWlGcf2yOkrt6XIdBSryyWhAwgg==","mode":420,"size":277},"dist/core/client-directive/build.js":{"checkedAt":1708389320253,"integrity":"sha512-U7ArBX7xr8zrKp9Dt7y4gXHGZIFAW1V7zU29H7rKca8VDdHkmTk2VfMrFbWOMPXugprsY0YKpKYeqQNEcluhig==","mode":420,"size":816},"dist/core/build/buildPipeline.js":{"checkedAt":1708389320253,"integrity":"sha512-G6UXJYJtowRcAn6xSkUKylvpCTzZeZ38lzSTJMtJiVvk6yD6o/U2ELK2QRpCHpIvFvGk6PumGSQiyqye5kdGng==","mode":420,"size":5502},"dist/runtime/client/dev-toolbar/ui-library/button.js":{"checkedAt":1708389320253,"integrity":"sha512-EWNj8uAUTfwm2wL7BUjT/3e908dupBokjpmz4b4OdT37pmYWfJYq8NNylmGgPPNgJMuOMjmo9grDeIItf744UA==","mode":420,"size":1780},"dist/core/middleware/callMiddleware.js":{"checkedAt":1708389320254,"integrity":"sha512-t6gJjvUbTF4c2R44cOmTACh0KOisEZT/EzZlhAe8T4t8FHZeq5PrvQhLx7HdgpE97z3ZKofOuY9WcQevqYxsLQ==","mode":420,"size":1577},"dist/runtime/client/dev-toolbar/ui-library/card.js":{"checkedAt":1708389320254,"integrity":"sha512-ZdFMyC8LBBeFUMRFjOFjmNUl4ADJJo4V9j7Zm3SX33u4U+nUXWZE/Bq64BdFgOxF2YwEK+50E9Vb8T4N9j1LNQ==","mode":420,"size":1588},"dist/assets/services/vendor/squoosh/codecs.js":{"checkedAt":1708389320254,"integrity":"sha512-oHMQ5r3ajwTfZLm0JNuO+OEtLtJU6VPZ7H222BfNvyk++hNa9zkiOTyTb/iL5t6Ipb990S/BzTQbLnnbfrKCCQ==","mode":420,"size":7814},"dist/core/app/common.js":{"checkedAt":1708389320254,"integrity":"sha512-XhXH6xt7hBrKeJUIuJTla/s92YvXc2Pg1OwDjWi1nf9O7Uao3r7EIZQnZA+rIST1+iCeYgfXDMbGHqODAQhYpA==","mode":420,"size":939},"dist/core/build/common.js":{"checkedAt":1708389320254,"integrity":"sha512-PzXITFZx6rCR91WaS3MVdcKTBCu1RPd2NutN774UeIV2MNPJvF7S5HERfxDJNhiXfsVgYISjbMK92mkuP2S7Hw==","mode":420,"size":2821},"dist/runtime/server/render/common.js":{"checkedAt":1708389320254,"integrity":"sha512-K7tn/HYjupLjkmaM0ym8Of4VSwueO0oEM3xpKxi53ObDgFDTNK81hBtLH7bPS1/B4CNjXg7KagDV43HmhhT3ZQ==","mode":420,"size":3017},"dist/core/compile/compile.js":{"checkedAt":1708389320254,"integrity":"sha512-bAJcCEOpWU6xikYXg2+QezsTi+OaJeueBA0HAqn7lmk1IvXLTG91RhFnAgHX1LDJ0eIRbpQv27nUwokaeSrJzw==","mode":420,"size":2861},"dist/vite-plugin-astro/compile.js":{"checkedAt":1708389320254,"integrity":"sha512-h15lo5VFN3rwDZ/MOOKXRkTNTYbYBRnvFqo0SY7SOICZkkgTOFRdRPXbgsuaLbm7ZfcRO8Dk2KK+OqcSDeRY2g==","mode":420,"size":2529},"dist/core/redirects/component.js":{"checkedAt":1708389320254,"integrity":"sha512-mYKJ6pQO1oBfKXJu++FlxCFWysQGuaRbGCAZ/Tjy2KSgFvbUNvrhIwd4odPCTRyDRdvvIrKr38rN+74LYlE8fg==","mode":420,"size":339},"dist/jsx/component.js":{"checkedAt":1708389320255,"integrity":"sha512-bo6fCfS5aX+LDI7Iq9d241Fsg5aYy8luMqfLcetBnDQp8kNhfwMi0Wmx5e6IJaFNcpffkEnpvZC4wVx/3oAufg==","mode":420,"size":318},"dist/runtime/server/render/component.js":{"checkedAt":1708389320255,"integrity":"sha512-2aW1Iuv8E5bsM+NuPYY/ov9wWOlAiDhVMvJKDlyfr/dK4q9Vygu7w5mTLdrOfkE5xJdp9C9UEHmIaN9hgbxUOA==","mode":420,"size":14116},"dist/assets/endpoint/config.js":{"checkedAt":1708389320255,"integrity":"sha512-hp8H6UkGJjJfKqVL5X+zFH5oQVI5JBJtGiYYPpI/6T2k/dygntmGAIKRio/ZuNG/HO46V3N8wuoAgSY0Rol+/g==","mode":420,"size":368},"dist/core/config/config.js":{"checkedAt":1708389320255,"integrity":"sha512-GPwY1tvCSRUm52HWMFVOKEHtSTgGf99zTTTJ2+RDySFLkmslqUlFIxjmXiOUxjihO2Xcix0l6LfVR6DXpbxtLw==","mode":420,"size":4115},"dist/core/logger/console.js":{"checkedAt":1708389320255,"integrity":"sha512-1jULLaCEAg/XJao43yNNFh1QdZhVLd/AxKBSNPaeLlBVsizv4BeAlQZZbwbnt8Y0gU3zSBx8nkpihXqjTyeh/w==","mode":420,"size":416},"dist/core/constants.js":{"checkedAt":1708389320255,"integrity":"sha512-NZINE4YYvZ9YBKVzgj2oCDqx7G19vfCwJI7mJGD6IwgaAxenJz5oJE1dmYIucVIInFEgfpVDAciZNRp/2ulXVA==","mode":420,"size":361},"dist/assets/consts.js":{"checkedAt":1708389320255,"integrity":"sha512-FL0a0GZ0ZajHIwYo4OHaMAK50U+k8ZTSm4po5UtRi3aKnLtdNzVGqtLujJqN3RSaUBjDWQFjT5sjbgkxfiwZ6w==","mode":420,"size":679},"dist/content/consts.js":{"checkedAt":1708389320255,"integrity":"sha512-sk1/jv1Jc8Yu0084MXy5ZNAfnDQmKDNlHG+kyxT7kZIqas2qzvtlnvrxPCqbq4HNe1jb6ljlm66A+5e3Xy13ag==","mode":420,"size":836},"dist/runtime/server/consts.js":{"checkedAt":1708389320256,"integrity":"sha512-SKUoYet3TkWr5IMxL5sf5BZF4cYfsbmYpiEV065Lxjz7fC2VCPwYe5G2OPN9yt97Xg0NRg6i8uLsTAMzv6qekA==","mode":420,"size":91},"dist/core/dev/container.js":{"checkedAt":1708389320256,"integrity":"sha512-yWDkUJRRxG+wqIwQZnRPMPZUW4Hc/PftgJE2bZcMwNSH4vWBbxPoECWpVZ99rUzZFwfr+HhFublZLVztyLnZUQ==","mode":420,"size":2217},"dist/vite-plugin-markdown/content-entry-type.js":{"checkedAt":1708389320256,"integrity":"sha512-QYAMURKOgkZZEQBPOKfAbqdcmeXqZqYfnnJeIeTA4obx1/3v0SJ2KhazjfyQQa3OZjnmxRWIfg6FpjsBy8NFBg==","mode":420,"size":591},"dist/core/render/context.js":{"checkedAt":1708389320256,"integrity":"sha512-TQt6xEqu2kQixiudjcyDSv3EE7DAEkv12zCb/xJGLxKMnMBpCNReukQmvfEU0lwrgQgm0AtQDrMSsac1bXCBvQ==","mode":420,"size":5983},"dist/vite-plugin-astro-server/controller.js":{"checkedAt":1708389320256,"integrity":"sha512-vAWjoVY3tgyWQl+h5Mtto6AhK7BJFkHO0E9dgYxpe4kB0eZXNGsdT0EOSiIJHPDnct2FYVfQc4owTkmL2mEpTQ==","mode":420,"size":1791},"dist/core/cookies/cookies.js":{"checkedAt":1708389320256,"integrity":"sha512-Ku4VZzNfLZQxe+iX6cZVMCbs2OJ7cg0pwf3QXyBPMNN46ccWVAuLyETXbdqSSpErz9SpIIU0WQvW6jgmFJDwjg==","mode":420,"size":5763},"dist/core/logger/core.js":{"checkedAt":1708389320256,"integrity":"sha512-kQbVz+s2HQKuVIB04g8K0a6wjBOzq1XHAqF0UcRsfgcPT5iydP8TvSF+K/Up+ecBemk3INuSd6GKM+TRkwrzTw==","mode":420,"size":4230},"dist/core/render/core.js":{"checkedAt":1708389320256,"integrity":"sha512-bjJpnHizPTtXNmIGIhtk+FMz9RkYHfSYVO3tU6ffb26WGYSm2OJkViGZ1ClhFarMmFOPjFeAW4rmviUaPogNDA==","mode":420,"size":2198},"dist/core/create-vite.js":{"checkedAt":1708389320256,"integrity":"sha512-VpGYoOcPcH6bTOKeW3/1zpHEbd6Kt8LNuYq8urgG4qQNwciEcY4kiIAZSbFw95EiTy6XQPGFTYp1CfXFY6ebFQ==","mode":420,"size":9706},"dist/core/routing/manifest/create.js":{"checkedAt":1708389320257,"integrity":"sha512-QsYi97/dY1b8mV6gIdBmiDgbGl7SQDpYflJKZEhAL1KVKQPIy22GMxxLD/5FfWg4VynYAUys/L2n6vA/TlEItA==","mode":420,"size":21368},"dist/core/app/createOutgoingHttpHeaders.js":{"checkedAt":1708389320257,"integrity":"sha512-6HRGOJu1Vn3XApu1ubgPTTxcr7qhkp9Nr1M1qcJg6NbMVMEGuW7buYWcLyjryw44q/CSi+WUAwKQ1ks0T1d8Gg==","mode":420,"size":466},"dist/core/build/css-asset-name.js":{"checkedAt":1708389320257,"integrity":"sha512-3H3tscQwI2X0cbh3yONMct+N0R3pdf7COv7n0Nw0d1rsYbYQpVvGPL6XwPF5Px38EX4ABpT7gkihu0SRKJAgig==","mode":420,"size":2475},"dist/vite-plugin-astro-server/css.js":{"checkedAt":1708389320257,"integrity":"sha512-NpwIX81tzMu6F8xGq9TmaLtiJHio0HOBtS73uDadLvxavVZ3JUDGPtd7c0lYMk2DQJzCKoh3OiMgxQGBmcSf5w==","mode":420,"size":1472},"dist/assets/utils/vendor/image-size/types/cur.js":{"checkedAt":1708389320257,"integrity":"sha512-3vaReg88cAqFJN7rM9IdjDG2PNExHM8bgXS9w8MJGumZJ8rqyDTUVzxmtGgLMxpdRUEPlQGFHIc6sLRZ67i0XQ==","mode":420,"size":443},"dist/assets/utils/vendor/image-size/types/dds.js":{"checkedAt":1708389320257,"integrity":"sha512-d7X7pN5rD0iX7DemzrwYc60IqPlj66CP8k9QKyfrnmuvuOnsrTddMr3us9C1Dz+kEIKTK1gEx1Um/BwC/u0b9Q==","mode":420,"size":243},"dist/core/client-directive/default.js":{"checkedAt":1708389320258,"integrity":"sha512-/9Leio/5whR+MZIG7jk+5bRgH0xITL2e1KdEwvAdahzsTYu7uAaaG6QbLy6H9FHqbN/IMRkaN7cgVt0yRkoMGQ==","mode":420,"size":609},"dist/preferences/defaults.js":{"checkedAt":1708389320258,"integrity":"sha512-jP7jNH0CCZMbuZD4jMVw3Mc6Ls15FLRj4Ntn7EspGHLYEZmwwLrAK2FjmgpwiYVCfYQ8Yn0GuCiEdMziT7Z7DQ==","mode":420,"size":171},"dist/assets/utils/vendor/image-size/detector.js":{"checkedAt":1708389320258,"integrity":"sha512-NO3n7n9Fid/aB6wkMjGE/MajPePiaaMZnmNIYkz/3PBmAKGHCPw7256pYthJ5Tufr1GwxszJazjz9+IWlur12A==","mode":420,"size":531},"dist/core/dev/dev.js":{"checkedAt":1708389320258,"integrity":"sha512-+jW2hi8F5KTdRYoEPEfbb8ZwMTX8/zpCilmMF6f/u2Zh0+wZe3ppAcGoDUc+yy+F7T46/3RPun91dxVC3hmVXw==","mode":420,"size":1792},"dist/vite-plugin-astro-server/devPipeline.js":{"checkedAt":1708389320258,"integrity":"sha512-czx15cSpCaD6cFcTv9X/Vgiq1HRRAeupwOBGAPIdk66//xDms5HN8ldwdG+sxzIq7O74KYTLaoH7b+X+xLFPSA==","mode":420,"size":1767},"dist/runtime/server/render/dom.js":{"checkedAt":1708389320258,"integrity":"sha512-7mFrXqK8ikkr58iQ4fC/93BgODF2mVkJH6yoLAHZCO/O8DxP4tfULuT+bsT3k9E75ORReGQnX+fLNmx5hy5ogw==","mode":420,"size":999},"dist/assets/utils/emitAsset.js":{"checkedAt":1708389320258,"integrity":"sha512-McxXt26WWoeE95fyJFvnCl3fqppaf94vU4ibN4e9ygTzs57J8UkTO0V5c5f0EzxUTimB5UwbpX9K67fMoJJTmQ==","mode":420,"size":1532},"dist/assets/services/vendor/squoosh/emscripten-types.d.js":{"checkedAt":1708389320258,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/assets/services/vendor/squoosh/emscripten-utils.js":{"checkedAt":1708389320258,"integrity":"sha512-KaHUIcl2AEcZUj82LUm1gVcDlzv6T6YFtwCffTeMeS1lwrGkaHbKdUsZwAH5SzG4iS8tWH5j/SU8BvRAmw2m3Q==","mode":420,"size":691},"dist/runtime/server/endpoint.js":{"checkedAt":1708389320258,"integrity":"sha512-8vZkDTb8CT8jqJNtwrZA1925sh5uOp6tSf+5l3/1ZcEu7SdStMZhW8hu4G8W2R9H7iYUTEZLPo4mIIYi450Pug==","mode":420,"size":1461},"dist/runtime/client/dev-toolbar/entrypoint.js":{"checkedAt":1708389320259,"integrity":"sha512-/r7SAqwyyD3cEWPG5hY6SVASkfSXB52AmHooA64TCWHcpm3CeKcQRNWjTVDckTKsrGjhxDe9xOU7RtzB8iXjIw==","mode":420,"size":7888},"dist/core/render/environment.js":{"checkedAt":1708389320259,"integrity":"sha512-VUuotmbJpNkWuBwuygMou1X3brtUhMfp9ELCNhJwi5qKIE2BvtwYuc8VH6izPZZIwqmzSNiAx3w3xNIQIuOOWQ==","mode":420,"size":90},"dist/content/error-map.js":{"checkedAt":1708389320259,"integrity":"sha512-TuvSDZRKURJRqMMk1ybgab0jj2RacmDRe8uwN74QXEiJrtIociqsdypIXpC6MkY2YugDQkuV/BK1H94et7NOHA==","mode":420,"size":2806},"dist/events/error.js":{"checkedAt":1708389320259,"integrity":"sha512-yqN+batVymo7HwWwjRCGa3NNfeFtVlldO13EbdINRlw3PsTZGwO0gM6yH8Sr5gGYA+ahRJFJuykJ790UAwW3oQ==","mode":420,"size":1596},"dist/vite-plugin-astro-server/error.js":{"checkedAt":1708389320259,"integrity":"sha512-7ciNi0KIPIfqTwbBsj0qLFqaFYoDLT/DtiQQ2fo0FH2Hs47npCzapIh3KLcIKEUNUXY6lHksG2/7G2ngj3LgzQ==","mode":420,"size":858},"dist/core/errors/errors-data.js":{"checkedAt":1708389320259,"integrity":"sha512-d6jNmXD8bVhz15UhlupG2CdGbhDec4T7BWZY9Hc10oxbisTGDLvOQYvmm5GDvNi1rJoRJfQggMCbk70n07tXsw==","mode":420,"size":29407},"dist/core/errors/errors.js":{"checkedAt":1708389320259,"integrity":"sha512-w3HF5jfmIExl/AO6Atkn+0SUPoDxi2c0YoQ/Jg68MObvpS1kbGlxIWXgeuNtdxuAnIHvt0ctHpAC8tII6/AwUA==","mode":420,"size":2685},"dist/runtime/server/escape.js":{"checkedAt":1708389320259,"integrity":"sha512-I0VPWeu9oCnStM0QLkzqLS37gaLHO5FceJfraHNNai+3Omslt0BwbTXThJr4LIx9Bzsb8yIpdkYuleQ+xyjbwQ==","mode":420,"size":2037},"dist/vite-plugin-html/transform/escape.js":{"checkedAt":1708389320259,"integrity":"sha512-REWJt50gFKisI2p5ME31KwarXnlleyBlLS7CkCGHBcZUowkUUnf+aeyZroOiSJyBLmyxSmzE0ChUWR41F4Gwlw==","mode":420,"size":1180},"dist/assets/utils/etag.js":{"checkedAt":1708389320259,"integrity":"sha512-6/fLDSrCWoXFaa+qpMu44dP5Vr3awyHDiG3jSN6vPx+rUo6/pUyLupVTYT9L4YMDl/Hvr2JZqh226llmNiNWTA==","mode":420,"size":740},"dist/transitions/events.js":{"checkedAt":1708389320260,"integrity":"sha512-8DIX66GEEqnJQlYCJQ09Nzwr4z7OBorvsdNBnpnpYU6R8PjBI0NduSFGU1f8dzzN2tvfILftrHJIlOrYRfXDOQ==","mode":420,"size":4004},"dist/assets/services/vendor/squoosh/utils/execOnce.js":{"checkedAt":1708389320260,"integrity":"sha512-vBpnIud1fZeX0+erolEjhFH5CLEv5PvAI2svKhDwdordjKg+ENruF4SYKO2oG3swXtXbNo+l1TWgCqXzSYDF/g==","mode":420,"size":212},"dist/runtime/server/render/astro/factory.js":{"checkedAt":1708389320260,"integrity":"sha512-17LCkYXCGHkwRtFHsJddtSu/SN5ewJmiTqghKee0qMbiiES/S7sMuyXXB65JpFOhtHYGv1/QLGQBuyMkblXbzg==","mode":420,"size":492},"dist/cli/flags.js":{"checkedAt":1708389320260,"integrity":"sha512-GPMfbHVcbsJlBIHrweyhT5PiZ7Tc8YFPJGWm36FWwgsaExP7/N+s3Hgm6rd5k+pfqf+Rb0ghFSlGx9GMTEgOcw==","mode":420,"size":1309},"dist/assets/build/generate.js":{"checkedAt":1708389320260,"integrity":"sha512-FGMro+GjTvgRb1aOoI1xthpuyBBp0ZZBFgCfu87a7CIi7rRClnxfMOKc1EpjcgheralXeHkMIhqBoFRTkdyUhA==","mode":420,"size":6779},"dist/core/build/generate.js":{"checkedAt":1708389320260,"integrity":"sha512-VRTv34VbiWhzPSliHgwyljkiehnzKmgtjeMFaYYYc1qkUGOJ+prkU2SHnlzhUExRzW4LN8v3LUcVmPk5PSkuTA==","mode":420,"size":19263},"dist/core/routing/manifest/generator.js":{"checkedAt":1708389320260,"integrity":"sha512-+6sZ+4XAx0TJMVMACuqkBPcysLLd1Xzz5qvJyeLcxFabaLJzIlPMiZ0M2r32Ag3nGbyaJFdZvPPExOShD7swXg==","mode":420,"size":750},"dist/assets/endpoint/generic.js":{"checkedAt":1708389320260,"integrity":"sha512-q3pvuhJ/NSQJS95oVX9G+qYy18Bdu3gSFeiN8eDgK03fbecBCH9xN7/FZk2NkSRWyRI63phwp3rAhNIYrgl+Pw==","mode":420,"size":1987},"dist/assets/utils/vendor/image-size/types/gif.js":{"checkedAt":1708389320260,"integrity":"sha512-PaaPIOU8eD30k1UftOmjpQ1z44TfVSLU9wQG4RagNmA5jIPqRF53wUKwlAtXMaNXQyv6I3uWa6F0LmCIJSphTA==","mode":420,"size":292},"dist/core/build/graph.js":{"checkedAt":1708389320261,"integrity":"sha512-cWsXPk+ygTYLr8dRruXR5kz5MlYDjE9GriysUn+/0X5wCuH8waoEJ8q+G51PJ6LwIQz1uZo0TwL5xQU39FHP9g==","mode":420,"size":1224},"dist/runtime/server/render/astro/head-and-content.js":{"checkedAt":1708389320261,"integrity":"sha512-x52EV9ksbpCGhY3FFKFOTsf81+ehS1KRG4vRaoN1RCITSHOuJaDyK2CgW/4o3bkzd7BDkNN0CnUgcbQM4cRDkw==","mode":420,"size":332},"dist/runtime/server/render/head.js":{"checkedAt":1708389320261,"integrity":"sha512-uH/gJ/p57YV0aQLC0vVUlgqDfYcvBjcqc1sNFhiNOB3ckecLN2nsOK6cH8hmR3R5q9IKb9jbobg0arAjoeR4Ow==","mode":420,"size":1412},"dist/assets/utils/vendor/image-size/types/heif.js":{"checkedAt":1708389320261,"integrity":"sha512-eNjy7AgUj31xQiFAcmlO5NYP+0LHSis4YUmROysmIVD1/KG2IE6e3POC1v5Z4fho7JsIfey8uUCTxSardSCgkw==","mode":420,"size":1567},"dist/core/redirects/helpers.js":{"checkedAt":1708389320261,"integrity":"sha512-9Wk5Z8g+KWm/M7Vqk013fa+XbtwsBlRDM9xFhplSDuSYZ61XbjerpLkB1idyu4me7SNEyx/V3dOROmU8jxEA4Q==","mode":420,"size":1169},"dist/runtime/client/dev-toolbar/apps/utils/highlight.js":{"checkedAt":1708389320261,"integrity":"sha512-0B2DTdvUUD1TNsFa5q15g7VTH69D/WOn6gEF/3W6jdHMHv0o2Y9ZQBbW7DtY0RFjJ0RYGqFxAPcbYWGwzbgTbA==","mode":420,"size":2175},"dist/runtime/client/dev-toolbar/ui-library/highlight.js":{"checkedAt":1708389320261,"integrity":"sha512-PncYmIRIGigVvDcy2UZ6IqP01hWuQ0MeUXsKrYEOxUT9m4CrGnLVzZsm3oaI3sM6KpWGOES3sk66HT+eCLtwVA==","mode":420,"size":1801},"dist/runtime/client/hmr.js":{"checkedAt":1708389320261,"integrity":"sha512-ArJdOAndGMksUhXRpKRPB2RlYdQCC3pwh8fEtuNlk2KXgnr20mNmJ9ACibQgbilRYIqUuJK1zRYjvFsTKH+7XA==","mode":420,"size":25},"dist/vite-plugin-astro/hmr.js":{"checkedAt":1708389320261,"integrity":"sha512-see/3fp5enarUPdyCGsaaOWDYfMECpAxctOT7s9ACc6ixb+Pj3BeCXSee4+nWM/TR5yLOGptKHFbr33ijq7B8A==","mode":420,"size":2407},"dist/runtime/server/hydration.js":{"checkedAt":1708389320262,"integrity":"sha512-im3ytsYjuMfpeq/btuunUeHOmBUyYKXB4zMqt7MEhMXroK4Ulv2J/N/dC0hcq9e5nl9pmNQmemo/ga57cPTPMw==","mode":420,"size":4002},"dist/virtual-modules/i18n.js":{"checkedAt":1708389320262,"integrity":"sha512-nK1Ob72MF71ve80zUogmRKrzcCdap3Ru33AlHcO5Tan+enx5vHXMk5MTHKe0tzZmOlbtZelKIMysn6ffidXmqA==","mode":420,"size":1568},"dist/assets/utils/vendor/image-size/types/icns.js":{"checkedAt":1708389320262,"integrity":"sha512-33+iQ+s6AU90zNgu3cVXX5IhjfGRRqE4uoNjxKmjZxAMpHuZWgFDcqQNVDiiiV/q7je7cz9siF7deXmB20MsaA==","mode":420,"size":1926},"dist/assets/utils/vendor/image-size/types/ico.js":{"checkedAt":1708389320262,"integrity":"sha512-CNxaqSj0FQpiDkTqEx2il7ws4514SUQ4dxRE/BtSyV6xSc9ufaEZXqSR49DTCSbF4fOTi6OUKiG9yyApLcxvKw==","mode":420,"size":1201},"dist/runtime/client/dev-toolbar/ui-library/icon.js":{"checkedAt":1708389320262,"integrity":"sha512-4DXrgPNlakVtQq419N9pwY2O8H8ECXfCtS2u/gP8YOTZNwBvjg4IdubVuBBGPfdMcnEd7hc3m5BSTzin0LvqZA==","mode":420,"size":916},"dist/runtime/client/dev-toolbar/apps/utils/icons.js":{"checkedAt":1708389320262,"integrity":"sha512-U05aczSLMjJjaItrxAsKFW6cF38Z0IuYCjCCVorX7GmSJVBnotOC0rRE4zcnlQ70CQRHGIfA0660cQL3E5AHDA==","mode":420,"size":1071},"dist/runtime/client/dev-toolbar/ui-library/icons.js":{"checkedAt":1708389320262,"integrity":"sha512-zJAYTXUO4LdGf7SioXWwwg/m+/iM3RDsoualfqNIpH1WFf4uaKz0sAyAiMxytur3k6Cr4CkWvEkhIKkdqhEErA==","mode":420,"size":30249},"dist/runtime/client/idle.js":{"checkedAt":1708389320262,"integrity":"sha512-H85DFEjshCLlhvl2SH+2FtsZieF8OfpCL+MHFDe3V475YCHlYb2LnXY0p3XOMID7dwBRLEJLsG+brMfmehsVdw==","mode":420,"size":313},"dist/runtime/client/idle.prebuilt.js":{"checkedAt":1708389320262,"integrity":"sha512-sSbtAC7dnSHauhERF+nC96sMxqbZcLq8LQ23LK5ePNa+3JB8aTJUCC5C2y4o5EnMR8NTCeID7P8WnkTaZHcu+g==","mode":420,"size":299},"dist/assets/services/vendor/squoosh/image_data.js":{"checkedAt":1708389320263,"integrity":"sha512-Iem/2bOX8vBIchlmlo3o+PhaHdcegLJI7EUclWzJkb4x4ekRJ1tK+k4a2Y8aX5aeDEqhD/b901cyQjlTrnDgJg==","mode":420,"size":655},"dist/assets/services/vendor/squoosh/image-pool.js":{"checkedAt":1708389320263,"integrity":"sha512-QllGyqq0ZM1dJ3IqpjBWdPgYrSxp+pgSi2wOIUXMU6o/0fLPUv4f/XT5q7a3WsQ/Wj500lj72fBLifc0ivgglg==","mode":420,"size":2753},"dist/assets/services/vendor/squoosh/image.js":{"checkedAt":1708389320263,"integrity":"sha512-KO+zr9Gi+gGfMbrKN8NPe6fiR2NyTsRJJZXsrhgT0VTpHKSwRMImOXJ1unKHX/aTJZwEjMdTIq7KwHsmbhmHBQ==","mode":420,"size":900},"dist/assets/utils/imageKind.js":{"checkedAt":1708389320263,"integrity":"sha512-9ZgbGDmNu32xqW7ACtbjxjaMf3eUEpT3mL91wQhJErqVvuTsNy4fmfe6f3K8ubNcNNa68CtkjGKIdKALzIm9qg==","mode":420,"size":187},"dist/vite-plugin-markdown/images.js":{"checkedAt":1708389320263,"integrity":"sha512-jlkerjCjsv+IrnCuukRUSGKPdRmSKOTAW8KCIF6wGSTEiwJVc8FpIFz+Vz8IXSfX9AWLrrM2pzcfPZ+n8QwN3g==","mode":420,"size":2357},"dist/assets/services/vendor/squoosh/impl.js":{"checkedAt":1708389320263,"integrity":"sha512-2fpASHTohuFX4Te1qxdb36PSgGfooUa36mBJadw5ABhYaOUVOpqpWhg6gZdPYZyj0ijusgJzXDpjR18X4nA6ng==","mode":420,"size":3355},"dist/cli/add/imports.js":{"checkedAt":1708389320263,"integrity":"sha512-1mD442y8kFC187MuSLQ5NStP1MRK6uETAuDiueEAe1o8guqUk8vTK1Y9SkfuWTTKB9YtvlDV0vUTlit7n+FIaQ==","mode":420,"size":1089},"dist/assets/index.js":{"checkedAt":1708389320263,"integrity":"sha512-RRQhmsMl/z9+oKG9/Xzc/5qsIioPfLUrHv94IfCRxx7z9eTY+Z/m88/3Kfs/F3kz2P7yjzYwadRN5RLRlHR0CA==","mode":420,"size":252},"dist/assets/utils/index.js":{"checkedAt":1708389320263,"integrity":"sha512-RM4a08OcZpIaehJhK1wCTUcblLyiWEq501i+081EHevN+jMDT4j8oLme3YbuF9E8LJcboFWm8j4ciUuyvWNmuQ==","mode":420,"size":664},"dist/assets/utils/vendor/image-size/types/index.js":{"checkedAt":1708389320263,"integrity":"sha512-mlzw94Us9kc0UHy78OuI7gDYXWsf07PGyPO4dEmhk9so9USQeWg/EWXiNdlbJJ6FdKWHql7mQReVxs/HnR5bYQ==","mode":420,"size":1013},"dist/cli/add/index.js":{"checkedAt":1708389320264,"integrity":"sha512-cMIpsR/98vvEiA5P09BYWrlNkxC/XtfwDZ79ygWOmHxfw7jDTY2JPG5DNsw+JQjNnhlwp5OgmhNKs7y0Hr+mWg==","mode":420,"size":30000},"dist/cli/build/index.js":{"checkedAt":1708389320264,"integrity":"sha512-FECzhuEFoRPThjWiBMnfF1dXRpL7qy3e/1W5s2Xmf7CB1DPub1c6qV6VD+K0jIiY7Yw4JVbLXVfXLBoEUoEcHg==","mode":420,"size":708},"dist/cli/check/index.js":{"checkedAt":1708389320264,"integrity":"sha512-bfiL3KfS1/eUm828dkC4FX4him0LF6AyBTdhzw9S++is8tyHVzQsL026ytj0lzpWsBU6in9dZMP4Dour80kcXQ==","mode":420,"size":1359},"dist/cli/db/index.js":{"checkedAt":1708389320264,"integrity":"sha512-RYFPFZmTPyrNDLYi0miYFu7aqDTygvM/4q1XJoWwAJlNQ59im69J/EOTy+IyIxij3bxFQRlASDuoJSFBPYjkxw==","mode":420,"size":853},"dist/cli/dev/index.js":{"checkedAt":1708389320264,"integrity":"sha512-yexaeLdtb03IZVPsV92t8R7iXVvvsFAkHQp8yr7yC/YANdZQCDruG3XqLtQA4c5Q5B8PchGHymKjHcX6uSNyQQ==","mode":420,"size":1052},"dist/cli/docs/index.js":{"checkedAt":1708389320264,"integrity":"sha512-7fa8XA8mXLjymkwR4NGaK3ckuaaHkU4DjyW3BeKUS0NvNVFyV5t9XZZ3VArU6bpqTDpGbVKz4vyyJrlrUyN6vw==","mode":420,"size":479},"dist/cli/index.js":{"checkedAt":1708389320264,"integrity":"sha512-L4MwMQ9p5y2IGiJxIE1qbzBWwC8ngWoegykb3v7tenjx+UW0WIJwmE1fS/CuDZ6KX5CqGbrFHnpYoDiLtVGaPQ==","mode":420,"size":4789},"dist/cli/info/index.js":{"checkedAt":1708389320264,"integrity":"sha512-QwXJZxpa7yJrXOLST19eEa6AxOXfBaBQMKkZb0bcjehQzRcAa7OpQtZzH3ohimiW0x+Vq67CAymr0t3IzdTjxQ==","mode":420,"size":3250},"dist/cli/preferences/index.js":{"checkedAt":1708389320264,"integrity":"sha512-ejNMuZfDK4CjFxzBWMAGjMMF2+Muvq0tNGPtQ+EIMAddAY0eOOqusfq40wB+ejrAJHjGpB5rsV092NtcghP1pg==","mode":420,"size":9734},"dist/cli/preview/index.js":{"checkedAt":1708389320264,"integrity":"sha512-OTV16W3J9AD3WULoJQmJ5DJepxZLwc6yT+7ov9lT/fJhf+DvLQoSBy40X4KqIs4i9SDxN27DcUkunToB/vP8hg==","mode":420,"size":1142},"dist/cli/sync/index.js":{"checkedAt":1708389320264,"integrity":"sha512-BHuFanfNw64Ww9Oph15GjUqwgdO2XO8bUo8cnDIQhmOhNCjR5u7+pp37Iu7dfWIKFxtqjOfI2Le+URocnZWLbg==","mode":420,"size":621},"dist/cli/telemetry/index.js":{"checkedAt":1708389320264,"integrity":"sha512-hvYxug9p1iIPqC41Tu2ZPylS1wVmirr6cJ0zcIv8kOkuQoKPdxYp+VCVYEjmXwGw2sfhgJBTqBmHweidcVYd7w==","mode":420,"size":1288},"dist/config/index.js":{"checkedAt":1708389320265,"integrity":"sha512-1r4sMPfXxFtaWjBEgDWmIszLv54gEWUQv524gUz4OZQdcNvlW6VG+JXYruq6lXe/lQ4usYO3xBmkNtkfrlXSOw==","mode":420,"size":1443},"dist/content/index.js":{"checkedAt":1708389320265,"integrity":"sha512-DMufX6dWo/Ebgukhc2Ae9yQV87nGVtyJuRMCyT3WTlFZ7EchtUs8Z2YkHKQNEVyIW7VNbGgPRkJ6pIHb7NMITw==","mode":420,"size":880},"dist/core/app/index.js":{"checkedAt":1708389320265,"integrity":"sha512-HGRLXa/6puKxDkKHqerfXY1+Z33kvt895el8jmwN++3giQZo1wvTlM72iFEo4Q3VVcUld3pJPKJNZtRU+YS3JQ==","mode":420,"size":16748},"dist/core/build/index.js":{"checkedAt":1708389320265,"integrity":"sha512-ECUjfVTGsLsW3XnYVBMZnn/BJUaDYUSi6YSZ6ABmf9ZSSKwPZAi/pAIecKIS+7GfnK01CB3m7tFQEhj8jLBJUQ==","mode":420,"size":7217},"dist/core/build/plugins/index.js":{"checkedAt":1708389320265,"integrity":"sha512-v83VExBHUVPKpG9/mzpeivAEKSqEmNsmA4Q6dQN0o4LBspGKKFW1thHYYixsWMaXq9ltiMCmcLDCPH6kFrlhRw==","mode":420,"size":1725},"dist/core/client-directive/index.js":{"checkedAt":1708389320265,"integrity":"sha512-biEkfnkWdHJXfoCbthNvYIPyYYuPhJFrUuJWAjpWzFPZzXEMVOXJ9BJHWT/xMZG/9DdKB74aLS+JjmALMvHeJA==","mode":420,"size":195},"dist/core/compile/index.js":{"checkedAt":1708389320265,"integrity":"sha512-LqXHaZc/wXTiB1kRQ9lMq40xjhYhKDpUEUHuGrw021OepZHZb65Bp+cC5pL3DcMZSeQmLyTGkY+WFa1tZNI6qA==","mode":420,"size":62},"dist/core/config/index.js":{"checkedAt":1708389320265,"integrity":"sha512-lSYNK1SZ0nI5KavukwMTpIU4ns4vefrhS+VNYAspKyb9pVXp2yk8P+Tw0rKJYJsDx5G8tucAcdV+hIXDZhKSzQ==","mode":420,"size":483},"dist/core/cookies/index.js":{"checkedAt":1708389320265,"integrity":"sha512-TjIlHcU2G2KnDlCRBsl0eEVbmp0a6xqZcj+eMnCtx4JwIbKErzxm394HpwBdab2vfLJJSBhW64C2JjUx63gpMw==","mode":420,"size":260},"dist/core/dev/index.js":{"checkedAt":1708389320265,"integrity":"sha512-HQfSqg/OtGrH1hrmEZvEukXcbxH2C6FnSSsbz9qmYnTY6EOhYb0xTwHsL+kcNldElEcWdNLePr1wjYGCtsiFbA==","mode":420,"size":292},"dist/core/endpoint/index.js":{"checkedAt":1708389320265,"integrity":"sha512-TiXJru8HBpqXgSNH4i83QEY2ppA1vGbFZLDHOVRgMxfvUIoOVIJUm0SkBjDVgYVYC4QB3ZcN356ZoLVoiA5TxA==","mode":420,"size":3794},"dist/core/errors/dev/index.js":{"checkedAt":1708389320266,"integrity":"sha512-NtS7eNGVBNGrYgntWbgWzYbJU5i+E37r7k1q2aVHAb/vxDyf/UUTqtiEbWeQ1r8VkcyMoBbtbtGJ5MRlQuiY2A==","mode":420,"size":202},"dist/core/errors/index.js":{"checkedAt":1708389320266,"integrity":"sha512-4OEiFfe2zseIk+Fqx9SstaDNJT+Fo11HJYI7WcpcT875g5uyqGFu0vSg9w433lQGKDX6AfheBUfHvMR8A7jlwg==","mode":420,"size":481},"dist/core/fs/index.js":{"checkedAt":1708389320266,"integrity":"sha512-odSNBN2tXQ8EqrOal1nw4wQh6kOmVjHpPHmSu/dh8KN8xXhsyPNrly5Bsjjxx2bLnjkAq6lPsx5443c3RWlJUg==","mode":420,"size":2677},"dist/core/index.js":{"checkedAt":1708389320266,"integrity":"sha512-qqaOVj5Aa4k4mg0R/iAV2miG/W7oJSRlqRPBWNrUmPQR2VGdOQ2l3U2PtzMUKrLAFJAKDmGh6W0lpyhCKn3P+w==","mode":420,"size":394},"dist/core/middleware/index.js":{"checkedAt":1708389320266,"integrity":"sha512-w/4Ln+0ZvP24YTC30+TYxesYAIVSTc3ilqgdkyADDzZk7m5Zi0E+Zx+Ln4NU26cm1JzO8N78m5lxd2uxyweyJw==","mode":420,"size":1532},"dist/core/module-loader/index.js":{"checkedAt":1708389320266,"integrity":"sha512-e7dOAp/DPBE1Vim78BaPO1JqvlgnbxXSbfCjyTIyTmnLqxs8NL77s/7XK4Y9czeewJldAtS2I0uv0wS6Y23R0g==","mode":420,"size":137},"dist/core/preview/index.js":{"checkedAt":1708389320266,"integrity":"sha512-3AxShJ5FopsF0c48dT/X4p7PklD6xKo+3geEJZWqNCcyxv1SmVYq6biriFIAtMOqgR2sWewIq+uM5SRVfQUZew==","mode":420,"size":2771},"dist/core/redirects/index.js":{"checkedAt":1708389320266,"integrity":"sha512-9DKP4TjBfP8QDH0nrw+m9bzcqYEaCZnw9x67NbtBmxLrAWyjER9pciyTnbMIDt22erDxE9KjdQX8EVJ/S7X9Pg==","mode":420,"size":413},"dist/core/render/index.js":{"checkedAt":1708389320266,"integrity":"sha512-WTDIgSqAh/QngHJqf2/0agF2fZwHqqDhSV2yTihkKCHqH+052QknMXCfF8BD7xEcmKwfv9NHtdXRlx76xiYwxQ==","mode":420,"size":353},"dist/core/routing/index.js":{"checkedAt":1708389320266,"integrity":"sha512-flhdEHvta29fgOCsSybvL9TXi3hrCtz61r2NW97Ra2AVBped3MiRFNI6fg6843pDHdHY+ROUrXy101H5xP82QA==","mode":420,"size":525},"dist/core/sync/index.js":{"checkedAt":1708389320266,"integrity":"sha512-fWLbykifGsDAhNFVGRBq5ZC6iEU1FS9hyS5TR3jLbjr3aatSfEGCVQ5vkL7DkPuLvFvJGQgPgj+8rc4gNn9ksg==","mode":420,"size":3732},"dist/events/index.js":{"checkedAt":1708389320266,"integrity":"sha512-cyHOM/9jxLPjs0lL5uFkZ9fEJTQFpFzg9v5YXZwsPBXiwaF5Qe/7bKvvu64nyJGkO74ouZcT8gkAeJihAMUWcA==","mode":420,"size":324},"dist/i18n/index.js":{"checkedAt":1708389320266,"integrity":"sha512-/6UnEjChH7wyBvBlYSuTpH8uH/vAD5LFgAYjhPZSvF8E+uSFpCHSdut3yjlQ/u3ki5ReLOdtc1pvGhJyfz2BpA==","mode":420,"size":4345},"dist/integrations/index.js":{"checkedAt":1708389320267,"integrity":"sha512-ev2/jeEk4p2hFm6oIlfTSXiPFaT0m4ytq3tPRB9dnS/JgsX2cm0MAdmDA8mLwfNtRMiIJfbYgK+pD+/s3AShdA==","mode":420,"size":12700},"dist/jsx-runtime/index.js":{"checkedAt":1708389320267,"integrity":"sha512-hE8HCfUulBDUyQhw6bqZ7rPbivFFyRlXhtKnb+g4T8unZIyneJ3so4Uv5uSzwNWJZgxZDwJz+7dVIDFz+sdfLg==","mode":420,"size":2330},"dist/jsx/index.js":{"checkedAt":1708389320267,"integrity":"sha512-uGM56e6ismInDkuTk7mzlEKma6VpXg9qL4vDAo3RrfOE1ZUyLPw+kfZO1lRvzA0zm5I1MQQ1IAiNB/mthD4ELA==","mode":420,"size":173},"dist/preferences/index.js":{"checkedAt":1708389320267,"integrity":"sha512-0kVd+JALJr9WDAL86SxiWdfjXqj5ux55ah/SeZRDSRG4zowx4PgMscloKKgyyqbwsAleAM3leZpj2S5t3LpgBA==","mode":420,"size":2639},"dist/prefetch/index.js":{"checkedAt":1708389320267,"integrity":"sha512-Q8P1RgUO0ePCdGia0rFpTx0SdMbZb25dRAlNXZ6Nj0wPGfsz2Irg9rUlhU+4ztQLIt/Jnyq3v42ai9Yj4c5QeQ==","mode":420,"size":5806},"dist/runtime/client/dev-toolbar/apps/audit/index.js":{"checkedAt":1708389320267,"integrity":"sha512-I2QlUztCV2Thq9ww17hkW2TRiQAKZDNMMCU8L++0/DutNP7xNU7tgyRVavW8sj5DoIpDswXcuilX91QH+n4rsA==","mode":420,"size":9934},"dist/runtime/client/dev-toolbar/ui-library/index.js":{"checkedAt":1708389320267,"integrity":"sha512-sHvLkghEE0RxRitVpTemfIDBnRusWW3MC1QcHyRoG6YMkVFUifEWyGGe73tO3Y2jPN8V++beJEGhHWwWi1pfIg==","mode":420,"size":552},"dist/runtime/compiler/index.js":{"checkedAt":1708389320267,"integrity":"sha512-Pf0yc5frnHu2yPGRbtmrHx8Urn3P1kfYSuaMmDLbWdlGkqnds7fwI9bnyK9SUiV+YRbQy/abGw8AvJYi8s3SzQ==","mode":420,"size":592},"dist/runtime/server/index.js":{"checkedAt":1708389320267,"integrity":"sha512-dEHizgu3ChUnryD+aY0uAOsnodjYK4lkwaL2zZCjsWO8TQh4dmAppO/V63oea2LG8T0Z2YS2tbnu6alJHdTP7A==","mode":420,"size":3017},"dist/runtime/server/render/astro/index.js":{"checkedAt":1708389320268,"integrity":"sha512-ID1Pcsw/IEyPQzrA1FwmZurlfY36aBIB2NyqlI0JpQv3Sv+1SUysnV0TJgrRPTMkfK3MEzceT8eJwvAtqQQPiA==","mode":420,"size":603},"dist/runtime/server/render/index.js":{"checkedAt":1708389320268,"integrity":"sha512-BehXOYryneH5KWILNw/koU2lPrDT6PlZblrqgjikRs+oRo+ad5xhVjTy8DIspVAq2CKvTw6lvJZitQINWpgJWg==","mode":420,"size":988},"dist/transitions/index.js":{"checkedAt":1708389320268,"integrity":"sha512-oYk7w5mSxojzxrwmtP+qx5QcG5q50TQMz10KadD6TpiTd6JveJbFQ4J33Y+Y/mCkWkETjGYO/2RP3yZRUucRxg==","mode":420,"size":1537},"dist/vite-plugin-astro-postprocess/index.js":{"checkedAt":1708389320268,"integrity":"sha512-bieSVAW+GvfvD5+WhLzWAfqJv3UUlaKbuJ7zuXiRdsSMXfriuqqIzPa9FfAIbb6L4l5Otc1D/vDQCsK2QYCyRw==","mode":420,"size":1527},"dist/vite-plugin-astro-server/index.js":{"checkedAt":1708389320268,"integrity":"sha512-ijflP+2Cmd8gYvoZpf2/llvV8kxrP+XPjUiS7B0k5MIz6vrj0sO9Bq5cbTgoAzm1hSCSCf6WmWJaIrAIyaLn+Q==","mode":420,"size":893},"dist/vite-plugin-astro/index.js":{"checkedAt":1708389320268,"integrity":"sha512-37TbsiH0BVIiOaf8/Pz43hvLY71OH1u9eOtGkFvuyc/easasNBx/hrSYoK/drntOiqWHa3WJAzzNg67dk8+lfg==","mode":420,"size":6762},"dist/vite-plugin-config-alias/index.js":{"checkedAt":1708389320268,"integrity":"sha512-rTYD0E3r4ch7c4FDuGpYbCzRH7uI9TNrkjeoEVOy20uVglNAL0IxFnUakoeiXFkFELckLo449509blzWEJi+bw==","mode":420,"size":3202},"dist/vite-plugin-env/index.js":{"checkedAt":1708389320268,"integrity":"sha512-wNLZ8dgwKmDABlwM3c5wbhX9cPZk7OMTztPp1wg1tPxSqk2NczRGgx1bVkAc0DwapSjOYBYK0cdcqSkHlP7D6w==","mode":420,"size":5040},"dist/vite-plugin-fileurl/index.js":{"checkedAt":1708389320268,"integrity":"sha512-GtDykbn/8XFDyAXh78YeNWlEqCdf8cerCPH717gQaMbmsRRNmccGI/SiMRfZq+OgNdhwW+v394EJVpnjdf+lXA==","mode":420,"size":307},"dist/vite-plugin-head/index.js":{"checkedAt":1708389320268,"integrity":"sha512-6ng2P6d367ZF1Mf1LGVH2B2XTVWggb66dV89Nor+Fcf39w3mtognmd3zx+7RRlCOViA6+psQtqCtMVcbevcwmQ==","mode":420,"size":4459},"dist/vite-plugin-html/index.js":{"checkedAt":1708389320268,"integrity":"sha512-31aL/170buC237IFe/blOvxVuTXrvAYLUYftFJC+hbYDS7P9DLwfObDW+s0pKZEb89KCL/h5w/Z9PyLLPstmhA==","mode":420,"size":387},"dist/vite-plugin-html/transform/index.js":{"checkedAt":1708389320268,"integrity":"sha512-HDurq3dgWeFbkU33F69vz0HmTpiYd2eLf8IFuOFxzLtjZwdChOmov+uoiulgEioRHPrfvhCQe8IoX3Z0+8R9HA==","mode":420,"size":723},"dist/vite-plugin-inject-env-ts/index.js":{"checkedAt":1708389320269,"integrity":"sha512-vvFqsjH2xDEUykZBZTYY76Oevz+ILCctb1DtskIn6YfAmJWOB+QNXZ8vM9UW9z/+QRxB9rJfwydfh6BQwuw4wA==","mode":420,"size":2092},"dist/vite-plugin-integrations-container/index.js":{"checkedAt":1708389320269,"integrity":"sha512-pBoeopAJurVibj9a+qy/7lqKiwEFC3xh/rBqA2ZE1N4KHId7M2znWRZz4S1QK2GrujeDEeC/WVztOK2YdefD9Q==","mode":420,"size":1049},"dist/vite-plugin-load-fallback/index.js":{"checkedAt":1708389320269,"integrity":"sha512-Ca2UP/1Kx/fpAHhziUAe7lU7t+H4VFTVmd6O0HBJ5FtbbCCyDAEykZbIO+om6Q/c9cQkUZQA18QI82whIej8SA==","mode":420,"size":1630},"dist/vite-plugin-markdown/index.js":{"checkedAt":1708389320269,"integrity":"sha512-d0DDhEFX0Erp8QJNw1C3gAgyX0kE5G4dl+xt+vicJbqGzrh9u+EV6z519ReeV0slEIQe/PcFsHGH2JGCx9rZOQ==","mode":420,"size":4842},"dist/vite-plugin-mdx/index.js":{"checkedAt":1708389320269,"integrity":"sha512-06WRpIaiceFPb7AFwFJtVYBlINivpoAHT1LmeVGab0U36WwURUbkJzWvxYcePuyq23qlon/NoWKMIITk8NAUaA==","mode":420,"size":2755},"dist/vite-plugin-scanner/index.js":{"checkedAt":1708389320269,"integrity":"sha512-THuP7Q66pdGqWQgs75X32buFh5CnSHYb74x8Xj2sAfNPV/79Nf8lfrvBmAUP6pWE/Ye+CP9GTKwKzGkA07CmGw==","mode":420,"size":2078},"dist/vite-plugin-scripts/index.js":{"checkedAt":1708389320269,"integrity":"sha512-ny/uvxV1rpzhi+tCMudLhazDX1gkp/sreAb29pJg9vB7FQGdtEf+tQpEYZ0cuObgx3IB1Tp63i2gSonZ5xcMZQ==","mode":420,"size":1552},"dist/vite-plugin-ssr-manifest/index.js":{"checkedAt":1708389320269,"integrity":"sha512-ZiC1yLzy6MzCRfWsgwr23VTm4593YQNi/sDvucQDxeh/rVr0UKHmiIopFoi7tfi71vU0QYy1j+Vn8atN6UgBZg==","mode":420,"size":652},"dist/vite-plugin-utils/index.js":{"checkedAt":1708389320269,"integrity":"sha512-/VuKxI45r/3QDPjrtOJ+qpawwlnIiEMQEMfAsOLqsXQm5d6fW7zh9GcHHdsO9EMWjAg3+4/9NJBttCE1f65TuQ==","mode":420,"size":1342},"dist/cli/install-package.js":{"checkedAt":1708389320269,"integrity":"sha512-0ph76B9jElhZIAgf+TgcmkR+CP/67qoJPCy5oxuI7Af7XODyBWc11eKd1l/jx9i64SgOruvSnbP9lF7nSsBWnQ==","mode":420,"size":3173},"dist/runtime/server/render/astro/instance.js":{"checkedAt":1708389320269,"integrity":"sha512-j14jbaQrISe4cwpRc/LJHRLefNfzsHuRqVa5j3PJ7/tIPw/dcxmOdVw1ndHyE0zwxgjQ2BVa8HP0VDnVZmg58Q==","mode":420,"size":2402},"dist/runtime/server/render/instruction.js":{"checkedAt":1708389320270,"integrity":"sha512-s5p24LFd536GHbGobmnWedS3ZLL2PO6UipbcPC/voSaMaE9NezTayQIwiI6psXVD6y6XBBmLJ4AV8ZOMkyuD/g==","mode":420,"size":383},"dist/assets/utils/vendor/image-size/types/interface.js":{"checkedAt":1708389320270,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/assets/internal.js":{"checkedAt":1708389320270,"integrity":"sha512-rxkMruWnvNg4kVXRvpBcQvMv3dqIQ//GZjO1AQPAFvW/d9TVmXUNuGvBSmziz+ug3QYkD7jLthze1eDVWEiojg==","mode":420,"size":3989},"dist/core/build/internal.js":{"checkedAt":1708389320270,"integrity":"sha512-mdIDiax2uz3y4Ytnik8Gtrsp9IEokhHI0XoSDbfPHV66JDNaW6782wsZjRBkFiG2YJog3/teJJkGfuLES0zYDw==","mode":420,"size":6408},"dist/assets/utils/vendor/image-size/types/j2c.js":{"checkedAt":1708389320270,"integrity":"sha512-iNaVjj8pO39FrKH5D+t+9+99E4E6Fg4dzPTh9gSbTM6M4ie0nEaRDYbEmAXeRYunEMtvsb0bHhW5uTfUXmtfNw==","mode":420,"size":344},"dist/assets/utils/vendor/image-size/types/jp2.js":{"checkedAt":1708389320270,"integrity":"sha512-RBOWH5hjvcPzZzg/x2lXV0d81YuvCrbQi3JuZInSnWTFrSuPOlbo0dEzZzycUpXMj9ipMTcEuVI/E7bObi7Sig==","mode":420,"size":726},"dist/assets/utils/vendor/image-size/types/jpg.js":{"checkedAt":1708389320270,"integrity":"sha512-ZxaVc/4vIp8hgWP+KXyP11OEjF+RQLv0QZQzRZbnZmy7SVoJ61OlWpOr3QNc/BDp+NCnBenndgENaStISB7v0A==","mode":420,"size":2952},"dist/runtime/server/jsx.js":{"checkedAt":1708389320270,"integrity":"sha512-a6WFR6F8wsB/Np/BkXxkXlvtUH2+mOfSi0vjSvsCQ8JulGNXDkRVrrXyAh2FrfocNJZgRt3JWUDifmYWZb6rOw==","mode":420,"size":6899},"dist/assets/utils/vendor/image-size/types/ktx.js":{"checkedAt":1708389320271,"integrity":"sha512-1nQHW8IVb8Fx6oDw0zMbCLmNPRfRYpfd/f1uxdr9mwYiNoFDlre+a49p11UBwfD8LehIMSCrqYdvKvuqzQOHYA==","mode":420,"size":470},"dist/runtime/client/load.js":{"checkedAt":1708389320271,"integrity":"sha512-wB5FL+7v49m9jy963caXjlFc/q5/DA61kYkgYlaWWCUGmCQD9XaeEDT18ZwYgVkLNfSGzlXtcDcwFyp6GnH0nA==","mode":420,"size":166},"dist/runtime/client/load.prebuilt.js":{"checkedAt":1708389320271,"integrity":"sha512-8CvCrqfndcZqQpNo8B2VG2JkusBbS/PBSCWEpWy9Ef4sBE0LHs/OOrUGefYoTJixGQGqhPW5O52Vosp6NxRJhA==","mode":420,"size":209},"dist/core/module-loader/loader.js":{"checkedAt":1708389320271,"integrity":"sha512-nVwbHs9quDAJyGahxerT6ZBN1rF84TcPNpfCnYuAY2tgnz3TMh3Z1XscmK9KTSeNzZRxvg52gogM0gYyjlWiOQ==","mode":420,"size":677},"dist/core/middleware/loadMiddleware.js":{"checkedAt":1708389320271,"integrity":"sha512-/uwTh6FBP8UTHbkRCBVPHobYBfMDiqcV9Ywf4BCmKNHdOXFkG7vrL2FPQnZBMyJ8NyLw5n5hw0PVZe52DJ5lhg==","mode":420,"size":445},"dist/core/config/logging.js":{"checkedAt":1708389320271,"integrity":"sha512-MfbtcCfIyQKG7whpibjjysVoz6ICS6QOqDklOriDcZBDK+W2mkWtWak+0DIe/vai4MWWrI3Rcsz1w7xeGeif7A==","mode":420,"size":335},"dist/assets/utils/vendor/image-size/lookup.js":{"checkedAt":1708389320271,"integrity":"sha512-/ZP7VMqiXTzi1xGGaFWwrPQdmuCIsMDYDF/reDusSmUXwWHSkuTf8ZSIizoaTEri5Mf2Bk6ySPT7/lfkG9dC3g==","mode":420,"size":677},"dist/core/routing/match.js":{"checkedAt":1708389320271,"integrity":"sha512-gylnMnIwj8F0nhlHZZVO8o2YOwAw6NEAa0U25XrrL71OJDYw/y5ktQ0xcBSnf7r5LIo8zqZZCiWjdaiqXTRdbg==","mode":420,"size":457},"dist/runtime/client/media.js":{"checkedAt":1708389320271,"integrity":"sha512-wtQBMdHJ1/vvyZipxINPq9Hn65ydgBpSydGZZQ4YLYC8CHHAHh/8AMqOXfxCQHb+9JEr9xWnNr+3MYjipu8Usw==","mode":420,"size":391},"dist/runtime/client/media.prebuilt.js":{"checkedAt":1708389320271,"integrity":"sha512-Jy3o5Dddz4M7sh/27SC6C1JysAxJf5cawYV50UrzQzTmOHGVVKi24m2b//SlGfDA/NsMMMKWkMIjFjVtvI53iA==","mode":420,"size":322},"dist/core/config/merge.js":{"checkedAt":1708389320271,"integrity":"sha512-8RcSgbciIQQ8XVt/ZMZtyqlZ2lfaJXuBPLLJ/GgKN1ULNq+pCOOK/b91xfTGeO+csfnHyJUOeCUox5/+KScm3w==","mode":420,"size":1639},"dist/core/messages.js":{"checkedAt":1708389320271,"integrity":"sha512-oWBDOwFTwPOg/UF3pPYI7sC0Vy0sasXImLvilBBSqMriymCn+ra4zCYx53bj88fOXGshUDSF0He73nqzPCTm7A==","mode":420,"size":9831},"dist/assets/utils/metadata.js":{"checkedAt":1708389320271,"integrity":"sha512-snCb/DktZ8XqJ7teYUi4XkGnFAgJliC3s0V7KOHF2xlnIR9TE/yYYg9XT3nwzVtdtVg/xXx8KibvECWf8/LDkw==","mode":420,"size":675},"dist/prerender/metadata.js":{"checkedAt":1708389320271,"integrity":"sha512-eFruT/ijl6I8vcujtAnFmce0eNNWfvnS+C/AguLrZSCx4JgAIF5iuZWS2ubwOdchueqfpYq/jySeuyL0rVo0LA==","mode":420,"size":464},"dist/vite-plugin-astro-server/metadata.js":{"checkedAt":1708389320271,"integrity":"sha512-KIFWkbI0eBSN9sfhbkfRxJ8GiHC7FlKcLD3Nn6N0llB3gR+2HOzditwGuGdXQz5HkX5D8N4qSwsxno0eTqxmow==","mode":420,"size":989},"dist/vite-plugin-astro/metadata.js":{"checkedAt":1708389320272,"integrity":"sha512-PhNSLIBjGzxI7cxVipxBHztLPjznbsPwY4WhvlsUHZUBax0yuD+dMqPCpXPQPTJQeBz/3NxjdT8K/oRJqjBegg==","mode":420,"size":151},"dist/i18n/middleware.js":{"checkedAt":1708389320272,"integrity":"sha512-6QvOVYslFFWyPYhGPSlJ0GGFywW+ynj5mGN+qRYowaRZkxHTj0Hz5IB2sN0rBKOD0s8PMd5t8LKFA9nXkVbR5g==","mode":420,"size":5759},"dist/virtual-modules/middleware.js":{"checkedAt":1708389320272,"integrity":"sha512-4laa0Pt0QX29KbJZaoPGeUJZeeaBQ7KDILAugejGt3730TSOpAwhLi1a01lHp+J7HLZ7hkm2wObuFEi8XQjSKg==","mode":420,"size":117},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_enc.d.js":{"checkedAt":1708389320272,"integrity":"sha512-+jKcBjfs7aRFUKIInX1owl1xBn+CJkA8Qc8m8Iprdf8kLzzjjrexM9MLAJsp8GhVNTPwp7oxNOkBnGpO0J/2Mw==","mode":420,"size":435},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.js":{"checkedAt":1708389320272,"integrity":"sha512-2QuDMpzONZmjxoz4r0clBOmiFKuTQ9iPWlDOFqZ/YHsEEpRx0zBxutFBvEGXiISXUUge5wCMvA0HHLfJElyQCw==","mode":420,"size":52961},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.wasm.js":{"checkedAt":1708389320273,"integrity":"sha512-KRAWTs1ZA66p1CyUd4ex+XfWUXxImLQCWL17tnZYKuRdr0YU0+gRI4FWxp5GcIXik0Xh7576tMVVSNP0IZHYdQ==","mode":420,"size":218742},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.js":{"checkedAt":1708389320273,"integrity":"sha512-2VQbGp39wH61o8HrDdOXzCP5AcTRuOhiWYKisHM+eBdaS0ZLKA+Qax8tHmnNmcnlP7eMud0rYo0zAu00dCJspw==","mode":420,"size":56841},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.wasm.js":{"checkedAt":1708389320274,"integrity":"sha512-rpLmCy/QQymjF9KjKdlpt+J28CJ9VWTiMEv1tsgaISNdSNpn9F3uWTw4trEIQD8m7OJ5eWoT2G0PgJMX+dVQKg==","mode":420,"size":336050},"dist/assets/endpoint/node.js":{"checkedAt":1708389320274,"integrity":"sha512-UY9xMFBY+KcD8d/inZm1WlKOEQIeb35yDecvSUS52M/RoaGPub4GTElQ6/4nfCu8m2OC5/dvVKeWgZiQcPXASQ==","mode":420,"size":2566},"dist/core/app/node.js":{"checkedAt":1708389320274,"integrity":"sha512-GzT+TOAOeetUqMRBAiEc7S/cE5T+GLDLE2/mfLMt9DMk9qdivyFsDpxmNFaXVFk9v4WuAWOhkN9U7YGRS0clZw==","mode":420,"size":5034},"dist/core/logger/node.js":{"checkedAt":1708389320274,"integrity":"sha512-Gwk3BxxcJ+przpKHpje/epSkr7YRQr0bPaaxMA3tNZ3QiX35eNtNfHG0oip7Vksea7xYyBwSWnCXkk4Z0jlPBg==","mode":420,"size":1105},"dist/assets/services/noop.js":{"checkedAt":1708389320274,"integrity":"sha512-JnBCRFCEg6RcKpZZ1szdEkXI/Uw06Fl55E4nw0p7qTytKv4D1MCpU0kH9wwk0pbFYzAOs9Uew0LGweeIryKzMQ==","mode":420,"size":324},"dist/runtime/client/only.js":{"checkedAt":1708389320274,"integrity":"sha512-am3okonO4frGiZcmE3BrMNqs70r0GUFBv/cLLZuVQolUMxBp1lMtiGhUHoRy/Foo1OgB/6SlY8Pku7DRmTrUhw==","mode":420,"size":166},"dist/runtime/client/only.prebuilt.js":{"checkedAt":1708389320274,"integrity":"sha512-TSsRVjXTASrR0VLCFSTO8PEfdSoVULKr9gFw0KLEJcI/cUVeQ60y3W4M9a3XqHoOU6NZUjakV024oHBES9ftUQ==","mode":420,"size":209},"dist/cli/docs/open.js":{"checkedAt":1708389320275,"integrity":"sha512-XV25CXmCmh0yidYVNZgTZYuYKZIviryt/ngLV+kDJanAY8o6946vCxxf4drOtEhW8jwBcjkY2+xc0QWnH3B9jw==","mode":420,"size":828},"dist/core/errors/overlay.js":{"checkedAt":1708389320275,"integrity":"sha512-o2RZDKhPYNWxNgO+0BBAPK6C5QWMdPpRedSR92yii2o3Hp4Q+gms/NrMd7m7fEHAfr4f6ePz+P4UL9Ka5gC0bw==","mode":420,"size":19043},"dist/core/build/page-data.js":{"checkedAt":1708389320275,"integrity":"sha512-S2vOb3IInaVPK7LXwW/sQBdZ84Qvl3pGJcKgbf+ApM8u4jYnZU9desxqO7d263ZmsmneV+Gk6mDmrVz2crBNFA==","mode":420,"size":2159},"dist/vite-plugin-scripts/page-ssr.js":{"checkedAt":1708389320275,"integrity":"sha512-LnrHVKe4B+/6pmnOhbd6l8IAvxXP215ZjpSGyF0EIPGQ8EqG5Ff8Ja6kgSAkELHRoSFOhkvsv1d5e9cMlqjobQ==","mode":420,"size":1023},"dist/runtime/server/render/page.js":{"checkedAt":1708389320275,"integrity":"sha512-fbhM3Pn+AbLAYDmsy4yV3NYXwfUiXHCJ+cSf4C0uFZZ99Zv3UqypkwsLRecPNbGMmKi9bBR/HGKlTjAFllSzYw==","mode":420,"size":2072},"dist/core/render/paginate.js":{"checkedAt":1708389320275,"integrity":"sha512-TNiWUB9nCzgEcekrw0rx9wRVe8Uyt77xZpXjtrt3uuEDGfIrE8V6BTZ9/NHCY0tbd1qP3TXwEBjlK9Eu6Dq91A==","mode":420,"size":2224},"dist/core/render/params-and-props.js":{"checkedAt":1708389320275,"integrity":"sha512-wD8I5QJQeIBRE1iyYYSSmrd5PmtmGzms6tZqejjC5yZswFgU6S4yvJXHmoE2kT6R0a+TVePk68gYcGqiyE0/YA==","mode":420,"size":2297},"dist/core/routing/params.js":{"checkedAt":1708389320275,"integrity":"sha512-fAOEx7NWLkJ7WXw8qnSlFNlOHJnZ0IBHq7RAMXMekp1WDFmRnoantP6BeF0R1ZE1QdOuHbl8nfrSTEWIb0wPtQ==","mode":420,"size":881},"dist/core/path.js":{"checkedAt":1708389320275,"integrity":"sha512-yngkOD3clteMUwqL5CsHCnyPRG3t6XD7beR6x5TxCz/Bs84yqJ2nGcYOL4owuA//gSAS8fag77i1+4wibrLLaA==","mode":420,"size":48},"dist/runtime/client/dev-toolbar/apps/audit/perf.js":{"checkedAt":1708389320276,"integrity":"sha512-WMV5uA7njvJS4sYQbuvOkkLwIfqNoXALJAcTqpq1hx0l2+s3mQoS+TlB6Y/AbMljuKoEdKR5/2LcPhvZNtXcrw==","mode":420,"size":4004},"dist/core/pipeline.js":{"checkedAt":1708389320276,"integrity":"sha512-Kb7GkVd0EzoVN2InsqlUVkfXKdknxeF6q1HE6RMA+W642roVsPkAEhj9EWGtbC7AxpQ0pNulMzPT6/nm+4pswg==","mode":420,"size":2859},"dist/core/build/plugins/plugin-analyzer.js":{"checkedAt":1708389320276,"integrity":"sha512-7LMf96+0rJ4cNsIY3M78WkoKAyI+6LCww5dVaHsEfZGooboNauzEnOhWARUD7qozj/1DiDxyP9OVe5o4FSd0Rg==","mode":420,"size":10041},"dist/core/build/plugins/plugin-chunks.js":{"checkedAt":1708389320276,"integrity":"sha512-Bd8Y69RXAUtncHt46tHjK6j7Xb7PgNoIISQ11u5/9uWFs6qqKWg+BtLWGWbO9e44iLad+kXDKu+EHUkCckX7Fw==","mode":420,"size":593},"dist/core/build/plugins/plugin-component-entry.js":{"checkedAt":1708389320276,"integrity":"sha512-GwFqvzTpiyU6WkZxgJST69iVWvd9TCMzQx79F/ApKIgf5Pj71lP4t6+6f4Idyk22IIBcvKOC3cMK56GZGGXeew==","mode":420,"size":2256},"dist/core/build/plugins/plugin-content.js":{"checkedAt":1708389320276,"integrity":"sha512-MYHFNaKrzjopRFFrWAgDzdZI5mNi+egP4VfXithu9XT+5GskaRKmqvvEUOqunmFd77pQwpXzdlDnUwP6g/Q5TQ==","mode":420,"size":10109},"dist/core/build/plugins/plugin-css.js":{"checkedAt":1708389320276,"integrity":"sha512-2ZePbG3cZ3ZZVfXevwIU/eui0EoTYYc0oJ9zZGyQ5w6TEfxHjB94nesimRQBepHzr/rarW6S/AaICJ91BU2jqQ==","mode":420,"size":9362},"dist/core/build/plugins/plugin-hoisted-scripts.js":{"checkedAt":1708389320276,"integrity":"sha512-/nNZugI8Bx3oMNaZlq3n+72QBX1f99bGNySDJuwqZRbIS7Hp6xTLnO7483ZvqL1ANr+GsIBvlO/6LSpWm2qqpw==","mode":420,"size":2911},"dist/core/build/plugins/plugin-internals.js":{"checkedAt":1708389320277,"integrity":"sha512-UKyl4a2kF4G/mvhCFs/nb3WHxUfB1Y/mL7bTEF1pmRecYB7EBLOqD+AzIMYwIWT+NHcFko+jjvQN8n+zvNZJRA==","mode":420,"size":2320},"dist/core/build/plugins/plugin-manifest.js":{"checkedAt":1708389320277,"integrity":"sha512-U1dq6rxTGrEyvRK4H+B+/fOICXb4QMd3a9iEsjt9V7l2eW3FN2nisIb491xpeiTFEuLcqcggv14qXofuYwaegA==","mode":420,"size":8194},"dist/core/build/plugins/plugin-middleware.js":{"checkedAt":1708389320277,"integrity":"sha512-rdYxba8N8YK17MyMHcfGfSJ9udXpkHV3lv9Hqauy/Ig7cUue0RsDhSncSjRFrzLvmmVoi9iQwCPFIx2V0oQiNQ==","mode":420,"size":442},"dist/core/build/plugins/plugin-pages.js":{"checkedAt":1708389320277,"integrity":"sha512-PnqX2Hx0LFACGBz0qC6E8x6NezKYubZY0U7murif84wmgcg6ryIdYUQpn82w2B6BkM/ipAfoKSRp8W/xq58Eug==","mode":420,"size":2654},"dist/core/build/plugins/plugin-prerender.js":{"checkedAt":1708389320277,"integrity":"sha512-0sOgN2o1oZbfOT0JUsoZ9xVvRnANF1avKN8/1EDjmOlRiJVmOhEwZkBkWQ3L5pdNCkib0PE2B/QYdlh1wfmVyg==","mode":420,"size":2549},"dist/core/build/plugins/plugin-renderers.js":{"checkedAt":1708389320277,"integrity":"sha512-bKpvHXcdp5X/JDLyh7cKxBe3UvhB7h+X1H9DaOA8czM6eIIW31GIs/bq0pgRZMG+QhJqlPKjCO0DEkHbbMCR9A==","mode":420,"size":1569},"dist/core/build/plugins/plugin-ssr.js":{"checkedAt":1708389320277,"integrity":"sha512-32Lk5JFtTPaxaC95jBYml3k5GocTN1I+jpeivEqgVKuWNVUJUXb0RqWjK3EC5XYxjXGY1isEVghOSAOX1lL5Rg==","mode":420,"size":9155},"dist/core/build/plugin.js":{"checkedAt":1708389320277,"integrity":"sha512-qhimDrz8NonVhz012B6EOxcRTv5dOdW4ntVnIbNEs+sYd5HTPLDA1cDMIytHaiRcEI5Qu0qBiDHY08o7qlsLWw==","mode":420,"size":1650},"dist/vite-plugin-astro-server/plugin.js":{"checkedAt":1708389320277,"integrity":"sha512-4nTSZ6VTl4DD9rplAGEVlIXLQYqOadLxHecg3g1j7xMdde8soPR1TX8aimrTW+WW8QwW2ko1V+aTqRJg6zrjEw==","mode":420,"size":4439},"dist/assets/utils/vendor/image-size/types/png.js":{"checkedAt":1708389320277,"integrity":"sha512-e1lOwpsqAbejFsMAQibx8ZZakS4EOpMkB1irzm5b6PqZfYi436ZsPRWURan9KXXh8zBFo4j2zDtkGju9iXFV4A==","mode":420,"size":871},"dist/assets/utils/vendor/image-size/types/pnm.js":{"checkedAt":1708389320278,"integrity":"sha512-/jSkBb1OGsz09iXlBrSqilmmmDl8QLBdA9hNjqb0FYywPDIx1TXllW2/pCo1p2CPbu/ioIUZC/1uSlEdCzM5Xg==","mode":420,"size":1568},"dist/core/polyfill.js":{"checkedAt":1708389320278,"integrity":"sha512-Ar5tDRTsclcvm4hGOQULXuLf4Rigt7/u2J2ipr75PFL9JZSyPLN53beFwe0eI6smRzIugfFAUT4SL2O0cMgPsg==","mode":420,"size":340},"dist/virtual-modules/prefetch.js":{"checkedAt":1708389320278,"integrity":"sha512-Cwa91rhfzO8SwBZYXiZmxriPe1RozrZDOuAAg5rcsuwYl+Uo3sHPEjr7oHgd7X12xYuc9K6rcgjFktV6OCjd1A==","mode":420,"size":38},"dist/core/errors/printer.js":{"checkedAt":1708389320278,"integrity":"sha512-Q695o22WUep0gFpdniLsOofbwWm2UXHtcIKwAL2VmLiR4BXw6Fuu11KVfMzWGcyCb+xyYmvpJauVmkOxlTB6HQ==","mode":420,"size":933},"dist/assets/utils/proxy.js":{"checkedAt":1708389320278,"integrity":"sha512-Ge5m+IPTBwapPIPjKo4/nupXiczZa/YLREfaQG8rDB7IPpLEpZfqv2qPszL+INW8d29JRSMNL3IqwamnYBJ/Gw==","mode":420,"size":524},"dist/assets/utils/vendor/image-size/types/psd.js":{"checkedAt":1708389320278,"integrity":"sha512-YHK1lTNSZmVJ+vA4RQfImCkKiMAUCoY9hU8cr4dlFpdONqXDrsb93uUh/a/V3/iHnC8RtBVJGdTt92go7FlGxQ==","mode":420,"size":257},"dist/vite-plugin-astro/query.js":{"checkedAt":1708389320278,"integrity":"sha512-kTNIbCFWJrxFub/jmFa4Lhdm0MO9JK5HulbSG4aVFGa3TN+KbjdiQ13FAcSHWhq9nlBd5qpLyScGrhuSFVWa1g==","mode":420,"size":468},"dist/assets/utils/queryParams.js":{"checkedAt":1708389320278,"integrity":"sha512-KvEEN1GHLIKmQPBqK6s9fZOf4Sa4yrggSpdRg9Lr9xIapI6LnddWJWzfbNN9WPDu4DWRrHkrqRdsOha4YLb96g==","mode":420,"size":346},"dist/assets/build/remote.js":{"checkedAt":1708389320278,"integrity":"sha512-t+EXKouvmoe99HJ0MAy6uJtoRJNJQLUs66KZudHrDqldDPTyyjUiy9CGnWC9PcZxJho7S6OiakloWbagGO+Tgg==","mode":420,"size":1030},"dist/assets/utils/remotePattern.js":{"checkedAt":1708389320278,"integrity":"sha512-IYL4sInmDRbUKbZGhhvZGCE7Q9CXwkX2bXOWU1uNRGb6fLi/vOrc6dl9awIJfrKU7traYj1dbIdBPHGUTjzDiQ==","mode":420,"size":2123},"dist/assets/utils/remoteProbe.js":{"checkedAt":1708389320279,"integrity":"sha512-OlTL8fj+3zvb+f1H6AZ1d1MR+WD1hvhLM0B2GgktQvLFG0F0Z7nMooBV09dfBIXCW2TDyVkn/8iIIREMN5d9Gw==","mode":420,"size":959},"dist/runtime/server/render/astro/render-template.js":{"checkedAt":1708389320279,"integrity":"sha512-HT87eP8vhkPknMdaUPzSqWuo4M2m78YL1iagzKCXK7jy30cSmQjCgKj2m1lGJRyaSVs/yvdkP8MwSFMBp7kpNA==","mode":420,"size":1615},"dist/runtime/server/render/astro/render.js":{"checkedAt":1708389320279,"integrity":"sha512-1/GZMaKBVXCwCw98XOkd+HIk+NiING6ZZgOLAqcVicE6ILzjg4WV56dg7xCZD6lQrKBDkZNWhZ3GtFC4peiv+g==","mode":420,"size":5895},"dist/core/render/renderer.js":{"checkedAt":1708389320279,"integrity":"sha512-OA1vv+iwUual1fenhxUtfmXSTrrrLL42D3KvMCDZ0MvVa7bGErcEUiQ/bToA7BOtqWK4wCYa+7/3X7yZVP69lA==","mode":420,"size":278},"dist/jsx/renderer.js":{"checkedAt":1708389320279,"integrity":"sha512-ZWVmsZIT+jeseIxmikk+CNCz1SyBrEibRDlmqCkNcjfBZCj1Cbv5AJUUlBDU2P9ORsn5vuEjVB0+QPtfODzC2w==","mode":420,"size":576},"dist/core/request.js":{"checkedAt":1708389320279,"integrity":"sha512-v+EDfTvIMN+484eFxtxjqurS5thSbS7M6ZPSy5wrBNDa2o7VPIz4ZlgMZfMejFmYW/Tl5zD7+DvwumJ3jaPRfQ==","mode":420,"size":1125},"dist/vite-plugin-astro-server/request.js":{"checkedAt":1708389320279,"integrity":"sha512-Iuj0Z1+69YrGrXJm5wlgi6PAohuuvb9MCRMljRWcQDKF21+992sYUSOpSZO9CUkkrSddNRPKLjzng2vzWOvhUg==","mode":420,"size":2298},"dist/vite-plugin-astro-server/resolve.js":{"checkedAt":1708389320279,"integrity":"sha512-oZkoaCYpVhhBBbUfV9wiWAePEZzRFT7omRPfJCmaqYm6o7YF5jq/Xwk8e8AjI3fnAJQ4zu6NVbnCt07RKQp/yA==","mode":420,"size":203},"dist/core/cookies/response.js":{"checkedAt":1708389320279,"integrity":"sha512-xObxAeiMeyxwqtTgsaYniUtZCmkXuNQjUbaUeNtO0eNKUzI2x+BtmZaFT+ErWctAG57lP8mgCJwkr8dkL1pmYQ==","mode":420,"size":804},"dist/vite-plugin-astro-server/response.js":{"checkedAt":1708389320279,"integrity":"sha512-HLbJWPjwA7N4dONarQgUNvedGZ1i2u/fJ3WAtAcfpCSEAmbpQg79Kdet4va+Cg2eH6P+CJpJrEbpHvaJgzx2Bw==","mode":420,"size":2733},"dist/core/dev/restart.js":{"checkedAt":1708389320280,"integrity":"sha512-Hcag5IdyRXAyPnqW7y2uql4y5AJRl2ZMOmmg6DHgHE6XONMKUNWUz57U62af6sskDV8pudc60UTtc6N+2M4N8A==","mode":420,"size":4796},"dist/core/render/result.js":{"checkedAt":1708389320280,"integrity":"sha512-iBj0bW6SN8yycUBPcIykxjq15RdGGku169ibr3z+TLHRZ/3ui9fviAzENbUQCVJJdR9JyYcyzTfBo8bZ5qp8MA==","mode":420,"size":6628},"dist/assets/services/vendor/squoosh/rotate/rotate.wasm.js":{"checkedAt":1708389320280,"integrity":"sha512-wPy6TkbiZBAIZWhEtJThpOvoe4bbq+Gc5wFuAdaAbllHSip8p9BTmZU+FYysC4Fi0ILzbu0nwoSYkQAYZoa3Hw==","mode":420,"size":1918},"dist/core/render/route-cache.js":{"checkedAt":1708389320280,"integrity":"sha512-VbuBjPr1vx+7ZVT1SZ0d7WGDn/Imf1Nc3vrvDCdPKIMjP7h/GyCe2YX7rS8VRduTGI+NmGURFOA5v7nSiCNnzg==","mode":420,"size":2459},"dist/vite-plugin-astro-server/route.js":{"checkedAt":1708389320280,"integrity":"sha512-vhSmETZSKFN7GRpPIj37q8E/55FpGfMQHfqfUzm1uG7DuAFfTGSUhQYUTfg67Qwt0TrmVFwa0alVJUGPCRlrtQ==","mode":420,"size":11837},"dist/transitions/router.js":{"checkedAt":1708389320280,"integrity":"sha512-pGDZOhaTTIh0OuTPAiodSynOlqkazz8KnMebgKB/dd+X8ybLzz+dCyNBafmbu2tmmR7rEOv2AkhBEWScUGoQrQ==","mode":420,"size":16786},"dist/prerender/routing.js":{"checkedAt":1708389320280,"integrity":"sha512-JXbHygnnTrU1EsnAIpZoHbmm3GFnM0p4K4aEzXpBLuY2CoVUQPhdWCkHiiOh+7p7bEpsve458tk5MctsoN3BKg==","mode":420,"size":1631},"dist/content/runtime-assets.js":{"checkedAt":1708389320280,"integrity":"sha512-/WNmv2+BmQTkEan2EPyicZTkp78n+oSIrgRZUWnAsQrt046+IOxnnafIcE2N5/yOxwPYkYtaHQJByQ7vrxJyFQ==","mode":420,"size":774},"dist/content/runtime.js":{"checkedAt":1708389320281,"integrity":"sha512-32mW+8ch2R3z5p9GNdAEJB0cIPi8Odl/bTzGVV5+ezcUE/ilw8N22eIvUu7dFQJp+96LKlQ4YM1WdH4EomsnDA==","mode":420,"size":9567},"dist/vite-plugin-scanner/scan.js":{"checkedAt":1708389320281,"integrity":"sha512-v/Rdd/l27p7HevaQY3T0j7HGxWboayN5F+j/ZHX1ypCkNu2jCGwYRIrxZukuM/sIKrkJZyb9c2g90xXwptSFAA==","mode":420,"size":1778},"dist/core/config/schema.js":{"checkedAt":1708389320281,"integrity":"sha512-FMWdb52B2thjWdGDfZkqSYTl0wGBBfZIyXKU40+6C+UWaTAaf8lkyybPw3tjhXsGeJyrLiMBwZQQ/ADWccFkKg==","mode":420,"size":19115},"dist/runtime/server/scripts.js":{"checkedAt":1708389320281,"integrity":"sha512-b8nCGXpHlzGXeiqh5TTiOp0XAt5o0FwJNSaYyQRY9IetKdD5L57dYs/DtesZzJmsfpNkuqJ434aMi2hcY2msLw==","mode":420,"size":1374},"dist/vite-plugin-astro-server/scripts.js":{"checkedAt":1708389320281,"integrity":"sha512-r2H9B0H6evP/OaWkz6BXd1eU+Tkbkioo/Dr2bknyMJ60fPaXtBctvafYDelQschnc8plsFFQamgH+Fue6/rhTg==","mode":420,"size":1235},"dist/core/middleware/sequence.js":{"checkedAt":1708389320281,"integrity":"sha512-05vm1xISbMDpMDezojrzbIlBo1+qbZQYTkaRi70tWauZFxd4pf5xmDYVcuNmccwKNLdPZfQQBKwHEPhhpO499g==","mode":420,"size":711},"dist/core/routing/manifest/serialization.js":{"checkedAt":1708389320281,"integrity":"sha512-+oOsC0tPDMtm2fmppFtcKI61jgcsxorX+BhN1wV1u3ikig/TkvsFiuZME7tEu9IrglbmORlxW54keMH80tBHLA==","mode":420,"size":1301},"dist/runtime/server/serialize.js":{"checkedAt":1708389320281,"integrity":"sha512-sPC1mnm3zxu/n8EmJuXQHWp3p4cE50z3RS3LTmFJaZBEqzpBSLVqnU1kS1TGigB8vqqhYEn+IfWyBOOcRYu2lw==","mode":420,"size":2918},"dist/content/server-listeners.js":{"checkedAt":1708389320281,"integrity":"sha512-KYGSmDwI3PSQWtOStUJFQ+jhyjtNJyPQMHKajXiYK7cQEZN9EjTdlMY+JuxFM1xyjdiJSSU0I5xluQEV0LP5mg==","mode":420,"size":3534},"dist/vite-plugin-astro-server/server-state.js":{"checkedAt":1708389320282,"integrity":"sha512-XdQ55n2beLln5Uxg7o9ddYbp6waut8H6NElWlIqQa3f3x9KZsadxzZkf93Uq1PK+Uk9isvbQHivAWX/wOoZNlA==","mode":420,"size":1017},"dist/jsx/server.js":{"checkedAt":1708389320282,"integrity":"sha512-Q4bpnstUfsl4OaTJcGO/UAurqb9QjHipXyYmNq76qHa5+Wa2UriAekgHkXPCuQUXQ1+UXFfF4dh/S8nYWIOOIA==","mode":420,"size":1516},"dist/assets/services/service.js":{"checkedAt":1708389320282,"integrity":"sha512-W5fz0h6PxB6EAX1mvD+SmlAk/Hf0TrywUmn/nFkHdvHNGtR7AdBfk6dG+Pk2ATvtEjzXbtw3fGwcT954v6rb6Q==","mode":420,"size":6991},"dist/events/session.js":{"checkedAt":1708389320282,"integrity":"sha512-+nitglGbkpcx2Rc33baMJQYUq1PaJgIUKwC1X1hydkmG/fyzN0uI7BJh1SXh8/3zC4KGgBkzCuJrzybx8Wcg9Q==","mode":420,"size":2505},"dist/core/config/settings.js":{"checkedAt":1708389320282,"integrity":"sha512-13AKQZrpM7D32UHAwVy9uDEKMuxQGlZRm4sZIvDr/7RJaoIhXv+tdImrdpZmsDkRknT2XiPy9UpxU0G2+ILtUA==","mode":420,"size":4343},"dist/runtime/client/dev-toolbar/apps/settings.js":{"checkedAt":1708389320282,"integrity":"sha512-qT/QjQnz4TZU3n+MNwvUn70a6OYV4uaw1wWadNpBZ0xx9gt4QTGrrNT/1i3froBchAjrGID4LUWjP+lVFl9Dbw==","mode":420,"size":4344},"dist/runtime/client/dev-toolbar/settings.js":{"checkedAt":1708389320282,"integrity":"sha512-zkYLZCpb+bllftpSapzWrkGPK0lKfQxOEjCsSOX+EVXePKbzlNm6ZPP5ClluVlzAhzlpGNE6eoestWgpZqetXg==","mode":420,"size":1258},"dist/assets/services/sharp.js":{"checkedAt":1708389320282,"integrity":"sha512-/06g1gbAXTW8mewz2DkZLnBATfmDxUOwXQSq7vo76VSCZ17VHLb2ClYeh5BmSBjnZl/BajC9dUFI0UdNbJpEGQ==","mode":420,"size":1912},"dist/core/shiki.js":{"checkedAt":1708389320282,"integrity":"sha512-G7DCzdhG+9tvO20UyaiG2L+oXeUdfGBOIVfEC8TkhoesXK1x2oF0LGvuYqOd4jfJo9Cg4l4rwszpj5riq/sETA==","mode":420,"size":459},"dist/runtime/server/shorthash.js":{"checkedAt":1708389320282,"integrity":"sha512-pdRF8iKq/adNVnjtWgA3tekuGrnQMUb9M9+ELgKImZAQf1Xeb9UiJ8dAZIifQFPC0T7Q7u5j2UWpPlgxgiu1sw==","mode":420,"size":2008},"dist/runtime/server/render/slot.js":{"checkedAt":1708389320282,"integrity":"sha512-xeKZqQaC13zdFU1paaed5XGSoTuil1CuEe14L28rlS6ldIfoQWjL463g+2LKP9Y0CVaJ1ueq/r8rCYZE6KeMvA==","mode":420,"size":2071},"dist/vite-plugin-html/transform/slots.js":{"checkedAt":1708389320282,"integrity":"sha512-z6QhWHYMMHB7upf3BKlWCEzLTACj9HkMB7OBRGtJBYDpYPtwkW02Jd+q3QniZ0k/toKypQAP+8PBaiQa/H7PTg==","mode":420,"size":1036},"dist/assets/services/vendor/squoosh/png/squoosh_oxipng_bg.wasm.js":{"checkedAt":1708389320284,"integrity":"sha512-4W2LtqQOMbBydKcGbtJuxnoobOBeq5fdMJr7+mUKmrnZJ93nTzVAZGPFNxckU1lW5KgqVAU4+gJ/XLwu4dkPVA==","mode":420,"size":359000},"dist/assets/services/vendor/squoosh/png/squoosh_oxipng.js":{"checkedAt":1708389320284,"integrity":"sha512-dXYAsb6w5s3RO53+YMrx5F6G8QKmAztGwmYHsGEfXd6G6S2XZXdw03YDNT8e0k84w2xNGpCRYAILHVXe3lsG9g==","mode":420,"size":2884},"dist/assets/services/vendor/squoosh/png/squoosh_png_bg.wasm.js":{"checkedAt":1708389320285,"integrity":"sha512-spHhqyh+FJM0NMrUzFSdI3q7JzWgPd5ilXvxBUTBO6I5uLmEeYaUOHoZ6Ot9wo+fkt89cmyouOXQ5rk3Dj1GVw==","mode":420,"size":165046},"dist/assets/services/vendor/squoosh/png/squoosh_png.js":{"checkedAt":1708389320285,"integrity":"sha512-3rdLInve57b1OvfovfwHySdCNsQz66Y/MD46JSHOdY8JFXh7+jBOBKfxuCV0nm15ZOlPJ09dXxYMLWTJdvOu0g==","mode":420,"size":4358},"dist/assets/services/vendor/squoosh/resize/squoosh_resize_bg.wasm.js":{"checkedAt":1708389320286,"integrity":"sha512-uqQjMuaDceuo8WviRDlRuthRkpJM7c9JrAQ1C+MKMHp/edPV1oYpEYNtoHL18mFS5s67JKrNM+snBHeag6IZkQ==","mode":420,"size":49524},"dist/assets/services/vendor/squoosh/resize/squoosh_resize.js":{"checkedAt":1708389320287,"integrity":"sha512-X7t/K+xgM6U/Vt9THvTLioma+0uYXTsHNgWl2aPJlc/n+QDkQ/01NBOLk7ClyMjMa3I+JZQ9EVqQ3OA5pQF3/A==","mode":420,"size":3080},"dist/assets/services/squoosh.js":{"checkedAt":1708389320287,"integrity":"sha512-MCAXspNqRJL8gli5GzXdGSLz0zNeW7kUWMGD5VrXyAb3Cm76uuKBKaGCKS6QVrknfu0KQwjfXloYPqAbQm/jnQ==","mode":420,"size":2479},"dist/core/render/ssr-element.js":{"checkedAt":1708389320287,"integrity":"sha512-qyXSaHcW4UEk1dnhTC8kVKdStwtb3Eeih6wrKC5U8FT43QBsPYLv8yGqfOlC45DXTuHCOcNbYQDBwg0AxIqK5w==","mode":420,"size":1890},"dist/core/app/ssrPipeline.js":{"checkedAt":1708389320287,"integrity":"sha512-l7SHRYQLkrD6AOP4BX21VguuOYNlQBSseh7yA9nq3sMGCRIkfiZuoqXCKp4iIyymyjSpw27TZbb13sX1piqZzw==","mode":420,"size":118},"dist/core/build/static-build.js":{"checkedAt":1708389320287,"integrity":"sha512-bch2EELt8G0NG8CjIOoBv/sBTxmXJoaSCJvZ4hl8irZ4bLahlZNVDQIt3lTQP+8wh8OygQXpKdLxJGiuJOniwQ==","mode":420,"size":17220},"dist/core/preview/static-preview-server.js":{"checkedAt":1708389320287,"integrity":"sha512-bTl/j49u+/qslZi5HiPJzfHkEjh6d/1Jnv03TolnTTRPdaFQgEwF4OJ9Y/EP2f958mK0jgbjFZUYZKbd7dl5Ig==","mode":420,"size":1972},"dist/preferences/store.js":{"checkedAt":1708389320287,"integrity":"sha512-eVUC5HN66EFwa56QR87sjtIiIFwd3SlQGAeoNlodM0nyql2FysIl719vBcba86EsgT3HNij1G8n+W4nxy/Ss5g==","mode":420,"size":1355},"dist/core/compile/style.js":{"checkedAt":1708389320288,"integrity":"sha512-amDMaV+6j+QwkGW0tKK4k9b0a+gv85W7wxiZQ6TUZJzc7rTRZzRimA4M9JnClxutDEOXRCQ09mx5IyfrZHWbKA==","mode":420,"size":2251},"dist/assets/utils/vendor/image-size/types/svg.js":{"checkedAt":1708389320288,"integrity":"sha512-jPQ+91NsgdPRXdElxI+OhL/v1qZEi8IxUksTCoPdYUn1Sm94Esn546D4lNYs3fEsvxpZGvAAkIoW78rW/6jupA==","mode":420,"size":2386},"dist/vite-plugin-mdx/tag.js":{"checkedAt":1708389320288,"integrity":"sha512-OMXhjVGQsDhqaj3rIHTDOIIvnAnhB0tP2jxMA+Nq+icBhrib3GaVvbR26eKF8DBFIpA/kFT3evmLymYcnsTTaQ==","mode":420,"size":4023},"dist/runtime/server/render/tags.js":{"checkedAt":1708389320288,"integrity":"sha512-3IhcFO6TtZoyutuisQ4/S9xDrPf7r7Ug9iySwiTOJtlXeGsE9p2qBW/ANwSYiImvn481zU/DQ8zdM9XjIf+p5w==","mode":420,"size":715},"dist/assets/utils/vendor/image-size/types/tga.js":{"checkedAt":1708389320288,"integrity":"sha512-PrcBr67Mb7XtsBGuuwaokNRoqglGQtBMRKBvAbTHw4IDYYXUfQgMDcwC82D+5JFN5m+Fl4Y9FxNoz8YfOdCgMA==","mode":420,"size":297},"dist/cli/throw-and-exit.js":{"checkedAt":1708389320288,"integrity":"sha512-+ZP8CaQ4LEgumAP/oHwXhMUmhB2GNSUe0cOoSiSOFLrqju5PMp9azJ7tUy57dBEi7t6/IDfN4qxNtUEwGks+fA==","mode":420,"size":1010},"dist/assets/utils/vendor/image-size/types/tiff.js":{"checkedAt":1708389320288,"integrity":"sha512-Qn3yWbLTQeMafJYfoIuJKKFL05+v6jS5HrkVKaEIilGFPG8hPkbiZKBBhOjDxXHg3t7XfyYAr47gam9EmCjptQ==","mode":420,"size":1811},"dist/core/config/timer.js":{"checkedAt":1708389320288,"integrity":"sha512-GbkoLHm8Ypa6qV/UHhXGTI/SiFfWoVNTPnXTDT/Ht42M5fpkvybqKYNKDmc+9kBuyzlgfblPrxIqj+Z5IKE6ew==","mode":420,"size":1161},"dist/runtime/client/dev-toolbar/ui-library/toggle.js":{"checkedAt":1708389320289,"integrity":"sha512-kYA/cCUwrRqp3CR/1Ltc4AxtfS12p4rbn0LFHkUocOm8lHsDBcVTfqKmvVqCTh3r50x6DO9+Gx174UY+N9oCFQ==","mode":420,"size":1363},"dist/events/toolbar.js":{"checkedAt":1708389320289,"integrity":"sha512-8p0j6eDzyq9/xw6pXq7Pr81Mbd2xnvyQqomCDJdzcRGOIAdu8vrx7Py37CiiWdpXpmgLBCvmaWK/rvaIASr+bQ==","mode":420,"size":243},"dist/runtime/client/dev-toolbar/toolbar.js":{"checkedAt":1708389320289,"integrity":"sha512-qsYk+OCWB1DT1XGlyS+f+d5hic4t4L1xQOXMm4bSVoXjrSWn5onV+mjayvsqirMRUUp2qf5APAP7OIHkPTLVvA==","mode":420,"size":14737},"dist/runtime/client/dev-toolbar/ui-library/tooltip.js":{"checkedAt":1708389320289,"integrity":"sha512-y8NqJOavBptHjqp77uJTZk0n9/bqD26b61aJCEDoEavM/bJ56eKGrY/e8QzXFx7j2ubAk/3DySan1fkGakahyw==","mode":420,"size":3996},"dist/assets/utils/transformToPath.js":{"checkedAt":1708389320289,"integrity":"sha512-7BjAGackHgk3m9iqc3IcShirE9bPTHm5sbfdtJAVPFyi8u1lBJ2CXz5amYhnvZSSVcx/Bkz08/zERc3ZQ1j/OQ==","mode":420,"size":971},"dist/runtime/server/transition.js":{"checkedAt":1708389320289,"integrity":"sha512-HtT+88veiFoX+f+VdWKbFvwR8ADa+ADSyR9d9R1Ir/la80giseYWClkkrEvk5VNVE6PecJD4WeT/YiRthTNglg==","mode":420,"size":6224},"dist/virtual-modules/transitions-events.js":{"checkedAt":1708389320289,"integrity":"sha512-n1coOg6lmbFWzc+nlhxcey7SGmVAx3gr8rMWfuhuZe5H2xYH76eN8xy0tOtJ9iH9ZIkuR1PsUjh72xKLEInxww==","mode":420,"size":42},"dist/virtual-modules/transitions-router.js":{"checkedAt":1708389320289,"integrity":"sha512-UkPDrV9F4e2Pq61742FsO4SNLd0+yDdUlTotNH7M+j1avSRW4q3Rkd8TJl1Sf6qBCXIHAaCGqYlPB3IRa+Q6bA==","mode":420,"size":42},"dist/virtual-modules/transitions-types.js":{"checkedAt":1708389320289,"integrity":"sha512-SEwqCjbyYCMP9Jf/z0Y0Ifpd8tpdjVojasL5Q6nwEI3jMCebjusZ+lr1ySak15ld5PxFSQZitT4pR0LG2NobCw==","mode":420,"size":41},"dist/virtual-modules/transitions.js":{"checkedAt":1708389320289,"integrity":"sha512-JuK9/cDukYXZNZXQCqfHS+HQAOYamL0ZuCbRn6H+7sNe1nK/forBWLyVyUvbgPddPxBWdLMa3NoO9Vdygjr9JA==","mode":420,"size":41},"dist/core/config/tsconfig.js":{"checkedAt":1708389320290,"integrity":"sha512-GpWSQm0LXnHtqhgCks4kZmKun5QjNRbMi/VVgZOuFSoxyXdxvpfJ104q6vfoeqvCML77V8BqDLFUjvbsabYbag==","mode":420,"size":2990},"dist/type-utils.js":{"checkedAt":1708389320290,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/@types/typed-emitter.js":{"checkedAt":1708389320290,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/content/types-generator.js":{"checkedAt":1708389320290,"integrity":"sha512-0VQWJJYSu9v9uKeJ8h2s+XvsDObiWJslBJ3hYEcIjMLpLUlyP3K4DYA9xQ2osHvV5dwTSFGXrDG5qLekEEourA==","mode":420,"size":13271},"dist/assets/types.js":{"checkedAt":1708389320290,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/core/app/types.js":{"checkedAt":1708389320292,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/core/build/types.js":{"checkedAt":1708389320292,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/core/compile/types.js":{"checkedAt":1708389320292,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/transitions/types.js":{"checkedAt":1708389320292,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/vite-plugin-astro/types.js":{"checkedAt":1708389320292,"integrity":"sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==","mode":420,"size":0},"dist/core/errors/userError.js":{"checkedAt":1708389320292,"integrity":"sha512-8CT1v4kInvpKw6KnAbKH3m9ibp+8OH7sav/z4eAiP0ezQCYxmNshMwXV4MVSQVvEdj9+To3b+AFWV0v/ISYyIg==","mode":420,"size":89},"dist/core/build/plugins/util.js":{"checkedAt":1708389320292,"integrity":"sha512-DwkYHRvuIAK2qTO4qsN6bkiVqx5j1yvIsPKW0CUvz6aRNUuF+GE2lP6jK2DOFGfQ25KOOxhuGcZm8KMC4hhIuw==","mode":420,"size":1726},"dist/core/build/util.js":{"checkedAt":1708389320293,"integrity":"sha512-PcGvjOkzgIK/PAoblnJOXmjvLF9EwqAOh6am+lYh3cj6yZHN146HXQ4sQWx1ySouEstnYfsKZXFzQ5UXkX3UGA==","mode":420,"size":1359},"dist/core/preview/util.js":{"checkedAt":1708389320293,"integrity":"sha512-HXhFr2FubCpj39dQXOWsU0AJYfqUl5Uw/9+AaDFd2qVSMBTg+3wNlb+kRT0VuHtFTih7uXry5F16A13mWbB9Tg==","mode":420,"size":432},"dist/core/util.js":{"checkedAt":1708389320293,"integrity":"sha512-npg4x4DxhHiTce8dCATOkBa75HZVv97XHoEiFQMVE46XAmOIH9fLMuqyY3A9J0VP2OLUNX/8qkmBAFnrnXW9kw==","mode":420,"size":5971},"dist/runtime/server/render/util.js":{"checkedAt":1708389320293,"integrity":"sha512-ZosKcmJfPPBG7vEjE/MnCNG/dzeApFwElwrBNVTGqtF3XiCi6y0vunoXjWd+6S9wgSs3wMVohxi4qOK26+lsaA==","mode":420,"size":5341},"dist/runtime/server/util.js":{"checkedAt":1708389320293,"integrity":"sha512-QEYD6+AvX9J4QMfxWy15vc/WGsVv3YmynTNCONJ5UnZJtfyeKTGFHPBkaFnnxkLGJ6v/gQ62Q9fL3hQqBzskMA==","mode":420,"size":424},"dist/vite-plugin-astro-server/util.js":{"checkedAt":1708389320293,"integrity":"sha512-rxLu+bBV9Q39/bQWQhT4dcr7CBcUg0VISgtC8OnJkkOkZeFoLmYozSGpaE6VfV1RImEhxJjoKZE0/VzxPuYX7w==","mode":420,"size":279},"dist/assets/utils/vendor/image-size/types/utils.js":{"checkedAt":1708389320293,"integrity":"sha512-s3i5qtY8cixG2EFH/SJPg32sEXZ9jT2vMApF/w3HnGmKPxWA5HloAHKKJiQs25VzVhcwO8qDfuhVqQiap4ZbUw==","mode":420,"size":2160},"dist/content/utils.js":{"checkedAt":1708389320293,"integrity":"sha512-07TfJa/hMEZ/sb4O6/ZUF0uMs/CwcWteWpV4rO2KBi57AiJRp9m8QfwJVWkXoQX8dcTNKSlKkCTSBv23phUV4g==","mode":420,"size":11126},"dist/core/errors/dev/utils.js":{"checkedAt":1708389320294,"integrity":"sha512-zJxrlpi0Ftz3CT/Je6ZQQ9ODb2r+1YqishYkQ00EUWd9J4hQEnu5eBNgq2AwhfSHJ5w/CUiJtDDrMILODNm1WQ==","mode":420,"size":6547},"dist/core/errors/utils.js":{"checkedAt":1708389320294,"integrity":"sha512-9Qle+KYtcoUg1iZgMXCRmv6eAmG/sPpb2i6M3vua2TXGzpl5QNvsPuhjChbHBBBPVVo1ydbJ2Uixkx2W6r1grA==","mode":420,"size":2080},"dist/prerender/utils.js":{"checkedAt":1708389320294,"integrity":"sha512-Sw/L4yVZtsJvaiGh/vIvi5LpOfy2+lE1pI1LH4nwHyXofsl70lDFcHQCmW7owvfAyyVL7w1Nalr8vWCAey7oQg==","mode":420,"size":513},"dist/vite-plugin-astro/utils.js":{"checkedAt":1708389320294,"integrity":"sha512-Cb//99n0sw87xRbA7LgEYrSffQWZRSHiOXV+E7ZSZ5mHCMKcby/tY5w3uRVYVM5OO9MPxFHcZK5Xl3KagzfWEQ==","mode":420,"size":69},"dist/vite-plugin-html/transform/utils.js":{"checkedAt":1708389320294,"integrity":"sha512-sFMBr2wDZ96dAgE2M+MpwoujnxpOL4muf6BV1w0ZPJR7G3Wti9uUDOgY4lEYhWLomAf7d2BAoP3RCciJg8sxuA==","mode":420,"size":1603},"dist/core/redirects/validate.js":{"checkedAt":1708389320294,"integrity":"sha512-QZNHsNYeM6ryjHv1G7si3PFC1sgFbTyE7AxvqTccFn2ab94uBVdY4OPx5V8avzuqoWRS0C+wepu23W+geuCRpw==","mode":420,"size":321},"dist/core/routing/validation.js":{"checkedAt":1708389320294,"integrity":"sha512-TSAS+uikzdXPvFg/l4yGxCkwvAnggq4XcWPZH7k8mMhlcwftbjDYovdjROl8horPAYEpYWByY9Ccm6OJsyjLNw==","mode":420,"size":2508},"dist/runtime/client/visible.js":{"checkedAt":1708389320294,"integrity":"sha512-bu15xDz903akGkSOE3wMi0cR+WZI9J+EsYGKa1JqoSF5N+dZT19KE38Mt4+/fVI17KmOpyDgWxq/TqWZ/cwxSQ==","mode":420,"size":642},"dist/runtime/client/visible.prebuilt.js":{"checkedAt":1708389320294,"integrity":"sha512-G7/a/fFFMGwn75NH1kaOQmGSVgwUCWMzLgGR37Pzr2Qo6t+YVll8ZBcyEk2p+43dvn++4GIL87d2KEqbQxm8BA==","mode":420,"size":457},"dist/core/config/vite-load.js":{"checkedAt":1708389320294,"integrity":"sha512-t+MZP2NTYpQVWtO1CsaYmOQ9jIUztiAAKrlh3fK47f2uCQ01abs1pYG7pe1eyClCJOkBm/J3Q0GcVwUmPDDseQ==","mode":420,"size":1579},"dist/assets/vite-plugin-assets.js":{"checkedAt":1708389320294,"integrity":"sha512-g/rSkiipFeTYLEq+oA5udstLPaeHBSkzVfWMZ5EhzlmGgsZ1lKMr4YdaQa3mqV4S59HIg27l4oN90EJJM89aGQ==","mode":420,"size":6767},"dist/core/preview/vite-plugin-astro-preview.js":{"checkedAt":1708389320294,"integrity":"sha512-EbhcjhbTsh6vn57I0KvHVM3YAy8hrpuokdPAER4uAHgGfmc9NDAqhdW3ILmE93SJ3x8nfvPIC60bTUfK2NQ5gQ==","mode":420,"size":2777},"dist/content/vite-plugin-content-assets.js":{"checkedAt":1708389320294,"integrity":"sha512-ntvr9ja0GqezwJcQhKXk5C8y1YrzBz8P0794++OFoe9ScH5O4ZNF+jdvank+ChWCoSie/aRhTmS5FNBC9fknLQ==","mode":420,"size":8653},"dist/content/vite-plugin-content-imports.js":{"checkedAt":1708389320294,"integrity":"sha512-UYZVOM4DfS/vCiIk24O3BVcm9OEG5hzZXlwcN8VQlQyglBLHavnu/iVWBGymJlB5Z33TimAgMKu4p/SItIa1gw==","mode":420,"size":9814},"dist/config/vite-plugin-content-listen.js":{"checkedAt":1708389320294,"integrity":"sha512-XwvtAsA2eeu6nAC5VOa3W1FS67IB1aU/MEVfg5c+i7TKNoOX9EaFhESxLmajTFVbFs7wWAr5YNYNcuk2fRrkAw==","mode":420,"size":491},"dist/content/vite-plugin-content-virtual-mod.js":{"checkedAt":1708389320295,"integrity":"sha512-0NzL/OgP6PN8rdrIF3t0srNTMriY+xYCIPSHnjsAfcxxY3x7OUcEONpi18zSZOugHBq19MRkzLEhOZIuPu8Dpw==","mode":420,"size":9186},"dist/vite-plugin-dev-toolbar/vite-plugin-dev-toolbar.js":{"checkedAt":1708389320295,"integrity":"sha512-O70zBh0co3nI/gNO7Yl5E1rWb8UVl2sPykNlkqgULw7V2L2vBbk/jptG+8mgcYhY3Dwda114fpdTrMV0qivVIA==","mode":420,"size":2685},"dist/i18n/vite-plugin-i18n.js":{"checkedAt":1708389320295,"integrity":"sha512-Cj9+/JJ5R7JSM4+bG7+5JS+dU2J4WggQHoy/gdtQIekdmm6fOtMtG/Q83XRyqVxn7E+aLCyB7oMMBH0ZIKJ0Ug==","mode":420,"size":961},"dist/prefetch/vite-plugin-prefetch.js":{"checkedAt":1708389320295,"integrity":"sha512-Mu8ghPgIkb4cH9N4py2E+hrjpkzJO18jIVYuTekcz+opyw8gHmAPLcctcxjYK2mZu98X+66vwU1dqj1ddBeLfg==","mode":420,"size":1724},"dist/transitions/vite-plugin-transitions.js":{"checkedAt":1708389320295,"integrity":"sha512-a7HYL+TA6XIMSPv4Q9fBQzAUbXIRGgj85JRHjULGY1z45hT+LF5ps5J9iwNfnZQI24O5RNQXI27Gd/phC69vcQ==","mode":420,"size":1707},"dist/core/middleware/vite-plugin.js":{"checkedAt":1708389320295,"integrity":"sha512-Xd3PxOH4rgz/mwsq7Uxk3v4a+8lGtseMW+jyiLl6YLNNVAkBazVD8EOOod2KF7swKQEQs4Q5Ym+iQIDOIrJ+cw==","mode":420,"size":3532},"dist/core/errors/dev/vite.js":{"checkedAt":1708389320295,"integrity":"sha512-mI20BV60r7trzybPeTGNPJXcGrRxvkOC4Heqj/Q0rKfs28ijV5bXPfrQQ/F1084dQY1xOLAtIr5kYlFRcp4rjg==","mode":420,"size":3936},"dist/core/logger/vite.js":{"checkedAt":1708389320295,"integrity":"sha512-DkigfA4fmDOXFOOYhASa9mSwuiOFauNL+C+Ce+/T5O+92iwcHEMilO/zlXuU91fuEGP17qYJTfJ1ng2HKS8R6g==","mode":420,"size":2798},"dist/core/module-loader/vite.js":{"checkedAt":1708389320295,"integrity":"sha512-EaZU72sgFLaKIEIxql99VxAvbusZYeoPg4/a2+FBUdKGNB2rDvOZ+3rMwF3GWJ1HfZkpa5PYDBONUrRWQQ/3Rg==","mode":420,"size":2121},"dist/vite-plugin-astro-server/vite.js":{"checkedAt":1708389320295,"integrity":"sha512-I+Mf+JLLz24rykJmXYuXySCdxduTApS8/jsAebHHSCFw+W5YhpVL2uxTStSVROAWzTL5FvFdvzRppPfT9wPS9g==","mode":420,"size":2747},"dist/assets/services/vendor/squoosh/webp/webp_enc.d.js":{"checkedAt":1708389320295,"integrity":"sha512-eW85AH5IkUPlM1PbLhQU50OhssccaN780CSK0Of41DvrY54wqGANV+l7Xy4WhDJIrpTPanDrpXA6SFKYXxZwtw==","mode":420,"size":84},"dist/assets/services/vendor/squoosh/webp/webp_node_dec.js":{"checkedAt":1708389320295,"integrity":"sha512-ShDTeNMakJovri9cg/gBDV99aYAOfqtlZ+uIsaS8xHr5TyjrweuKXlO+cpgomKq4WQjMzD+w/wb8uoKnby4rBg==","mode":420,"size":48392},"dist/assets/services/vendor/squoosh/webp/webp_node_dec.wasm.js":{"checkedAt":1708389320296,"integrity":"sha512-loO+WgQP5lhnB5HU+lJ3Igs5FaKkDNFQYWNkTSjhWN5pFms5ontPABAjMQq7TRwiw+WD8S+ePOa5S9sOgz8MLQ==","mode":420,"size":198364},"dist/assets/services/vendor/squoosh/webp/webp_node_enc.js":{"checkedAt":1708389320296,"integrity":"sha512-Zkdqihe5rJC7TjG8R5HXr8JCfYrItJd+nCKLzsnpcw+jXMDTAcazWEPb3Bq/B7s2Y9GiPG2tzYqLfghnT+ZQ3w==","mode":420,"size":54251},"dist/assets/services/vendor/squoosh/webp/webp_node_enc.wasm.js":{"checkedAt":1708389320297,"integrity":"sha512-B1X9Iciu+eIldeY2zuXG7LBU/NaVxleI+tjq/naoErCQlzeF8mmjnyo3FXd4AUI9gFYYlOGwovbKlYkLoVMLfg==","mode":420,"size":397884},"dist/assets/utils/vendor/image-size/types/webp.js":{"checkedAt":1708389320297,"integrity":"sha512-035mc0cI9liPQd7/BZLvZmg4ck9Fos/YGUQDMSDS89qgEa8WE0YmKsUNv8L1rsNGZe14qQzbIFkvW2nU+lN+RA==","mode":420,"size":1560},"dist/runtime/client/dev-toolbar/apps/utils/window.js":{"checkedAt":1708389320298,"integrity":"sha512-Gqmq7mOvhVoOlwOEbKadVIMATybyYbhPEb4NV1l7ucxaRNKBa9GS5c9KOQV0FxFH0l6/m4mhB2hCMCByYAEzCA==","mode":420,"size":213},"dist/runtime/client/dev-toolbar/ui-library/window.js":{"checkedAt":1708389320298,"integrity":"sha512-8+ZBpYNfv8EG/2/D3nOdWFC0iAq8ChpcJOAfMAHgrGx5yVfcLuFq66o+RsPI85PCOFssVjIo3WIZ8//c6ixS+g==","mode":420,"size":1967},"dist/assets/services/vendor/squoosh/utils/workerPool.js":{"checkedAt":1708389320298,"integrity":"sha512-0CAu8IN6PK0pucNg9KBMPOQ/ZjDNaCRXTLBRr7JO7M/Vvhjc3/425Mnt1A0VMnPQFqm83BG9zwcxalX+szzLvw==","mode":420,"size":2783},"dist/cli/add/wrapper.js":{"checkedAt":1708389320298,"integrity":"sha512-sV7UY7COIvAppZ6r4QrGUqWb648aCe0cJcz5ULTritA5vwtSxnRKofOoQ7KTvgnEn5UtE6bld0o7XTJAnqtG9g==","mode":420,"size":532},"dist/runtime/client/dev-toolbar/apps/xray.js":{"checkedAt":1708389320298,"integrity":"sha512-5J5C85pJ0ZvULBByToA5K+d3E2NN2ue3kEghnFk+IMb8lFAWO4NSrI5kEV/FfE0zSY1WahusmK+Zjr82dTmNFQ==","mode":420,"size":5717},"tsconfigs/base.json":{"checkedAt":1708389320298,"integrity":"sha512-+la79Al1yhv5qq7yIHjxtgIAugeQv0qmPnTFbJUroTyTiPed5lD/62B2M9UAVE0d23GA2AN2IvP78cl9VqoYGg==","mode":420,"size":1357},"tsconfigs/strict.json":{"checkedAt":1708389320298,"integrity":"sha512-vLHmfFn+5pYWQbBRIotA/Qz/tOpZbbIbke8a/7JG46pypF4edzELKTF8oefk//68gNGDLhp9nIVQ1ArmhZ2N7g==","mode":420,"size":260},"tsconfigs/strictest.json":{"checkedAt":1708389320298,"integrity":"sha512-M8pzM6av70a0xLEh4SYw1nqg3QK5WLHuJEBfBHt0yB/kKzo8oAdrojeQlEyhH5lC12oVwqqAupH0SkTxAQuAiQ==","mode":420,"size":1276},"README.md":{"checkedAt":1708389320298,"integrity":"sha512-G9c5fZkVY/6m3DHXKUowHscKdOadGj6Kz4D2tBfa5pmPdpU51FOXL4IgAcf3W2dRLTdBAIoefX3TVd7SIs2IGg==","mode":420,"size":1394},"config.mjs":{"checkedAt":1708389320298,"integrity":"sha512-nuj+5k+1O4G5qvTMbdw0zDChTABdplR8I+JSlKk0AKhynKKiPQrIrEhQth/9RyWFichOnJEu9OdncPq2UaAcTA==","mode":420,"size":428},"content-module.template.mjs":{"checkedAt":1708389320298,"integrity":"sha512-d8nbOJzK70ErlWnUz8SLnzcGDkmZmUNFyJc6dcDWKnjRPi9at8E7yKBgvphl2p1R3PjeKp4SA98LBQw7/BJVCA==","mode":420,"size":2045},"zod.mjs":{"checkedAt":1708389320298,"integrity":"sha512-esXL8icTBdrpPJjFcWka5BpVTAIfyvD+ELcvrgprCFi67I4DKxzwEVWFlP6Zmrhl5ymgyEcwAdUVImcFG10MHw==","mode":420,"size":69},"dist/template/4xx.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-gay133RtmMu/eEutJKqZufrsu8CCpLpbGi8fSgX8nsZ5bjeYye5hWaGGl6a/KKjUKAPfong2Z97waPUPsgtwCQ==","mode":420,"size":639},"dist/runtime/client/dev-toolbar/apps/audit/a11y.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-KLd+7ojmqf5heZ9wg5Ei9NsdCY9miyGaZSNTmKk58Ci19YiZnmcRBki5dzRhXCV/PWyhbBOhvoZfkFfdDC8qUw==","mode":420,"size":1402},"dist/core/build/add-rollup-input.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-XC1LS29gIvUB8IdmRGmgwEwGGUMxjBJonqOJqjgsZUSINtXVQrIkiVD8yhdnZr5SntwrsUW0NH/s8zBGnIhbZw==","mode":420,"size":153},"dist/runtime/server/render/any.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-Om2ztwr4Mo6kBZTMZpJysBorB6DxiLEVm7NAVtjR2lNg+MhPAXm1L9QIBmtKC8BRb6vR5I8mxv44c0Zg9LyOjg==","mode":420,"size":150},"dist/runtime/server/astro-component.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-re0ej4Sl1gDc82Q8xTTzMSJ4vSa9MvNGclLOwjMRimkQWHUyMHKXrmnlOFPaNyqOK7Eqfw+FT/KMiH+PGpBd+A==","mode":420,"size":436},"dist/runtime/server/astro-global.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-wAgo+BX3SoWeWtguRzPUBbrGAiOpk40YBNRiOKOTorX5bVvVlvPptYRwc8uAeCNOqZ+WJtcWeeiyGHFlCEprWQ==","mode":420,"size":148},"dist/runtime/server/astro-island.d.ts":{"checkedAt":1708389320298,"integrity":"sha512-TuHIj4w/TkzTTLbAAzm/nW0Db/St469J6HHMiWa4THKdi3VJKsxkE8mmZKwApXlYIjrBPEIp2oxi6+alPk94Pw==","mode":420,"size":11},"dist/runtime/server/astro-island.prebuilt-dev.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-IoZlSptZFjhL8IQcIzHo1oSUa3UYQQg5AdsBjMYTkT9FDXKEcgOl1+avdcKxFNJGKrnAyMcSIgJxiRBFViBb5Q==","mode":420,"size":3906},"dist/runtime/server/astro-island.prebuilt.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-ZgfIgj65q8aT9XbmyzNqPd2YHD3Q+c0OsXQe57bPLaHf1/5msFmdxMNw4j0w9jW+iys5UkLOnAhy1lsvtzxCSA==","mode":420,"size":3804},"astro-jsx.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-LyTVoz7ENgZ9aj8IXX6mfwqNhU7LLBGtpAq3GTRXxJizTR2/ovwcSa3ZEAuuEbPsIiH59Hg41OBLrTQilFk5+g==","mode":420,"size":55476},"dist/@types/astro.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-A4triy7Tk4g+ffRd7LMWN84pVrTzPI7NDi+dC+uRW0KrHA5FW8QHv0PlqXD3bz331VD7tp7u734fxVtL40r60g==","mode":420,"size":94792},"dist/runtime/client/dev-toolbar/apps/astro.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-7fvoKcj8U5a6InjfXbZ0dgyWou7SspT3XveTyDlFQE5xFhNrDD+4wUYKWc6/HkPouOakPJCwjAoYLu1mR/Cbyg==","mode":420,"size":458},"dist/integrations/astroFeaturesValidation.d.ts":{"checkedAt":1708389320299,"integrity":"sha512-P2kGHRsarhucyru95k2S6bWo28kTtetvcF3CP4hI+D43VwVCl1nB+vhzMTOA3c079USaDb8eiKGi34e2KgzWGA==","mode":420,"size":691},"dist/assets/services/vendor/squoosh/avif/avif_node_dec.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/avif/avif_node_dec.wasm.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/avif/avif_node_enc.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/avif/avif_node_enc.wasm.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/cli/add/babel.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-5UEnSYkN6faWDRyKoC7jjPMs0z66RLmnWjpAf4ZaV21f2dGP/p2McYT9VsZLFZv4dvAV8QeKNQLM4nLwkxQgSw==","mode":420,"size":6952},"dist/jsx/babel.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-eAF+ou+NOVVR3/pqGcPCzABBVBjfQc/98QwZ0qf4cJJTUx2A+8pL6NN7Kh0K9pROI1QdxNupaXDAg3iXkLt9CA==","mode":420,"size":93},"dist/runtime/client/dev-toolbar/ui-library/badge.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-f+7rmAyo/VTm/bGe7LoAeQl9qyTntzgXBMhBO9jfDrzuHF01tOAdtnBnUd5xzxj8jvCyUfR5eoG+0DvvrFOsmQ==","mode":420,"size":270},"dist/vite-plugin-astro-server/base.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-8wpgZAPa32VXq9Skcd9DkYnMmV2CQDVhnWDsyBl0gX2qAYq5ky8IRKyEFeh87F/5HHki1HlRl2KZwoWSeLJ3dA==","mode":420,"size":260},"dist/assets/utils/vendor/image-size/types/bmp.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-GsZdyr3iub0mk2bKzbHhdXTjOn/isf6EAVKrHrgU3D6d59YLIIOTH+VvkrWGkSEKUo9RJPZti8/oIm4OllGZIA==","mode":420,"size":80},"dist/core/client-directive/build.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-o1icfuweiJuwoUsrh/N2lx7NUBPq9ihtTTOZdoTzHhp0ax0qwCJ/GxrSqE76MvbJx22zaImJpkB0sdWVPS1dng==","mode":420,"size":218},"dist/core/build/buildPipeline.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-D5f8MSUphu5ri5Jl804J/XksC8pequCPSoJyDSqfK2M2Lte9th9bN24wkhyJ/D+dxwFPEuvsVk9BC6yz0t3U4g==","mode":420,"size":1598},"dist/runtime/client/dev-toolbar/ui-library/button.d.ts":{"checkedAt":1708389320300,"integrity":"sha512-bPWuJzbfzFnAEN/13wJUBq9BU4ozSZdWGc1Z+BBfGiZys/5regHb45qnK6Fa2/IZyuhxvQqi5qFspngqws+69A==","mode":420,"size":288},"dist/core/middleware/callMiddleware.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-yv4GXOaXv1Q/tcn03IgLOjFQsry+YMEs8b6LOyIW48XYu/wfvo3wYB8jcAABAXOtPWTgSqrhR1GS30oRg6F3wA==","mode":420,"size":1330},"dist/runtime/client/dev-toolbar/ui-library/card.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-FQ2OhlxPPSf/BXuuokdGusHcfqeBER0OKGdFVBJ6uPKWPXD9pHJjunF3yCQlpy/DyVUMHPlbk2orPcihvzxESA==","mode":420,"size":230},"client.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-cBkmL3jk7CSaUBeK5yKeJC8XeUzYK4olAadzGWJi10IhsbnhlKdk2gvEX48W66EQmYqsLp+JCDLf6MK9s2UXDg==","mode":420,"size":12645},"dist/assets/services/vendor/squoosh/codecs.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-hYYtL0APQi4TVfzm7MyB2OAFycKf+1Rh2zi05hP07YeppI8VcjICxEnyx/lvyyq2GG8dbE1jjVzEUEACKGsS4A==","mode":420,"size":5712},"dist/core/app/common.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-BDJgsNQzhgw3Q4woZDZiWIfXQhT6m4COwq159r7lPz2XtF1E+7nTwY2XlzxRYhWAd5C8TXKINLdE3PFM6Ialjw==","mode":420,"size":171},"dist/core/build/common.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-S8uorsnQ2k7Pdc3qX44lCESVRgy77wQ7k2KTQTtE88sNSao2d7GXimthQMeN0aRDUrT0Pii+RBGXbAZ4eehcHw==","mode":420,"size":649},"dist/runtime/server/render/common.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-ZVeMqL0AbNyFBcHYTiqGj6XVl18BI9QerVkjaxrYJq4JG37HTqNtlYMW0gnefeageAW4kw+vIbRc/ZHE33CjOw==","mode":420,"size":1491},"dist/core/compile/compile.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-I/2L75CdmPlEmKZRvaI1YbU9HXXM25zcfm/nnBmtKIpueYC1dVgxLsVu9gF2UtOyVy60nS6Bj6U1TM9EWyfNxA==","mode":420,"size":638},"dist/vite-plugin-astro/compile.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-LaOUGkriBl5rG3opNq2pq8+0Y4zHyWtP/Vw2qyte3iQ6YrXGyxKvmg8rovLMshL5zUav6CcaH/IDeC/A3IMFIg==","mode":420,"size":654},"dist/core/redirects/component.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-wC6qTR5eT+C3J2GGXlox/ccAPw+2dhwjdc8a8sEeNXqU06GvRe13Q0BZ7OZDby7GpcdwrG8OzEg6bPTUNu4MlQ==","mode":420,"size":270},"dist/jsx/component.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-bPqZit06fGg8scZfGifGK0Hh3dfW6CBV1Eu1itVd5SRQDH+O6xoRoGX9B4C+PVvwzQx51DmPEm6fpCa8CoTqdQ==","mode":420,"size":108},"dist/runtime/server/render/component.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-fKF3+Pb0obWygdlhEc8gozFkUWQlgUIGA8qD8YanmcN8qaoKKQ787tQEVA+xRKvoTK1hl2VRg3/IYjUyVsBJRg==","mode":420,"size":869},"config.d.ts":{"checkedAt":1708389320301,"integrity":"sha512-tWRHbzVbIzTLEEZ5w8WS8rF3zjN+zUec3+9lo3465J1PqTiMZBxc2ifF4vi5aAdMhcY3yzhnPvH8opxJVGy8AQ==","mode":420,"size":1471},"dist/assets/endpoint/config.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-pfNfqTZZeDbYdclskpOWHBqvpMfO8v1JfgDgL4A65AN9NcLvcQeEtAOst99hDXUZkEnoYapkd+bHR1By0S+bxw==","mode":420,"size":168},"dist/core/config/config.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-0rzcd8nbi8clSYXFTT3h7cwRHfwUbsAx0RFQBH6ubwTcIazT/a9lg55ejuhMcOzW+g0z+aWuZVjSA2F0VMETCQ==","mode":420,"size":1426},"dist/core/logger/console.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-AMn137H5KD9a4NTguNo5Wl8KRMdxdOILyW4M2AX+29pJaXE00xvEUcBvwOgHTb/Larn/3QU2tUFMxJxhSVZAaQ==","mode":420,"size":132},"dist/core/constants.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-T7wq/RmHzBkpr9+S9t8SwZl/QpmYa0aEJr37MwrRBVkEAf2r0rMfcsjlZH/eXsYONcvYnyyPA/lJKVf3grZ4vA==","mode":420,"size":294},"dist/assets/consts.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-YcTuOeDS4wCeANstQS4mBxXb+2zM1Dx4wcBCO4UuY52/JVPY75BeXD+DWJmBUtqRe+Vjwpr0HBeDGkMWZ7FNUA==","mode":420,"size":689},"dist/content/consts.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-B8k14nOxLYOKlNBjxEcEDSEq1aDQ96wp0LnnpXD1kmUaWX+NIHcxhbB7rm1JKQVKMoGzJZtRFS3LrmJCX96YZQ==","mode":420,"size":773},"dist/runtime/server/consts.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-0VKRD1Ok0yM7QgdEwrOe14TvoEOQN/pQwgX1dtcZKxbF/Rw1o3oevGCq7U3WVIf1kh56pVvDIE+HhQZJmKY7xw==","mode":420,"size":67},"dist/core/dev/container.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-vEyqxwAi8H2+o34ZKLXndw6JYJsbWFa1N8SspC2DookuECGqZfl0LsNvIV37lx8aiCAL5Lh5YwhIfy5ahSjT9g==","mode":420,"size":1177},"dist/vite-plugin-markdown/content-entry-type.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-/5pby9eDU6hK5SJWEAHHLvq09YnS8LGsggDwjcvlEFZR6rgEnz86dlcuCvyrQLymv6Hjr8v+3dwZHGYx0ha72w==","mode":420,"size":125},"content-types.template.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-+x67tczrDubi1Izf/Qi6rqS8+D+cVGs+/yWJW7ARTaqk6PXmN3fPDT45J2ck4ZgvZ5Xb6rKZS2MK+ZOfM6mEyw==","mode":420,"size":4147},"types/content.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-nbKgfDowYgKiZJXA4oTD9ne2qjtS+WOaU84Jo0PNZz/hil9cZYgQNEkKJa5JOJMXmCcs7UWy8ruNxwq+NN0q5Q==","mode":420,"size":2824},"dist/core/render/context.d.ts":{"checkedAt":1708389320302,"integrity":"sha512-tnnlSQGmuheWbxQbnzKuWw4WA/Aq1zW3MH+rzSwsNoqL7UACs99dGLi6JWECbu1943rWVRDLrMy5+AfDKrPStQ==","mode":420,"size":2116},"dist/vite-plugin-astro-server/controller.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-p9712ve9WIqeNmzt3jqDsyRjPKbZPaSUWt00v48NrXrqgbEYOGPv/jhBQ7cOLskFV07qVc0eswFJBk9mKyLqdA==","mode":420,"size":1035},"dist/core/cookies/cookies.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-ZM9nESubORZHvnH/nODIWovvV3+WauB5grtBzNExNrLBqJlnmXIui5B96GwPsyxLHOcmmbO8yVbrGlHp2tH4pg==","mode":420,"size":3604},"dist/core/logger/core.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-KTwt3o5PpFEk5bkL6znyEuo9vIRDNdBGjIcyQTcaNSN4kKHgR6C/gof6cmCJ5ZyWvnNVAwh2Eko5Hb20iZHJOQ==","mode":420,"size":3378},"dist/core/render/core.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-DDprJAU3bDmbM2rdN+lBHYvlffSGwmfXY8ad4+51q2S00uVVEYOewpez6P+3W+FgDklEZmOCwnNkkpUsi7wcyg==","mode":420,"size":440},"dist/core/create-vite.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-0b74OOiQvAb9t/GM8aqvuM5UMJOv1zH/icBMgxWKbNVgMjc5rF+7X5oMvt1bWVBaKX17yL4Sa/Kqx/grL9s4Wg==","mode":420,"size":621},"dist/core/routing/manifest/create.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-UHyLIPC2C4KNS1mQXASW9wnclRM+WsYbtU7IzAk9oCtSmSOKoTb/WUX0VKQDIt/SM1KnsOeHw5BRCWk2eASxzw==","mode":420,"size":594},"dist/core/app/createOutgoingHttpHeaders.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-JaxxAIdk4Y18jirJl2ClaJ0A5NziTj6/VLAAJwqqowGoabqKv86dYKUSeh16EdRADnpEo7jgFEJ7ypr2kYC2dA==","mode":420,"size":532},"dist/core/build/css-asset-name.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-KzbXKVyt/lmpe21mQdBR7SkWTqcsuMS20lDLDZmX2KJuL6aVn/S/Pbond4OGiXXVr/r1LFpjhYs9kLBb+8cCIg==","mode":420,"size":437},"dist/vite-plugin-astro-server/css.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-hswDiLHFIyjtvnE9q32XjH4N+LL9VfRVLRQtuEyZtuUzsbR2YXBHLysphqZHwGNQ7SncddRrIVOzuzQKeUHUgg==","mode":420,"size":420},"dist/assets/utils/vendor/image-size/types/cur.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-sT9aY1F+QaSYT22Dt1MIkAmFskuC5ykcJVwSlGq7ekFbPVIxN0/RsX1nkTKv3SppeSPqXo0bp977Vug0ABIApw==","mode":420,"size":80},"dist/assets/utils/vendor/image-size/types/dds.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-SP8l4lzAK3N9yYdCFUm0OLazGodVQ3wGngTlPaGGsKRuvLnrJS+atgwqdHlckSCOcogJ1JRAbvVBDVMGVWm5dA==","mode":420,"size":80},"dist/core/client-directive/default.d.ts":{"checkedAt":1708389320303,"integrity":"sha512-uwQQt7b3pn+mmoVV03MpwyzXfDn3gG0Y3IuEHYv5YtMZnxyRXoGxIP+M5ddbl8xp78Kxd7CIDGUASYNhgHMQtA==","mode":420,"size":75},"dist/preferences/defaults.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-81WxWK2Gg6/68kSJtyRRkqNivD7iL5lSF9kdHfmfItVEo0l71tZZtEuiBKctmaRi7z2yRnt9ELbJVvaauXvchQ==","mode":420,"size":222},"dist/assets/utils/vendor/image-size/detector.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-HVRGx2t7RitAKOiT9oQ3Lj9ylZ9TzQ7ZNOYk9q7wBo8cXvktRv1BWNef+HrMnKo1sKEOL7fITA/NBt1k/x/yEw==","mode":420,"size":127},"dist/core/dev/dev.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-tJaHduJacs2k1cpx7XUBe5s+4DQY2Sg61fOxuB6KDAw20wfsa/19yCTDu+weQUTXlcwLPcWRrXSKD6mvHhsNGQ==","mode":420,"size":841},"dist/vite-plugin-astro-server/devPipeline.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-D2Dy0zNxqvgwR0cS0Hjs005rWwrguwD7+fqPevDDa8gc0hC7ROg459LEdpnV1OBXqNRm4N1h3Uo6/vhinGJPHQ==","mode":420,"size":975},"dist/runtime/server/render/dom.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-Vyhcs8u8FkNZ4ZyZbweTeReX80dFqIarl6zePugFKbhkNUOIi04hZA/nNXlkN7GKzNNbLXnEVw55Luefa0izCQ==","mode":420,"size":272},"dist/assets/utils/emitAsset.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-HNcLvLxF/SO8eUc7VLx+awWfXq8stHZ97OyLVVsycvj9Ib4PCWz6NgNNvXXwtYPV7ku6R9lKHn7rVpUzOLuHjg==","mode":420,"size":186},"dist/assets/services/vendor/squoosh/emscripten-utils.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-T2B3ku1y8qDr7ZrC4xeX/LV2bsRfhdpDO738uQLzj3BCaBw9zIlFzgicnMvCgaPY9irXnRUXCah7LCN+4BLoXA==","mode":420,"size":631},"dist/runtime/server/endpoint.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-+hi/7QSfFr/s/zBf3XjUtXE7Y6glvfSpTOFGZv0K8JWU4R0Z/5+UiPc3HT3PJEnmO+ejmbV0B5ADnEBAW5lTHg==","mode":420,"size":333},"dist/runtime/client/dev-toolbar/entrypoint.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-TuHIj4w/TkzTTLbAAzm/nW0Db/St469J6HHMiWa4THKdi3VJKsxkE8mmZKwApXlYIjrBPEIp2oxi6+alPk94Pw==","mode":420,"size":11},"env.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-QBOlQ0D0xNcPCZmcW0b0TLDoQ+DBNoDcorfherN4InthC+05zWCbuOY7Kkbg/GDBTjndtqic1hpg+IxrRlKVyw==","mode":420,"size":935},"dist/core/render/environment.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-aukK1eULnVAKQ48/HUvS35vcpYvGueBvjwm+uUltyNwKCarTuzZ39zPSfM/tpZRzxf36zAM8Wn55DoplwFfr+A==","mode":420,"size":1215},"dist/content/error-map.d.ts":{"checkedAt":1708389320304,"integrity":"sha512-NjsDB4xRsr0OjrTjYh7LtCc+3G3HilEMM1fmof5vuCzKV49e8IHhI38MuQbSNpB9r4M5Yck1Guh/9mN1rkPM+w==","mode":420,"size":84},"dist/events/error.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-/RuR7GqChVw94aSrZ4PCiscaxDOqcueU+BColwbO1yze5F7XCI8c0Mi3g/TUpK334wuwdsOrnJt3KnTtwEziuA==","mode":420,"size":797},"dist/vite-plugin-astro-server/error.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-sVks1mCpXmzhQtA7GzBUbbEh5vvpjDEFIyoST30orE65wdjjbA1E8RxjWQqyfVmYFBdRFW8TBrMKsaTg4QKCFA==","mode":420,"size":396},"dist/core/errors/errors-data.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-o0g67t9yPMl+Et06NAR2kreQI8nipcHWUtXdEVMaL7UEbjHxM5ZlXgoDh5p2KYfV7RfVwVRJZ0RtkiSn4vV/Jg==","mode":420,"size":44389},"dist/core/errors/errors.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-XCoc1/uXJh+uDc2hePSZ+m4E9TcfP8ly88kCj5GZcgQ7QKHmOb3M28pkDXBFJ+WUZlU5I0eRfPJSogrzy2EC4Q==","mode":420,"size":3194},"dist/runtime/server/escape.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-ReH8CUKM6Hy+GADkONUMZBwLap8RSbgd8D9iFo+mXluHZTfWTwV7m0tmR/mzzgG9OI7R5pN58+vIedm4u6jlAQ==","mode":420,"size":1002},"dist/vite-plugin-html/transform/escape.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-kb0GzCu9aIZ3AspvcMGIPHFU3/fxtFCz25WVm0wkYPNIRjfITVC9inlGy5OnEudxLAE+J5n7nIiQssBvU2anfg==","mode":420,"size":216},"dist/assets/utils/etag.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-RehwYuz5dwSFfXTOqLYGOxPkORL0xCMEH9WZVEcHBeH7O/jz9AAWC/ZLvL49sc7PMIGh6IIwnEEUzcSgenGQtQ==","mode":420,"size":499},"dist/transitions/events.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-Xhv72ZkNptOpEmxhvm3TZXVeqkDMpTqk0IUOYw0gozU7EM/AvgDD52PtwD+VcPlaMtx5kfybsv9bkJ1oQdQrSQ==","mode":420,"size":2670},"dist/assets/services/vendor/squoosh/utils/execOnce.d.ts":{"checkedAt":1708389320305,"integrity":"sha512-RGjaSkSXPxRGlaj+itxTKs2KyZmYmyhEiSwlaOpciurcMcxFKbTgGL5g8HOEqZ5bCL54WfaR5hAiwmXsCXteuA==","mode":420,"size":89},"dist/runtime/server/render/astro/factory.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-sdDvGq+sC806N0uxNLDacbW1DDQs89lsoXWatazLqW/KIF3gGMHvcAYrrHLLui7Uow7UR01ZX6JtBW9lDUTQew==","mode":420,"size":712},"dist/cli/flags.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-w1abVGAVEgkVlGEz7k8tKC5HaUW6kQjRF7ezQNUZvTqs98R8lR2WMPJSpXJ6WQwdvsal18G4iEoRMM7HkLcnIw==","mode":420,"size":519},"dist/assets/build/generate.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-DESOqu6qNDK+AFhPIcZB9t1eL4ZXXJRGzz2ySeIZhHUWeuJNV3nkQYkKXzxvU2TGJLJ+LTqWDjEXVztejkRWng==","mode":420,"size":1028},"dist/core/build/generate.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-Ge4XakUQpnZARMACIuQnP/jbf+pIcWyPng16AEl7rMW5wZ6chHTGSGKMpb00eytR6LeYEKwZOfkLI66xjSi+Ig==","mode":420,"size":575},"dist/core/routing/manifest/generator.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-C9GRQ8ZLnZPBz4+oNS0MVw6sJo9kdDZqMv3aopeSLuNmJy7QoIEj8VaeR3pIiW6IiQQLYsqKRSCR4KMPZii3JQ==","mode":420,"size":235},"dist/assets/endpoint/generic.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-zPfVDR7mzo6clcr9f1CSHVTWUWGugS0qdoS/6KEgRRtcLGfZqC74fQwatKrJir59HFRMUj2vbE5++54CX3Iyqg==","mode":420,"size":184},"dist/assets/utils/vendor/image-size/types/gif.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-EyUmgf3mLcOvNrVCtIHEm3Mau27HtxHxgX0jTklTEUpwsPbJCe9105N9PU1AJBMFLB0wzqTmRAmlTpGZ1XmzAA==","mode":420,"size":80},"dist/core/build/graph.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-XYHXJW7Hpcddl1u9Zjf55mjQryI7Icxoj/NxQTImmv/KkM4kq/dAK+HOZBLtR5m7fGYddz+gEf6ARteRMW7J5A==","mode":420,"size":546},"dist/runtime/server/render/astro/head-and-content.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-rCGrHoZCSjqwYirXOim8SYLMyRUA5isZlDwBrjhukeFMdYJSHXaEUEhkrPgmEIrUugZET5VJinrTTc7eA5tjQg==","mode":420,"size":429},"dist/runtime/server/render/head.d.ts":{"checkedAt":1708389320306,"integrity":"sha512-H5r6J/xBLauBT+ynnSdrqTucVmNE0lyC/FTrpAF36vA8LS50JHi0/xWm6byWEmCx4/laPQ5tlH7kPNNneeiYhQ==","mode":420,"size":374},"dist/assets/utils/vendor/image-size/types/heif.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-M65Ea9BSawgckeHHxkpDHzEenBDa3K9PIBJpVLybyxOxKhxjOh/voB3hlNNB9+Zcq9z9T7koOHoeBXLltGyuYQ==","mode":420,"size":81},"dist/core/redirects/helpers.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-NkuhKQpGmjbhLXNCqhP7doYq98rhyJKXgvJRaxhBWVjwkr8CndNLcNyjdsxE5g0lnjf5Vlu9oeUcuRjllUfrKQ==","mode":420,"size":506},"dist/runtime/client/dev-toolbar/apps/utils/highlight.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-qT8Q90M4TpswGZ7rCCkkaWyjtWjfoOq4eTIIFLn93KvUtMeOncDKgo+cQ1tiK8VcGQ1P+qLVDdfXFBQaCAskDw==","mode":420,"size":593},"dist/runtime/client/dev-toolbar/ui-library/highlight.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-UvHL5qImzBqszU+ViijnP3QeQ0C+8IOqTgqwc1DP9+QlNXssQIYjkz8c6hLvv9Ir4RX0xLYv4giOM8H1s39srw==","mode":420,"size":219},"dist/runtime/client/hmr.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-TuHIj4w/TkzTTLbAAzm/nW0Db/St469J6HHMiWa4THKdi3VJKsxkE8mmZKwApXlYIjrBPEIp2oxi6+alPk94Pw==","mode":420,"size":11},"dist/vite-plugin-astro/hmr.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-furgLgFXoF0Gj0Wpy+I1JbH6UL/Ly4GO3eHzqgjiuwyaGSr2Xo3CXHTGzUNrituNXbxj8uC/UQR2jes3HBsUug==","mode":420,"size":666},"dist/runtime/server/hydration.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-Ggl23l1xD70AMBzxTRQLwfqDmV/UOJZ6hV8mN1V5z0Qb+FnqBXk0s3+HUem2Zw2P75RvbNKDiL5+Krs2/JOXBg==","mode":420,"size":1052},"dist/virtual-modules/i18n.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-5rUIijXkvxIVeR9YeL0Svc8RyWrbGMP+hSwrcYAOG18IURZmH5bfA1S2B1WZ2XDNBtITdA9QpJpJ/eDFImdEAA==","mode":420,"size":4438},"dist/assets/utils/vendor/image-size/types/icns.d.ts":{"checkedAt":1708389320307,"integrity":"sha512-5CQW/ActvRWtw2KypqTKc0gfEsKyPmWAC6M3c+/0HnxtRmi1nYJHwNe+evQ6/RwNKJPKTiP/fIRhpG/wsUL5FQ==","mode":420,"size":81},"dist/assets/utils/vendor/image-size/types/ico.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-/qrIpQTVHffBa9stHWEr+/bBiaU33fczS0+r2qrVscqdf6aPioirZ/PE1mmfEJ4eN2tfhZ8mNdotTICJaCaMiA==","mode":420,"size":80},"dist/runtime/client/dev-toolbar/ui-library/icon.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-ExgP+o+AeXVo3Ta55oC5bg/3E2Xnn5suobF0G1h2AenlmlqwxhbNXY5prGZYdrlOv8/p4EHG+kDLfc3xcxUAug==","mode":420,"size":324},"dist/runtime/client/dev-toolbar/apps/utils/icons.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-rAwItA71sb8+hbURDC3oEjqYM0F2ODB/3kyD0spFt+8KcnfH4qOHjrOq2FQliHjWPKVFOE925rKJf9vVky1qBA==","mode":420,"size":181},"dist/runtime/client/dev-toolbar/ui-library/icons.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-kqu6E+AwqQjmG+rJyA5HYNelNnTZQRfo2hRoPyySslkkC/6i6Lb33SAR42Vi9Y01UIjGUlQ3c00wKBepRs4NwQ==","mode":420,"size":30752},"dist/runtime/client/idle.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-EClZb8gCWlKbBI7p7x2N6Gd4iqAeS967VMtC+T6QYcLZYtOYZuBMjjklHv9f1f+jg6Vy8yZAk6nsGRZjvKcl2A==","mode":420,"size":138},"dist/runtime/client/idle.prebuilt.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-OGspNZcCZzeCJV/Ape5zQW5XuWO9W3g3Df4JPH/04Z47laUmHjWqZBW5ibM8Z9NklxXT/xh8VLjMVhL/Yzd5+A==","mode":420,"size":463},"dist/assets/services/vendor/squoosh/image_data.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-wcOveHjJ9gp7xPpgln/xmYxXd4AYDYamBNvTMRFNLE5f5JnfWONreH9xHYOnX1G7gND4HVIMDyj27GRuQl2+HA==","mode":420,"size":314},"dist/assets/services/vendor/squoosh/image-pool.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-6TeSfACUoNqEqSoq7YJNUEIlLRgGDCMZUDPovqPBLYoxX+4meept9+WiqqxnvGOCAqRfPerfElWT3ngmP5WdGw==","mode":420,"size":257},"dist/assets/services/vendor/squoosh/image.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-/3pQtAzFWXHv5rO620/qbtpTker/Rrnro/eH/ImLjFgl60E+b9vFdAY9zLqce7PjJw2q0ObykPTItSuNLY4jnw==","mode":420,"size":497},"dist/assets/utils/imageKind.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-Gq+t5kZz+aW0/59XRnJU8q/FfzGXIa4JOkiY5Cyzn7W26x0mN+gEXGEoWkhL0n0oHsseHi81lKqiH2KAkBdLrg==","mode":420,"size":228},"dist/vite-plugin-markdown/images.d.ts":{"checkedAt":1708389320308,"integrity":"sha512-9Yta6N1YNxHI6+ErbNznrxbcSwLpMFehKKbAQXodSJ+eFOhac+ITtot5k5+pcX6Ii+iUWcIHCtdi7Ggs+uMuIg==","mode":420,"size":203},"dist/assets/services/vendor/squoosh/impl.d.ts":{"checkedAt":1708389320309,"integrity":"sha512-dWq/1ZlXQOQdfjqzdYe+omEHHdDg97YQpTPdAUkQNafa02gdnlPqGLFGsthhlJ7ux8jFsDuNu9wWZiSYy4W9qQ==","mode":420,"size":868},"dist/cli/add/imports.d.ts":{"checkedAt":1708389320309,"integrity":"sha512-dtE0pWRQzuNe1rMuVYmXJrOdm+glXujdkekel08QIT1TkZI0kN7ikMnKAeqJMNjiN2CoBC9dYPTVgIuZsutt3g==","mode":420,"size":130},"dist/assets/index.d.ts":{"checkedAt":1708389320309,"integrity":"sha512-/ixEf7+ZImF/UOlrqYb2JVN9ebeSnCrkfwD7xCxqgqElWwRCkhqbqe8iIb9tOW3Z4G0K9tS/MudLSiAQruQp+A==","mode":420,"size":212},"dist/assets/utils/index.d.ts":{"checkedAt":1708389320309,"integrity":"sha512-keShG76YWZ48Vv6uai/r4shgCBzaoSESpVec+5Fv2pwL3Mb9yIRJUKZDubbiCQNgEgMt+4TBiJS/Fy1yFPvevg==","mode":420,"size":433},"dist/assets/utils/vendor/image-size/types/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-93T19UfpGV+DcVtsh14c2647w7ZFMddIvOxFW3ljqQ/j84dhhyjuQnMdgIonOY1pNaYqq26DKlpzMedTJsze9g==","mode":420,"size":445},"dist/cli/add/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-dbcCODEO51HCy4j02hww8WxO8dbx8zHfKiOo6j0Fq4lNwACRGh4aEZT5pOamHAMDh5ChL6vfrWaF9CPgxdTeKA==","mode":420,"size":446},"dist/cli/build/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-OFKiemjJBb01mYOuyHRr8ARJIzpGF4as1SnR63g9lphCWoarp2JoednefFnuPILl90GUaj7nfq/QuHULqzcDoQ==","mode":420,"size":176},"dist/cli/check/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-Vso0x65TmrB89j9pZ0zp82H8VD39FMXLTz2cPxyjsJ6hmpWecT0AY4+msep3/Smlqh9seCYxfjMBxh3bqZfPrg==","mode":420,"size":121},"dist/cli/db/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-WTG65K0EycCdWFfuyRfCOvCVXHUSAWSuhQbOYW+b8fNZpYGQjHAYgNKTWnlrqCzStMi4jpnoNVKGYNMlFpppFQ==","mode":420,"size":128},"dist/cli/dev/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-CZBwjv+gHxqePWbaJhnJPnoUKaxv3ZOelFjI8FjvbtCDMSsnsVyxK+WdTNoEg9Jwez6sLY+d7s62LsVYR054lA==","mode":420,"size":219},"dist/cli/docs/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-0rpgxOXG1m5d4/EDi77hTkUbjlrGmK6eOmvhuvVNcW8WCkXtlTjJ5ok9ZsvMabavpdtmrK9HmaIucABjQooGNg==","mode":420,"size":221},"dist/cli/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-bqNF09dF6JZz/oPcVY4LZFYpbKHNL/yE/kZcdoAXjAh9MQ0SxO+EkzeFB1EZHCGEZ0KVb5X1IzezMApmp3fxpQ==","mode":420,"size":90},"dist/cli/info/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-SxZ3oRDahebsVZUnVSJxq+Lza9cXv7B4s26GJ8RnJa1x8ExkQf06aCVCcvE5QJsOmJqwAnewrl+6ZmXN4GI9+w==","mode":420,"size":405},"dist/cli/preferences/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-vkeD2iB41UBZ1Vhijn17x4ezwgy4IUZNF22aI7PKdRDT+WY7kOWpf1z2br0WrWAGI+3yoJD0mg01B4tTD1/sCw==","mode":420,"size":435},"dist/cli/preview/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-WJyr0XHgwMjM92YunKrXGKr9aPbTyS5WKDdA9yMmhbZ0rFnb6kjZWNSqzsTotQsd6c2u016qUqZqeTy+S8e7Fg==","mode":420,"size":235},"dist/cli/sync/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-193bgH1pkEyOvu8sBY9Meod6aJ/3jzIL1ZrqjXcG5MbDdSmiM6FviUyUw+nj7zsRqF3KxjqngEi42GR35utFvw==","mode":420,"size":215},"dist/cli/telemetry/index.d.ts":{"checkedAt":1708389320310,"integrity":"sha512-tSZWloqbna9FXbMi3HeYaKmknNAIWIcCo+fDlzoFYarypFvt0uddttMo/tjk1Yoyj4HteyBVTLbYOhKeaPISiw==","mode":420,"size":254},"dist/config/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-Flc9G4fTPBf/28R2MToWAdgpn+bezbTCHlXjiADvxGfMgS/mdgKW6evldGFi+a/3x5bXmgsHooYxVjy9Mu/tHQ==","mode":420,"size":352},"dist/content/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-76RbSNhzfo1VdyWLZdhRGKSCYFld1wf/dZZkXjWNUmZCNxGhUC4TkruOX8BRrjYXQvNhyeUeZesp7zInYGUFGw==","mode":420,"size":587},"dist/core/app/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-QsIOk29ruP8gOUX00g9dfIaw+5+mpWzVEkj78Dr7i+4/nkDLtj3ZHebbtxLTeBCOdrac7lVQ0A0yvnDLlrNI/w==","mode":420,"size":2884},"dist/core/build/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-n/g1bLM05P2FhWWuvr7qVWrdAPdcYOgCysNvuihdVZofSZxhQvjUgsaPfaWH+quZpuz+H6CBz5zqUxk1SOWnQA==","mode":420,"size":469},"dist/core/build/plugins/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-tF1E9QkaKUMduasdcl8rv8X7eP7ocrKQTfzdEnKKBSSD2jQU0BtupRf7CYKE5Ym+APMNxITGLg6oCpdyepb6hg==","mode":420,"size":174},"dist/core/client-directive/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-zS0oNzWFqDXWWBCYXVE+h0FHru/gIGqS6oSiSVic4geZAEasMlI+XGboEFdkyHstipHv5RH1wrluNjQ8OMyogA==","mode":420,"size":120},"dist/core/compile/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-Pci5XKr3cgQq+2DNW22arPoWFfvu/LvFmdZ/6dXDbYcud07i9CjxRZbtAn4A0wTHXzlui9mugEIJ31aJpZVtqw==","mode":420,"size":155},"dist/core/config/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-P5Gle5WjwNcDzExDEoYxNMSO/BqPbZ7+4RngcGbeNhJfaDGJF0ZrHypIzGIvWNgQmyUIQFePYok+sGWSCyuX5g==","mode":420,"size":356},"dist/core/cookies/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-3+WFwApYAn44+ePFD85ne5Zd+wPr76tcRm3rGV6xuCiUsQdYmXACJl8v0VQRDH1b122Jnwd5lDB3rrjB28qWVQ==","mode":420,"size":232},"dist/core/dev/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-ffDjODlg22P3Y9rGQd+/NSgMNS8fIJyfDKsH7hUQCbSc+k6sK7JxGl7GlHDGj3pcz4cacLZclBFQjILAPje8EA==","mode":420,"size":170},"dist/core/endpoint/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-TWNLrz485Gf1LrF2ZBBIpD4AkU/JCtei5V6NtMjGBHIGg3TxBwtBM307y3W+idE9CUu3Zd18E7a6UgCGTy6sHA==","mode":420,"size":987},"dist/core/errors/dev/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-fts7UeL2AB+rH/wWRESE1depURKSYa8ZJZsaVLjVMDk8kmECXwHK0f6AI/zikuwy39kjSnsiJeSUzSNSPYRpSQ==","mode":420,"size":121},"dist/core/errors/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-+tyC0Iu13rL/eFGDQCPpfGeJ/QCD+SaXKwR2+1Iwy5pSFg7Tn53VPqyrWl7XWXKpPY40MvViuW29Of7K1rjugQ==","mode":420,"size":350},"dist/core/fs/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-2KjffYCJsi9OsNV2oDMMWm/2CZ8KsUXKs6s7JkofQ6b83OTtBo3fFfZ/GzOY6aKoDVHS2Z4oljlrQqaj4hLn7w==","mode":420,"size":235},"dist/core/index.d.ts":{"checkedAt":1708389320311,"integrity":"sha512-hfyB/tC702EBraQcwCkQ0rZhckqKHaWnuTguaZs9MRVzi5C7pcuSbwizInha+zRHxRT+u0BkW7nheb+pd/mY8A==","mode":420,"size":875},"dist/core/middleware/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-JcvgwjDUDbM9onmw1cc9nMOU/z9Bg5YAJMrygVfkp0FFHBjGyItXy4Olxh6lPJknfH6+HUupbaMWdv0qQs7ybA==","mode":420,"size":1294},"dist/core/module-loader/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-d8zyFRXF/D1tNcFdtpbAj8QGvd+86O+0XOswbqEjwlUegY9/a2Lvc9yWCP+v5+ftzLzhIwX2wPOJP1LXCr7lgQ==","mode":420,"size":177},"dist/core/preview/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-hw6unEjSj2s7EgI5iMwaPB8YFPaXvumSgQkIi2mW2tRD4uOirU/uopNpzLVoX1XVv9KKM7e79HnCNLC4UusSpg==","mode":420,"size":421},"dist/core/redirects/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-IhNAjMECfA8m41BxU/vbyCQdMZ/uxRmMzkrwaYOJB3t+7isirH2k81ZjQbga6XHcC2PUpOD/26SKm3qOYzmniw==","mode":420,"size":243},"dist/core/render/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-eflP1iyLiDM6MzgWLhx3upQajmtQc36aVOokH5w+bCyUFEvJ8Vaiqd+LIrrU/7k2RLwKmXcMn6OgIaaajgULZQ==","mode":420,"size":991},"dist/core/routing/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-8jYiwEe8nMxOQrWywoHHxYEbGpPZvsVBAdL3g+Do+z664Y9IaNWN7xCdjz81gRO0EDdWT7Shex+y6+CQR8PDEw==","mode":420,"size":338},"dist/core/sync/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-QPs3UG52wvGNiS10cXnzgY+QUmursrpUnKZxLU+wJUk1GQO3aP/AP3kLyt/UEcRt+jQ5aUGxp4YXjKYFxFC5oQ==","mode":420,"size":605},"dist/events/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-T3bUWXGXAz2rVu0wSJBnsrKXZFcxiJ3flGSKwN5nfMMsfd4NyRgA1UUBLGxDRBJS/TKwNX3uq1GT7W5nFVEPnw==","mode":420,"size":159},"dist/i18n/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-z3BrYOczEpeiucCQEOsmu3dtDitfLKtGBAAzjEgkiCFrPyuAzpxbRdlEvr3KbLfBEffedRlLRImH0CYlA8F4lw==","mode":420,"size":2771},"dist/integrations/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-kfaNkkdczMJ76RQ7kfFAusRqltA+Cz4viEDNqw544kMoaxdfcrRB0KxcB2vQVT8ru+kUQWeYjyMMXGkM/cC1TA==","mode":420,"size":2447},"dist/jsx-runtime/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-S5svqkz4YhkrHpghYp6mosXRfw9eHNmHmH0EIPpSIb1MDnldU7n23qtrxwqFVCBhHT+vHPSf7Ee0MoZK/5Tfbg==","mode":420,"size":594},"dist/jsx/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-agLtM9a5B1J2AizuzjoB29MNbxWs8iGB5EOaM3T5t2j5MvhinhWp6XPH1ooOMZkJaSnChem/WLsQL0WqEofiGw==","mode":420,"size":111},"dist/preferences/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-hjCeWV6tKOGZDwGgX3HlQB2DKx2LJw9es+j+yr95hguAIlIsyOAherBQkgxHHd/Shu6atsW8V1iFgCe8HMhgHQ==","mode":420,"size":1513},"dist/prefetch/index.d.ts":{"checkedAt":1708389320312,"integrity":"sha512-TqPYulN6w78yEZHIFxqFfj904KKMCFF4/1ktgZoCdW6ErHU8Fd2dXoP5WPOKJfuaXFE149cIhhA/FQ8V08aAqA==","mode":420,"size":1247},"dist/runtime/client/dev-toolbar/apps/audit/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-xjGN2fj+quvHo40F++P0u3mT4Ybrc1yrzbqttaInb2Slwni91QwDhD03ztY3pIaANzyeLr/k4N8pJFusHXwSjQ==","mode":420,"size":1094},"dist/runtime/client/dev-toolbar/ui-library/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-efIzFhYZAjaT3wkvfBoDJKdPEPrS3NRrgVit/KhaP03wmFVmBigiFBkROCrfDfnlvI3d+GtM0rXSdvcoANoP3w==","mode":420,"size":382},"dist/runtime/compiler/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-mIeWPu8ZRRkT5brCY653ESMHE2854CTUHqoUJrLgKAha4D6wdNoNxRL/CNTLHTJLowNPYseIP2T9WpNLpinz6w==","mode":420,"size":278},"dist/runtime/server/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-WgdIDEWQf7XyoJKSMt5rjsCnKM8iymI6SynKKhmz6J1eFlQTYQotbZ8XVZ3lBoJIdzYuSY67xj8lA7JTcrDWBA==","mode":420,"size":1174},"dist/runtime/server/render/astro/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-YfZEEoebsNGj/zOyQ967h7M/YZ5ZJXScsC6yh3AF/SPiGmOp2nJgH9Gim0fMgksMgeFUPX8SmgBOkXu8ZL43MQ==","mode":420,"size":493},"dist/runtime/server/render/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-OKGybqohARqE0hjItBlAvcd+Ncz7q4ksVJm8BE+yZyFcCAybombAplBLhJgFjzmujDyPVy3KgDga8YMvnSBMtQ==","mode":420,"size":768},"dist/transitions/index.d.ts":{"checkedAt":1708389320314,"integrity":"sha512-T70CBT5irVmgwZIA6H0UyYJLawwD2sUhHmjKVr7UMVXmyQkWIqa0zlnE3AlYOspwDoXJok6/XMQHGctSHqZ8QQ==","mode":420,"size":380},"dist/vite-plugin-astro-postprocess/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-4HWamqalrNeCPpP6XOPwhxNyzjVcrLSOZe+z4zcEhw1eyF87ci/NtIXCZpBfnfApcIj3Naf5q1PxanFKpnd3Fg==","mode":420,"size":77},"dist/vite-plugin-astro-server/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-O8Ie5xI9/KqdY8vxvz2Gnm6aKxFpXFfqyUBWFkk9kxRGfy38UnzfY3FTfSdyuwZEueWFcFw5Fup9GS1iLVlUeA==","mode":420,"size":431},"dist/vite-plugin-astro/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-LnXRbIYrcsCWOhznvE7g2fWToZZ8SnjK1GBo/eQJySpuMj800YHSwMXa2J0OZa8NQKYWg5EzexU7UzvBZx0Dtw==","mode":420,"size":515},"dist/vite-plugin-config-alias/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-SI7s8qq0saLD+MO8BLGxaWkZqXbOxd0kyVuTTMkcY9bDLnnF9Y742XwtdekqNkbydUQQGDgHeSBuVUW9dVaXIw==","mode":420,"size":309},"dist/vite-plugin-env/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-AMqV3WnAFRnHZhvnrZaVBpzs8Vh1cJlhsH4B0HAoYOURqdIzWYHUIyzrg0WsGJO0ZFsx4u/xHuhH3dspzAnbNw==","mode":420,"size":247},"dist/vite-plugin-fileurl/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-dT1Fpv57GWNSvPPafMC0RlC2r/ljMPshP22FoOnONxLJicSXo3FPDdab4tClNM17lsWZ8Z3Z00DeTfwqESn6LQ==","mode":420,"size":113},"dist/vite-plugin-head/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-Wipp2U4Oz2QLze9AvdeimXr56RKM2s6U21JePaWAkR4ERfmy3H39pBpMmJVPDpT3XxJXTMXrEaeUtUz+Ob0EfQ==","mode":420,"size":317},"dist/vite-plugin-html/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-6Vzr1ZVye/sL6Hbkv7inlCCFybOmhck8vo9p9Fb9/JIvn5eC+Kb/WSD9K0dNc/cdtAdR19xRhzjQ5ha0fz2J2A==","mode":420,"size":230},"dist/vite-plugin-html/transform/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-iEYIIFKrArblyeMuo2EO33PltJmKCybudIczlHvoHi544XAT4i1WuDuEjmXOW6Cs86Smz9D14hi4Y7u3C+dyKg==","mode":420,"size":136},"dist/vite-plugin-inject-env-ts/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-nBkSeL/GftGlbFZJynUS9dR49z6PFhz0UkzDzxKHj3+dWRkSzkmGH6iWSrtXF3HdPGbCjKwkkC1yOOtl4xxo/g==","mode":420,"size":627},"dist/vite-plugin-integrations-container/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-O8sFza+2CAZUe3vKFBtqvH5B30eu3N17zXPRKrwIx75uIu28pA9aYi9GU+Gwb5jN1ZRTrk31rdrqhmPBWeNbOw==","mode":420,"size":364},"dist/vite-plugin-load-fallback/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-kTk2AoOUXiY9CLHR7pMKrBUYnFCRrO0pkvwizS5I2CKAkCnmOR5F73cTFBwYdjbVrIAycCqkypR107QzrHfcyw==","mode":420,"size":375},"dist/vite-plugin-markdown/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-g1417TDx0xIAuC+S4aA1JXjObnvffL5ZgbYeFFKFdsabbe8qhCyxSfUO5lFYxBqSH6uXACCG5OBmc49AakVQ9A==","mode":420,"size":324},"dist/vite-plugin-mdx/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-355foSoqCi2uZBdXKy9/JpgLyQqnAREgATq+vyyCkXfiUUAeaApeCUHF/O5LJgSUYynDoh+7TtLhsIirp96JJQ==","mode":420,"size":436},"dist/vite-plugin-scanner/index.d.ts":{"checkedAt":1708389320315,"integrity":"sha512-WeNcPazio3gT+R3cs9rCHLalpInLPxNpIKK7q0ohyA9/VkUtIu+EZrM3KVXXxT4JFax6KJSYVZMSD/PMa+URhw==","mode":420,"size":363},"dist/vite-plugin-scripts/index.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-HGNyNPqev5rR+XtMz4jErel3XXeWRBR4PGeWtXkHqLAGNXztoZvsgKOdF9dp9AZiM3yrFED2iTpYb1TlW1rw9w==","mode":420,"size":362},"dist/vite-plugin-ssr-manifest/index.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-oonFd9i4Sb2OJqku9TM8cASfM0tQPZx5msJtQaPXZpN5zWGaYaW3aAIrjmBZKHlFA3WOEW7Z4JkLDbW8IxHqwQ==","mode":420,"size":111},"dist/vite-plugin-utils/index.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-1vcKXK5Rr2/o6vP4PVKpf5fTUYwU0njSBW1UctPW7UYckU3vGy5kTsxD5NuHQiwJVqWFN4chqr0soCkl9mYGWg==","mode":420,"size":499},"index.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-TYipSJguZ8Zvd3wLZARgCRuLFygkSxeIVfuAwgJXmd0fPdZ2c6lsbNLfjc6tag3DyKhXrichyPW9pxxBwZBz5g==","mode":420,"size":83},"components/index.ts":{"checkedAt":1708389320316,"integrity":"sha512-0+UfQpmCyMSxl/JiI5e0O0Uy2drxgBhrDnrl8jv8qQSzrqRomGVAzA9Zceqz8Txeh4clHBtLLY4hPvxADH67uw==","mode":420,"size":352},"dist/cli/install-package.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-kBwIv0EBfAKWz4j/p6GDXGpm+YS+XJsJQyBSacqBPK8lxhRBUi0baiIEIL7E3mpM6VUCHSvgrMSayseBYu+RrQ==","mode":420,"size":286},"dist/runtime/server/render/astro/instance.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-5WaCu3kFwjrVuYK8CA2f5cyf99KO+SQuPji1G/1rqa909mc7krDhjCBI9srxTnfXF69tywrMQIsgBguqDixSXA==","mode":420,"size":1122},"dist/runtime/server/render/instruction.d.ts":{"checkedAt":1708389320316,"integrity":"sha512-ye+ICWN8YCVzUXBEGFWdLaOOx66fCvOO5kQcxdTRYIMz7DNRBy7pHCnYWfFj7vBsexVf28oUHG2Y/ZQgRpAlpQ==","mode":420,"size":1251},"dist/assets/utils/vendor/image-size/types/interface.d.ts":{"checkedAt":1708389320317,"integrity":"sha512-jioGH/G+5BJXPBq2rscS4wf2Ku6gVXDR4ACKfkj4fJ3dC2Y8T4NG49EUE6oWcM4EoNMHnI7KIdkYzXbBFATXrw==","mode":420,"size":339},"dist/assets/internal.d.ts":{"checkedAt":1708389320317,"integrity":"sha512-AzY9IGg6U2h1IQxwcOwvhFe7Vhb9DgwV96v8ZqfizsxmWAgfCfqQpPqayjQj8uOwsQAi4n4tC75LOkQ5lw0mjA==","mode":420,"size":395},"dist/core/build/internal.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-1c8XteqiSMdbt30mT0tRQwTBkvNPqEIbv6r12Z57467+ur+WE0fLqI4QXbPLsGG3biUQx24pAZASn8N5rqGhDA==","mode":420,"size":5528},"dist/assets/utils/vendor/image-size/types/j2c.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-+DxwGqoPPTiwT2fa3Fa2sJ+E3SRYQa+aIGUTwf/J/y+TmNf5KTwrJdQCo4ptpdMHqIvZPkKbIJzoO0XUcvTnHQ==","mode":420,"size":80},"dist/assets/utils/vendor/image-size/types/jp2.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-L8cyord0pyNxMapkulUd1gED7b9XM/d6194ebIDoqPcqQNZPDNfV4l7xvAnfAYWqkQeVrJSGLTGF6rTXiWtdcA==","mode":420,"size":80},"dist/assets/utils/vendor/image-size/types/jpg.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-diCB4gVwCqCTFiWxGcR97Uf9vMu3PI/sazOcNdg/cNdwn9GkUHoJmq6fxMcJOIxjlKZdKOXCoqFaKOuvgalfPg==","mode":420,"size":80},"jsx-runtime.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-Ypvwm2m42DlnOZUGJYyJEF6OSYtXrzvSFCs8LzISbuNCNgoh3+8ycO2gdGHrKqBa4r06sjLcJMKEE+XZy979aQ==","mode":420,"size":358},"dist/runtime/server/jsx.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-fvn1y6sAXQoS+D3PucVOZ4Noaqc4XQK0KkK8nH8OsQS9LKqG3i2u4KeFMEhN9vQ32eCtcXk9302GWo9DkKS22w==","mode":420,"size":136},"dist/assets/utils/vendor/image-size/types/ktx.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-hiLP9jRcJLFgrBS+PfYp+0Cinr+TwdhfJkZqZBIqumNtyWjN8XXkqTgtZBvpQjP3qoEuVKzv1Pw+myRk4YfE7w==","mode":420,"size":80},"dist/runtime/client/load.d.ts":{"checkedAt":1708389320318,"integrity":"sha512-f4ACwYcc5dTqkJEblew7F0b5rfOTkFw1AhQv7yTZdAEqavOa08Yq4BsNdh3dDjZ/4M8qvC7ZfjB2qTz3nW3RQw==","mode":420,"size":138},"dist/runtime/client/load.prebuilt.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-YOEL/vtY5BQtAOfWHuOimJIzGDvyLJZwjL3P32RF/94TnQGbSIv/nsKnzKD6kSasKy8awA9qizKq3Ot3o1IMEQ==","mode":420,"size":371},"dist/core/module-loader/loader.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-lSxbBCZ6qVHZYDSVuuP8HKEAGbxJOqdqOw0l4QwO7ExYmZdtcRL7ZxwYP0bbg9gnCcHTy8PUdQ/lhZD/juAgOA==","mode":420,"size":1830},"dist/core/middleware/loadMiddleware.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-aPha5njTkSEFSpc29GEW6x6E+QfjOBprk1t+Cd/YDIf+OCmZVVwKyobTq735SMaWH3lO/52PrrGL1xnEjVKpFQ==","mode":420,"size":369},"dist/core/config/logging.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-qNiwFSd8fY7+lWcTY8PVHpZm2Gc8MY48HwKqe7NLOqwgP16jeZ5Y2rIhY1Uf1Yd7SMfCHxBM1Vx0ph0hHGcRtg==","mode":420,"size":191},"dist/assets/utils/vendor/image-size/lookup.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-V5wGo6H3yLcgNnX0qo0AMMIQGeJfOvSRGf5vc9KS6DmtCGWcM90MdvfXiW2yuR+zOXxkb2HyL4czY5OmA1/ICw==","mode":420,"size":386},"dist/core/routing/match.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-FduYxVSS2Oo/7mu+pR1WnH/G3YZUotGYKApGyn+aHWgd/qnPyE4fJIwvX/298EMuc78DpHXfJBFoQcyKFkR1iA==","mode":420,"size":354},"dist/runtime/client/media.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-E9z/tUAoq5pz1eVAH8dr4lYtf9KQ54o2R/YV/q4MAh/OE3PSWBIRdD1kopKsQQpurual8i9X3qfIpbc2oaBP1g==","mode":420,"size":211},"dist/runtime/client/media.prebuilt.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-Pd5v9rhgmbn+ieGmBgqicLKY+3ypdN0u5L4tYqVuXbld7lGzUJ+7tYRx0ZeD70oQKV4E315fDIdG12/Gu6twMg==","mode":420,"size":485},"dist/core/config/merge.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-G11jX5gVi5WrPaKVsFOE16hJJ694xGZ16nGKvLx69/SvNg4QBi6ME/ylmXpp0cyfSVtXkfWQrIoIbiQT7/huCw==","mode":420,"size":139},"dist/core/messages.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-6PST2/0wkNEa8AytmfK31WLzOlp/jgWa2zMMSmY+cqO3avaU95gyByL0jMTTx9WH0t4kGiUh3zHzxYS4zdHqQA==","mode":420,"size":2325},"dist/assets/utils/metadata.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-xwdAgZEUwOVL8ycq19jVe/dJTLnzGCUGmK//8lPhxXwnvtDACBOeIK8BqMLVfvcsjwYi2Ul9wa0l80M3ie+suQ==","mode":420,"size":169},"dist/prerender/metadata.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-ZqkZFuuK5zBUiSHPXOQ6xrfyDfbfVsVhyow6kMIQzWPKTc7x+oL5x32HlJh2PeXHLNtyWgnu1LaExq7Ev2ZHhg==","mode":420,"size":362},"dist/vite-plugin-astro-server/metadata.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-KbHrlZf01E9wpz62tirSCvr85N6AAz/XD9FYQMVB6MmIEeF+My5ICZ0wYlkgSTYkvVq5v89oclvzrZ8XUFaWEg==","mode":420,"size":245},"dist/vite-plugin-astro/metadata.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-VCAOljcfXfnNUv9WGOQLnq00aVm3+D1fI4k9a5UKqme2O1WwGi4frVYYWsc9eHItuMKPnjbszBgJwRYKPAct8A==","mode":420,"size":216},"dist/i18n/middleware.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-uZF4V+kVNzksZTavS1wFz32w884iuKfT6JBiE+4CcLQou0uPy1KtX7Lgl31atGJCP0fPoZ6SX5D+zWBLpf6fSQ==","mode":420,"size":482},"dist/virtual-modules/middleware.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-wCGTshxELNWvwuJ8lVOB9Xkhtt4SZjODZRjjPoeNPjHo+In6TuHxPIrRDl6brJv1Ho7PcRy10IfOJYj0itiIVg==","mode":420,"size":74},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.d.ts":{"checkedAt":1708389320319,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.wasm.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.wasm.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/endpoint/node.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-zPfVDR7mzo6clcr9f1CSHVTWUWGugS0qdoS/6KEgRRtcLGfZqC74fQwatKrJir59HFRMUj2vbE5++54CX3Iyqg==","mode":420,"size":184},"dist/core/app/node.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-mOB38/9QW3ejF3Q0sFDaj1WnBRdKR8YMeayL4OzozfPMypWBTtXf0ha0NRm4cXJ8sUSS7/lD8pHl+GeereXeBQ==","mode":420,"size":2452},"dist/core/logger/node.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-0fifhVLS569/RkDWXMv2ZGjVNCiq0CxKOJdDbU1GdHIz/lT1eN30yxn4NZo1S/CX1Xi79CTXOV3c8nmZ/mofGg==","mode":420,"size":183},"dist/assets/services/noop.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-6ZFAm5WkTtbcfydpWu3iAFH5NHkH8FQYKVX16kXNR49ZMetG8tnXBmFtx9zD1QYsX81RmRgJLK4xj7Rm4ISD4A==","mode":420,"size":129},"dist/runtime/client/only.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-9lBL4iJBVsk9D58xqycpl33yMTZMJQmlwHXkQDCu25cdcdm+bfV/VXRphMfQsEYwq3ioYFg65hG1U+GlzohHHg==","mode":420,"size":191},"dist/runtime/client/only.prebuilt.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-jsU4evzC5JIGJAkSUXqHu9+IbzzpeuPCuy+16cfxsYnzKx7JXEtrQH59AL2Sqwmpx923UywVIWSzG/OIyhKPrQ==","mode":420,"size":371},"dist/cli/docs/open.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-TEv/BADChvlg8XkcYPG/fjYq8n4Pi/1gTJNE+zSpABphP/yuAzZPbWKBsX+elR9HnWMzE1ZQSYIQGJ+XznaLsQ==","mode":420,"size":128},"dist/core/errors/overlay.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-Mcf8RDZIp83EWZ1JerjNNmPl4pOVo+moBhv0Rdbl4oUueYIh6TkaXH0ENToDk5MFWTjvK64BphYZ38zdQFWWyA==","mode":420,"size":60},"dist/core/build/page-data.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-54dW9KMkG5l4+zDMd/t/17I98kMbji8x1CLFk5borCnI6oQGH3izqKOTb63yA+Pk2kGegH8GhNgUxsW+cBhU/A==","mode":420,"size":507},"dist/vite-plugin-scripts/page-ssr.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-7A5GFYdfRHCqVvSKitiSibbu5svZte3HnBxq52A6afT/c24+OlwnZdulDPZx6jqqNQja7vn+f4FdQ+PAkRHIcQ==","mode":420,"size":216},"dist/runtime/server/render/page.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-KrcCzw47PkdnL94hMe5ADsAZHqetgruCoiLQ2ydXoRVzIImo/Ss/q9mJBnuEsEXmXfKvPktc9mR6Y725oTtRaw==","mode":420,"size":393},"dist/core/render/paginate.d.ts":{"checkedAt":1708389320320,"integrity":"sha512-Hut9SRDE+gVSTlVm3G2VUyTnNUE2dr/VFz9ZOZisL0dGmpEkTd3RyQh9+zqd662E9PFGE0mkQiauczN0n7U+fA==","mode":420,"size":220},"dist/core/render/params-and-props.d.ts":{"checkedAt":1708389320322,"integrity":"sha512-+v4GI4nSVT3sK2OE8nKOjLmeCAgTJe8DqSRufYEeCw7Z7bF3Xe35c8u7rfoYSHWmEyPMpgylidO1h7+XjSFLJg==","mode":420,"size":505},"dist/core/routing/params.d.ts":{"checkedAt":1708389320322,"integrity":"sha512-DSYE8wCzAoCISAAEbVoExR7HFnWu4Lb8crAuHFt09/zNB9FznCtbqmsHxSLLKYVaLu+7P7EjtYCqNJ+VUh0tyA==","mode":420,"size":601},"dist/core/path.d.ts":{"checkedAt":1708389320322,"integrity":"sha512-7/YpQ8i3Y8zYhxzQfRlXS9SoZivcEYkwwrp/OGHHAd/drdojAytK6wawz8fyNJiL9eg3cNuGekp8EXJXQPXt1Q==","mode":420,"size":48},"dist/runtime/client/dev-toolbar/apps/audit/perf.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-vZ2a0cMd1lZSxPMMxH4Vl/jyqd8QGu3MkYnrZGLSnaSEPFsTs/5tl0+B04+61XoTZyRRXeOO7EirNf7sWhduJA==","mode":420,"size":109},"dist/core/pipeline.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-tshT0pALHj1+Uw4O8CsOnODvOQ4DQK9QG8+4ZVh/eB9J5FvqWHEsk/odIx91T2+qIBEvSsbAGMyI1frx+8soxQ==","mode":420,"size":1475},"dist/core/build/plugins/plugin-analyzer.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-Tkiws1XrbdujAvAi8vCTRwX5Aw1c67BcJIQyEYz2TKXnbotfcJYkepleJRnjV9Kz31bdgwNFiSTfzzbVBz+qxw==","mode":420,"size":439},"dist/core/build/plugins/plugin-chunks.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-dbJZke5Zp0lIJ0gLOU+UlT3y6mo5TrGC9R5X1Ccnea+Ir0AetuwvfM7gjKrMWkG2Yg6Q9czkjnWJ2tCslFt9Jw==","mode":420,"size":218},"dist/core/build/plugins/plugin-component-entry.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-21h4UmAn4s4PXYNPBGmen9H9fC/oOgAZBS8OXsn4oYkzvSRXpROXDIV0gXtV5MFeKvSeFLjwc3SI8Yc7VYCzuA==","mode":420,"size":721},"dist/core/build/plugins/plugin-content.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-HEi3SH85Q3/17SFyZ4OLyfOstls6fd/otTo6tK2NzYkofF8ywyACHslr2LbWsyP6Rs0SPGEqvx+EChUnZlLg0A==","mode":420,"size":273},"dist/core/build/plugins/plugin-css.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-RiVcykuUMTCoKcu9xlSku2WLF+YEjOR4qd+qk9QKyQT4Qf0jCX+j9EqnIE0g5dvJIGKMmydSPyVojzzLueCchg==","mode":420,"size":299},"dist/core/build/plugins/plugin-hoisted-scripts.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-Hh5VTBkO+nwEUMPXup0iaq2sG9XoEV3VA/U0wX8hKBxlNYbDV9i1H4aSAVABkBRrsBtiVsxZwjGfn+04edd4wQ==","mode":420,"size":510},"dist/core/build/plugins/plugin-internals.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-O3AI0ErVvkvEIrjwS8hv8KCXllA2R31JZ82ZGI9Sxg0ubd5O/yXZ1CRYfs34MUF4opaFrQew3cZizRVwjnN/xg==","mode":420,"size":348},"dist/core/build/plugins/plugin-manifest.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-vBgiE0BgZJfUqyhjKO9b4vErKLILhaAwtTGSVzM3enobUVBqQHAVYZod/7gL00DGGujuCP7CYmbolgEHqDwwyQ==","mode":420,"size":928},"dist/core/build/plugins/plugin-middleware.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-cL+EDJDxZ8RO26ZjldCUYPT978qWGtqlzGJZiAZzF1xUAqhXhTI143dq16U+1AW0HfgDGaIYwEBSmXoEcVwigA==","mode":420,"size":348},"dist/core/build/plugins/plugin-pages.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-LgswwlHYzKb5OCaLAL+gWctqmDy6XGsvrdu7tOKxslDxpgqErcmVH4/yKf2LEe/9i6swyTlwggbRN3nlKvcNRg==","mode":420,"size":729},"dist/core/build/plugins/plugin-prerender.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-B6JVkhhxyiF81l35VySK+GEWW0G2oyl6m0yKTxfoGBL+yse72IWBYI0qm98JzxK8Z2VbYMzpg9NgNiyIfRy1Ww==","mode":420,"size":275},"dist/core/build/plugins/plugin-renderers.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-/wZxOSpJt80GzaMO8O189e3XWJtjmkKGjo/04c2kXzFJb5uQlktPXncP86p9v33bhDKBGES96yW68raSWaH3vQ==","mode":420,"size":464},"dist/core/build/plugins/plugin-ssr.d.ts":{"checkedAt":1708389320323,"integrity":"sha512-FdW5dIXsGVGOLPwF7Wdo2pCrP6MNlHFON4un89nXgWubzAw5pK6cjb8QJb789a+cPipfanrXBHAI904Xj29aMw==","mode":420,"size":655},"dist/core/build/plugin.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-ScBxI5VSgnStu45SkMIS18I0NJsbdCvuaI3XzCNWPAvOTv6rpB/G/iw0V3YLcqNtgUYQoQ76UQ2tFpZgfkuAGQ==","mode":420,"size":1795},"dist/vite-plugin-astro-server/plugin.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-3H2mbxzDiUvjSKDTRcjNE7m2YVIkmCCSzHKlh0KLgFNCKXwSsVpvo2YjD2Gcp/SMBZufD+Jlasa93UfilX7Leg==","mode":420,"size":752},"dist/assets/utils/vendor/image-size/types/png.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-6rxB1dmo1vhiNNrFXN4T0H+sZf2xP2QTbaOjPfaEtzff0wZ08Lt6l/zbEibfKcBV64PQ0n6i5art1Ja7iIKSUA==","mode":420,"size":80},"dist/assets/utils/vendor/image-size/types/pnm.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-XFGPXEjlhGEEz9cnmsSf9HyXUNF1TiRGyE6U75ndVQFqJtHya+p9c27lFlZ33M3TuBJ/PSGLvwgXeHfKs8PPmg==","mode":420,"size":80},"dist/core/polyfill.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-zGvOCMCxTbCnqOlOt6b6InCVqTupdyhBFt2IBcLVcqeKvZjOE17fKAc0Q0dReq7SVqvlB+jk/r5+klkeMitqZA==","mode":420,"size":39},"dist/virtual-modules/prefetch.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-7/lGOXOowGl/I4EuX+sNjzz0jvy+G1bBBcIyrzGvMkWIvqiKtdfxShLIuoFmF4/USr288Y6rHxyHE3iHmT1Maw==","mode":420,"size":38},"dist/core/errors/printer.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-xtTad48SJZ9xSEi3dkYyHfaSWmv6I8VfrofWVR5abX2ygFnNsgPYExACk3ox2RmQZHh+CaAz2L6x18NgJqachg==","mode":420,"size":189},"dist/assets/utils/proxy.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-+/wvA9spUy1OFUxFGuwuBpc+avxotbKGOuF19MSB2Qp+xrdGf1zydGlQdGpeRYhJd3CKKgQeNJmRPH8G3ysHVA==","mode":420,"size":136},"dist/assets/utils/vendor/image-size/types/psd.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-NQiMYfsGDxjAfA7MrZs1j9UO39Nuy6Rnm8bB45SXLsmQdDHXUuwyfkpaAtoz5sVk1ldJKKJ30VoqR1a2dyJDVQ==","mode":420,"size":80},"dist/vite-plugin-astro/query.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-7QtNmb1mJ1uLmYIUrFDtiXjH8Hw+w0lxkrPGGgf3M/ApS1dI1+UZYVEm0DIKMi73uZcDLN065ywNafxGZW5eHg==","mode":420,"size":347},"dist/assets/utils/queryParams.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-zKoPhcMh098kXRd608D7MTQVvJgx0+Q85CcR0dSho4cVVt0DBJATurDapeBFlHFXVsafGjQYjQYyot1fRxlhxA==","mode":420,"size":183},"dist/assets/build/remote.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-P99bLBAHRDbhcazWg6mLimgRJf3s147LC2vuLrP5sBn3rUC3dv0SvJ30nnCJ90QesJvCJt03t08ZcTSsFv7Wkw==","mode":420,"size":238},"dist/assets/utils/remotePattern.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-O55is0tFvo/Jj3q6vSLiuSwRUU5A4WriJdu7oWMEkjOLMW6D6cHkS/65KYZjA1FFQbjeSiIOnlBO4wGM8lU16A==","mode":420,"size":776},"dist/assets/utils/remoteProbe.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-FyGfC/AcNWHQs9e5MQFDnxdDnF+xcjIqeVhbw9lYrHk1FKQ3oTZHly3B9CDAjYiHvP9bO+CBe7L0KF1t4tSL5w==","mode":420,"size":129},"dist/runtime/server/render/astro/render-template.d.ts":{"checkedAt":1708389320324,"integrity":"sha512-VBEtireNeITtlPv2Hbc8NhIjtCIDVDXPJBvceYt02ljzne935TxsmyPh+IxjeFFv/KKo1Zu2zLXICfuQXFRNNg==","mode":420,"size":615},"dist/runtime/server/render/astro/render.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-6IT4fmFNnFLQfCZOZv/ssCONKLDQ3JWQf1/qrmfrxmAlnPSVtgdlxvKOBiF0FWpNmjpquQ0r61IBmxRuqn2meg==","mode":420,"size":750},"dist/core/render/renderer.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-xciHLd2I/9inWJ6BgrifuFQqFCxoK64YK10dLc47+0kYSBA8SUfZD66Fimy0uYVX1aQxiuKsuRCEkftnOtFSEg==","mode":420,"size":273},"dist/jsx/renderer.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-GaShLbdJAcMBaHXLhEuboFVciToAuzIyVrgnDe3z3Pwm3/Dqf+sR88mWTx8+3oMKmVRGYlcLypjNaIy/5hyHQg==","mode":420,"size":204},"dist/core/request.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-BDQQVDo7q8UQGeVgy/y9W3d1beLcXv3AlJOezb3QaoZMwEKiXLjOr+wmDSLl+pjZANizAWG8MiZqGystVhnOdg==","mode":420,"size":722},"dist/vite-plugin-astro-server/request.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-7d16fu5bFdcD+liB4rImm36/V+ZWu6khuvcep8vmzuNYN+yhN6Qf6LBY3OEdc7OfLpKoJA8bGrwsNndxFQyz+A==","mode":420,"size":740},"dist/vite-plugin-astro-server/resolve.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-8AD1pSU3RDUeAUf8CQexNMnw/Ayg0bXnPDwgrKsaxPiouGkIXl5f2QMij+o90y3mpee/XlFvgmTzKKm0ySGRcA==","mode":420,"size":172},"dist/core/cookies/response.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-gBngHqs4tjDvTayS2Fylw6hKFBcYVq7DcDAOIlAxnyToqTfS2BtbKKqiUoPADZn0IE4hDmxASafjqJaJZcsbHg==","mode":420,"size":316},"dist/vite-plugin-astro-server/response.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-z31L4qpH8e1giVQyvcK/kTtCSvt+JSYdaSxbR+Qpe4XENuSjSzBIqirZz77Zj3qWGJrGD2rnQ1BeILRzaMBeUw==","mode":420,"size":822},"dist/core/dev/restart.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-s22YbsIWui2qPDhuchiugX93DL7kUBRf1Pc3KA8eEsjC7Q5KCnEOkFYxigi6x6vx6qdIJLNkxpeO8H4/TFsr/w==","mode":420,"size":790},"dist/core/render/result.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-zPnzrIE9gtZlFi/Q8Mrq4PRzKHcCUTqabhD6byLVItQtEZFtEfkwAUlulYBLupXSIWQym4aPNq2rbvDS2OguCQ==","mode":420,"size":1288},"dist/assets/services/vendor/squoosh/rotate/rotate.wasm.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/core/render/route-cache.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-9V3P9mMld75P73C2NjR9WzUNfrkpY65XTdzjn8qpWSpaX7cD3VvCwwjt2ch/TcuXu19YiSb6lo4lLB4Az4p84Q==","mode":420,"size":1302},"dist/vite-plugin-astro-server/route.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-DkdKJs+Id6iF89q4oJGromBZOF8aGSU3kuYwFqcO3vcblk4UIlkN1FCZG9j5Z3064ztZPBGC5phKuhKkgs4SGA==","mode":420,"size":1242},"dist/transitions/router.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-JgUkm0LfpKtNwMzKgdSoMf5lviSlNnQcernQ6MZCpj5yEX2Oip0u4nMWZ/fykm3wCe7QtCKYtG5SIIfzAgNgBA==","mode":420,"size":356},"dist/prerender/routing.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-YhHBJeXIxzZHNNYI8Q4hV+cV1K7V21BpBI1hb6rn7i34rgxaeZca6aSA2VaxDJN1ieQTfV8NEwLE+wW5pTysfQ==","mode":420,"size":595},"dist/content/runtime-assets.d.ts":{"checkedAt":1708389320325,"integrity":"sha512-78aXSb9iwu16ZXLSmJphiXmw7+wRi39f1cEssvpUwc8DIftbmcw/eLbKedpNsOzRjUD00QCkcK4o+uQw+4HMsg==","mode":420,"size":437},"dist/content/runtime.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-dsAJkni3i6RKga+I6l+nGXdeTkj5gyf/r9ZajUqaSgmrOHg/terXWQJaRmb6Ee8gcr2o+4b7lgwYhdTgqPiYkw==","mode":420,"size":3015},"dist/vite-plugin-scanner/scan.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-tTEMZljjB3GBBHZZMWx7OmhQAIC/270DtheoXi/0Fmooo5ieeckwwXfODWbi5Ri0ziIr86HzFolGWd3+pTumbw==","mode":420,"size":227},"dist/core/config/schema.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-bv9x5BlPG6UYj/ftNjRHl4kOayOd/yJRmxKyazdscvSUyGjdVn8aVFUgIB4bhbX6T9/sxFg6vuX6Wx16dRfZxw==","mode":420,"size":102582},"dist/runtime/server/scripts.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-epnkESnFPhNnaFnR4ahZ4dpwwbHMmyMxNEKIJBcx3AOz/0sizpqn34JJjj4xNxZHZ26xqqyvLPyHxtVG1t3CAQ==","mode":420,"size":409},"dist/vite-plugin-astro-server/scripts.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-Vd8W4mG27IrRsuz82FBRqLPSAv/lu2EFhJ/h2SKflhKhuAMKrs0zCMnCNnXmlz3ujgtcHH6k41wZcTo/y00g0g==","mode":420,"size":287},"dist/core/middleware/sequence.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-xttiFntZCuFylFPzkfBb9HyjxUDZBl/0TfqziOTfu0268jDdRGbhzhJ9yXJ6GDvesz7Qm8bCu44N/30ehRk/Zw==","mode":420,"size":254},"dist/core/routing/manifest/serialization.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-EfGdm77tjrPW9sLF52f402p0MGUgOvnnt/eEMDwvr1UcZTcE7mobj99PfFcvBZ8aVYbMki+tFlY0j4VIftkfpw==","mode":420,"size":317},"dist/runtime/server/serialize.d.ts":{"checkedAt":1708389320326,"integrity":"sha512-0NRk29WptlSb+sMOHSMfqSPcoZMhXY7NvJjSIm1C/ZYCj76bS1IaXsbvuQ3bs19YdANsma0PBAbMwNXga7W+Wg==","mode":420,"size":163},"dist/content/server-listeners.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-ztg4yGfBoB8AiOqzwnDc64lgQgKImN4+ixF4V34X2JjQNj3NDjUYK9UK4YMwy8eCz6Rmj52aoiydKo+51NtXbg==","mode":420,"size":536},"dist/vite-plugin-astro-server/server-state.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-DRsDOUbdkj6PniOxFH3Jifzt/ynnKg/+mSP45p8s+c6V5+EXz+1M0S6QYvcIADd3dlajk7S0zhq7XqGtOWBH5g==","mode":420,"size":647},"dist/jsx/server.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-673AIlpwxhf8XXmBSsi/pYgBY/1vmjlTB7Vj9hXbV/CbXEtnpHsZld7Pn+XG25GiN6ze4248yRCSYOSNUv77tw==","mode":420,"size":467},"dist/assets/services/service.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-5CfAt1wZI386zO+908Sq+RVp8S4pZ+CI0Ajs43MCAn2Ig7leqy9kIGyIDnSTJX8YIA0QhuGhfm1Z2nG8v1MGQg==","mode":420,"size":4820},"dist/events/session.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-Wc43tdVkEb75/iR2iEVl16Sho0JOCXovcuVpycmxHszWyVs4KDic+nZLns1iKxUgyYQ2YgdNZrl5ggQaSEx5WQ==","mode":420,"size":879},"dist/core/config/settings.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-su/2aAWlZKa3yA3KyRwhPyR3ai9uJk2L/Ys1qUFBDYWhmSSm+c6KBYfag5hKEzSu7E+uENpuQKTlucpksIfiuQ==","mode":420,"size":252},"dist/runtime/client/dev-toolbar/apps/settings.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-+9tvYDLViXGR+axfO/1JSPUpvqBrHIC08gYAtI80cgWD8x6H8+8cqEo2sW9EjPs1nmvY26WCivpbBme+sMY9NA==","mode":420,"size":142},"dist/runtime/client/dev-toolbar/settings.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-ioJoNBNVJUQcaM6Lspl3KNqQBpu/4fy+gh3NdgGgwawLrLT36jCTHEQ7v8mIqYDmtWHZSbWQsWSaSqiH1PgFXg==","mode":420,"size":428},"dist/assets/services/sharp.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-xva8eYtqWJliZdXfbr9OIiPz2UdVBaOxa9do+6S2lYI7itgOeklrnMHPxL9Sk20J8PeUyp3beW7UA3GUuHJjdQ==","mode":420,"size":444},"dist/core/shiki.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-QaqAkl2IX9MkrLv6DQOrgLwi7xHs1wdG24kARUPCVVVpnVaxRs+AA2ZTovri0U9Ack2/hgjBCxZvUul6Zt0PLg==","mode":420,"size":176},"dist/runtime/server/shorthash.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-CGvCRdz5mjbDI9Ofbey5wPbaNd6MkiAtNwYxiyH03SGXKRp9usBENZXDH4N+m204xfXlB44KLl0Q8ou5PUnzcA==","mode":420,"size":1289},"dist/runtime/server/render/slot.d.ts":{"checkedAt":1708389320327,"integrity":"sha512-k23+5E4jyzcecd3ZOhJ3iKOOq6az6G2pTIalmpAC8yg7cNGPyeJ8b6KW9ngCvGKgKJFAfn0SY/ECdWF9CqjyIA==","mode":420,"size":1426},"dist/vite-plugin-html/transform/slots.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-qrhOlpqL+2zYIad55z41XraebyJBwOoVZp87mwL8uplpbxLiRke/xD05WSwxlHKVtlatpRGDU0mavTdy7+FnBw==","mode":420,"size":264},"dist/assets/services/vendor/squoosh/png/squoosh_oxipng_bg.wasm.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/png/squoosh_oxipng.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-SlA4m/DB+nJ2kze90Ek32qSFk8vbOb7N2Y0rEbQ4Y271Xe8rJimJSBNYxAl8GhNAHoeUwCHe65F+oyUoZOLckA==","mode":420,"size":321},"dist/assets/services/vendor/squoosh/png/squoosh_png_bg.wasm.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/png/squoosh_png.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-5AoOZoIoNmN/i2MtFEqC8g2YUTHSssnPETfD63ZJr32aFsqKGtrJRtqSeG5p0y+HKSNWJHHJZSjqbsYHeo1ybw==","mode":420,"size":420},"dist/assets/services/vendor/squoosh/resize/squoosh_resize_bg.wasm.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/resize/squoosh_resize.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-gV7DlYXaCOClavqis4Bf4mSf60LgibdJ+PvotMPuXZp9ExVEXHBR71gosnnNVgNwhJ0E6fhg/3i2tYu8PWm2mA==","mode":420,"size":624},"dist/assets/services/squoosh.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-JHzymG2Gmq3iQ+wnS6pNH2Qup0el1PSM2/4tYsNBGpMfBclMHLQYGpu22tWJbL2NhypJtqVh+hH56X5CcoAkyg==","mode":420,"size":121},"dist/core/render/ssr-element.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-4vPG8oiPbMHxMim16C54H53g4tFDLC19jx1aZ5YX939TEdZwrr4T/kjY4tdt+Ht8tnX+EGAODg/HsauCv5RdnA==","mode":420,"size":1072},"dist/core/app/ssrPipeline.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-TPD8Cechc4pRLvnRJbMPmS1UHQUXroTNDe0y4y0xIbsg1myKaDQhM4IDm3WWS3KuP9Ge7cw+8lcjgzm+UvWL7A==","mode":420,"size":102},"dist/core/build/static-build.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-NTa5x6KVo/xLiNWi29sikCH/9MjfEnWk19DadLhMdWb1dNUqkalLn2UR3Y//G/cywzKhiy+CfCKKmgmT97oE8g==","mode":420,"size":2138},"dist/core/preview/static-preview-server.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-Y/QhhchppbY70r4L0eaD57KTFXxsDRPfiwTx2LyJcHIkHuTMxd5tdReoLyyQ9aKqN8QsrppQqhh+wKyn+VAQ0Q==","mode":420,"size":469},"dist/preferences/store.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-37OQGQ35kEpPw8oWQHN2F+mFn2Gcvvh5JPKwdFiZE+UqF2U9M81mD2qFXcKJ5DO2hI1lpRZlyRH0qXC/dYhHnA==","mode":420,"size":406},"dist/core/compile/style.d.ts":{"checkedAt":1708389320328,"integrity":"sha512-IvDzW6VcO7NZMeoZh00pXTiIs/FSL5sCP5XQJ+ZwizYO9LRp0Ku5WgcTr96nCerKOtLaDVBpkaySmPCL4P5ClQ==","mode":420,"size":363},"dist/assets/utils/vendor/image-size/types/svg.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-h41H918h/yxAlR0jZbYJXXWttkHZvOh2kvYRDqZDRJu/4MWz45VlYi5OEFtj2TQYLIeycMMC5xtUbAhWJBMpZw==","mode":420,"size":80},"dist/vite-plugin-mdx/tag.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-ZgDU3DmTgAhtsopiBLrVj5+Us21W1cmu807FqM/ZAd99eanczBDdhJKWG9RVwxu2IKOSEI8EHhmE5trcAhpxvw==","mode":420,"size":616},"dist/runtime/server/render/tags.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-bhfamvM/1/PnS0WtVQJkw1JD+vMHOKtS2FWMM6xMJ7T5wZBCJ0NdTyfiF5m/8Aic8G1pWcliDX2sj8g41EWmGw==","mode":420,"size":335},"dist/assets/utils/vendor/image-size/types/tga.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-3Ix6sYhulfonXgnTbZni/NmemgGa0OeArb857rBmHHgcgj6JFj80YdFLl6S+ec+RZFdLBCPDgbEKzj43zFTvnQ==","mode":420,"size":80},"dist/cli/throw-and-exit.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-Tl2szFiE8N0B6GWLKoaf9rKUK3ZYXoE6kj8RFafwK+eF35y7xQF5JkRtslt/GEAtaVYPhI0EXI9BYKv4sjS1fA==","mode":420,"size":110},"dist/assets/utils/vendor/image-size/types/tiff.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-3vneJ/Sx8Hh9y8sjP+4Ir/R0bgN1ctS9Npx59CLmQRzvrpR056bIk/cLvmYBb8cmDgD1SX/80aexwhnVMBPGyQ==","mode":420,"size":81},"dist/core/config/timer.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-TEfd21BL+g0uorN9YTzQS3yynbEnEXYpK/3It3Jesk3R/uYKWWla9NQCizMpMQpAyGBGkKPEb3vh1zZeHNTWYw==","mode":420,"size":660},"dist/runtime/client/dev-toolbar/ui-library/toggle.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-7xtBwALtVC6FO67D6N9HxnjJ1haO0eobUd4bxa0KKXfMTQeDjgR8j+G2v88NRl7Fn1mAG5FhB3Jd/WmC60uX5w==","mode":420,"size":222},"dist/events/toolbar.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-Fi2oH/g8x57u/pZsIlrzltr1V/UyS75QzapaANdFDYWjE0UOhkCKzvNaSBJDenfi0kCNEvwfmA19VteVXNYDVg==","mode":420,"size":225},"dist/runtime/client/dev-toolbar/toolbar.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-7RBdigqHpi/mP/FVgaysdncBSFWkzfngtu4hmCVWVtvSb/JxdTjuZLFmJJFFb0e8lFVoG5NVbawZWuyhO2MYDg==","mode":420,"size":1723},"dist/runtime/client/dev-toolbar/ui-library/tooltip.d.ts":{"checkedAt":1708389320329,"integrity":"sha512-GGRjza1pusHD0kfs+8YImIpkOCZNX7N+SrxA3LtWxRh5TBxJyuK/oya9AYTuokaTruYhNk/3iFmB+2+n2qtd+Q==","mode":420,"size":508},"dist/assets/utils/transformToPath.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-z6AXFkm1mOTpFwShJP4l2b4Ix/1jl5RN95f7xKMU/iKZ9LcTAUV74/Pz7vEqwj9TOmvBu1bUpR1Lhi3Qa7zWzw==","mode":420,"size":265},"dist/runtime/server/transition.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-1oNSQ0U87jnDQ4wbTwg27RfGJ6YG97VJifdeg5fF/D0twMVPEcfAqan8oWj4kexY/oyH9sYLXKR0JbKwdVAmdA==","mode":420,"size":522},"dist/virtual-modules/transitions-events.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-JeMVpWyhK5UYjaifP1SHX0XUrPhJDDryNulj96okeCG/DRQmZVGbZRXc7cyE2XsRH6H8BPBOCXhPm2F91uXVJA==","mode":420,"size":42},"dist/virtual-modules/transitions-router.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-TLNXO22r/gRFBojNooRv7eKduMDRSEHDcBoYmlK8mVvy4MW6//SDek6Ve96zzI/ZiydVumVHXHebgnmw8WGk3A==","mode":420,"size":42},"dist/virtual-modules/transitions-types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-/CYE0efpQp0ZGSbBI+zL1Xxt+0/Rum2TzLuzMX8IeyBFiDAsF5hQH9cgOSWU3SX7Vxsu5KPvXk0aZ01rlss1Fw==","mode":420,"size":41},"dist/virtual-modules/transitions.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-41GINYAEbUm7oC7397wcIB2Wo/4X1Ih6arr4MsTMoFuJujexSXeNH/LRWFQiAZeuF2+3OjgOAJZg121JK2bEsQ==","mode":420,"size":41},"dist/core/config/tsconfig.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-kv5H8/KjlyBKxybjuJj409wIbmuReOaCbT7mQIR16N6rqxmJU8zrGomVGp8KPR36zGgZrLGful5cc09v3hB9aQ==","mode":420,"size":1479},"dist/type-utils.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-4ABU22+D8meQzEtSYxSa6DORGe75CUjHjwFXgLLvy3nLc35GIs8OK+sukbz6DEBPJAl8xS/7I570AxNyYkmsBw==","mode":420,"size":844},"dist/@types/typed-emitter.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-aML8An6LjfJBSajq+2/Oba91EuMjRh2m1pC5WTQ0RRyNdcLW3KubnPkS5pTNxrsjYDGUi+wXDcdFLsAtg+pCSA==","mode":420,"size":1655},"dist/content/types-generator.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-bzgiwJtljNR0zECKCYpHVD+dXMf3kUwSBrMPpzJ6N/OmcvN0IstPpDHoAcv0Qrxh6tzDSzaV2OmISyslcqmBOA==","mode":420,"size":1054},"dist/assets/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-3INmp2w5StL/wigw/jSMBfSgrrDpSnC02w6BTh8BXNkssUL/sb9iw8RlUASZ/bD9KzyMQJcFflUPA7njsVLdoA==","mode":420,"size":6545},"dist/core/app/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-X9toUVvIs9ikdpySL03svkj3M80N28LS7Tm5P//AP+qRpR+KxyRfMgRtNVuE5xOc9Wmq3+Lps4WpRixxGSxryQ==","mode":420,"size":2128},"dist/core/build/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-AKEx00qPRg4FJKQowhas0H/TzjYMvZqQgqwmY8pGhxmWE5wDBwoSmwoZ4WU4EQoAcRTFs/e3NG1A6sHahi9+9w==","mode":420,"size":2029},"dist/core/compile/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-O/SMFI8DiLV4RmMDEOToVdo//RFSSPd1fHSf16TXVp4xoHZOXswaSUJOzsrg8tMtnJALxccBqgcoSiCtw68WGQ==","mode":420,"size":273},"dist/transitions/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-u4x5BHnaLBvCWEULVsRmrHyz5mer6XCrjbmxeNScYIs9fRREXiEU6UXTcQA0Fl/RjpUE51MRM6yIfSYS+37hQQ==","mode":420,"size":321},"dist/vite-plugin-astro/types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-Y8EOkxnSh0feUBwSH6C3d4K/Qje5j4yxkLpXCVewOaxlr3UIXLTxPFO0qtl1Do69pqOfVJPDzn5Nxn8DgoJ6Ow==","mode":420,"size":808},"types.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-BR/alT55zQJX4Olgb4INzkxVLO9eZcxuXEGjQW0eWVneP8BYT8Bx6vpuq2wPugFIE6UxuId58HFv/F+zMNXKbg==","mode":420,"size":1000},"dist/core/errors/userError.d.ts":{"checkedAt":1708389320330,"integrity":"sha512-Q+GvkfUA10trbOuq2KIapZKuJm8yPhMkl8iakypbIOZ+1edopkxG7LuWOAcd256Z5F/FmnRBneEPDiXgPyR0Xw==","mode":420,"size":60},"dist/core/build/plugins/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-G4Q9xOrHFi6xCQOmusJnk5YTcDuREsR+pvgbUoeCvGrV5zmRma5wGTmsXeK1DuU6tfHydcQa3BCFVNh1PgnUog==","mode":420,"size":1134},"dist/core/build/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-3QNx0PkifWwfOiH6FTsvzulGVaEf07EWaXbQpFsuhFJA4GPF8G9JLOiJEwzTY2vk/a5E2M2VukFMvh+uUA+7fg==","mode":420,"size":705},"dist/core/preview/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-Z+qabM1cZPjVuq0BFIDnU4ge3Daw8DV8+woACzCqd8+DgfCRtgUD0xqjJFFNipGfWFpicoSPIXrycXFIi9f1xQ==","mode":420,"size":169},"dist/core/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-PPea7qTKMC9ikFkQ9d2JCZnIDm+QOuclsdl08XfaEDUtoZnpIBi3WdiK/MXxKJ3AbstsPeKyEoqrmlg27mvIaw==","mode":420,"size":2908},"dist/runtime/server/render/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-zrdXUdsX477vStGe+GW8lMz+y6dcxBwcIboz2uzFcf3dLAiMgEK6Wbty2FBhwo2n5QOHee9YaF2MfBQseJDtzw==","mode":420,"size":1777},"dist/runtime/server/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-eJwiFmSq9GGWxWMMH/peARtsEDPXH9f+yGbpMsmrpECQSQYwd8WCENcnHCUYBjdEE7kslyOOXTEeR0v2TW701g==","mode":420,"size":182},"dist/vite-plugin-astro-server/util.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-zgdDCtueyDfPSp2a+RxKGMtppOT309GRgYxJvscuQmPvw9FWg7toTwUbtSR69w678f6ugYZnriobseR/UFhzsg==","mode":420,"size":136},"dist/assets/utils/vendor/image-size/types/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-22jn2dZ32+/e8fCBsKf9MO4M6OOnay9YGf1fqi8fc9KIBiq0m2lq4W99+KyxMGPQ4YlV3BROfP+UbdZrzlKKOQ==","mode":420,"size":1043},"dist/content/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-2SPK4b5r2AOkz4plWB2ZGusO7aRcT3cqrBFQ3Wbo/yv3lSwQ1HKY5D6m5cMn2jGKyrcCR+zT25vj5VRvKnDxYQ==","mode":420,"size":6571},"dist/core/errors/dev/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-lMKsQEEQgnCgL1uFXrpCe3e5j8C5I+JbaowuM3jxhnBU1oqxmafqRkaAHw829LCRrKVxofW3EWPtCNU1d5LqdA==","mode":420,"size":572},"dist/core/errors/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-oZtT/pAd0NYSOiQlQsFlsFfiGmboHtyoWCDv2maHXIUNvCeDWrYX6M+jQFJ28PQtSodD3KoQ9K2F8RwfNvRCHw==","mode":420,"size":769},"dist/prerender/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-sAjGcYptCdhUo+AyBF5A+G+R9QrIUg0I9CtzCgHsmPiNngFa6SgHDKxh+jxkpefR7TPsiTVefFkW9mM9+qx+QA==","mode":420,"size":366},"dist/vite-plugin-astro/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-Sb+UHMcCrz22cZBkTeOc3tDCBHkBmteyLqsZG6O/b2TRAtfJhu3+jCP4DbtAjN4G6Mryi/9zrTP4c3W+Lhi8NA==","mode":420,"size":44},"dist/vite-plugin-html/transform/utils.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-dEugOC9cVOjz/TETrC/esxfEVuXAgJBAIIhlcrJKV20vxXRiE0w57+s1JNJgpJu1KBf9X4FvgKxfI0dYdwc5+Q==","mode":420,"size":357},"dist/core/redirects/validate.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-Xv+zYFiEPkptHzKwX6HIpbtRs+EGA6ACJTiGXqnH/simJCYVh5cD9ehNptVyqq3PxbgArhEc3v+NYiCd7VQzZg==","mode":420,"size":78},"dist/core/routing/validation.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-ja7WXDfRAZDDAK0v+miWj9Ob8J3cs1YfBCZcJNgSLhTpCAedkkFVAXZLggaEgq2ufbgsC0IpwolE3Q0Q+H6ffQ==","mode":420,"size":726},"dist/runtime/client/visible.d.ts":{"checkedAt":1708389320331,"integrity":"sha512-BxHRpSwCxvZNwJMb5P6tEnoKtzbYpC4frBwLBcV2/v3hvaChCozmLZ2cW6Vm08ZjtcK2HS7v06ofumMmxW20zQ==","mode":420,"size":347},"dist/runtime/client/visible.prebuilt.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-N3A4TwZOcslDsCy71WaYYoSVxLD+CKAqKvezIjDdaZVNX5UDCDOkG3ZL/IWEGtxEMQwzZnYlsKCnD2OKYxNG5Q==","mode":420,"size":618},"dist/core/config/vite-load.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-VHLcs+QNCl0lHY55pqaBOY0FX889xH1a5OQy+An/stK3RRA5ISCVDMvjbg/8eJqEVJ2h0tRn1cO8awjVuxZWQA==","mode":420,"size":335},"dist/assets/vite-plugin-assets.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-v5TdF76XmVRnqiItLROf55Olh60GLY4MPyPLKRrbGb9rQpFZuBpSAxIj/iaWSPYawWiNY0ipjmdb15jB5tJ39g==","mode":420,"size":209},"dist/core/preview/vite-plugin-astro-preview.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-tAtaUy58sZ5Js9T3Zyr28G/p7WiaziXieKHr8S9IvW6FXfZg7KcyQDyyASN0LptdLDGb9YgFoW1BZTlw0J3qFA==","mode":420,"size":177},"dist/content/vite-plugin-content-assets.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-spwgRGBdxQMoNkOfA+BghyKp/IBo7vusHjQV0haYI9f1tVsRUlAyNWqcAv/y8CyfmhLRSiRX1V3/zQB0CvB11Q==","mode":420,"size":552},"dist/content/vite-plugin-content-imports.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-WEzlNfz2Bhd2YHJRTLW7PzT47jIHuRCMsxRhQ7NAJ3psciEJgjv/b0fo9ugMJC413DpIk6DZ2S0MdrQuzWD1Ag==","mode":420,"size":318},"dist/config/vite-plugin-content-listen.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-BScnzgkbMiVZ0y42zLydT5DPHwMd1wREjbd3Efx9ExEG8c3GTejIsvCyeVT3IJp1goGCx07+AobR2Sg58zcphg==","mode":420,"size":837},"dist/content/vite-plugin-content-virtual-mod.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-w5DdD+r/BYKvoWDHb4yph4oHug3J5pHzmaeZt6p3wAx+Hm87jlLcUc/vG0FfG9zlnrH/t1LABBe21V86wQzpKQ==","mode":420,"size":1043},"dist/vite-plugin-dev-toolbar/vite-plugin-dev-toolbar.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-uM7ma2JzC7C/JBetdvhdKTV+xx9LPNCC9LRnm7OpUtytjX+1dM01BATVO0pIoBR/jZYB9ToTUzRAJ6QEA57F9w==","mode":420,"size":193},"dist/i18n/vite-plugin-i18n.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-aGaO/9BmTeca1q8m1j5LTkESlCoq1ZYEJy+pCSlvuRVBcA23NIlGxB1HrwNDuPiZNQWEvE7jX5ezs+raMVySCg==","mode":420,"size":481},"dist/prefetch/vite-plugin-prefetch.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-bqrGxarc7k/VY+FtrfW2Imh4QMyY9nJkQffJZepWwf0D/VwfjVsZlrFYxiVWsMP3Fz2dAYkBqQQyatZbImF+Lg==","mode":420,"size":192},"dist/transitions/vite-plugin-transitions.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-GFDEVlstPx7J2xAE/qBDqgmOGWPq1sFBcdx8YYbuysqUYyO+1ZI+D2exMeOCBWuQ/a9d1RQoG1zNdnLedU/yTQ==","mode":420,"size":195},"dist/core/middleware/vite-plugin.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-kWEzz76h3d+OC65zZqeAvj5qOGFBCUnkJpkMG3wzrYdefDKJj4pdK7h+OHitreC5/+SCDAD9B/mjUt0u2Q1IPg==","mode":420,"size":528},"dist/core/errors/dev/vite.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-P+xRCQbgPxgsEzEMxqu8vb7Q29ZBSD+fV9X5OTqEWsDjP61b/ZHc8BtZbkDyUBsUfaKioxHSgBNpAyky2AakPQ==","mode":420,"size":976},"dist/core/logger/vite.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-uIkvQHCpnIY8dB2eX0RSzK3WxGeMTEaofUdeTJFM0SQ583w75/LIodHlokSEq+E/XbkcusihhVBsh0jhvsdx3Q==","mode":420,"size":221},"dist/core/module-loader/vite.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-rytlNnoTkN/w4+yDPuXTV7btKHHOKqrqrBTWqugtIZtmiZh00Y6yEpyV/oWhymQzce9nneY7jju2FRutqKisEg==","mode":420,"size":172},"dist/vite-plugin-astro-server/vite.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-gTfYf5GqVTCKkwxyp+T5gQKLYaM+DZkvpT6rFm9T6/nH6I13kYuDH+KGy05pEiDhMhqY1WLgrcteI5NdB2mOZg==","mode":420,"size":325},"dist/assets/services/vendor/squoosh/webp/webp_node_dec.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/webp/webp_node_dec.wasm.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/services/vendor/squoosh/webp/webp_node_enc.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-BdyOLkcUgoVH4w24mm0BchAsbWIv9SMbIVJ09s9ZbqFd85GbKjebommrm2/FCMMRSlSblcrKk0hC/fuMpU1WGg==","mode":420,"size":65},"dist/assets/services/vendor/squoosh/webp/webp_node_enc.wasm.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-gKJ+qNgCRt/P1FNBAoRpW354FlhGmf2gDHMp9rIM5YiaQXlji6HaSvKcXWunmMQ4g+JkLq0iAKsf7hURQJVaMA==","mode":420,"size":113},"dist/assets/utils/vendor/image-size/types/webp.d.ts":{"checkedAt":1708389320332,"integrity":"sha512-eauEXBgWyq85cLLdYMPN/2fsl97xz6TGY1ykjFNkrtNrVD88qUTQeqnBdgFlz+dhK/X8ZffzRnYZvZJZw6IbiA==","mode":420,"size":81},"dist/runtime/client/dev-toolbar/apps/utils/window.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-Fo5dtpYmpz4+4ZNpRX6BNpVLVtIijXgSgvh/LRPUU+nEzM8XIwwxetxu4wSQOhRkg6B8Pc0oWy8I8qj+gAaa6Q==","mode":420,"size":117},"dist/runtime/client/dev-toolbar/ui-library/window.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-8G5QsmdztZEmVwWa1QvJFXlw+DrQReYAo4LZ5i4O0psaM9Tevjv+09qJqitxYTwmvkfT3RQD3gQcp2L5atHDXw==","mode":420,"size":149},"dist/assets/services/vendor/squoosh/utils/workerPool.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-Sql3asK2AMxR++WVl/qcqI/dDcA97zPq8lYqUQKmIM6By5xndgm8byqkpok6FplB8ajvqsmtFJwgeHI99YN4lw==","mode":420,"size":714},"dist/cli/add/wrapper.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-IWXq7snS/gpliF8RWdQu1a7ZHBI0Ie8e11cYLQ5O7Sjpde67S3ebmnDnPjuUr8dV4SoJODQq149WeG3bQmjSHw==","mode":420,"size":128},"dist/runtime/client/dev-toolbar/apps/xray.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-ieeXsrc8cQkaNVxdpLRBR/yThdNmkEmCGTFWxezHW1DJYEHoEVZw9slYms5FCEXCjrVlRgOBOhdr0NUYJR9m9Q==","mode":420,"size":826},"zod.d.ts":{"checkedAt":1708389320333,"integrity":"sha512-gqoedOhFrNu0tP1OwgduQz5U6omFC7EkxSXywM3C3qzPQerAVEPQDwh50lXhCQN/XOb5689b6a+iI9r+MmN7YQ==","mode":420,"size":115},"dist/assets/services/vendor/squoosh/avif/avif_node_dec.wasm":{"checkedAt":1708389320337,"integrity":"sha512-KuZMeLkSa3UwZgHGp2xeYCdjrMp9pMKAj7eyCaTITYWkdwQJV1A4zW6PMp1Q7VzZkguHnUfM38ZHDhyZFo2e1A==","mode":420,"size":1364059},"dist/assets/services/vendor/squoosh/avif/avif_node_enc.wasm":{"checkedAt":1708389320347,"integrity":"sha512-F/R/HQGohc4UnIEAiYyeXsK2Olxx3EG2G15uh+cXP7BJLOE0UHaWovju/GD6SkMgRTLP3zmroPPpZbqeBpws6Q==","mode":420,"size":2642196},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.wasm":{"checkedAt":1708389320348,"integrity":"sha512-z9D4PYePJrJgPzVd1QeNO3L0yuNSPlaRJRoJEqolhCaPKKnvhT8acdwq6q48O0hpVaZvQIw4wqD5bujLuGzpBA==","mode":420,"size":163966},"dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.wasm":{"checkedAt":1708389320349,"integrity":"sha512-xctxqqVKqwzgrpQ9D1yIdJhcmg7yadN9gaEzJkGHGYLLuAI49lmm8D/hNsoDqOi56lrqQ84phP9fK6p38lYlxQ==","mode":420,"size":251948},"dist/assets/services/vendor/squoosh/rotate/rotate.wasm":{"checkedAt":1708389320349,"integrity":"sha512-nLI6y3Js2jyucpYCBDMWPOcIG2MbihDId55tOylXQUDDJXHunUByfqI1rSGyRAfehkgU1mdmOXkM2DXvotY7MQ==","mode":420,"size":1363},"dist/assets/services/vendor/squoosh/png/squoosh_oxipng_bg.wasm":{"checkedAt":1708389320350,"integrity":"sha512-Fl0c5Ve5t0HvjNvrJd0w6rDVfx0FpwmblVvalSfjRQmJ8eMTUx+OjmE/157aBSckM1a5nUCpMXP1TYam8Ix1HA==","mode":420,"size":269158},"dist/assets/services/vendor/squoosh/png/squoosh_png_bg.wasm":{"checkedAt":1708389320351,"integrity":"sha512-Qv/2n8mIX9cOXwKxE9BdoXCgtGDBRcdWBjhDXI/BZOGcowDfceWWRvIcf7udiz740yIqNBYh6JHKiH7GX20oCQ==","mode":420,"size":123698},"dist/assets/services/vendor/squoosh/resize/squoosh_resize_bg.wasm":{"checkedAt":1708389320351,"integrity":"sha512-lOQas6pdUVj77WlvkHapHe9hdjnsQAYAYN5S2n1KGhc/WV+cImn4HAFZYDIYEcSKiXn52PAbWizYzW4AfaQAwg==","mode":420,"size":37052},"dist/assets/services/vendor/squoosh/webp/webp_node_dec.wasm":{"checkedAt":1708389320352,"integrity":"sha512-UAZlXTlW3OQdSuRv5+vaH6i4i95Ip0WWWmt/H/H84aMQ+RiC60v0OXkuWvq0MoOPlhoLl/IdSMKfj24jm7uB4w==","mode":420,"size":148687},"dist/assets/services/vendor/squoosh/webp/webp_node_enc.wasm":{"checkedAt":1708389320353,"integrity":"sha512-ogBOyLX6vkvI5GSMEHAyoWfY7dvNBPNZD16hkuTszGAESADRnCNNA1npRKX0wXH6BnFdfcVZjJtg6u1Oa+GxjA==","mode":420,"size":298327},"LICENSE":{"checkedAt":1708389320353,"integrity":"sha512-9oJWFYvdJXATUD/T++KJk0xpqefZ63crlxrkEl3OgnXf+PhI9baVOL7VoQ9pVg+nyus/ZiD/uHkvsOzJ/0pjEA==","mode":420,"size":3628},"package.json":{"checkedAt":1708389320353,"integrity":"sha512-gu7AELPWSWBcffaSHPE/r2q+cjF3DQKcOZrdhQOuYWkUfC/UhHNjckciICRLMJ4FbXhkxVhqjt/HbhIJbYi4hw==","mode":420,"size":7516}}} \ No newline at end of file diff --git a/.pnpm-store/v3/files/25/76c7ca09e74eb53512c9c02296681db9a6dc6167334a782b8684cd7a412ee6360a855440f85d5829078a23a1fbba7b6c4a6cbdee39f2d93931cb6ca0ddc12a b/.pnpm-store/v3/files/25/76c7ca09e74eb53512c9c02296681db9a6dc6167334a782b8684cd7a412ee6360a855440f85d5829078a23a1fbba7b6c4a6cbdee39f2d93931cb6ca0ddc12a new file mode 100644 index 00000000..3b52e0b6 --- /dev/null +++ b/.pnpm-store/v3/files/25/76c7ca09e74eb53512c9c02296681db9a6dc6167334a782b8684cd7a412ee6360a855440f85d5829078a23a1fbba7b6c4a6cbdee39f2d93931cb6ca0ddc12a @@ -0,0 +1,57 @@ +import { RedirectComponentInstance, routeIsRedirect } from "../core/redirects/index.js"; +import { preload } from "../vite-plugin-astro-server/index.js"; +import { getPrerenderStatus } from "./metadata.js"; +async function getSortedPreloadedMatches({ + pipeline, + matches, + settings +}) { + return (await preloadAndSetPrerenderStatus({ + pipeline, + matches, + settings + })).sort((a, b) => prioritizePrerenderedMatchesComparator(a.route, b.route)); +} +async function preloadAndSetPrerenderStatus({ + pipeline, + matches, + settings +}) { + const preloaded = new Array(); + for (const route of matches) { + const filePath = new URL(`./${route.component}`, settings.config.root); + if (routeIsRedirect(route)) { + preloaded.push({ + preloadedComponent: RedirectComponentInstance, + route, + filePath + }); + continue; + } + const preloadedComponent = await preload({ pipeline, filePath }); + const prerenderStatus = getPrerenderStatus({ + filePath, + loader: pipeline.getModuleLoader() + }); + if (prerenderStatus !== void 0) { + route.prerender = prerenderStatus; + } + preloaded.push({ preloadedComponent, route, filePath }); + } + return preloaded; +} +function prioritizePrerenderedMatchesComparator(a, b) { + if (areRegexesEqual(a.pattern, b.pattern)) { + if (a.prerender !== b.prerender) { + return a.prerender ? -1 : 1; + } + return a.component < b.component ? -1 : 1; + } + return 0; +} +function areRegexesEqual(regexp1, regexp2) { + return regexp1.source === regexp2.source && regexp1.global === regexp2.global; +} +export { + getSortedPreloadedMatches +}; diff --git a/.pnpm-store/v3/files/26/2e162f6742d1416f7e38d97f9abaedf001fbd5c1e5b7aaa7ad99bc708fc881733c0d756150fb77b25a8c84f87d71d31547c82837982c73818a02caaaea914d b/.pnpm-store/v3/files/26/2e162f6742d1416f7e38d97f9abaedf001fbd5c1e5b7aaa7ad99bc708fc881733c0d756150fb77b25a8c84f87d71d31547c82837982c73818a02caaaea914d new file mode 100644 index 00000000..004820f5 --- /dev/null +++ b/.pnpm-store/v3/files/26/2e162f6742d1416f7e38d97f9abaedf001fbd5c1e5b7aaa7ad99bc708fc881733c0d756150fb77b25a8c84f87d71d31547c82837982c73818a02caaaea914d @@ -0,0 +1,26 @@ + + + + + + + Vitest + + + + + + + + + +
+ + diff --git a/.pnpm-store/v3/files/26/9d009ca03ead242699bba1b68bc199becca647c0c973f0d02341473d5a2c5144ccb32cff6ee198795c2b666859527ac2bb092af7830df2169158a09682566c b/.pnpm-store/v3/files/26/9d009ca03ead242699bba1b68bc199becca647c0c973f0d02341473d5a2c5144ccb32cff6ee198795c2b666859527ac2bb092af7830df2169158a09682566c new file mode 100644 index 00000000..dcf28ee8 --- /dev/null +++ b/.pnpm-store/v3/files/26/9d009ca03ead242699bba1b68bc199becca647c0c973f0d02341473d5a2c5144ccb32cff6ee198795c2b666859527ac2bb092af7830df2169158a09682566c @@ -0,0 +1,678 @@ +import { Console } from 'node:console'; + +const denyList = /* @__PURE__ */ new Set([ + "GLOBAL", + "root", + "global", + "Buffer", + "ArrayBuffer", + "Uint8Array" +]); +const nodeGlobals = new Map( + Object.getOwnPropertyNames(globalThis).filter((global) => !denyList.has(global)).map((nodeGlobalsKey) => { + const descriptor = Object.getOwnPropertyDescriptor( + globalThis, + nodeGlobalsKey + ); + if (!descriptor) { + throw new Error( + `No property descriptor for ${nodeGlobalsKey}, this is a bug in Vitest.` + ); + } + return [nodeGlobalsKey, descriptor]; + }) +); +var node = { + name: "node", + transformMode: "ssr", + // this is largely copied from jest's node environment + async setupVM() { + const vm = await import('node:vm'); + let context = vm.createContext(); + let global = vm.runInContext( + "this", + context + ); + const contextGlobals = new Set(Object.getOwnPropertyNames(global)); + for (const [nodeGlobalsKey, descriptor] of nodeGlobals) { + if (!contextGlobals.has(nodeGlobalsKey)) { + if (descriptor.configurable) { + Object.defineProperty(global, nodeGlobalsKey, { + configurable: true, + enumerable: descriptor.enumerable, + get() { + const val = globalThis[nodeGlobalsKey]; + Object.defineProperty(global, nodeGlobalsKey, { + configurable: true, + enumerable: descriptor.enumerable, + value: val, + writable: descriptor.writable === true || nodeGlobalsKey === "performance" + }); + return val; + }, + set(val) { + Object.defineProperty(global, nodeGlobalsKey, { + configurable: true, + enumerable: descriptor.enumerable, + value: val, + writable: true + }); + } + }); + } else if ("value" in descriptor) { + Object.defineProperty(global, nodeGlobalsKey, { + configurable: false, + enumerable: descriptor.enumerable, + value: descriptor.value, + writable: descriptor.writable + }); + } else { + Object.defineProperty(global, nodeGlobalsKey, { + configurable: false, + enumerable: descriptor.enumerable, + get: descriptor.get, + set: descriptor.set + }); + } + } + } + global.global = global; + global.Buffer = Buffer; + global.ArrayBuffer = ArrayBuffer; + global.Uint8Array = Uint8Array; + return { + getVmContext() { + return context; + }, + teardown() { + context = void 0; + global = void 0; + } + }; + }, + async setup(global) { + global.console.Console = Console; + return { + teardown(global2) { + delete global2.console.Console; + } + }; + } +}; + +const LIVING_KEYS = [ + "DOMException", + "URL", + "URLSearchParams", + "EventTarget", + "NamedNodeMap", + "Node", + "Attr", + "Element", + "DocumentFragment", + "DOMImplementation", + "Document", + "XMLDocument", + "CharacterData", + "Text", + "CDATASection", + "ProcessingInstruction", + "Comment", + "DocumentType", + "NodeList", + "RadioNodeList", + "HTMLCollection", + "HTMLOptionsCollection", + "DOMStringMap", + "DOMTokenList", + "StyleSheetList", + "HTMLElement", + "HTMLHeadElement", + "HTMLTitleElement", + "HTMLBaseElement", + "HTMLLinkElement", + "HTMLMetaElement", + "HTMLStyleElement", + "HTMLBodyElement", + "HTMLHeadingElement", + "HTMLParagraphElement", + "HTMLHRElement", + "HTMLPreElement", + "HTMLUListElement", + "HTMLOListElement", + "HTMLLIElement", + "HTMLMenuElement", + "HTMLDListElement", + "HTMLDivElement", + "HTMLAnchorElement", + "HTMLAreaElement", + "HTMLBRElement", + "HTMLButtonElement", + "HTMLCanvasElement", + "HTMLDataElement", + "HTMLDataListElement", + "HTMLDetailsElement", + "HTMLDialogElement", + "HTMLDirectoryElement", + "HTMLFieldSetElement", + "HTMLFontElement", + "HTMLFormElement", + "HTMLHtmlElement", + "HTMLImageElement", + "HTMLInputElement", + "HTMLLabelElement", + "HTMLLegendElement", + "HTMLMapElement", + "HTMLMarqueeElement", + "HTMLMediaElement", + "HTMLMeterElement", + "HTMLModElement", + "HTMLOptGroupElement", + "HTMLOptionElement", + "HTMLOutputElement", + "HTMLPictureElement", + "HTMLProgressElement", + "HTMLQuoteElement", + "HTMLScriptElement", + "HTMLSelectElement", + "HTMLSlotElement", + "HTMLSourceElement", + "HTMLSpanElement", + "HTMLTableCaptionElement", + "HTMLTableCellElement", + "HTMLTableColElement", + "HTMLTableElement", + "HTMLTimeElement", + "HTMLTableRowElement", + "HTMLTableSectionElement", + "HTMLTemplateElement", + "HTMLTextAreaElement", + "HTMLUnknownElement", + "HTMLFrameElement", + "HTMLFrameSetElement", + "HTMLIFrameElement", + "HTMLEmbedElement", + "HTMLObjectElement", + "HTMLParamElement", + "HTMLVideoElement", + "HTMLAudioElement", + "HTMLTrackElement", + "HTMLFormControlsCollection", + "SVGElement", + "SVGGraphicsElement", + "SVGSVGElement", + "SVGTitleElement", + "SVGAnimatedString", + "SVGNumber", + "SVGStringList", + "Event", + "CloseEvent", + "CustomEvent", + "MessageEvent", + "ErrorEvent", + "HashChangeEvent", + "PopStateEvent", + "StorageEvent", + "ProgressEvent", + "PageTransitionEvent", + "SubmitEvent", + "UIEvent", + "FocusEvent", + "InputEvent", + "MouseEvent", + "KeyboardEvent", + "TouchEvent", + "CompositionEvent", + "WheelEvent", + "BarProp", + "External", + "Location", + "History", + "Screen", + "Crypto", + "Performance", + "Navigator", + "PluginArray", + "MimeTypeArray", + "Plugin", + "MimeType", + "FileReader", + "Blob", + "File", + "FileList", + "ValidityState", + "DOMParser", + "XMLSerializer", + "FormData", + "XMLHttpRequestEventTarget", + "XMLHttpRequestUpload", + "XMLHttpRequest", + "WebSocket", + "NodeFilter", + "NodeIterator", + "TreeWalker", + "AbstractRange", + "Range", + "StaticRange", + "Selection", + "Storage", + "CustomElementRegistry", + "ShadowRoot", + "MutationObserver", + "MutationRecord", + "Headers", + "AbortController", + "AbortSignal", + "Uint8Array", + "Uint16Array", + "Uint32Array", + "Uint8ClampedArray", + "Int8Array", + "Int16Array", + "Int32Array", + "Float32Array", + "Float64Array", + "ArrayBuffer", + "DOMRectReadOnly", + "DOMRect", + // not specified in docs, but is available + "Image", + "Audio", + "Option", + "CSS" +]; +const OTHER_KEYS = [ + "addEventListener", + "alert", + // 'atob', + "blur", + // 'btoa', + "cancelAnimationFrame", + /* 'clearInterval', */ + /* 'clearTimeout', */ + "close", + "confirm", + /* 'console', */ + "createPopup", + "dispatchEvent", + "document", + "focus", + "frames", + "getComputedStyle", + "history", + "innerHeight", + "innerWidth", + "length", + "location", + "matchMedia", + "moveBy", + "moveTo", + "name", + "navigator", + "open", + "outerHeight", + "outerWidth", + "pageXOffset", + "pageYOffset", + "parent", + "postMessage", + "print", + "prompt", + "removeEventListener", + "requestAnimationFrame", + "resizeBy", + "resizeTo", + "screen", + "screenLeft", + "screenTop", + "screenX", + "screenY", + "scroll", + "scrollBy", + "scrollLeft", + "scrollTo", + "scrollTop", + "scrollX", + "scrollY", + "self", + /* 'setInterval', */ + /* 'setTimeout', */ + "stop", + /* 'toString', */ + "top", + "Window", + "window" +]; +const KEYS = LIVING_KEYS.concat(OTHER_KEYS); + +const skipKeys = [ + "window", + "self", + "top", + "parent" +]; +function getWindowKeys(global, win, additionalKeys = []) { + const keysArray = [...additionalKeys, ...KEYS]; + const keys = new Set(keysArray.concat(Object.getOwnPropertyNames(win)).filter((k) => { + if (skipKeys.includes(k)) + return false; + if (k in global) + return keysArray.includes(k); + return true; + })); + return keys; +} +function isClassLikeName(name) { + return name[0] === name[0].toUpperCase(); +} +function populateGlobal(global, win, options = {}) { + const { bindFunctions = false } = options; + const keys = getWindowKeys(global, win, options.additionalKeys); + const originals = /* @__PURE__ */ new Map(); + const overrideObject = /* @__PURE__ */ new Map(); + for (const key of keys) { + const boundFunction = bindFunctions && typeof win[key] === "function" && !isClassLikeName(key) && win[key].bind(win); + if (KEYS.includes(key) && key in global) + originals.set(key, global[key]); + Object.defineProperty(global, key, { + get() { + if (overrideObject.has(key)) + return overrideObject.get(key); + if (boundFunction) + return boundFunction; + return win[key]; + }, + set(v) { + overrideObject.set(key, v); + }, + configurable: true + }); + } + global.window = global; + global.self = global; + global.top = global; + global.parent = global; + if (global.global) + global.global = global; + if (global.document && global.document.defaultView) { + Object.defineProperty(global.document, "defaultView", { + get: () => global, + enumerable: true, + configurable: true + }); + } + skipKeys.forEach((k) => keys.add(k)); + return { + keys, + skipKeys, + originals + }; +} + +function catchWindowErrors(window) { + let userErrorListenerCount = 0; + function throwUnhandlerError(e) { + if (userErrorListenerCount === 0 && e.error != null) + process.emit("uncaughtException", e.error); + } + const addEventListener = window.addEventListener.bind(window); + const removeEventListener = window.removeEventListener.bind(window); + window.addEventListener("error", throwUnhandlerError); + window.addEventListener = function(...args) { + if (args[0] === "error") + userErrorListenerCount++; + return addEventListener.apply(this, args); + }; + window.removeEventListener = function(...args) { + if (args[0] === "error" && userErrorListenerCount) + userErrorListenerCount--; + return removeEventListener.apply(this, args); + }; + return function clearErrorHandlers() { + window.removeEventListener("error", throwUnhandlerError); + }; +} +var jsdom = { + name: "jsdom", + transformMode: "web", + async setupVM({ jsdom = {} }) { + const { + CookieJar, + JSDOM, + ResourceLoader, + VirtualConsole + } = await import('jsdom'); + const { + html = "", + userAgent, + url = "http://localhost:3000", + contentType = "text/html", + pretendToBeVisual = true, + includeNodeLocations = false, + runScripts = "dangerously", + resources, + console = false, + cookieJar = false, + ...restOptions + } = jsdom; + let dom = new JSDOM( + html, + { + pretendToBeVisual, + resources: resources ?? (userAgent ? new ResourceLoader({ userAgent }) : void 0), + runScripts, + url, + virtualConsole: console && globalThis.console ? new VirtualConsole().sendTo(globalThis.console) : void 0, + cookieJar: cookieJar ? new CookieJar() : void 0, + includeNodeLocations, + contentType, + userAgent, + ...restOptions + } + ); + const clearWindowErrors = catchWindowErrors(dom.window); + dom.window.Buffer = Buffer; + dom.window.jsdom = dom; + const globalNames = [ + "structuredClone", + "fetch", + "Request", + "Response", + "BroadcastChannel", + "MessageChannel", + "MessagePort", + "TextEncoder", + "TextDecoder" + ]; + for (const name of globalNames) { + const value = globalThis[name]; + if (typeof value !== "undefined" && typeof dom.window[name] === "undefined") + dom.window[name] = value; + } + return { + getVmContext() { + return dom.getInternalVMContext(); + }, + teardown() { + clearWindowErrors(); + dom.window.close(); + dom = void 0; + } + }; + }, + async setup(global, { jsdom = {} }) { + const { + CookieJar, + JSDOM, + ResourceLoader, + VirtualConsole + } = await import('jsdom'); + const { + html = "", + userAgent, + url = "http://localhost:3000", + contentType = "text/html", + pretendToBeVisual = true, + includeNodeLocations = false, + runScripts = "dangerously", + resources, + console = false, + cookieJar = false, + ...restOptions + } = jsdom; + const dom = new JSDOM( + html, + { + pretendToBeVisual, + resources: resources ?? (userAgent ? new ResourceLoader({ userAgent }) : void 0), + runScripts, + url, + virtualConsole: console && global.console ? new VirtualConsole().sendTo(global.console) : void 0, + cookieJar: cookieJar ? new CookieJar() : void 0, + includeNodeLocations, + contentType, + userAgent, + ...restOptions + } + ); + const { keys, originals } = populateGlobal(global, dom.window, { bindFunctions: true }); + const clearWindowErrors = catchWindowErrors(global); + global.jsdom = dom; + return { + teardown(global2) { + clearWindowErrors(); + dom.window.close(); + delete global2.jsdom; + keys.forEach((key) => delete global2[key]); + originals.forEach((v, k) => global2[k] = v); + } + }; + } +}; + +async function teardownWindow(win) { + if (win.close && win.happyDOM.abort) { + await win.happyDOM.abort(); + win.close(); + } else { + win.happyDOM.cancelAsync(); + } +} +var happy = { + name: "happy-dom", + transformMode: "web", + async setupVM({ happyDOM = {} }) { + const { Window } = await import('happy-dom'); + let win = new Window({ + ...happyDOM, + console: console && globalThis.console ? globalThis.console : void 0, + url: happyDOM.url || "http://localhost:3000", + settings: { + ...happyDOM.settings, + disableErrorCapturing: true + } + }); + win.Buffer = Buffer; + if (typeof structuredClone !== "undefined" && !win.structuredClone) + win.structuredClone = structuredClone; + return { + getVmContext() { + return win; + }, + async teardown() { + await teardownWindow(win); + win = void 0; + } + }; + }, + async setup(global, { happyDOM = {} }) { + const { Window, GlobalWindow } = await import('happy-dom'); + const win = new (GlobalWindow || Window)({ + ...happyDOM, + console: console && global.console ? global.console : void 0, + url: happyDOM.url || "http://localhost:3000", + settings: { + ...happyDOM.settings, + disableErrorCapturing: true + } + }); + const { keys, originals } = populateGlobal(global, win, { + bindFunctions: true, + // jsdom doesn't support Request and Response, but happy-dom does + additionalKeys: ["Request", "Response"] + }); + return { + async teardown(global2) { + await teardownWindow(win); + keys.forEach((key) => delete global2[key]); + originals.forEach((v, k) => global2[k] = v); + } + }; + } +}; + +var edge = { + name: "edge-runtime", + transformMode: "ssr", + async setupVM() { + const { EdgeVM } = await import('@edge-runtime/vm'); + const vm = new EdgeVM({ + extend: (context) => { + context.global = context; + context.Buffer = Buffer; + return context; + } + }); + return { + getVmContext() { + return vm.context; + }, + teardown() { + } + }; + }, + async setup(global) { + const { EdgeVM } = await import('@edge-runtime/vm'); + const vm = new EdgeVM({ + extend: (context) => { + context.global = context; + context.Buffer = Buffer; + KEYS.forEach((key) => { + if (key in global) + context[key] = global[key]; + }); + return context; + } + }); + const { keys, originals } = populateGlobal(global, vm.context, { bindFunctions: true }); + return { + teardown(global2) { + keys.forEach((key) => delete global2[key]); + originals.forEach((v, k) => global2[k] = v); + } + }; + } +}; + +const environments = { + node, + jsdom, + "happy-dom": happy, + "edge-runtime": edge +}; +const envPackageNames = { + "jsdom": "jsdom", + "happy-dom": "happy-dom", + "edge-runtime": "@edge-runtime/vm" +}; +function getEnvPackageName(env) { + if (env === "node") + return null; + if (env in envPackageNames) + return envPackageNames[env]; + if (env[0] === "." || env[0] === "/") + return null; + return `vitest-environment-${env}`; +} + +export { environments as e, getEnvPackageName as g, populateGlobal as p }; diff --git a/.pnpm-store/v3/files/28/db8a314c63c15433999ab36798d14b66282fb22c72a50360d9bb95c4cea0fbed9a4d12c5c6e46cd1e2b681001db6b8fcbc0e1783c9490f52f4fb5b5af93e8d b/.pnpm-store/v3/files/28/db8a314c63c15433999ab36798d14b66282fb22c72a50360d9bb95c4cea0fbed9a4d12c5c6e46cd1e2b681001db6b8fcbc0e1783c9490f52f4fb5b5af93e8d new file mode 100644 index 00000000..628106dc --- /dev/null +++ b/.pnpm-store/v3/files/28/db8a314c63c15433999ab36798d14b66282fb22c72a50360d9bb95c4cea0fbed9a4d12c5c6e46cd1e2b681001db6b8fcbc0e1783c9490f52f4fb5b5af93e8d @@ -0,0 +1,12 @@ +/* + @license + Rollup.js v4.12.0 + Fri, 16 Feb 2024 13:31:42 GMT - commit 0146b84be33a8416b4df4b9382549a7ca19dd64a + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +import '../native.js'; +export { parseAst, parseAstAsync } from './shared/parseAst.js'; +import 'node:path'; diff --git a/.pnpm-store/v3/files/29/6dd6f4a8bbfecca28fc18b4f1140f7a0c13fe786a14ec7e054b1d3b8e447623f127378fa9ec32d4de4d19f696d637fe817ab9cee624ef6cfe9125968568792 b/.pnpm-store/v3/files/29/6dd6f4a8bbfecca28fc18b4f1140f7a0c13fe786a14ec7e054b1d3b8e447623f127378fa9ec32d4de4d19f696d637fe817ab9cee624ef6cfe9125968568792 new file mode 100644 index 00000000..edba3138 --- /dev/null +++ b/.pnpm-store/v3/files/29/6dd6f4a8bbfecca28fc18b4f1140f7a0c13fe786a14ec7e054b1d3b8e447623f127378fa9ec32d4de4d19f696d637fe817ab9cee624ef6cfe9125968568792 @@ -0,0 +1,109 @@ +import { promises } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { promisify } from 'node:util'; +import { gzip, constants } from 'node:zlib'; +import { resolve, basename, dirname, relative } from 'pathe'; +import c from 'picocolors'; +import fg from 'fast-glob'; +import { stringify } from 'flatted'; + +async function getModuleGraph(ctx, id) { + const graph = {}; + const externalized = /* @__PURE__ */ new Set(); + const inlined = /* @__PURE__ */ new Set(); + function clearId(id2) { + return id2?.replace(/\?v=\w+$/, "") || ""; + } + async function get(mod, seen = /* @__PURE__ */ new Map()) { + if (!mod || !mod.id) + return; + if (seen.has(mod)) + return seen.get(mod); + let id2 = clearId(mod.id); + seen.set(mod, id2); + const rewrote = await ctx.vitenode.shouldExternalize(id2); + if (rewrote) { + id2 = rewrote; + externalized.add(id2); + seen.set(mod, id2); + } else { + inlined.add(id2); + } + const mods = Array.from(mod.importedModules).filter((i) => i.id && !i.id.includes("/vitest/dist/")); + graph[id2] = (await Promise.all(mods.map((m) => get(m, seen)))).filter(Boolean); + return id2; + } + await get(ctx.server.moduleGraph.getModuleById(id)); + return { + graph, + externalized: Array.from(externalized), + inlined: Array.from(inlined) + }; +} + +function getOutputFile(config) { + if (!config?.outputFile) + return; + if (typeof config.outputFile === "string") + return config.outputFile; + return config.outputFile.html; +} +const distDir = resolve(fileURLToPath(import.meta.url), "../../dist"); +class HTMLReporter { + start = 0; + ctx; + reportUIPath; + options; + constructor(options) { + this.options = options; + } + async onInit(ctx) { + this.ctx = ctx; + this.start = Date.now(); + } + async onFinished() { + const result = { + paths: this.ctx.state.getPaths(), + files: this.ctx.state.getFiles(), + config: this.ctx.config, + unhandledErrors: this.ctx.state.getUnhandledErrors(), + moduleGraph: {} + }; + await Promise.all( + result.files.map(async (file) => { + result.moduleGraph[file.filepath] = await getModuleGraph(this.ctx, file.filepath); + }) + ); + await this.writeReport(stringify(result)); + } + async writeReport(report) { + const htmlFile = this.options.outputFile || getOutputFile(this.ctx.config) || "html/index.html"; + const htmlFileName = basename(htmlFile); + const htmlDir = resolve(this.ctx.config.root, dirname(htmlFile)); + const metaFile = resolve(htmlDir, "html.meta.json.gz"); + await promises.mkdir(resolve(htmlDir, "assets"), { recursive: true }); + const promiseGzip = promisify(gzip); + const data = await promiseGzip(report, { + level: constants.Z_BEST_COMPRESSION + }); + await promises.writeFile(metaFile, data, "base64"); + const ui = resolve(distDir, "client"); + const files = fg.sync("**/*", { cwd: ui }); + await Promise.all(files.map(async (f) => { + if (f === "index.html") { + const html = await promises.readFile(resolve(ui, f), "utf-8"); + const filePath = relative(htmlDir, metaFile); + await promises.writeFile( + resolve(htmlDir, htmlFileName), + html.replace("", ` + const filePath = id.replace(normalizePath$3(config.root), ''); + addToHTMLProxyCache(config, filePath, inlineModuleIndex, { + code: contents, + }); + js += `\nimport "${id}?html-proxy&index=${inlineModuleIndex}.js"`; + shouldRemove = true; + } + everyScriptIsAsync &&= isAsync; + someScriptsAreAsync ||= isAsync; + someScriptsAreDefer ||= !isAsync; + } + else if (url && !isPublicFile) { + if (!isExcludedUrl(url)) { + config.logger.warn(` asset + for (const { start, end, url } of scriptUrls) { + if (checkPublicFile(url, config)) { + s.update(start, end, toOutputPublicFilePath(url)); + } + else if (!isExcludedUrl(url)) { + s.update(start, end, await urlToBuiltUrl(url, id, config, this)); + } + } + // ignore if its url can't be resolved + const resolvedStyleUrls = await Promise.all(styleUrls.map(async (styleUrl) => ({ + ...styleUrl, + resolved: await this.resolve(styleUrl.url, id), + }))); + for (const { start, end, url, resolved } of resolvedStyleUrls) { + if (resolved == null) { + config.logger.warnOnce(`\n${url} doesn't exist at build time, it will remain unchanged to be resolved at runtime`); + const importExpression = `\nimport ${JSON.stringify(url)}`; + js = js.replace(importExpression, ''); + } + else { + s.remove(start, end); + } + } + processedHtml.set(id, s.toString()); + // inject module preload polyfill only when configured and needed + const { modulePreload } = config.build; + if (modulePreload !== false && + modulePreload.polyfill && + (someScriptsAreAsync || someScriptsAreDefer)) { + js = `import "${modulePreloadPolyfillId}";\n${js}`; + } + // Force rollup to keep this module from being shared between other entry points. + // If the resulting chunk is empty, it will be removed in generateBundle. + return { code: js, moduleSideEffects: 'no-treeshake' }; + } + }, + async generateBundle(options, bundle) { + const analyzedChunk = new Map(); + const inlineEntryChunk = new Set(); + const getImportedChunks = (chunk, seen = new Set()) => { + const chunks = []; + chunk.imports.forEach((file) => { + const importee = bundle[file]; + if (importee?.type === 'chunk' && !seen.has(file)) { + seen.add(file); + // post-order traversal + chunks.push(...getImportedChunks(importee, seen)); + chunks.push(importee); + } + }); + return chunks; + }; + const toScriptTag = (chunk, toOutputPath, isAsync) => ({ + tag: 'script', + attrs: { + ...(isAsync ? { async: true } : {}), + type: 'module', + // crossorigin must be set not only for serving assets in a different origin + // but also to make it possible to preload the script using ``. + // ``); + preTransformRequest(server, modulePath, base); + }; + await traverseHtml(html, filename, (node) => { + if (!nodeIsElement(node)) { + return; + } + // script tags + if (node.nodeName === 'script') { + const { src, sourceCodeLocation, isModule } = getScriptInfo(node); + if (src) { + const processedUrl = processNodeUrl(src.value, isSrcSet(src), config, htmlPath, originalUrl, server, !isModule); + if (processedUrl !== src.value) { + overwriteAttrValue(s, sourceCodeLocation, processedUrl); + } + } + else if (isModule && node.childNodes.length) { + addInlineModule(node, 'js'); + } + else if (node.childNodes.length) { + const scriptNode = node.childNodes[node.childNodes.length - 1]; + for (const { url, start, end, } of extractImportExpressionFromClassicScript(scriptNode)) { + const processedUrl = processNodeUrl(url, false, config, htmlPath, originalUrl); + if (processedUrl !== url) { + s.update(start, end, processedUrl); + } + } + } + } + const inlineStyle = findNeedTransformStyleAttribute(node); + if (inlineStyle) { + inlineModuleIndex++; + inlineStyles.push({ + index: inlineModuleIndex, + location: inlineStyle.location, + code: inlineStyle.attr.value, + }); + } + if (node.nodeName === 'style' && node.childNodes.length) { + const children = node.childNodes[0]; + styleUrl.push({ + start: children.sourceCodeLocation.startOffset, + end: children.sourceCodeLocation.endOffset, + code: children.value, + }); + } + // elements with [href/src] attrs + const assetAttrs = assetAttrsConfig[node.nodeName]; + if (assetAttrs) { + for (const p of node.attrs) { + const attrKey = getAttrKey(p); + if (p.value && assetAttrs.includes(attrKey)) { + const processedUrl = processNodeUrl(p.value, isSrcSet(p), config, htmlPath, originalUrl); + if (processedUrl !== p.value) { + overwriteAttrValue(s, node.sourceCodeLocation.attrs[attrKey], processedUrl); + } + } + } + } + }); + await Promise.all([ + ...styleUrl.map(async ({ start, end, code }, index) => { + const url = `${proxyModulePath}?html-proxy&direct&index=${index}.css`; + // ensure module in graph after successful load + const mod = await moduleGraph.ensureEntryFromUrl(url, false); + ensureWatchedFile(watcher, mod.file, config.root); + const result = await server.pluginContainer.transform(code, mod.id); + let content = ''; + if (result) { + if (result.map && 'version' in result.map) { + if (result.map.mappings) { + await injectSourcesContent(result.map, proxyModulePath, config.logger); + } + content = getCodeWithSourcemap('css', result.code, result.map); + } + else { + content = result.code; + } + } + s.overwrite(start, end, content); + }), + ...inlineStyles.map(async ({ index, location, code }) => { + // will transform with css plugin and cache result with css-post plugin + const url = `${proxyModulePath}?html-proxy&inline-css&style-attr&index=${index}.css`; + const mod = await moduleGraph.ensureEntryFromUrl(url, false); + ensureWatchedFile(watcher, mod.file, config.root); + await server?.pluginContainer.transform(code, mod.id); + const hash = getHash(cleanUrl(mod.id)); + const result = htmlProxyResult.get(`${hash}_${index}`); + overwriteAttrValue(s, location, result ?? ''); + }), + ]); + html = s.toString(); + return { + html, + tags: [ + { + tag: 'script', + attrs: { + type: 'module', + src: path$o.posix.join(base, CLIENT_PUBLIC_PATH), + }, + injectTo: 'head-prepend', + }, + ], + }; +}; +function indexHtmlMiddleware(root, server) { + const isDev = isDevServer(server); + const fsUtils = getFsUtils(server.config); + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return async function viteIndexHtmlMiddleware(req, res, next) { + if (res.writableEnded) { + return next(); + } + const url = req.url && cleanUrl(req.url); + // htmlFallbackMiddleware appends '.html' to URLs + if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { + let filePath; + if (isDev && url.startsWith(FS_PREFIX)) { + filePath = decodeURIComponent(fsPathFromId(url)); + } + else { + filePath = path$o.join(root, decodeURIComponent(url)); + } + if (fsUtils.existsSync(filePath)) { + const headers = isDev + ? server.config.server.headers + : server.config.preview.headers; + try { + let html = await fsp.readFile(filePath, 'utf-8'); + if (isDev) { + html = await server.transformIndexHtml(url, html, req.originalUrl); + } + return send(req, res, html, 'html', { headers }); + } + catch (e) { + return next(e); + } + } + } + next(); + }; +} +function preTransformRequest(server, url, base) { + if (!server.config.server.preTransformRequests) + return; + // transform all url as non-ssr as html includes client-side assets only + try { + url = unwrapId(stripBase(decodeURI(url), base)); + } + catch { + // ignore + return; + } + server.warmupRequest(url); +} + +const logTime = createDebugger('vite:time'); +function timeMiddleware(root) { + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return function viteTimeMiddleware(req, res, next) { + const start = performance.now(); + const end = res.end; + res.end = (...args) => { + logTime?.(`${timeFrom(start)} ${prettifyUrl(req.url, root)}`); + return end.call(res, ...args); + }; + next(); + }; +} + +class ModuleNode { + /** + * Public served url path, starts with / + */ + url; + /** + * Resolved file system path + query + */ + id = null; + file = null; + type; + info; + meta; + importers = new Set(); + clientImportedModules = new Set(); + ssrImportedModules = new Set(); + acceptedHmrDeps = new Set(); + acceptedHmrExports = null; + importedBindings = null; + isSelfAccepting; + transformResult = null; + ssrTransformResult = null; + ssrModule = null; + ssrError = null; + lastHMRTimestamp = 0; + lastInvalidationTimestamp = 0; + /** + * If the module only needs to update its imports timestamp (e.g. within an HMR chain), + * it is considered soft-invalidated. In this state, its `transformResult` should exist, + * and the next `transformRequest` for this module will replace the timestamps. + * + * By default the value is `undefined` if it's not soft/hard-invalidated. If it gets + * soft-invalidated, this will contain the previous `transformResult` value. If it gets + * hard-invalidated, this will be set to `'HARD_INVALIDATED'`. + * @internal + */ + invalidationState; + /** + * @internal + */ + ssrInvalidationState; + /** + * The module urls that are statically imported in the code. This information is separated + * out from `importedModules` as only importers that statically import the module can be + * soft invalidated. Other imports (e.g. watched files) needs the importer to be hard invalidated. + * @internal + */ + staticImportedUrls; + /** + * @param setIsSelfAccepting - set `false` to set `isSelfAccepting` later. e.g. #7870 + */ + constructor(url, setIsSelfAccepting = true) { + this.url = url; + this.type = isDirectCSSRequest(url) ? 'css' : 'js'; + if (setIsSelfAccepting) { + this.isSelfAccepting = false; + } + } + get importedModules() { + const importedModules = new Set(this.clientImportedModules); + for (const module of this.ssrImportedModules) { + importedModules.add(module); + } + return importedModules; + } +} +class ModuleGraph { + resolveId; + urlToModuleMap = new Map(); + idToModuleMap = new Map(); + etagToModuleMap = new Map(); + // a single file may corresponds to multiple modules with different queries + fileToModulesMap = new Map(); + safeModulesPath = new Set(); + /** + * @internal + */ + _unresolvedUrlToModuleMap = new Map(); + /** + * @internal + */ + _ssrUnresolvedUrlToModuleMap = new Map(); + constructor(resolveId) { + this.resolveId = resolveId; + } + async getModuleByUrl(rawUrl, ssr) { + // Quick path, if we already have a module for this rawUrl (even without extension) + rawUrl = removeImportQuery(removeTimestampQuery(rawUrl)); + const mod = this._getUnresolvedUrlToModule(rawUrl, ssr); + if (mod) { + return mod; + } + const [url] = await this._resolveUrl(rawUrl, ssr); + return this.urlToModuleMap.get(url); + } + getModuleById(id) { + return this.idToModuleMap.get(removeTimestampQuery(id)); + } + getModulesByFile(file) { + return this.fileToModulesMap.get(file); + } + onFileChange(file) { + const mods = this.getModulesByFile(file); + if (mods) { + const seen = new Set(); + mods.forEach((mod) => { + this.invalidateModule(mod, seen); + }); + } + } + invalidateModule(mod, seen = new Set(), timestamp = Date.now(), isHmr = false, + /** @internal */ + softInvalidate = false) { + const prevInvalidationState = mod.invalidationState; + const prevSsrInvalidationState = mod.ssrInvalidationState; + // Handle soft invalidation before the `seen` check, as consecutive soft/hard invalidations can + // cause the final soft invalidation state to be different. + // If soft invalidated, save the previous `transformResult` so that we can reuse and transform the + // import timestamps only in `transformRequest`. If there's no previous `transformResult`, hard invalidate it. + if (softInvalidate) { + mod.invalidationState ??= mod.transformResult ?? 'HARD_INVALIDATED'; + mod.ssrInvalidationState ??= mod.ssrTransformResult ?? 'HARD_INVALIDATED'; + } + // If hard invalidated, further soft invalidations have no effect until it's reset to `undefined` + else { + mod.invalidationState = 'HARD_INVALIDATED'; + mod.ssrInvalidationState = 'HARD_INVALIDATED'; + } + // Skip updating the module if it was already invalidated before and the invalidation state has not changed + if (seen.has(mod) && + prevInvalidationState === mod.invalidationState && + prevSsrInvalidationState === mod.ssrInvalidationState) { + return; + } + seen.add(mod); + if (isHmr) { + mod.lastHMRTimestamp = timestamp; + } + else { + // Save the timestamp for this invalidation, so we can avoid caching the result of possible already started + // processing being done for this module + mod.lastInvalidationTimestamp = timestamp; + } + // Don't invalidate mod.info and mod.meta, as they are part of the processing pipeline + // Invalidating the transform result is enough to ensure this module is re-processed next time it is requested + const etag = mod.transformResult?.etag; + if (etag) + this.etagToModuleMap.delete(etag); + mod.transformResult = null; + mod.ssrTransformResult = null; + mod.ssrModule = null; + mod.ssrError = null; + mod.importers.forEach((importer) => { + if (!importer.acceptedHmrDeps.has(mod)) { + // If the importer statically imports the current module, we can soft-invalidate the importer + // to only update the import timestamps. If it's not statically imported, e.g. watched/glob file, + // we can only soft invalidate if the current module was also soft-invalidated. A soft-invalidation + // doesn't need to trigger a re-load and re-transform of the importer. + const shouldSoftInvalidateImporter = importer.staticImportedUrls?.has(mod.url) || softInvalidate; + this.invalidateModule(importer, seen, timestamp, isHmr, shouldSoftInvalidateImporter); + } + }); + } + invalidateAll() { + const timestamp = Date.now(); + const seen = new Set(); + this.idToModuleMap.forEach((mod) => { + this.invalidateModule(mod, seen, timestamp); + }); + } + /** + * Update the module graph based on a module's updated imports information + * If there are dependencies that no longer have any importers, they are + * returned as a Set. + * + * @param staticImportedUrls Subset of `importedModules` where they're statically imported in code. + * This is only used for soft invalidations so `undefined` is fine but may cause more runtime processing. + */ + async updateModuleInfo(mod, importedModules, importedBindings, acceptedModules, acceptedExports, isSelfAccepting, ssr, + /** @internal */ + staticImportedUrls) { + mod.isSelfAccepting = isSelfAccepting; + const prevImports = ssr ? mod.ssrImportedModules : mod.clientImportedModules; + let noLongerImported; + let resolvePromises = []; + let resolveResults = new Array(importedModules.size); + let index = 0; + // update import graph + for (const imported of importedModules) { + const nextIndex = index++; + if (typeof imported === 'string') { + resolvePromises.push(this.ensureEntryFromUrl(imported, ssr).then((dep) => { + dep.importers.add(mod); + resolveResults[nextIndex] = dep; + })); + } + else { + imported.importers.add(mod); + resolveResults[nextIndex] = imported; + } + } + if (resolvePromises.length) { + await Promise.all(resolvePromises); + } + const nextImports = new Set(resolveResults); + if (ssr) { + mod.ssrImportedModules = nextImports; + } + else { + mod.clientImportedModules = nextImports; + } + // remove the importer from deps that were imported but no longer are. + prevImports.forEach((dep) => { + if (!mod.clientImportedModules.has(dep) && + !mod.ssrImportedModules.has(dep)) { + dep.importers.delete(mod); + if (!dep.importers.size) { + (noLongerImported || (noLongerImported = new Set())).add(dep); + } + } + }); + // update accepted hmr deps + resolvePromises = []; + resolveResults = new Array(acceptedModules.size); + index = 0; + for (const accepted of acceptedModules) { + const nextIndex = index++; + if (typeof accepted === 'string') { + resolvePromises.push(this.ensureEntryFromUrl(accepted, ssr).then((dep) => { + resolveResults[nextIndex] = dep; + })); + } + else { + resolveResults[nextIndex] = accepted; + } + } + if (resolvePromises.length) { + await Promise.all(resolvePromises); + } + mod.acceptedHmrDeps = new Set(resolveResults); + mod.staticImportedUrls = staticImportedUrls; + // update accepted hmr exports + mod.acceptedHmrExports = acceptedExports; + mod.importedBindings = importedBindings; + return noLongerImported; + } + async ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting = true) { + return this._ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting); + } + /** + * @internal + */ + async _ensureEntryFromUrl(rawUrl, ssr, setIsSelfAccepting = true, + // Optimization, avoid resolving the same url twice if the caller already did it + resolved) { + // Quick path, if we already have a module for this rawUrl (even without extension) + rawUrl = removeImportQuery(removeTimestampQuery(rawUrl)); + let mod = this._getUnresolvedUrlToModule(rawUrl, ssr); + if (mod) { + return mod; + } + const modPromise = (async () => { + const [url, resolvedId, meta] = await this._resolveUrl(rawUrl, ssr, resolved); + mod = this.idToModuleMap.get(resolvedId); + if (!mod) { + mod = new ModuleNode(url, setIsSelfAccepting); + if (meta) + mod.meta = meta; + this.urlToModuleMap.set(url, mod); + mod.id = resolvedId; + this.idToModuleMap.set(resolvedId, mod); + const file = (mod.file = cleanUrl(resolvedId)); + let fileMappedModules = this.fileToModulesMap.get(file); + if (!fileMappedModules) { + fileMappedModules = new Set(); + this.fileToModulesMap.set(file, fileMappedModules); + } + fileMappedModules.add(mod); + } + // multiple urls can map to the same module and id, make sure we register + // the url to the existing module in that case + else if (!this.urlToModuleMap.has(url)) { + this.urlToModuleMap.set(url, mod); + } + this._setUnresolvedUrlToModule(rawUrl, mod, ssr); + return mod; + })(); + // Also register the clean url to the module, so that we can short-circuit + // resolving the same url twice + this._setUnresolvedUrlToModule(rawUrl, modPromise, ssr); + return modPromise; + } + // some deps, like a css file referenced via @import, don't have its own + // url because they are inlined into the main css import. But they still + // need to be represented in the module graph so that they can trigger + // hmr in the importing css file. + createFileOnlyEntry(file) { + file = normalizePath$3(file); + let fileMappedModules = this.fileToModulesMap.get(file); + if (!fileMappedModules) { + fileMappedModules = new Set(); + this.fileToModulesMap.set(file, fileMappedModules); + } + const url = `${FS_PREFIX}${file}`; + for (const m of fileMappedModules) { + if (m.url === url || m.id === file) { + return m; + } + } + const mod = new ModuleNode(url); + mod.file = file; + fileMappedModules.add(mod); + return mod; + } + // for incoming urls, it is important to: + // 1. remove the HMR timestamp query (?t=xxxx) and the ?import query + // 2. resolve its extension so that urls with or without extension all map to + // the same module + async resolveUrl(url, ssr) { + url = removeImportQuery(removeTimestampQuery(url)); + const mod = await this._getUnresolvedUrlToModule(url, ssr); + if (mod?.id) { + return [mod.url, mod.id, mod.meta]; + } + return this._resolveUrl(url, ssr); + } + updateModuleTransformResult(mod, result, ssr) { + if (ssr) { + mod.ssrTransformResult = result; + } + else { + const prevEtag = mod.transformResult?.etag; + if (prevEtag) + this.etagToModuleMap.delete(prevEtag); + mod.transformResult = result; + if (result?.etag) + this.etagToModuleMap.set(result.etag, mod); + } + } + getModuleByEtag(etag) { + return this.etagToModuleMap.get(etag); + } + /** + * @internal + */ + _getUnresolvedUrlToModule(url, ssr) { + return (ssr ? this._ssrUnresolvedUrlToModuleMap : this._unresolvedUrlToModuleMap).get(url); + } + /** + * @internal + */ + _setUnresolvedUrlToModule(url, mod, ssr) { + (ssr + ? this._ssrUnresolvedUrlToModuleMap + : this._unresolvedUrlToModuleMap).set(url, mod); + } + /** + * @internal + */ + async _resolveUrl(url, ssr, alreadyResolved) { + const resolved = alreadyResolved ?? (await this.resolveId(url, !!ssr)); + const resolvedId = resolved?.id || url; + if (url !== resolvedId && + !url.includes('\0') && + !url.startsWith(`virtual:`)) { + const ext = extname$1(cleanUrl(resolvedId)); + if (ext) { + const pathname = cleanUrl(url); + if (!pathname.endsWith(ext)) { + url = pathname + ext + url.slice(pathname.length); + } + } + } + return [url, resolvedId, resolved?.meta]; + } +} + +function notFoundMiddleware() { + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + return function vite404Middleware(_, res) { + res.statusCode = 404; + res.end(); + }; +} + +function warmupFiles(server) { + const options = server.config.server.warmup; + const root = server.config.root; + if (options?.clientFiles?.length) { + mapFiles(options.clientFiles, root).then((files) => { + for (const file of files) { + warmupFile(server, file, false); + } + }); + } + if (options?.ssrFiles?.length) { + mapFiles(options.ssrFiles, root).then((files) => { + for (const file of files) { + warmupFile(server, file, true); + } + }); + } +} +async function warmupFile(server, file, ssr) { + // transform html with the `transformIndexHtml` hook as Vite internals would + // pre-transform the imported JS modules linked. this may cause `transformIndexHtml` + // plugins to be executed twice, but that's probably fine. + if (file.endsWith('.html')) { + const url = htmlFileToUrl(file, server.config.root); + if (url) { + try { + const html = await fsp.readFile(file, 'utf-8'); + await server.transformIndexHtml(url, html); + } + catch (e) { + // Unexpected error, log the issue but avoid an unhandled exception + server.config.logger.error(`Pre-transform error (${colors$1.cyan(file)}): ${e.message}`, { + error: e, + timestamp: true, + }); + } + } + } + // for other files, pass it through `transformRequest` with warmup + else { + const url = fileToUrl(file, server.config.root); + await server.warmupRequest(url, { ssr }); + } +} +function htmlFileToUrl(file, root) { + const url = path$o.relative(root, file); + // out of root, ignore file + if (url[0] === '.') + return; + // file within root, create root-relative url + return '/' + normalizePath$3(url); +} +function fileToUrl(file, root) { + const url = path$o.relative(root, file); + // out of root, use /@fs/ prefix + if (url[0] === '.') { + return path$o.posix.join(FS_PREFIX, normalizePath$3(file)); + } + // file within root, create root-relative url + return '/' + normalizePath$3(url); +} +function mapFiles(files, root) { + return glob(files, { + cwd: root, + absolute: true, + }); +} + +function createServer(inlineConfig = {}) { + return _createServer(inlineConfig, { hotListen: true }); +} +async function _createServer(inlineConfig = {}, options) { + const config = await resolveConfig(inlineConfig, 'serve'); + const initPublicFilesPromise = initPublicFiles(config); + const { root, server: serverConfig } = config; + const httpsOptions = await resolveHttpsConfig(config.server.https); + const { middlewareMode } = serverConfig; + const resolvedWatchOptions = resolveChokidarOptions(config, { + disableGlobbing: true, + ...serverConfig.watch, + }); + const middlewares = connect$1(); + const httpServer = middlewareMode + ? null + : await resolveHttpServer(serverConfig, middlewares, httpsOptions); + const ws = createWebSocketServer(httpServer, config, httpsOptions); + const hot = createHMRBroadcaster() + .addChannel(ws) + .addChannel(createServerHMRChannel()); + if (typeof config.server.hmr === 'object' && config.server.hmr.channels) { + config.server.hmr.channels.forEach((channel) => hot.addChannel(channel)); + } + if (httpServer) { + setClientErrorHandler(httpServer, config.logger); + } + // eslint-disable-next-line eqeqeq + const watchEnabled = serverConfig.watch !== null; + const watcher = watchEnabled + ? chokidar.watch( + // config file dependencies and env file might be outside of root + [ + root, + ...config.configFileDependencies, + ...getEnvFilesForMode(config.mode, config.envDir), + ], resolvedWatchOptions) + : createNoopWatcher(resolvedWatchOptions); + const moduleGraph = new ModuleGraph((url, ssr) => container.resolveId(url, undefined, { ssr })); + const container = await createPluginContainer(config, moduleGraph, watcher); + const closeHttpServer = createServerCloseFn(httpServer); + let exitProcess; + const devHtmlTransformFn = createDevHtmlTransformFn(config); + let server = { + config, + middlewares, + httpServer, + watcher, + pluginContainer: container, + ws, + hot, + moduleGraph, + resolvedUrls: null, + ssrTransform(code, inMap, url, originalCode = code) { + return ssrTransform(code, inMap, url, originalCode, server.config); + }, + transformRequest(url, options) { + return transformRequest(url, server, options); + }, + async warmupRequest(url, options) { + await transformRequest(url, server, options).catch((e) => { + if (e?.code === ERR_OUTDATED_OPTIMIZED_DEP || + e?.code === ERR_CLOSED_SERVER) { + // these are expected errors + return; + } + // Unexpected error, log the issue but avoid an unhandled exception + server.config.logger.error(`Pre-transform error: ${e.message}`, { + error: e, + timestamp: true, + }); + }); + }, + transformIndexHtml(url, html, originalUrl) { + return devHtmlTransformFn(server, url, html, originalUrl); + }, + async ssrLoadModule(url, opts) { + return ssrLoadModule(url, server, undefined, undefined, opts?.fixStacktrace); + }, + async ssrFetchModule(url, importer) { + return ssrFetchModule(server, url, importer); + }, + ssrFixStacktrace(e) { + ssrFixStacktrace(e, moduleGraph); + }, + ssrRewriteStacktrace(stack) { + return ssrRewriteStacktrace(stack, moduleGraph); + }, + async reloadModule(module) { + if (serverConfig.hmr !== false && module.file) { + updateModules(module.file, [module], Date.now(), server); + } + }, + async listen(port, isRestart) { + await startServer(server, port); + if (httpServer) { + server.resolvedUrls = await resolveServerUrls(httpServer, config.server, config); + if (!isRestart && config.server.open) + server.openBrowser(); + } + return server; + }, + openBrowser() { + const options = server.config.server; + const url = server.resolvedUrls?.local[0] ?? server.resolvedUrls?.network[0]; + if (url) { + const path = typeof options.open === 'string' + ? new URL(options.open, url).href + : url; + // We know the url that the browser would be opened to, so we can + // start the request while we are awaiting the browser. This will + // start the crawling of static imports ~500ms before. + // preTransformRequests needs to be enabled for this optimization. + if (server.config.server.preTransformRequests) { + setTimeout(() => { + const getMethod = path.startsWith('https:') ? get$1 : get$2; + getMethod(path, { + headers: { + // Allow the history middleware to redirect to /index.html + Accept: 'text/html', + }, + }, (res) => { + res.on('end', () => { + // Ignore response, scripts discovered while processing the entry + // will be preprocessed (server.config.server.preTransformRequests) + }); + }) + .on('error', () => { + // Ignore errors + }) + .end(); + }, 0); + } + openBrowser(path, true, server.config.logger); + } + else { + server.config.logger.warn('No URL available to open in browser'); + } + }, + async close() { + if (!middlewareMode) { + process.off('SIGTERM', exitProcess); + if (process.env.CI !== 'true') { + process.stdin.off('end', exitProcess); + } + } + await Promise.allSettled([ + watcher.close(), + hot.close(), + container.close(), + getDepsOptimizer(server.config)?.close(), + getDepsOptimizer(server.config, true)?.close(), + closeHttpServer(), + ]); + // Await pending requests. We throw early in transformRequest + // and in hooks if the server is closing for non-ssr requests, + // so the import analysis plugin stops pre-transforming static + // imports and this block is resolved sooner. + // During SSR, we let pending requests finish to avoid exposing + // the server closed error to the users. + while (server._pendingRequests.size > 0) { + await Promise.allSettled([...server._pendingRequests.values()].map((pending) => pending.request)); + } + server.resolvedUrls = null; + }, + printUrls() { + if (server.resolvedUrls) { + printServerUrls(server.resolvedUrls, serverConfig.host, config.logger.info); + } + else if (middlewareMode) { + throw new Error('cannot print server URLs in middleware mode.'); + } + else { + throw new Error('cannot print server URLs before server.listen is called.'); + } + }, + bindCLIShortcuts(options) { + bindCLIShortcuts(server, options); + }, + async restart(forceOptimize) { + if (!server._restartPromise) { + server._forceOptimizeOnRestart = !!forceOptimize; + server._restartPromise = restartServer(server).finally(() => { + server._restartPromise = null; + server._forceOptimizeOnRestart = false; + }); + } + return server._restartPromise; + }, + _setInternalServer(_server) { + // Rebind internal the server variable so functions reference the user + // server instance after a restart + server = _server; + }, + _restartPromise: null, + _importGlobMap: new Map(), + _forceOptimizeOnRestart: false, + _pendingRequests: new Map(), + _fsDenyGlob: picomatch$4(config.server.fs.deny, { + matchBase: true, + nocase: true, + }), + _shortcutsOptions: undefined, + }; + // maintain consistency with the server instance after restarting. + const reflexServer = new Proxy(server, { + get: (_, property) => { + return server[property]; + }, + set: (_, property, value) => { + server[property] = value; + return true; + }, + }); + if (!middlewareMode) { + exitProcess = async () => { + try { + await server.close(); + } + finally { + process.exit(); + } + }; + process.once('SIGTERM', exitProcess); + if (process.env.CI !== 'true') { + process.stdin.on('end', exitProcess); + } + } + const publicFiles = await initPublicFilesPromise; + const onHMRUpdate = async (file, configOnly) => { + if (serverConfig.hmr !== false) { + try { + await handleHMRUpdate(file, server, configOnly); + } + catch (err) { + hot.send({ + type: 'error', + err: prepareError(err), + }); + } + } + }; + const { publicDir } = config; + const onFileAddUnlink = async (file, isUnlink) => { + file = normalizePath$3(file); + await container.watchChange(file, { event: isUnlink ? 'delete' : 'create' }); + if (publicDir && publicFiles) { + if (file.startsWith(publicDir)) { + const path = file.slice(publicDir.length); + publicFiles[isUnlink ? 'delete' : 'add'](path); + if (!isUnlink) { + const moduleWithSamePath = await moduleGraph.getModuleByUrl(path); + const etag = moduleWithSamePath?.transformResult?.etag; + if (etag) { + // The public file should win on the next request over a module with the + // same path. Prevent the transform etag fast path from serving the module + moduleGraph.etagToModuleMap.delete(etag); + } + } + } + } + await handleFileAddUnlink(file, server, isUnlink); + await onHMRUpdate(file, true); + }; + watcher.on('change', async (file) => { + file = normalizePath$3(file); + await container.watchChange(file, { event: 'update' }); + // invalidate module graph cache on file change + moduleGraph.onFileChange(file); + await onHMRUpdate(file, false); + }); + getFsUtils(config).initWatcher?.(watcher); + watcher.on('add', (file) => { + onFileAddUnlink(file, false); + }); + watcher.on('unlink', (file) => { + onFileAddUnlink(file, true); + }); + hot.on('vite:invalidate', async ({ path, message }) => { + const mod = moduleGraph.urlToModuleMap.get(path); + if (mod && mod.isSelfAccepting && mod.lastHMRTimestamp > 0) { + config.logger.info(colors$1.yellow(`hmr invalidate `) + + colors$1.dim(path) + + (message ? ` ${message}` : ''), { timestamp: true }); + const file = getShortName(mod.file, config.root); + updateModules(file, [...mod.importers], mod.lastHMRTimestamp, server, true); + } + }); + if (!middlewareMode && httpServer) { + httpServer.once('listening', () => { + // update actual port since this may be different from initial value + serverConfig.port = httpServer.address().port; + }); + } + // apply server configuration hooks from plugins + const postHooks = []; + for (const hook of config.getSortedPluginHooks('configureServer')) { + postHooks.push(await hook(reflexServer)); + } + // Internal middlewares ------------------------------------------------------ + // request timer + if (process.env.DEBUG) { + middlewares.use(timeMiddleware(root)); + } + // cors (enabled by default) + const { cors } = serverConfig; + if (cors !== false) { + middlewares.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors)); + } + middlewares.use(cachedTransformMiddleware(server)); + // proxy + const { proxy } = serverConfig; + if (proxy) { + const middlewareServer = (isObject$1(serverConfig.middlewareMode) + ? serverConfig.middlewareMode.server + : null) || httpServer; + middlewares.use(proxyMiddleware(middlewareServer, proxy, config)); + } + // base + if (config.base !== '/') { + middlewares.use(baseMiddleware(config.rawBase, middlewareMode)); + } + // open in editor support + middlewares.use('/__open-in-editor', launchEditorMiddleware$1()); + // ping request handler + // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` + middlewares.use(function viteHMRPingMiddleware(req, res, next) { + if (req.headers['accept'] === 'text/x-vite-ping') { + res.writeHead(204).end(); + } + else { + next(); + } + }); + // serve static files under /public + // this applies before the transform middleware so that these files are served + // as-is without transforms. + if (publicDir) { + middlewares.use(servePublicMiddleware(server, publicFiles)); + } + // main transform middleware + middlewares.use(transformMiddleware(server)); + // serve static files + middlewares.use(serveRawFsMiddleware(server)); + middlewares.use(serveStaticMiddleware(server)); + // html fallback + if (config.appType === 'spa' || config.appType === 'mpa') { + middlewares.use(htmlFallbackMiddleware(root, config.appType === 'spa', getFsUtils(config))); + } + // run post config hooks + // This is applied before the html middleware so that user middleware can + // serve custom content instead of index.html. + postHooks.forEach((fn) => fn && fn()); + if (config.appType === 'spa' || config.appType === 'mpa') { + // transform index.html + middlewares.use(indexHtmlMiddleware(root, server)); + // handle 404s + middlewares.use(notFoundMiddleware()); + } + // error handler + middlewares.use(errorMiddleware(server, middlewareMode)); + // httpServer.listen can be called multiple times + // when port when using next port number + // this code is to avoid calling buildStart multiple times + let initingServer; + let serverInited = false; + const initServer = async () => { + if (serverInited) + return; + if (initingServer) + return initingServer; + initingServer = (async function () { + await container.buildStart({}); + // start deps optimizer after all container plugins are ready + if (isDepsOptimizerEnabled(config, false)) { + await initDepsOptimizer(config, server); + } + warmupFiles(server); + initingServer = undefined; + serverInited = true; + })(); + return initingServer; + }; + if (!middlewareMode && httpServer) { + // overwrite listen to init optimizer before server start + const listen = httpServer.listen.bind(httpServer); + httpServer.listen = (async (port, ...args) => { + try { + // ensure ws server started + hot.listen(); + await initServer(); + } + catch (e) { + httpServer.emit('error', e); + return; + } + return listen(port, ...args); + }); + } + else { + if (options.hotListen) { + hot.listen(); + } + await initServer(); + } + return server; +} +async function startServer(server, inlinePort) { + const httpServer = server.httpServer; + if (!httpServer) { + throw new Error('Cannot call server.listen in middleware mode.'); + } + const options = server.config.server; + const hostname = await resolveHostname(options.host); + const configPort = inlinePort ?? options.port; + // When using non strict port for the dev server, the running port can be different from the config one. + // When restarting, the original port may be available but to avoid a switch of URL for the running + // browser tabs, we enforce the previously used port, expect if the config port changed. + const port = (!configPort || configPort === server._configServerPort + ? server._currentServerPort + : configPort) ?? DEFAULT_DEV_PORT; + server._configServerPort = configPort; + const serverPort = await httpServerStart(httpServer, { + port, + strictPort: options.strictPort, + host: hostname.host, + logger: server.config.logger, + }); + server._currentServerPort = serverPort; +} +function createServerCloseFn(server) { + if (!server) { + return () => Promise.resolve(); + } + let hasListened = false; + const openSockets = new Set(); + server.on('connection', (socket) => { + openSockets.add(socket); + socket.on('close', () => { + openSockets.delete(socket); + }); + }); + server.once('listening', () => { + hasListened = true; + }); + return () => new Promise((resolve, reject) => { + openSockets.forEach((s) => s.destroy()); + if (hasListened) { + server.close((err) => { + if (err) { + reject(err); + } + else { + resolve(); + } + }); + } + else { + resolve(); + } + }); +} +function resolvedAllowDir(root, dir) { + return normalizePath$3(path$o.resolve(root, dir)); +} +function resolveServerOptions(root, raw, logger) { + const server = { + preTransformRequests: true, + ...raw, + sourcemapIgnoreList: raw?.sourcemapIgnoreList === false + ? () => false + : raw?.sourcemapIgnoreList || isInNodeModules$1, + middlewareMode: !!raw?.middlewareMode, + }; + let allowDirs = server.fs?.allow; + const deny = server.fs?.deny || ['.env', '.env.*', '*.{crt,pem}']; + if (!allowDirs) { + allowDirs = [searchForWorkspaceRoot(root)]; + } + allowDirs = allowDirs.map((i) => resolvedAllowDir(root, i)); + // only push client dir when vite itself is outside-of-root + const resolvedClientDir = resolvedAllowDir(root, CLIENT_DIR); + if (!allowDirs.some((dir) => isParentDirectory(dir, resolvedClientDir))) { + allowDirs.push(resolvedClientDir); + } + server.fs = { + strict: server.fs?.strict ?? true, + allow: allowDirs, + deny, + cachedChecks: server.fs?.cachedChecks, + }; + if (server.origin?.endsWith('/')) { + server.origin = server.origin.slice(0, -1); + logger.warn(colors$1.yellow(`${colors$1.bold('(!)')} server.origin should not end with "/". Using "${server.origin}" instead.`)); + } + return server; +} +async function restartServer(server) { + global.__vite_start_time = performance.now(); + const shortcutsOptions = server._shortcutsOptions; + let inlineConfig = server.config.inlineConfig; + if (server._forceOptimizeOnRestart) { + inlineConfig = mergeConfig(inlineConfig, { + optimizeDeps: { + force: true, + }, + }); + } + // Reinit the server by creating a new instance using the same inlineConfig + // This will triger a reload of the config file and re-create the plugins and + // middlewares. We then assign all properties of the new server to the existing + // server instance and set the user instance to be used in the new server. + // This allows us to keep the same server instance for the user. + { + let newServer = null; + try { + // delay ws server listen + newServer = await _createServer(inlineConfig, { hotListen: false }); + } + catch (err) { + server.config.logger.error(err.message, { + timestamp: true, + }); + server.config.logger.error('server restart failed', { timestamp: true }); + return; + } + await server.close(); + // Assign new server props to existing server instance + const middlewares = server.middlewares; + newServer._configServerPort = server._configServerPort; + newServer._currentServerPort = server._currentServerPort; + Object.assign(server, newServer); + // Keep the same connect instance so app.use(vite.middlewares) works + // after a restart in middlewareMode (.route is always '/') + middlewares.stack = newServer.middlewares.stack; + server.middlewares = middlewares; + // Rebind internal server variable so functions reference the user server + newServer._setInternalServer(server); + } + const { logger, server: { port, middlewareMode }, } = server.config; + if (!middlewareMode) { + await server.listen(port, true); + } + else { + server.hot.listen(); + } + logger.info('server restarted.', { timestamp: true }); + if (shortcutsOptions) { + shortcutsOptions.print = false; + bindCLIShortcuts(server, shortcutsOptions); + } +} +/** + * Internal function to restart the Vite server and print URLs if changed + */ +async function restartServerWithUrls(server) { + if (server.config.server.middlewareMode) { + await server.restart(); + return; + } + const { port: prevPort, host: prevHost } = server.config.server; + const prevUrls = server.resolvedUrls; + await server.restart(); + const { logger, server: { port, host }, } = server.config; + if ((port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || + host !== prevHost || + diffDnsOrderChange(prevUrls, server.resolvedUrls)) { + logger.info(''); + server.printUrls(); + } +} + +var index = { + __proto__: null, + _createServer: _createServer, + createServer: createServer, + createServerCloseFn: createServerCloseFn, + resolveServerOptions: resolveServerOptions, + restartServerWithUrls: restartServerWithUrls +}; + +const debugHmr = createDebugger('vite:hmr'); +const whitespaceRE = /\s/; +const normalizedClientDir = normalizePath$3(CLIENT_DIR); +function getShortName(file, root) { + return file.startsWith(withTrailingSlash(root)) + ? path$o.posix.relative(root, file) + : file; +} +async function handleHMRUpdate(file, server, configOnly) { + const { hot, config, moduleGraph } = server; + const shortFile = getShortName(file, config.root); + const isConfig = file === config.configFile; + const isConfigDependency = config.configFileDependencies.some((name) => file === name); + const isEnv = config.inlineConfig.envFile !== false && + getEnvFilesForMode(config.mode, config.envDir).includes(file); + if (isConfig || isConfigDependency || isEnv) { + // auto restart server + debugHmr?.(`[config change] ${colors$1.dim(shortFile)}`); + config.logger.info(colors$1.green(`${path$o.relative(process.cwd(), file)} changed, restarting server...`), { clear: true, timestamp: true }); + try { + await restartServerWithUrls(server); + } + catch (e) { + config.logger.error(colors$1.red(e)); + } + return; + } + if (configOnly) { + return; + } + debugHmr?.(`[file change] ${colors$1.dim(shortFile)}`); + // (dev only) the client itself cannot be hot updated. + if (file.startsWith(withTrailingSlash(normalizedClientDir))) { + hot.send({ + type: 'full-reload', + path: '*', + }); + return; + } + const mods = moduleGraph.getModulesByFile(file); + // check if any plugin wants to perform custom HMR handling + const timestamp = Date.now(); + const hmrContext = { + file, + timestamp, + modules: mods ? [...mods] : [], + read: () => readModifiedFile(file), + server, + }; + for (const hook of config.getSortedPluginHooks('handleHotUpdate')) { + const filteredModules = await hook(hmrContext); + if (filteredModules) { + hmrContext.modules = filteredModules; + } + } + if (!hmrContext.modules.length) { + // html file cannot be hot updated + if (file.endsWith('.html')) { + config.logger.info(colors$1.green(`page reload `) + colors$1.dim(shortFile), { + clear: true, + timestamp: true, + }); + hot.send({ + type: 'full-reload', + path: config.server.middlewareMode + ? '*' + : '/' + normalizePath$3(path$o.relative(config.root, file)), + }); + } + else { + // loaded but not in the module graph, probably not js + debugHmr?.(`[no modules matched] ${colors$1.dim(shortFile)}`); + } + return; + } + updateModules(shortFile, hmrContext.modules, timestamp, server); +} +function updateModules(file, modules, timestamp, { config, hot, moduleGraph }, afterInvalidation) { + const updates = []; + const invalidatedModules = new Set(); + const traversedModules = new Set(); + let needFullReload = false; + for (const mod of modules) { + const boundaries = []; + const hasDeadEnd = propagateUpdate(mod, traversedModules, boundaries); + moduleGraph.invalidateModule(mod, invalidatedModules, timestamp, true); + if (needFullReload) { + continue; + } + if (hasDeadEnd) { + needFullReload = hasDeadEnd; + continue; + } + updates.push(...boundaries.map(({ boundary, acceptedVia, isWithinCircularImport }) => ({ + type: `${boundary.type}-update`, + timestamp, + path: normalizeHmrUrl(boundary.url), + acceptedPath: normalizeHmrUrl(acceptedVia.url), + explicitImportRequired: boundary.type === 'js' + ? isExplicitImportRequired(acceptedVia.url) + : false, + isWithinCircularImport, + // browser modules are invalidated by changing ?t= query, + // but in ssr we control the module system, so we can directly remove them form cache + ssrInvalidates: getSSRInvalidatedImporters(acceptedVia), + }))); + } + if (needFullReload) { + const reason = typeof needFullReload === 'string' + ? colors$1.dim(` (${needFullReload})`) + : ''; + config.logger.info(colors$1.green(`page reload `) + colors$1.dim(file) + reason, { clear: !afterInvalidation, timestamp: true }); + hot.send({ + type: 'full-reload', + }); + return; + } + if (updates.length === 0) { + debugHmr?.(colors$1.yellow(`no update happened `) + colors$1.dim(file)); + return; + } + config.logger.info(colors$1.green(`hmr update `) + + colors$1.dim([...new Set(updates.map((u) => u.path))].join(', ')), { clear: !afterInvalidation, timestamp: true }); + hot.send({ + type: 'update', + updates, + }); +} +function populateSSRImporters(module, timestamp, seen) { + module.ssrImportedModules.forEach((importer) => { + if (seen.has(importer)) { + return; + } + if (importer.lastHMRTimestamp === timestamp || + importer.lastInvalidationTimestamp === timestamp) { + seen.add(importer); + populateSSRImporters(importer, timestamp, seen); + } + }); + return seen; +} +function getSSRInvalidatedImporters(module) { + return [ + ...populateSSRImporters(module, module.lastHMRTimestamp, new Set()), + ].map((m) => m.file); +} +async function handleFileAddUnlink(file, server, isUnlink) { + const modules = [...(server.moduleGraph.getModulesByFile(file) || [])]; + if (isUnlink) { + for (const deletedMod of modules) { + deletedMod.importedModules.forEach((importedMod) => { + importedMod.importers.delete(deletedMod); + }); + } + } + modules.push(...getAffectedGlobModules(file, server)); + if (modules.length > 0) { + updateModules(getShortName(file, server.config.root), unique(modules), Date.now(), server); + } +} +function areAllImportsAccepted(importedBindings, acceptedExports) { + for (const binding of importedBindings) { + if (!acceptedExports.has(binding)) { + return false; + } + } + return true; +} +function propagateUpdate(node, traversedModules, boundaries, currentChain = [node]) { + if (traversedModules.has(node)) { + return false; + } + traversedModules.add(node); + // #7561 + // if the imports of `node` have not been analyzed, then `node` has not + // been loaded in the browser and we should stop propagation. + if (node.id && node.isSelfAccepting === undefined) { + debugHmr?.(`[propagate update] stop propagation because not analyzed: ${colors$1.dim(node.id)}`); + return false; + } + if (node.isSelfAccepting) { + boundaries.push({ + boundary: node, + acceptedVia: node, + isWithinCircularImport: isNodeWithinCircularImports(node, currentChain), + }); + // additionally check for CSS importers, since a PostCSS plugin like + // Tailwind JIT may register any file as a dependency to a CSS file. + for (const importer of node.importers) { + if (isCSSRequest(importer.url) && !currentChain.includes(importer)) { + propagateUpdate(importer, traversedModules, boundaries, currentChain.concat(importer)); + } + } + return false; + } + // A partially accepted module with no importers is considered self accepting, + // because the deal is "there are parts of myself I can't self accept if they + // are used outside of me". + // Also, the imported module (this one) must be updated before the importers, + // so that they do get the fresh imported module when/if they are reloaded. + if (node.acceptedHmrExports) { + boundaries.push({ + boundary: node, + acceptedVia: node, + isWithinCircularImport: isNodeWithinCircularImports(node, currentChain), + }); + } + else { + if (!node.importers.size) { + return true; + } + // #3716, #3913 + // For a non-CSS file, if all of its importers are CSS files (registered via + // PostCSS plugins) it should be considered a dead end and force full reload. + if (!isCSSRequest(node.url) && + [...node.importers].every((i) => isCSSRequest(i.url))) { + return true; + } + } + for (const importer of node.importers) { + const subChain = currentChain.concat(importer); + if (importer.acceptedHmrDeps.has(node)) { + boundaries.push({ + boundary: importer, + acceptedVia: node, + isWithinCircularImport: isNodeWithinCircularImports(importer, subChain), + }); + continue; + } + if (node.id && node.acceptedHmrExports && importer.importedBindings) { + const importedBindingsFromNode = importer.importedBindings.get(node.id); + if (importedBindingsFromNode && + areAllImportsAccepted(importedBindingsFromNode, node.acceptedHmrExports)) { + continue; + } + } + if (!currentChain.includes(importer) && + propagateUpdate(importer, traversedModules, boundaries, subChain)) { + return true; + } + } + return false; +} +/** + * Check importers recursively if it's an import loop. An accepted module within + * an import loop cannot recover its execution order and should be reloaded. + * + * @param node The node that accepts HMR and is a boundary + * @param nodeChain The chain of nodes/imports that lead to the node. + * (The last node in the chain imports the `node` parameter) + * @param currentChain The current chain tracked from the `node` parameter + * @param traversedModules The set of modules that have traversed + */ +function isNodeWithinCircularImports(node, nodeChain, currentChain = [node], traversedModules = new Set()) { + // To help visualize how each parameters work, imagine this import graph: + // + // A -> B -> C -> ACCEPTED -> D -> E -> NODE + // ^--------------------------| + // + // ACCEPTED: the node that accepts HMR. the `node` parameter. + // NODE : the initial node that triggered this HMR. + // + // This function will return true in the above graph, which: + // `node` : ACCEPTED + // `nodeChain` : [NODE, E, D, ACCEPTED] + // `currentChain` : [ACCEPTED, C, B] + // + // It works by checking if any `node` importers are within `nodeChain`, which + // means there's an import loop with a HMR-accepted module in it. + if (traversedModules.has(node)) { + return false; + } + traversedModules.add(node); + for (const importer of node.importers) { + // Node may import itself which is safe + if (importer === node) + continue; + // a PostCSS plugin like Tailwind JIT may register + // any file as a dependency to a CSS file. + // But in that case, the actual dependency chain is separate. + if (isCSSRequest(importer.url)) + continue; + // Check circular imports + const importerIndex = nodeChain.indexOf(importer); + if (importerIndex > -1) { + // Log extra debug information so users can fix and remove the circular imports + if (debugHmr) { + // Following explanation above: + // `importer` : E + // `currentChain` reversed : [B, C, ACCEPTED] + // `nodeChain` sliced & reversed : [D, E] + // Combined : [E, B, C, ACCEPTED, D, E] + const importChain = [ + importer, + ...[...currentChain].reverse(), + ...nodeChain.slice(importerIndex, -1).reverse(), + ]; + debugHmr(colors$1.yellow(`circular imports detected: `) + + importChain.map((m) => colors$1.dim(m.url)).join(' -> ')); + } + return true; + } + // Continue recursively + if (!currentChain.includes(importer)) { + const result = isNodeWithinCircularImports(importer, nodeChain, currentChain.concat(importer), traversedModules); + if (result) + return result; + } + } + return false; +} +function handlePrunedModules(mods, { hot }) { + // update the disposed modules' hmr timestamp + // since if it's re-imported, it should re-apply side effects + // and without the timestamp the browser will not re-import it! + const t = Date.now(); + mods.forEach((mod) => { + mod.lastHMRTimestamp = t; + debugHmr?.(`[dispose] ${colors$1.dim(mod.file)}`); + }); + hot.send({ + type: 'prune', + paths: [...mods].map((m) => m.url), + }); +} +/** + * Lex import.meta.hot.accept() for accepted deps. + * Since hot.accept() can only accept string literals or array of string + * literals, we don't really need a heavy @babel/parse call on the entire source. + * + * @returns selfAccepts + */ +function lexAcceptedHmrDeps(code, start, urls) { + let state = 0 /* LexerState.inCall */; + // the state can only be 2 levels deep so no need for a stack + let prevState = 0 /* LexerState.inCall */; + let currentDep = ''; + function addDep(index) { + urls.add({ + url: currentDep, + start: index - currentDep.length - 1, + end: index + 1, + }); + currentDep = ''; + } + for (let i = start; i < code.length; i++) { + const char = code.charAt(i); + switch (state) { + case 0 /* LexerState.inCall */: + case 4 /* LexerState.inArray */: + if (char === `'`) { + prevState = state; + state = 1 /* LexerState.inSingleQuoteString */; + } + else if (char === `"`) { + prevState = state; + state = 2 /* LexerState.inDoubleQuoteString */; + } + else if (char === '`') { + prevState = state; + state = 3 /* LexerState.inTemplateString */; + } + else if (whitespaceRE.test(char)) { + continue; + } + else { + if (state === 0 /* LexerState.inCall */) { + if (char === `[`) { + state = 4 /* LexerState.inArray */; + } + else { + // reaching here means the first arg is neither a string literal + // nor an Array literal (direct callback) or there is no arg + // in both case this indicates a self-accepting module + return true; // done + } + } + else if (state === 4 /* LexerState.inArray */) { + if (char === `]`) { + return false; // done + } + else if (char === ',') { + continue; + } + else { + error(i); + } + } + } + break; + case 1 /* LexerState.inSingleQuoteString */: + if (char === `'`) { + addDep(i); + if (prevState === 0 /* LexerState.inCall */) { + // accept('foo', ...) + return false; + } + else { + state = prevState; + } + } + else { + currentDep += char; + } + break; + case 2 /* LexerState.inDoubleQuoteString */: + if (char === `"`) { + addDep(i); + if (prevState === 0 /* LexerState.inCall */) { + // accept('foo', ...) + return false; + } + else { + state = prevState; + } + } + else { + currentDep += char; + } + break; + case 3 /* LexerState.inTemplateString */: + if (char === '`') { + addDep(i); + if (prevState === 0 /* LexerState.inCall */) { + // accept('foo', ...) + return false; + } + else { + state = prevState; + } + } + else if (char === '$' && code.charAt(i + 1) === '{') { + error(i); + } + else { + currentDep += char; + } + break; + default: + throw new Error('unknown import.meta.hot lexer state'); + } + } + return false; +} +function lexAcceptedHmrExports(code, start, exportNames) { + const urls = new Set(); + lexAcceptedHmrDeps(code, start, urls); + for (const { url } of urls) { + exportNames.add(url); + } + return urls.size > 0; +} +function normalizeHmrUrl(url) { + if (url[0] !== '.' && url[0] !== '/') { + url = wrapId(url); + } + return url; +} +function error(pos) { + const err = new Error(`import.meta.hot.accept() can only accept string literals or an ` + + `Array of string literals.`); + err.pos = pos; + throw err; +} +// vitejs/vite#610 when hot-reloading Vue files, we read immediately on file +// change event and sometimes this can be too early and get an empty buffer. +// Poll until the file's modified time has changed before reading again. +async function readModifiedFile(file) { + const content = await fsp.readFile(file, 'utf-8'); + if (!content) { + const mtime = (await fsp.stat(file)).mtimeMs; + for (let n = 0; n < 10; n++) { + await new Promise((r) => setTimeout(r, 10)); + const newMtime = (await fsp.stat(file)).mtimeMs; + if (newMtime !== mtime) { + break; + } + } + return await fsp.readFile(file, 'utf-8'); + } + else { + return content; + } +} +function createHMRBroadcaster() { + const channels = []; + const readyChannels = new WeakSet(); + const broadcaster = { + get channels() { + return [...channels]; + }, + addChannel(channel) { + if (channels.some((c) => c.name === channel.name)) { + throw new Error(`HMR channel "${channel.name}" is already defined.`); + } + channels.push(channel); + return broadcaster; + }, + on(event, listener) { + // emit connection event only when all channels are ready + if (event === 'connection') { + // make a copy so we don't wait for channels that might be added after this is triggered + const channels = this.channels; + channels.forEach((channel) => channel.on('connection', () => { + readyChannels.add(channel); + if (channels.every((c) => readyChannels.has(c))) { + listener(); + } + })); + return; + } + channels.forEach((channel) => channel.on(event, listener)); + return; + }, + off(event, listener) { + channels.forEach((channel) => channel.off(event, listener)); + return; + }, + send(...args) { + channels.forEach((channel) => channel.send(...args)); + }, + listen() { + channels.forEach((channel) => channel.listen()); + }, + close() { + return Promise.all(channels.map((channel) => channel.close())); + }, + }; + return broadcaster; +} +function createServerHMRChannel() { + const innerEmitter = new EventEmitter$4(); + const outsideEmitter = new EventEmitter$4(); + return { + name: 'ssr', + send(...args) { + let payload; + if (typeof args[0] === 'string') { + payload = { + type: 'custom', + event: args[0], + data: args[1], + }; + } + else { + payload = args[0]; + } + outsideEmitter.emit('send', payload); + }, + off(event, listener) { + innerEmitter.off(event, listener); + }, + on: ((event, listener) => { + innerEmitter.on(event, listener); + }), + close() { + innerEmitter.removeAllListeners(); + outsideEmitter.removeAllListeners(); + }, + listen() { + innerEmitter.emit('connection'); + }, + api: { + innerEmitter, + outsideEmitter, + }, + }; +} + +const debug$1 = createDebugger('vite:import-analysis'); +const clientDir = normalizePath$3(CLIENT_DIR); +const skipRE = /\.(?:map|json)(?:$|\?)/; +const canSkipImportAnalysis = (id) => skipRE.test(id) || isDirectCSSRequest(id); +const optimizedDepChunkRE = /\/chunk-[A-Z\d]{8}\.js/; +const optimizedDepDynamicRE = /-[A-Z\d]{8}\.js/; +const hasViteIgnoreRE = /\/\*\s*@vite-ignore\s*\*\//; +const urlIsStringRE = /^(?:'.*'|".*"|`.*`)$/; +const templateLiteralRE = /^\s*`(.*)`\s*$/; +function isExplicitImportRequired(url) { + return !isJSRequest(url) && !isCSSRequest(url); +} +function extractImportedBindings(id, source, importSpec, importedBindings) { + let bindings = importedBindings.get(id); + if (!bindings) { + bindings = new Set(); + importedBindings.set(id, bindings); + } + const isDynamic = importSpec.d > -1; + const isMeta = importSpec.d === -2; + if (isDynamic || isMeta) { + // this basically means the module will be impacted by any change in its dep + bindings.add('*'); + return; + } + const exp = source.slice(importSpec.ss, importSpec.se); + const [match0] = findStaticImports(exp); + if (!match0) { + return; + } + const parsed = parseStaticImport(match0); + if (!parsed) { + return; + } + if (parsed.namespacedImport) { + bindings.add('*'); + } + if (parsed.defaultImport) { + bindings.add('default'); + } + if (parsed.namedImports) { + for (const name of Object.keys(parsed.namedImports)) { + bindings.add(name); + } + } +} +/** + * Server-only plugin that lexes, resolves, rewrites and analyzes url imports. + * + * - Imports are resolved to ensure they exist on disk + * + * - Lexes HMR accept calls and updates import relationships in the module graph + * + * - Bare module imports are resolved (by @rollup-plugin/node-resolve) to + * absolute file paths, e.g. + * + * ```js + * import 'foo' + * ``` + * is rewritten to + * ```js + * import '/@fs//project/node_modules/foo/dist/foo.js' + * ``` + * + * - CSS imports are appended with `.js` since both the js module and the actual + * css (referenced via ``) may go through the transform pipeline: + * + * ```js + * import './style.css' + * ``` + * is rewritten to + * ```js + * import './style.css.js' + * ``` + */ +function importAnalysisPlugin(config) { + const { root, base } = config; + const fsUtils = getFsUtils(config); + const clientPublicPath = path$o.posix.join(base, CLIENT_PUBLIC_PATH); + const enablePartialAccept = config.experimental?.hmrPartialAccept; + let server; + let _env; + let _ssrEnv; + function getEnv(ssr) { + if (!_ssrEnv || !_env) { + const importMetaEnvKeys = {}; + const userDefineEnv = {}; + for (const key in config.env) { + importMetaEnvKeys[key] = JSON.stringify(config.env[key]); + } + for (const key in config.define) { + // non-import.meta.env.* is handled in `clientInjection` plugin + if (key.startsWith('import.meta.env.')) { + userDefineEnv[key.slice(16)] = config.define[key]; + } + } + const env = `import.meta.env = ${serializeDefine({ + ...importMetaEnvKeys, + SSR: '__vite_ssr__', + ...userDefineEnv, + })};`; + _ssrEnv = env.replace('__vite_ssr__', 'true'); + _env = env.replace('__vite_ssr__', 'false'); + } + return ssr ? _ssrEnv : _env; + } + return { + name: 'vite:import-analysis', + configureServer(_server) { + server = _server; + }, + async transform(source, importer, options) { + // In a real app `server` is always defined, but it is undefined when + // running src/node/server/__tests__/pluginContainer.spec.ts + if (!server) { + return null; + } + const ssr = options?.ssr === true; + if (canSkipImportAnalysis(importer)) { + debug$1?.(colors$1.dim(`[skipped] ${prettifyUrl(importer, root)}`)); + return null; + } + const msAtStart = debug$1 ? performance.now() : 0; + await init; + let imports; + let exports; + source = stripBomTag(source); + try { + [imports, exports] = parse$e(source); + } + catch (_e) { + const e = _e; + const { message, showCodeFrame } = createParseErrorInfo(importer, source); + this.error(message, showCodeFrame ? e.idx : undefined); + } + const depsOptimizer = getDepsOptimizer(config, ssr); + const { moduleGraph } = server; + // since we are already in the transform phase of the importer, it must + // have been loaded so its entry is guaranteed in the module graph. + const importerModule = moduleGraph.getModuleById(importer); + if (!importerModule) { + // This request is no longer valid. It could happen for optimized deps + // requests. A full reload is going to request this id again. + // Throwing an outdated error so we properly finish the request with a + // 504 sent to the browser. + throwOutdatedRequest(importer); + } + if (!imports.length && !this._addedImports) { + importerModule.isSelfAccepting = false; + debug$1?.(`${timeFrom(msAtStart)} ${colors$1.dim(`[no imports] ${prettifyUrl(importer, root)}`)}`); + return source; + } + let hasHMR = false; + let isSelfAccepting = false; + let hasEnv = false; + let needQueryInjectHelper = false; + let s; + const str = () => s || (s = new MagicString(source)); + let isPartiallySelfAccepting = false; + const importedBindings = enablePartialAccept + ? new Map() + : null; + const toAbsoluteUrl = (url) => path$o.posix.resolve(path$o.posix.dirname(importerModule.url), url); + const normalizeUrl = async (url, pos, forceSkipImportAnalysis = false) => { + url = stripBase(url, base); + let importerFile = importer; + const optimizeDeps = getDepOptimizationConfig(config, ssr); + if (moduleListContains(optimizeDeps?.exclude, url)) { + if (depsOptimizer) { + await depsOptimizer.scanProcessing; + // if the dependency encountered in the optimized file was excluded from the optimization + // the dependency needs to be resolved starting from the original source location of the optimized file + // because starting from node_modules/.vite will not find the dependency if it was not hoisted + // (that is, if it is under node_modules directory in the package source of the optimized file) + for (const optimizedModule of depsOptimizer.metadata.depInfoList) { + if (!optimizedModule.src) + continue; // Ignore chunks + if (optimizedModule.file === importerModule.file) { + importerFile = optimizedModule.src; + } + } + } + } + const resolved = await this.resolve(url, importerFile); + if (!resolved || resolved.meta?.['vite:alias']?.noResolved) { + // in ssr, we should let node handle the missing modules + if (ssr) { + return [url, url]; + } + // fix#9534, prevent the importerModuleNode being stopped from propagating updates + importerModule.isSelfAccepting = false; + return this.error(`Failed to resolve import "${url}" from "${normalizePath$3(path$o.relative(process.cwd(), importerFile))}". Does the file exist?`, pos); + } + if (isExternalUrl(resolved.id)) { + return [resolved.id, resolved.id]; + } + const isRelative = url[0] === '.'; + const isSelfImport = !isRelative && cleanUrl(url) === cleanUrl(importer); + // normalize all imports into resolved URLs + // e.g. `import 'foo'` -> `import '/@fs/.../node_modules/foo/index.js'` + if (resolved.id.startsWith(withTrailingSlash(root))) { + // in root: infer short absolute path from root + url = resolved.id.slice(root.length); + } + else if (depsOptimizer?.isOptimizedDepFile(resolved.id) || + // vite-plugin-react isn't following the leading \0 virtual module convention. + // This is a temporary hack to avoid expensive fs checks for React apps. + // We'll remove this as soon we're able to fix the react plugins. + (resolved.id !== '/@react-refresh' && + path$o.isAbsolute(resolved.id) && + fsUtils.existsSync(cleanUrl(resolved.id)))) { + // an optimized deps may not yet exists in the filesystem, or + // a regular file exists but is out of root: rewrite to absolute /@fs/ paths + url = path$o.posix.join(FS_PREFIX, resolved.id); + } + else { + url = resolved.id; + } + // if the resolved id is not a valid browser import specifier, + // prefix it to make it valid. We will strip this before feeding it + // back into the transform pipeline + if (url[0] !== '.' && url[0] !== '/') { + url = wrapId(resolved.id); + } + // make the URL browser-valid if not SSR + if (!ssr) { + // mark non-js/css imports with `?import` + if (isExplicitImportRequired(url)) { + url = injectQuery(url, 'import'); + } + else if ((isRelative || isSelfImport) && + !DEP_VERSION_RE.test(url)) { + // If the url isn't a request for a pre-bundled common chunk, + // for relative js/css imports, or self-module virtual imports + // (e.g. vue blocks), inherit importer's version query + // do not do this for unknown type imports, otherwise the appended + // query can break 3rd party plugin's extension checks. + const versionMatch = importer.match(DEP_VERSION_RE); + if (versionMatch) { + url = injectQuery(url, versionMatch[1]); + } + } + // check if the dep has been hmr updated. If yes, we need to attach + // its last updated timestamp to force the browser to fetch the most + // up-to-date version of this module. + try { + // delay setting `isSelfAccepting` until the file is actually used (#7870) + // We use an internal function to avoid resolving the url again + const depModule = await moduleGraph._ensureEntryFromUrl(unwrapId(url), ssr, canSkipImportAnalysis(url) || forceSkipImportAnalysis, resolved); + if (depModule.lastHMRTimestamp > 0) { + url = injectQuery(url, `t=${depModule.lastHMRTimestamp}`); + } + } + catch (e) { + // it's possible that the dep fails to resolve (non-existent import) + // attach location to the missing import + e.pos = pos; + throw e; + } + // prepend base + url = joinUrlSegments(base, url); + } + return [url, resolved.id]; + }; + const orderedImportedUrls = new Array(imports.length); + const orderedAcceptedUrls = new Array(imports.length); + const orderedAcceptedExports = new Array(imports.length); + await Promise.all(imports.map(async (importSpecifier, index) => { + const { s: start, e: end, ss: expStart, se: expEnd, d: dynamicIndex, a: attributeIndex, } = importSpecifier; + // #2083 User may use escape path, + // so use imports[index].n to get the unescaped string + let specifier = importSpecifier.n; + const rawUrl = source.slice(start, end); + // check import.meta usage + if (rawUrl === 'import.meta') { + const prop = source.slice(end, end + 4); + if (prop === '.hot') { + hasHMR = true; + const endHot = end + 4 + (source[end + 4] === '?' ? 1 : 0); + if (source.slice(endHot, endHot + 7) === '.accept') { + // further analyze accepted modules + if (source.slice(endHot, endHot + 14) === '.acceptExports') { + const importAcceptedExports = (orderedAcceptedExports[index] = + new Set()); + lexAcceptedHmrExports(source, source.indexOf('(', endHot + 14) + 1, importAcceptedExports); + isPartiallySelfAccepting = true; + } + else { + const importAcceptedUrls = (orderedAcceptedUrls[index] = + new Set()); + if (lexAcceptedHmrDeps(source, source.indexOf('(', endHot + 7) + 1, importAcceptedUrls)) { + isSelfAccepting = true; + } + } + } + } + else if (prop === '.env') { + hasEnv = true; + } + return; + } + else if (templateLiteralRE.test(rawUrl)) { + // If the import has backticks but isn't transformed as a glob import + // (as there's nothing to glob), check if it's simply a plain string. + // If so, we can replace the specifier as a plain string to prevent + // an incorrect "cannot be analyzed" warning. + if (!(rawUrl.includes('${') && rawUrl.includes('}'))) { + specifier = rawUrl.replace(templateLiteralRE, '$1'); + } + } + const isDynamicImport = dynamicIndex > -1; + // strip import attributes as we can process them ourselves + if (!isDynamicImport && attributeIndex > -1) { + str().remove(end + 1, expEnd); + } + // static import or valid string in dynamic import + // If resolvable, let's resolve it + if (specifier) { + // skip external / data uri + if (isExternalUrl(specifier) || isDataUrl(specifier)) { + return; + } + // skip ssr external + if (ssr) { + if (shouldExternalizeForSSR(specifier, importer, config)) { + return; + } + if (isBuiltin(specifier)) { + return; + } + } + // skip client + if (specifier === clientPublicPath) { + return; + } + // warn imports to non-asset /public files + if (specifier[0] === '/' && + !(config.assetsInclude(cleanUrl(specifier)) || + urlRE.test(specifier)) && + checkPublicFile(specifier, config)) { + throw new Error(`Cannot import non-asset file ${specifier} which is inside /public. ` + + `JS/CSS files inside /public are copied as-is on build and ` + + `can only be referenced via `; + case "directive": + return ``; + case null: + break; + } + return ""; +} +export { + determineIfNeedsHydrationScript, + determinesIfNeedsDirectiveScript, + getPrescripts +}; diff --git a/.pnpm-store/v3/files/70/c229b11ffdf2fbc4880e4fd3d0585ab94d9310bf5ed7f00d9efdca058e987c5fc3b8c34d8d893c6e4336cc3e2508cd9e1970a793a09a134ab3bcb41ebfa65a b/.pnpm-store/v3/files/70/c229b11ffdf2fbc4880e4fd3d0585ab94d9310bf5ed7f00d9efdca058e987c5fc3b8c34d8d893c6e4336cc3e2508cd9e1970a793a09a134ab3bcb41ebfa65a new file mode 100644 index 00000000..05d6f763 --- /dev/null +++ b/.pnpm-store/v3/files/70/c229b11ffdf2fbc4880e4fd3d0585ab94d9310bf5ed7f00d9efdca058e987c5fc3b8c34d8d893c6e4336cc3e2508cd9e1970a793a09a134ab3bcb41ebfa65a @@ -0,0 +1,920 @@ +import boxen from "boxen"; +import { diffWords } from "diff"; +import { execa } from "execa"; +import { bold, cyan, dim, green, magenta, red, yellow } from "kleur/colors"; +import fsMod, { existsSync, promises as fs } from "node:fs"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import maxSatisfying from "semver/ranges/max-satisfying.js"; +import ora from "ora"; +import preferredPM from "preferred-pm"; +import prompts from "prompts"; +import { + loadTSConfig, + resolveConfig, + resolveConfigPath, + resolveRoot +} from "../../core/config/index.js"; +import { + defaultTSConfig, + presets, + updateTSConfigForFramework +} from "../../core/config/tsconfig.js"; +import * as msg from "../../core/messages.js"; +import { printHelp } from "../../core/messages.js"; +import { appendForwardSlash } from "../../core/path.js"; +import { apply as applyPolyfill } from "../../core/polyfill.js"; +import { ensureProcessNodeEnv, parseNpmName } from "../../core/util.js"; +import { eventCliSession, telemetry } from "../../events/index.js"; +import { createLoggerFromFlags, flagsToAstroInlineConfig } from "../flags.js"; +import { generate, parse, t, visit } from "./babel.js"; +import { ensureImport } from "./imports.js"; +import { wrapDefaultExport } from "./wrapper.js"; +const ALIASES = /* @__PURE__ */ new Map([ + ["solid", "solid-js"], + ["tailwindcss", "tailwind"] +]); +const ASTRO_CONFIG_STUB = `import { defineConfig } from 'astro/config'; + +export default defineConfig({});`; +const TAILWIND_CONFIG_STUB = `/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], + theme: { + extend: {}, + }, + plugins: [], +} +`; +const SVELTE_CONFIG_STUB = `import { vitePreprocess } from '@astrojs/svelte'; + +export default { + preprocess: vitePreprocess(), +}; +`; +const LIT_NPMRC_STUB = `# Lit libraries are required to be hoisted due to dependency issues. +public-hoist-pattern[]=*lit* +`; +const OFFICIAL_ADAPTER_TO_IMPORT_MAP = { + netlify: "@astrojs/netlify", + vercel: "@astrojs/vercel/serverless", + cloudflare: "@astrojs/cloudflare", + node: "@astrojs/node" +}; +let _registry; +async function getRegistry() { + if (_registry) + return _registry; + const fallback = "https://registry.npmjs.org"; + const packageManager = (await preferredPM(process.cwd()))?.name || "npm"; + try { + const { stdout } = await execa(packageManager, ["config", "get", "registry"]); + _registry = stdout?.trim()?.replace(/\/$/, "") || fallback; + if (!new URL(_registry).host) + _registry = fallback; + } catch (e) { + _registry = fallback; + } + return _registry; +} +async function add(names, { flags }) { + ensureProcessNodeEnv("production"); + const inlineConfig = flagsToAstroInlineConfig(flags); + const { userConfig } = await resolveConfig(inlineConfig, "add"); + telemetry.record(eventCliSession("add", userConfig)); + applyPolyfill(); + if (flags.help || names.length === 0) { + printHelp({ + commandName: "astro add", + usage: "[...integrations] [...adapters]", + tables: { + Flags: [ + ["--yes", "Accept all prompts."], + ["--help", "Show this help message."] + ], + "UI Frameworks": [ + ["react", "astro add react"], + ["preact", "astro add preact"], + ["vue", "astro add vue"], + ["svelte", "astro add svelte"], + ["solid-js", "astro add solid-js"], + ["lit", "astro add lit"], + ["alpinejs", "astro add alpinejs"] + ], + "Documentation Frameworks": [["starlight", "astro add starlight"]], + "SSR Adapters": [ + ["netlify", "astro add netlify"], + ["vercel", "astro add vercel"], + ["deno", "astro add deno"], + ["cloudflare", "astro add cloudflare"], + ["node", "astro add node"] + ], + Others: [ + ["tailwind", "astro add tailwind"], + ["image", "astro add image"], + ["mdx", "astro add mdx"], + ["partytown", "astro add partytown"], + ["sitemap", "astro add sitemap"], + ["prefetch", "astro add prefetch"] + ] + }, + description: `For more integrations, check out: ${cyan("https://astro.build/integrations")}` + }); + return; + } + const cwd = flags.root; + const logger = createLoggerFromFlags(flags); + const integrationNames = names.map((name) => ALIASES.has(name) ? ALIASES.get(name) : name); + const integrations = await validateIntegrations(integrationNames); + let installResult = await tryToInstallIntegrations({ integrations, cwd, flags, logger }); + const rootPath = resolveRoot(cwd); + const root = pathToFileURL(rootPath); + root.href = appendForwardSlash(root.href); + switch (installResult) { + case 1 /* updated */: { + if (integrations.find((integration) => integration.id === "tailwind")) { + await setupIntegrationConfig({ + root, + logger, + flags, + integrationName: "Tailwind", + possibleConfigFiles: [ + "./tailwind.config.cjs", + "./tailwind.config.mjs", + "./tailwind.config.ts", + "./tailwind.config.mts", + "./tailwind.config.cts", + "./tailwind.config.js" + ], + defaultConfigFile: "./tailwind.config.mjs", + defaultConfigContent: TAILWIND_CONFIG_STUB + }); + } + if (integrations.find((integration) => integration.id === "svelte")) { + await setupIntegrationConfig({ + root, + logger, + flags, + integrationName: "Svelte", + possibleConfigFiles: ["./svelte.config.js", "./svelte.config.cjs", "./svelte.config.mjs"], + defaultConfigFile: "./svelte.config.js", + defaultConfigContent: SVELTE_CONFIG_STUB + }); + } + if (integrations.find((integration) => integration.id === "lit") && (await preferredPM(fileURLToPath(root)))?.name === "pnpm") { + await setupIntegrationConfig({ + root, + logger, + flags, + integrationName: "Lit", + possibleConfigFiles: ["./.npmrc"], + defaultConfigFile: "./.npmrc", + defaultConfigContent: LIT_NPMRC_STUB + }); + } + break; + } + case 2 /* cancelled */: { + logger.info( + null, + msg.cancelled( + `Dependencies ${bold("NOT")} installed.`, + `Be sure to install them manually before continuing!` + ) + ); + break; + } + case 3 /* failure */: { + throw createPrettyError(new Error(`Unable to install dependencies`)); + } + case 0 /* none */: + break; + } + const rawConfigPath = await resolveConfigPath({ + root: rootPath, + configFile: flags.config, + fs: fsMod + }); + let configURL = rawConfigPath ? pathToFileURL(rawConfigPath) : void 0; + if (configURL) { + logger.debug("add", `Found config at ${configURL}`); + } else { + logger.info("add", `Unable to locate a config file, generating one for you.`); + configURL = new URL("./astro.config.mjs", root); + await fs.writeFile(fileURLToPath(configURL), ASTRO_CONFIG_STUB, { encoding: "utf-8" }); + } + let ast = null; + try { + ast = await parseAstroConfig(configURL); + logger.debug("add", "Parsed astro config"); + const defineConfig = t.identifier("defineConfig"); + ensureImport( + ast, + t.importDeclaration( + [t.importSpecifier(defineConfig, defineConfig)], + t.stringLiteral("astro/config") + ) + ); + wrapDefaultExport(ast, defineConfig); + logger.debug("add", "Astro config ensured `defineConfig`"); + for (const integration of integrations) { + if (isAdapter(integration)) { + const officialExportName = OFFICIAL_ADAPTER_TO_IMPORT_MAP[integration.id]; + if (officialExportName) { + await setAdapter(ast, integration, officialExportName); + } else { + logger.info( + null, + ` + ${magenta( + `Check our deployment docs for ${bold( + integration.packageName + )} to update your "adapter" config.` + )}` + ); + } + } else { + await addIntegration(ast, integration); + } + logger.debug("add", `Astro config added integration ${integration.id}`); + } + } catch (err) { + logger.debug("add", "Error parsing/modifying astro config: ", err); + throw createPrettyError(err); + } + let configResult; + if (ast) { + try { + configResult = await updateAstroConfig({ + configURL, + ast, + flags, + logger, + logAdapterInstructions: integrations.some(isAdapter) + }); + } catch (err) { + logger.debug("add", "Error updating astro config", err); + throw createPrettyError(err); + } + } + switch (configResult) { + case 2 /* cancelled */: { + logger.info(null, msg.cancelled(`Your configuration has ${bold("NOT")} been updated.`)); + break; + } + case 0 /* none */: { + const pkgURL = new URL("./package.json", configURL); + if (existsSync(fileURLToPath(pkgURL))) { + const { dependencies = {}, devDependencies = {} } = await fs.readFile(fileURLToPath(pkgURL)).then((res) => JSON.parse(res.toString())); + const deps = Object.keys(Object.assign(dependencies, devDependencies)); + const missingDeps = integrations.filter( + (integration) => !deps.includes(integration.packageName) + ); + if (missingDeps.length === 0) { + logger.info(null, msg.success(`Configuration up-to-date.`)); + break; + } + } + logger.info(null, msg.success(`Configuration up-to-date.`)); + break; + } + default: { + const list = integrations.map((integration) => ` - ${integration.packageName}`).join("\n"); + logger.info( + null, + msg.success( + `Added the following integration${integrations.length === 1 ? "" : "s"} to your project: +${list}` + ) + ); + } + } + const updateTSConfigResult = await updateTSConfig(cwd, logger, integrations, flags); + switch (updateTSConfigResult) { + case 0 /* none */: { + break; + } + case 2 /* cancelled */: { + logger.info( + null, + msg.cancelled(`Your TypeScript configuration has ${bold("NOT")} been updated.`) + ); + break; + } + case 3 /* failure */: { + throw new Error( + `Unknown error parsing tsconfig.json or jsconfig.json. Could not update TypeScript settings.` + ); + } + default: + logger.info(null, msg.success(`Successfully updated TypeScript settings`)); + } +} +function isAdapter(integration) { + return integration.type === "adapter"; +} +async function parseAstroConfig(configURL) { + const source = await fs.readFile(fileURLToPath(configURL), { encoding: "utf-8" }); + const result = parse(source); + if (!result) + throw new Error("Unknown error parsing astro config"); + if (result.errors.length > 0) + throw new Error("Error parsing astro config: " + JSON.stringify(result.errors)); + return result; +} +const toIdent = (name) => { + const ident = name.trim().replace(/[-_./]?astro(?:js)?[-_.]?/g, "").replace(/\.js/, "").replace(/[.\-_/]+([a-zA-Z])/g, (_, w) => w.toUpperCase()).replace(/^[^a-zA-Z$_]+/, ""); + return `${ident[0].toLowerCase()}${ident.slice(1)}`; +}; +function createPrettyError(err) { + err.message = `Astro could not update your astro.config.js file safely. +Reason: ${err.message} + +You will need to add these integration(s) manually. +Documentation: https://docs.astro.build/en/guides/integrations-guide/`; + return err; +} +async function addIntegration(ast, integration) { + const integrationId = t.identifier(toIdent(integration.id)); + ensureImport( + ast, + t.importDeclaration( + [t.importDefaultSpecifier(integrationId)], + t.stringLiteral(integration.packageName) + ) + ); + visit(ast, { + // eslint-disable-next-line @typescript-eslint/no-shadow + ExportDefaultDeclaration(path2) { + if (!t.isCallExpression(path2.node.declaration)) + return; + const configObject = path2.node.declaration.arguments[0]; + if (!t.isObjectExpression(configObject)) + return; + let integrationsProp = configObject.properties.find((prop) => { + if (prop.type !== "ObjectProperty") + return false; + if (prop.key.type === "Identifier") { + if (prop.key.name === "integrations") + return true; + } + if (prop.key.type === "StringLiteral") { + if (prop.key.value === "integrations") + return true; + } + return false; + }); + const integrationCall = t.callExpression(integrationId, []); + if (!integrationsProp) { + configObject.properties.push( + t.objectProperty(t.identifier("integrations"), t.arrayExpression([integrationCall])) + ); + return; + } + if (integrationsProp.value.type !== "ArrayExpression") + throw new Error("Unable to parse integrations"); + const existingIntegrationCall = integrationsProp.value.elements.find( + (expr) => t.isCallExpression(expr) && t.isIdentifier(expr.callee) && expr.callee.name === integrationId.name + ); + if (existingIntegrationCall) + return; + integrationsProp.value.elements.push(integrationCall); + } + }); +} +async function setAdapter(ast, adapter, exportName) { + const adapterId = t.identifier(toIdent(adapter.id)); + ensureImport( + ast, + t.importDeclaration([t.importDefaultSpecifier(adapterId)], t.stringLiteral(exportName)) + ); + visit(ast, { + // eslint-disable-next-line @typescript-eslint/no-shadow + ExportDefaultDeclaration(path2) { + if (!t.isCallExpression(path2.node.declaration)) + return; + const configObject = path2.node.declaration.arguments[0]; + if (!t.isObjectExpression(configObject)) + return; + let outputProp = configObject.properties.find((prop) => { + if (prop.type !== "ObjectProperty") + return false; + if (prop.key.type === "Identifier") { + if (prop.key.name === "output") + return true; + } + if (prop.key.type === "StringLiteral") { + if (prop.key.value === "output") + return true; + } + return false; + }); + if (!outputProp) { + configObject.properties.push( + t.objectProperty(t.identifier("output"), t.stringLiteral("server")) + ); + } + let adapterProp = configObject.properties.find((prop) => { + if (prop.type !== "ObjectProperty") + return false; + if (prop.key.type === "Identifier") { + if (prop.key.name === "adapter") + return true; + } + if (prop.key.type === "StringLiteral") { + if (prop.key.value === "adapter") + return true; + } + return false; + }); + let adapterCall; + switch (adapter.id) { + case "node": { + adapterCall = t.callExpression(adapterId, [ + t.objectExpression([ + t.objectProperty(t.identifier("mode"), t.stringLiteral("standalone")) + ]) + ]); + break; + } + default: { + adapterCall = t.callExpression(adapterId, []); + } + } + if (!adapterProp) { + configObject.properties.push(t.objectProperty(t.identifier("adapter"), adapterCall)); + return; + } + adapterProp.value = adapterCall; + } + }); +} +var UpdateResult = /* @__PURE__ */ ((UpdateResult2) => { + UpdateResult2[UpdateResult2["none"] = 0] = "none"; + UpdateResult2[UpdateResult2["updated"] = 1] = "updated"; + UpdateResult2[UpdateResult2["cancelled"] = 2] = "cancelled"; + UpdateResult2[UpdateResult2["failure"] = 3] = "failure"; + return UpdateResult2; +})(UpdateResult || {}); +async function updateAstroConfig({ + configURL, + ast, + flags, + logger, + logAdapterInstructions +}) { + const input = await fs.readFile(fileURLToPath(configURL), { encoding: "utf-8" }); + let output = await generate(ast); + const comment = "// https://astro.build/config"; + const defaultExport = "export default defineConfig"; + output = output.replace(` +${comment}`, ""); + output = output.replace(`${defaultExport}`, ` +${comment} +${defaultExport}`); + if (input === output) { + return 0 /* none */; + } + const diff = getDiffContent(input, output); + if (!diff) { + return 0 /* none */; + } + const message = ` +${boxen(diff, { + margin: 0.5, + padding: 0.5, + borderStyle: "round", + title: configURL.pathname.split("/").pop() + })} +`; + logger.info( + null, + ` + ${magenta("Astro will make the following changes to your config file:")} +${message}` + ); + if (logAdapterInstructions) { + logger.info( + null, + magenta( + ` For complete deployment options, visit + ${bold( + "https://docs.astro.build/en/guides/deploy/" + )} +` + ) + ); + } + if (await askToContinue({ flags })) { + await fs.writeFile(fileURLToPath(configURL), output, { encoding: "utf-8" }); + logger.debug("add", `Updated astro config`); + return 1 /* updated */; + } else { + return 2 /* cancelled */; + } +} +async function getInstallIntegrationsCommand({ + integrations, + logger, + cwd = process.cwd() +}) { + const pm = await preferredPM(cwd); + logger.debug("add", `package manager: ${JSON.stringify(pm)}`); + if (!pm) + return null; + const dependencies = await convertIntegrationsToInstallSpecifiers(integrations); + switch (pm.name) { + case "npm": + return { pm: "npm", command: "install", flags: [], dependencies }; + case "yarn": + return { pm: "yarn", command: "add", flags: [], dependencies }; + case "pnpm": + return { pm: "pnpm", command: "add", flags: [], dependencies }; + case "bun": + return { pm: "bun", command: "add", flags: [], dependencies }; + default: + return null; + } +} +async function convertIntegrationsToInstallSpecifiers(integrations) { + const ranges = {}; + for (let { packageName, dependencies } of integrations) { + ranges[packageName] = "*"; + for (const [name, range] of dependencies) { + ranges[name] = range; + } + } + return Promise.all( + Object.entries(ranges).map(([name, range]) => resolveRangeToInstallSpecifier(name, range)) + ); +} +async function resolveRangeToInstallSpecifier(name, range) { + const versions = await fetchPackageVersions(name); + if (versions instanceof Error) + return name; + const stableVersions = versions.filter((v) => !v.includes("-")); + const maxStable = maxSatisfying(stableVersions, range); + return `${name}@^${maxStable}`; +} +const INHERITED_FLAGS = /* @__PURE__ */ new Set([ + "P", + "save-prod", + "D", + "save-dev", + "E", + "save-exact", + "no-save" +]); +async function tryToInstallIntegrations({ + integrations, + cwd, + flags, + logger +}) { + const installCommand = await getInstallIntegrationsCommand({ integrations, cwd, logger }); + const inheritedFlags = Object.entries(flags).map(([flag]) => { + if (flag == "_") + return; + if (INHERITED_FLAGS.has(flag)) { + if (flag.length === 1) + return `-${flag}`; + return `--${flag}`; + } + }).filter(Boolean).flat(); + if (installCommand === null) { + return 0 /* none */; + } else { + const coloredOutput = `${bold(installCommand.pm)} ${installCommand.command}${[ + "", + ...installCommand.flags, + ...inheritedFlags + ].join(" ")} ${cyan(installCommand.dependencies.join(" "))}`; + const message = ` +${boxen(coloredOutput, { + margin: 0.5, + padding: 0.5, + borderStyle: "round" + })} +`; + logger.info( + null, + ` + ${magenta("Astro will run the following command:")} + ${dim( + "If you skip this step, you can always run it yourself later" + )} +${message}` + ); + if (await askToContinue({ flags })) { + const spinner = ora("Installing dependencies...").start(); + try { + await execa( + installCommand.pm, + [ + installCommand.command, + ...installCommand.flags, + ...inheritedFlags, + ...installCommand.dependencies + ], + { + cwd, + // reset NODE_ENV to ensure install command run in dev mode + env: { NODE_ENV: void 0 } + } + ); + spinner.succeed(); + return 1 /* updated */; + } catch (err) { + spinner.fail(); + logger.debug("add", "Error installing dependencies", err); + console.error("\n", err.stdout || err.message, "\n"); + return 3 /* failure */; + } + } else { + return 2 /* cancelled */; + } + } +} +async function fetchPackageJson(scope, name, tag) { + const packageName = `${scope ? `${scope}/` : ""}${name}`; + const registry = await getRegistry(); + const res = await fetch(`${registry}/${packageName}/${tag}`); + if (res.status >= 200 && res.status < 300) { + return await res.json(); + } else if (res.status === 404) { + return new Error(); + } else { + return new Error(`Failed to fetch ${registry}/${packageName}/${tag} - GET ${res.status}`); + } +} +async function fetchPackageVersions(packageName) { + const registry = await getRegistry(); + const res = await fetch(`${registry}/${packageName}`, { + headers: { accept: "application/vnd.npm.install-v1+json" } + }); + if (res.status >= 200 && res.status < 300) { + return await res.json().then((data) => Object.keys(data.versions)); + } else if (res.status === 404) { + return new Error(); + } else { + return new Error(`Failed to fetch ${registry}/${packageName} - GET ${res.status}`); + } +} +async function validateIntegrations(integrations) { + const spinner = ora("Resolving packages...").start(); + try { + const integrationEntries = await Promise.all( + integrations.map(async (integration) => { + const parsed = parseIntegrationName(integration); + if (!parsed) { + throw new Error(`${bold(integration)} does not appear to be a valid package name!`); + } + let { scope, name, tag } = parsed; + let pkgJson; + let pkgType; + if (scope && scope !== "@astrojs") { + pkgType = "third-party"; + } else { + const firstPartyPkgCheck = await fetchPackageJson("@astrojs", name, tag); + if (firstPartyPkgCheck instanceof Error) { + if (firstPartyPkgCheck.message) { + spinner.warn(yellow(firstPartyPkgCheck.message)); + } + spinner.warn( + yellow(`${bold(integration)} is not an official Astro package. Use at your own risk!`) + ); + const response = await prompts({ + type: "confirm", + name: "askToContinue", + message: "Continue?", + initial: true + }); + if (!response.askToContinue) { + throw new Error( + `No problem! Find our official integrations at ${cyan( + "https://astro.build/integrations" + )}` + ); + } + spinner.start("Resolving with third party packages..."); + pkgType = "third-party"; + } else { + pkgType = "first-party"; + pkgJson = firstPartyPkgCheck; + } + } + if (pkgType === "third-party") { + const thirdPartyPkgCheck = await fetchPackageJson(scope, name, tag); + if (thirdPartyPkgCheck instanceof Error) { + if (thirdPartyPkgCheck.message) { + spinner.warn(yellow(thirdPartyPkgCheck.message)); + } + throw new Error(`Unable to fetch ${bold(integration)}. Does the package exist?`); + } else { + pkgJson = thirdPartyPkgCheck; + } + } + const resolvedScope = pkgType === "first-party" ? "@astrojs" : scope; + const packageName = `${resolvedScope ? `${resolvedScope}/` : ""}${name}`; + let dependencies = [ + [pkgJson["name"], `^${pkgJson["version"]}`] + ]; + if (pkgJson["peerDependencies"]) { + const meta = pkgJson["peerDependenciesMeta"] || {}; + for (const peer in pkgJson["peerDependencies"]) { + const optional = meta[peer]?.optional || false; + const isAstro = peer === "astro"; + if (!optional && !isAstro) { + dependencies.push([peer, pkgJson["peerDependencies"][peer]]); + } + } + } + let integrationType; + const keywords = Array.isArray(pkgJson["keywords"]) ? pkgJson["keywords"] : []; + if (keywords.includes("astro-integration")) { + integrationType = "integration"; + } else if (keywords.includes("astro-adapter")) { + integrationType = "adapter"; + } else { + throw new Error( + `${bold( + packageName + )} doesn't appear to be an integration or an adapter. Find our official integrations at ${cyan( + "https://astro.build/integrations" + )}` + ); + } + return { id: integration, packageName, dependencies, type: integrationType }; + }) + ); + spinner.succeed(); + return integrationEntries; + } catch (e) { + if (e instanceof Error) { + spinner.fail(e.message); + process.exit(1); + } else { + throw e; + } + } +} +async function updateTSConfig(cwd = process.cwd(), logger, integrationsInfo, flags) { + const integrations = integrationsInfo.map( + (integration) => integration.id + ); + const firstIntegrationWithTSSettings = integrations.find( + (integration) => presets.has(integration) + ); + if (!firstIntegrationWithTSSettings) { + return 0 /* none */; + } + let inputConfig = await loadTSConfig(cwd); + let inputConfigText = ""; + if (inputConfig === "invalid-config" || inputConfig === "unknown-error") { + return 3 /* failure */; + } else if (inputConfig === "missing-config") { + logger.debug("add", "Couldn't find tsconfig.json or jsconfig.json, generating one"); + inputConfig = { + tsconfig: defaultTSConfig, + tsconfigFile: path.join(cwd, "tsconfig.json"), + rawConfig: { tsconfig: defaultTSConfig, tsconfigFile: path.join(cwd, "tsconfig.json") } + }; + } else { + inputConfigText = JSON.stringify(inputConfig.rawConfig.tsconfig, null, 2); + } + const configFileName = path.basename(inputConfig.tsconfigFile); + const outputConfig = updateTSConfigForFramework( + inputConfig.rawConfig.tsconfig, + firstIntegrationWithTSSettings + ); + const output = JSON.stringify(outputConfig, null, 2); + const diff = getDiffContent(inputConfigText, output); + if (!diff) { + return 0 /* none */; + } + const message = ` +${boxen(diff, { + margin: 0.5, + padding: 0.5, + borderStyle: "round", + title: configFileName + })} +`; + logger.info( + null, + ` + ${magenta(`Astro will make the following changes to your ${configFileName}:`)} +${message}` + ); + const conflictingIntegrations = [...Object.keys(presets).filter((config) => config !== "vue")]; + const hasConflictingIntegrations = integrations.filter((integration) => presets.has(integration)).length > 1 && integrations.filter((integration) => conflictingIntegrations.includes(integration)).length > 0; + if (hasConflictingIntegrations) { + logger.info( + null, + red( + ` ${bold( + "Caution:" + )} Selected UI frameworks require conflicting tsconfig.json settings, as such only settings for ${bold( + firstIntegrationWithTSSettings + )} were used. + More information: https://docs.astro.build/en/guides/typescript/#errors-typing-multiple-jsx-frameworks-at-the-same-time +` + ) + ); + } + if (await askToContinue({ flags })) { + await fs.writeFile(inputConfig.tsconfigFile, output, { + encoding: "utf-8" + }); + logger.debug("add", `Updated ${configFileName} file`); + return 1 /* updated */; + } else { + return 2 /* cancelled */; + } +} +function parseIntegrationName(spec) { + const result = parseNpmName(spec); + if (!result) + return; + let { scope, name } = result; + let tag = "latest"; + if (scope) { + name = name.replace(scope + "/", ""); + } + if (name.includes("@")) { + const tagged = name.split("@"); + name = tagged[0]; + tag = tagged[1]; + } + return { scope, name, tag }; +} +async function askToContinue({ flags }) { + if (flags.yes || flags.y) + return true; + const response = await prompts({ + type: "confirm", + name: "askToContinue", + message: "Continue?", + initial: true + }); + return Boolean(response.askToContinue); +} +function getDiffContent(input, output) { + let changes = []; + for (const change of diffWords(input, output)) { + let lines = change.value.trim().split("\n").slice(0, change.count); + if (lines.length === 0) + continue; + if (change.added) { + if (!change.value.trim()) + continue; + changes.push(change.value); + } + } + if (changes.length === 0) { + return null; + } + let diffed = output; + for (let newContent of changes) { + const coloredOutput = newContent.split("\n").map((ln) => ln ? green(ln) : "").join("\n"); + diffed = diffed.replace(newContent, coloredOutput); + } + return diffed; +} +async function setupIntegrationConfig(opts) { + const logger = opts.logger; + const possibleConfigFiles = opts.possibleConfigFiles.map( + (p) => fileURLToPath(new URL(p, opts.root)) + ); + let alreadyConfigured = false; + for (const possibleConfigPath of possibleConfigFiles) { + if (existsSync(possibleConfigPath)) { + alreadyConfigured = true; + break; + } + } + if (!alreadyConfigured) { + logger.info( + null, + ` + ${magenta(`Astro will generate a minimal ${bold(opts.defaultConfigFile)} file.`)} +` + ); + if (await askToContinue({ flags: opts.flags })) { + await fs.writeFile( + fileURLToPath(new URL(opts.defaultConfigFile, opts.root)), + opts.defaultConfigContent, + { + encoding: "utf-8" + } + ); + logger.debug("add", `Generated default ${opts.defaultConfigFile} file`); + } + } else { + logger.debug("add", `Using existing ${opts.integrationName} configuration`); + } +} +export { + add, + validateIntegrations +}; diff --git a/.pnpm-store/v3/files/70/e5d958f23658558a3809c12490614d80029b5337c23d73eddbff6b9bba11d706c7f216a229a8968e61b0d689b8c55fd28fdd25cc5b9e4ebc8414fdbea47cf1 b/.pnpm-store/v3/files/70/e5d958f23658558a3809c12490614d80029b5337c23d73eddbff6b9bba11d706c7f216a229a8968e61b0d689b8c55fd28fdd25cc5b9e4ebc8414fdbea47cf1 new file mode 100644 index 00000000..5906657b --- /dev/null +++ b/.pnpm-store/v3/files/70/e5d958f23658558a3809c12490614d80029b5337c23d73eddbff6b9bba11d706c7f216a229a8968e61b0d689b8c55fd28fdd25cc5b9e4ebc8414fdbea47cf1 @@ -0,0 +1,2690 @@ +import * as vite from 'vite'; +import { ViteDevServer, TransformResult as TransformResult$1, UserConfig as UserConfig$1, ConfigEnv, ServerOptions, DepOptimizationConfig, AliasOptions } from 'vite'; +import * as _vitest_runner from '@vitest/runner'; +import { File, Test as Test$1, Suite, TaskResultPack, Task, CancelReason, Custom, SequenceHooks, SequenceSetupFiles } from '@vitest/runner'; +import { RawSourceMap, FetchResult, ViteNodeResolveId, ModuleCacheMap, ViteNodeServerOptions } from 'vite-node'; +import { SnapshotResult, SnapshotStateOptions, SnapshotState } from '@vitest/snapshot'; +import { ExpectStatic } from '@vitest/expect'; +import { ChainableFunction } from '@vitest/runner/utils'; +import { ParsedStack, Awaitable as Awaitable$1, ErrorWithDiff, Arrayable as Arrayable$1 } from '@vitest/utils'; +import { TaskResult, Bench, Options } from 'tinybench'; +import { ViteNodeRunner } from 'vite-node/client'; +import { SnapshotManager } from '@vitest/snapshot/manager'; +import { ViteNodeServer } from 'vite-node/server'; +import { MessagePort } from 'node:worker_threads'; +import { Stats } from 'node:fs'; +import * as chai from 'chai'; + +declare const Modifier: unique symbol; +declare const Hint: unique symbol; +declare const Kind: unique symbol; +type Evaluate = T extends infer O ? { + [K in keyof O]: O[K]; +} : never; +type TReadonly = T & { + [Modifier]: 'Readonly'; +}; +type TOptional = T & { + [Modifier]: 'Optional'; +}; +type TReadonlyOptional = T & { + [Modifier]: 'ReadonlyOptional'; +}; +interface SchemaOptions { + $schema?: string; + /** Id for this schema */ + $id?: string; + /** Title of this schema */ + title?: string; + /** Description of this schema */ + description?: string; + /** Default value for this schema */ + default?: any; + /** Example values matching this schema */ + examples?: any; + [prop: string]: any; +} +interface TKind { + [Kind]: string; +} +interface TSchema extends SchemaOptions, TKind { + [Modifier]?: string; + [Hint]?: string; + params: unknown[]; + static: unknown; +} +interface NumericOptions extends SchemaOptions { + exclusiveMaximum?: N; + exclusiveMinimum?: N; + maximum?: N; + minimum?: N; + multipleOf?: N; +} +interface TBoolean extends TSchema { + [Kind]: 'Boolean'; + static: boolean; + type: 'boolean'; +} +interface TNull extends TSchema { + [Kind]: 'Null'; + static: null; + type: 'null'; +} +interface TNumber extends TSchema, NumericOptions { + [Kind]: 'Number'; + static: number; + type: 'number'; +} +type ReadonlyOptionalPropertyKeys = { + [K in keyof T]: T[K] extends TReadonlyOptional ? K : never; +}[keyof T]; +type ReadonlyPropertyKeys = { + [K in keyof T]: T[K] extends TReadonly ? K : never; +}[keyof T]; +type OptionalPropertyKeys = { + [K in keyof T]: T[K] extends TOptional ? K : never; +}[keyof T]; +type RequiredPropertyKeys = keyof Omit | ReadonlyPropertyKeys | OptionalPropertyKeys>; +type PropertiesReducer> = Evaluate<(Readonly>>> & Readonly>> & Partial>> & Required>>)>; +type PropertiesReduce = PropertiesReducer; +}>; +type TProperties = Record; +type TAdditionalProperties = undefined | TSchema | boolean; +interface ObjectOptions extends SchemaOptions { + additionalProperties?: TAdditionalProperties; + minProperties?: number; + maxProperties?: number; +} +interface TObject extends TSchema, ObjectOptions { + [Kind]: 'Object'; + static: PropertiesReduce; + additionalProperties?: TAdditionalProperties; + type: 'object'; + properties: T; + required?: string[]; +} +interface StringOptions extends SchemaOptions { + minLength?: number; + maxLength?: number; + pattern?: string; + format?: Format; + contentEncoding?: '7bit' | '8bit' | 'binary' | 'quoted-printable' | 'base64'; + contentMediaType?: string; +} +interface TString extends TSchema, StringOptions { + [Kind]: 'String'; + static: string; + type: 'string'; +} +/** Creates a TypeScript static type from a TypeBox type */ +type Static = (T & { + params: P; +})['static']; + +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + +declare const RawSnapshotFormat: TObject<{ + callToJSON: TReadonlyOptional; + compareKeys: TReadonlyOptional; + escapeRegex: TReadonlyOptional; + escapeString: TReadonlyOptional; + highlight: TReadonlyOptional; + indent: TReadonlyOptional; + maxDepth: TReadonlyOptional; + maxWidth: TReadonlyOptional; + min: TReadonlyOptional; + printBasicPrototype: TReadonlyOptional; + printFunctionName: TReadonlyOptional; + theme: TReadonlyOptional< + TObject<{ + comment: TReadonlyOptional>; + content: TReadonlyOptional>; + prop: TReadonlyOptional>; + tag: TReadonlyOptional>; + value: TReadonlyOptional>; + }> + >; +}>; + +declare const SnapshotFormat: TObject<{ + callToJSON: TReadonlyOptional; + compareKeys: TReadonlyOptional; + escapeRegex: TReadonlyOptional; + escapeString: TReadonlyOptional; + highlight: TReadonlyOptional; + indent: TReadonlyOptional; + maxDepth: TReadonlyOptional; + maxWidth: TReadonlyOptional; + min: TReadonlyOptional; + printBasicPrototype: TReadonlyOptional; + printFunctionName: TReadonlyOptional; + theme: TReadonlyOptional< + TObject<{ + comment: TReadonlyOptional>; + content: TReadonlyOptional>; + prop: TReadonlyOptional>; + tag: TReadonlyOptional>; + value: TReadonlyOptional>; + }> + >; +}>; + +declare type SnapshotFormat = Static; + +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + +declare type Colors = { + comment: { + close: string; + open: string; + }; + content: { + close: string; + open: string; + }; + prop: { + close: string; + open: string; + }; + tag: { + close: string; + open: string; + }; + value: { + close: string; + open: string; + }; +}; + +declare type CompareKeys = + | ((a: string, b: string) => number) + | null + | undefined; + +declare type Config = { + callToJSON: boolean; + compareKeys: CompareKeys; + colors: Colors; + escapeRegex: boolean; + escapeString: boolean; + indent: string; + maxDepth: number; + maxWidth: number; + min: boolean; + plugins: Plugins; + printBasicPrototype: boolean; + printFunctionName: boolean; + spacingInner: string; + spacingOuter: string; +}; + +declare type Indent = (arg0: string) => string; + +declare type NewPlugin = { + serialize: ( + val: any, + config: Config, + indentation: string, + depth: number, + refs: Refs, + printer: Printer, + ) => string; + test: Test; +}; + +declare type OldPlugin = { + print: ( + val: unknown, + print: Print, + indent: Indent, + options: PluginOptions, + colors: Colors, + ) => string; + test: Test; +}; + +declare type Plugin_2 = NewPlugin | OldPlugin; + + +declare type PluginOptions = { + edgeSpacing: string; + min: boolean; + spacing: string; +}; + +declare type Plugins = Array; + +declare interface PrettyFormatOptions + extends Omit { + compareKeys?: CompareKeys; + plugins?: Plugins; +} + +declare type Print = (arg0: unknown) => string; + +declare type Printer = ( + val: unknown, + config: Config, + indentation: string, + depth: number, + refs: Refs, + hasCalledToJSON?: boolean, +) => string; + +declare type Refs = Array; + +declare type Test = (arg0: any) => boolean; + +/** + * Names of clock methods that may be faked by install. + */ +type FakeMethod = + | "setTimeout" + | "clearTimeout" + | "setImmediate" + | "clearImmediate" + | "setInterval" + | "clearInterval" + | "Date" + | "nextTick" + | "hrtime" + | "requestAnimationFrame" + | "cancelAnimationFrame" + | "requestIdleCallback" + | "cancelIdleCallback" + | "performance" + | "queueMicrotask"; + +interface FakeTimerInstallOpts { + /** + * Installs fake timers with the specified unix epoch (default: 0) + */ + now?: number | Date | undefined; + + /** + * An array with names of global methods and APIs to fake. By default, `@sinonjs/fake-timers` does not replace `nextTick()` and `queueMicrotask()`. + * For instance, `FakeTimers.install({ toFake: ['setTimeout', 'nextTick'] })` will fake only `setTimeout()` and `nextTick()` + */ + toFake?: FakeMethod[] | undefined; + + /** + * The maximum number of timers that will be run when calling runAll() (default: 1000) + */ + loopLimit?: number | undefined; + + /** + * Tells @sinonjs/fake-timers to increment mocked time automatically based on the real system time shift (e.g. the mocked time will be incremented by + * 20ms for every 20ms change in the real system time) (default: false) + */ + shouldAdvanceTime?: boolean | undefined; + + /** + * Relevant only when using with shouldAdvanceTime: true. increment mocked time by advanceTimeDelta ms every advanceTimeDelta ms change + * in the real system time (default: 20) + */ + advanceTimeDelta?: number | undefined; + + /** + * Tells FakeTimers to clear 'native' (i.e. not fake) timers by delegating to their respective handlers. These are not cleared by + * default, leading to potentially unexpected behavior if timers existed prior to installing FakeTimers. (default: false) + */ + shouldClearNativeTimers?: boolean | undefined; +} + +interface ParsedFile extends File { + start: number; + end: number; +} +interface ParsedTest extends Test$1 { + start: number; + end: number; +} +interface ParsedSuite extends Suite { + start: number; + end: number; +} +interface LocalCallDefinition { + start: number; + end: number; + name: string; + type: 'suite' | 'test'; + mode: 'run' | 'skip' | 'only' | 'todo'; + task: ParsedSuite | ParsedFile | ParsedTest; +} +interface FileInformation { + file: File; + filepath: string; + parsed: string; + map: RawSourceMap | null; + definitions: LocalCallDefinition[]; +} + +declare class TypeCheckError extends Error { + message: string; + stacks: ParsedStack[]; + name: string; + constructor(message: string, stacks: ParsedStack[]); +} +interface TypecheckResults { + files: File[]; + sourceErrors: TypeCheckError[]; + time: number; +} +type Callback = []> = (...args: Args) => Awaitable; +declare class Typechecker { + protected ctx: WorkspaceProject; + private _onParseStart?; + private _onParseEnd?; + private _onWatcherRerun?; + private _result; + private _startTime; + private _output; + private _tests; + private tempConfigPath?; + private allowJs?; + private process?; + protected files: string[]; + constructor(ctx: WorkspaceProject); + setFiles(files: string[]): void; + onParseStart(fn: Callback): void; + onParseEnd(fn: Callback<[TypecheckResults]>): void; + onWatcherRerun(fn: Callback): void; + protected collectFileTests(filepath: string): Promise; + protected getFiles(): string[]; + collectTests(): Promise>; + protected markPassed(file: File): void; + protected prepareResults(output: string): Promise<{ + files: File[]; + sourceErrors: TypeCheckError[]; + time: number; + }>; + protected parseTscLikeOutput(output: string): Promise>; + clear(): Promise; + stop(): Promise; + protected ensurePackageInstalled(ctx: Vitest, checker: string): Promise; + prepare(): Promise; + getExitCode(): number | false; + getOutput(): string; + start(): Promise; + getResult(): TypecheckResults; + getTestFiles(): File[]; + getTestPacks(): TaskResultPack[]; +} + +interface ErrorOptions { + type?: string; + fullStack?: boolean; + project?: WorkspaceProject; +} +declare class Logger { + ctx: Vitest; + console: Console; + outputStream: NodeJS.WriteStream & { + fd: 1; + }; + errorStream: NodeJS.WriteStream & { + fd: 2; + }; + logUpdate: ((...text: string[]) => void) & { + clear(): void; + done(): void; + }; + private _clearScreenPending; + private _highlights; + constructor(ctx: Vitest, console?: Console); + log(...args: any[]): void; + error(...args: any[]): void; + warn(...args: any[]): void; + clearFullScreen(message: string): void; + clearScreen(message: string, force?: boolean): void; + private _clearScreen; + printError(err: unknown, options?: ErrorOptions): Promise; + clearHighlightCache(filename?: string): void; + highlight(filename: string, source: string): string; + printNoTestFound(filters?: string[]): void; + printBanner(): void; + printUnhandledErrors(errors: unknown[]): Promise; + printSourceTypeErrors(errors: TypeCheckError[]): Promise; +} + +interface InitializeProjectOptions extends UserWorkspaceConfig { + workspaceConfigPath: string; + extends?: string; +} +declare class WorkspaceProject { + path: string | number; + ctx: Vitest; + options?: InitializeProjectOptions | undefined; + configOverride: Partial | undefined; + config: ResolvedConfig; + server: ViteDevServer; + vitenode: ViteNodeServer; + runner: ViteNodeRunner; + browser?: ViteDevServer; + typechecker?: Typechecker; + closingPromise: Promise | undefined; + browserProvider: BrowserProvider | undefined; + browserState: { + files: string[]; + resolve: () => void; + reject: (v: unknown) => void; + } | undefined; + testFilesList: string[] | null; + private _globalSetups; + private _provided; + constructor(path: string | number, ctx: Vitest, options?: InitializeProjectOptions | undefined); + getName(): string; + isCore(): boolean; + provide: (key: string, value: unknown) => void; + getProvidedContext(): ProvidedContext; + initializeGlobalSetup(): Promise; + teardownGlobalSetup(): Promise; + get logger(): Logger; + getModulesByFilepath(file: string): Set; + getModuleById(id: string): vite.ModuleNode | undefined; + getSourceMapModuleById(id: string): TransformResult$1['map'] | undefined; + getBrowserSourceMapModuleById(id: string): TransformResult$1['map'] | undefined; + get reporters(): Reporter[]; + globTestFiles(filters?: string[]): Promise; + globAllTestFiles(include: string[], exclude: string[], includeSource: string[] | undefined, cwd: string): Promise; + isTestFile(id: string): boolean | null; + globFiles(include: string[], exclude: string[], cwd: string): Promise; + isTargetFile(id: string, source?: string): Promise; + isInSourceTestFile(code: string): boolean; + filterFiles(testFiles: string[], filters: string[] | undefined, dir: string): string[]; + initBrowserServer(configFile: string | undefined): Promise; + static createBasicProject(ctx: Vitest): WorkspaceProject; + static createCoreProject(ctx: Vitest): Promise; + setServer(options: UserConfig, server: ViteDevServer): Promise; + isBrowserEnabled(): boolean; + getSerializableConfig(): ResolvedConfig; + close(): Promise; + initBrowserProvider(): Promise; +} + +interface BrowserProviderInitializationOptions { + browser: string; + options?: BrowserProviderOptions; +} +interface BrowserProvider { + name: string; + getSupportedBrowsers: () => readonly string[]; + openPage: (url: string) => Awaitable$1; + close: () => Awaitable$1; + initialize(ctx: WorkspaceProject, options: BrowserProviderInitializationOptions): Awaitable$1; +} +interface BrowserProviderOptions { +} +interface BrowserConfigOptions { + /** + * if running tests in the browser should be the default + * + * @default false + */ + enabled?: boolean; + /** + * Name of the browser + */ + name: string; + /** + * Browser provider + * + * @default 'webdriverio' + */ + provider?: 'webdriverio' | 'playwright' | 'none' | (string & {}); + /** + * Options that are passed down to a browser provider. + * To support type hinting, add one of the types to your tsconfig.json "compilerOptions.types" field: + * + * - for webdriverio: `@vitest/browser/providers/webdriverio` + * - for playwright: `@vitest/browser/providers/playwright` + * + * @example + * { playwright: { launch: { devtools: true } } + */ + providerOptions?: BrowserProviderOptions; + /** + * enable headless mode + * + * @default process.env.CI + */ + headless?: boolean; + /** + * Serve API options. + * + * The default port is 63315. + */ + api?: ApiConfig | number; + /** + * Update ESM imports so they can be spied/stubbed with vi.spyOn. + * Enabled by default when running in browser. + * + * @default false + * @experimental + */ + slowHijackESM?: boolean; + /** + * Isolate test environment after each test + * + * @default true + */ + isolate?: boolean; + /** + * Run test files in parallel. Fallbacks to `test.fileParallelism`. + * + * @default test.fileParallelism + */ + fileParallelism?: boolean; +} +interface ResolvedBrowserOptions extends BrowserConfigOptions { + enabled: boolean; + headless: boolean; + isolate: boolean; + api: ApiConfig; +} + +type BuiltinPool = 'browser' | 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'; +type Pool = BuiltinPool | (string & {}); +interface PoolOptions extends Record { + /** + * Run tests in `node:worker_threads`. + * + * Test isolation (when enabled) is done by spawning a new thread for each test file. + * + * This pool is used by default. + */ + threads?: ThreadsOptions & WorkerContextOptions; + /** + * Run tests in `node:child_process` using [`fork()`](https://nodejs.org/api/child_process.html#child_processforkmodulepath-args-options) + * + * Test isolation (when enabled) is done by spawning a new child process for each test file. + */ + forks?: ForksOptions & WorkerContextOptions; + /** + * Run tests in isolated `node:vm`. + * Test files are run parallel using `node:worker_threads`. + * + * This makes tests run faster, but VM module is unstable. Your tests might leak memory. + */ + vmThreads?: ThreadsOptions & VmOptions; + /** + * Run tests in isolated `node:vm`. + * + * Test files are run parallel using `node:child_process` [`fork()`](https://nodejs.org/api/child_process.html#child_processforkmodulepath-args-options) + * + * This makes tests run faster, but VM module is unstable. Your tests might leak memory. + */ + vmForks?: ForksOptions & VmOptions; +} +interface ThreadsOptions { + /** Minimum amount of threads to use */ + minThreads?: number; + /** Maximum amount of threads to use */ + maxThreads?: number; + /** + * Run tests inside a single thread. + * + * @default false + */ + singleThread?: boolean; + /** + * Use Atomics to synchronize threads + * + * This can improve performance in some cases, but might cause segfault in older Node versions. + * + * @default false + */ + useAtomics?: boolean; +} +interface ForksOptions { + /** Minimum amount of child processes to use */ + minForks?: number; + /** Maximum amount of child processes to use */ + maxForks?: number; + /** + * Run tests inside a single fork. + * + * @default false + */ + singleFork?: boolean; +} +interface WorkerContextOptions { + /** + * Isolate test environment by recycling `worker_threads` or `child_process` after each test + * + * @default true + */ + isolate?: boolean; + /** + * Pass additional arguments to `node` process when spawning `worker_threads` or `child_process`. + * + * See [Command-line API | Node.js](https://nodejs.org/docs/latest/api/cli.html) for more information. + * + * Set to `process.execArgv` to pass all arguments of the current process. + * + * Be careful when using, it as some options may crash worker, e.g. --prof, --title. See https://github.com/nodejs/node/issues/41103 + * + * @default [] // no execution arguments are passed + */ + execArgv?: string[]; +} +interface VmOptions { + /** + * Specifies the memory limit for `worker_thread` or `child_process` before they are recycled. + * If you see memory leaks, try to tinker this value. + */ + memoryLimit?: string | number; + /** Isolation is always enabled */ + isolate?: true; + /** + * Pass additional arguments to `node` process when spawning `worker_threads` or `child_process`. + * + * See [Command-line API | Node.js](https://nodejs.org/docs/latest/api/cli.html) for more information. + * + * Set to `process.execArgv` to pass all arguments of the current process. + * + * Be careful when using, it as some options may crash worker, e.g. --prof, --title. See https://github.com/nodejs/node/issues/41103 + * + * @default [] // no execution arguments are passed + */ + execArgv?: string[]; +} + +type WorkspaceSpec = [project: WorkspaceProject, testFile: string]; +type RunWithFiles = (files: WorkspaceSpec[], invalidates?: string[]) => Awaitable$1; +interface ProcessPool { + name: string; + runTests: RunWithFiles; + close?: () => Awaitable$1; +} + +type Awaitable = T | PromiseLike; +type Nullable = T | null | undefined; +type Arrayable = T | Array; +type ArgumentsType$1 = T extends (...args: infer U) => any ? U : never; +type MutableArray = { + -readonly [k in keyof T]: T[k]; +}; +interface Constructable { + new (...args: any[]): any; +} +interface ModuleCache { + promise?: Promise; + exports?: any; + code?: string; +} +interface EnvironmentReturn { + teardown: (global: any) => Awaitable; +} +interface VmEnvironmentReturn { + getVmContext: () => { + [key: string]: any; + }; + teardown: () => Awaitable; +} +interface Environment { + name: string; + transformMode: 'web' | 'ssr'; + setupVM?: (options: Record) => Awaitable; + setup: (global: any, options: Record) => Awaitable; +} +interface UserConsoleLog { + content: string; + type: 'stdout' | 'stderr'; + taskId?: string; + time: number; + size: number; +} +interface ModuleGraphData { + graph: Record; + externalized: string[]; + inlined: string[]; +} +type OnServerRestartHandler = (reason?: string) => Promise | void; +interface ProvidedContext { +} + +declare class StateManager { + filesMap: Map; + pathsSet: Set; + idMap: Map; + taskFileMap: WeakMap; + errorsSet: Set; + processTimeoutCauses: Set; + catchError(err: unknown, type: string): void; + clearErrors(): void; + getUnhandledErrors(): unknown[]; + addProcessTimeoutCause(cause: string): void; + getProcessTimeoutCauses(): string[]; + getPaths(): string[]; + getFiles(keys?: string[]): File[]; + getFilepaths(): string[]; + getFailedFilepaths(): string[]; + collectPaths(paths?: string[]): void; + collectFiles(files?: File[]): void; + clearFiles(_project: { + config: { + name: string; + }; + }, paths?: string[]): void; + updateId(task: Task): void; + updateTasks(packs: TaskResultPack[]): void; + updateUserLog(log: UserConsoleLog): void; + getCountOfFailedTests(): number; + cancelFiles(files: string[], root: string, projectName: string): void; +} + +interface SuiteResultCache { + failed: boolean; + duration: number; +} +declare class ResultsCache { + private cache; + private workspacesKeyMap; + private cachePath; + private version; + private root; + getCachePath(): string | null; + setConfig(root: string, config: ResolvedConfig['cache']): void; + getResults(key: string): SuiteResultCache | undefined; + readFromCache(): Promise; + updateResults(files: File[]): void; + removeFromCache(filepath: string): void; + writeToCache(): Promise; +} + +interface CliOptions extends UserConfig { + /** + * Override the watch mode + */ + run?: boolean; + /** + * Retry the test suite if it crashes due to a segfault (default: true) + */ + segfaultRetry?: number; + /** + * Removes colors from the console output + */ + color?: boolean; +} +/** + * Start Vitest programmatically + * + * Returns a Vitest instance if initialized successfully. + */ +declare function startVitest(mode: VitestRunMode, cliFilters?: string[], options?: CliOptions, viteOverrides?: UserConfig$1, vitestOptions?: VitestOptions): Promise; + +type FileStatsCache = Pick; +declare class FilesStatsCache { + cache: Map; + getStats(key: string): FileStatsCache | undefined; + populateStats(root: string, specs: WorkspaceSpec[]): Promise; + updateStats(fsPath: string, key: string): Promise; + removeStats(fsPath: string): void; +} + +declare class VitestCache { + results: ResultsCache; + stats: FilesStatsCache; + getFileTestResults(key: string): SuiteResultCache | undefined; + getFileStats(key: string): { + size: number; + } | undefined; + static resolveCacheDir(root: string, dir: string | undefined, projectName: string | undefined): string; + static clearCache(options: CliOptions): Promise<{ + dir: string; + cleared: boolean; + }>; +} + +declare class VitestPackageInstaller { + ensureInstalled(dependency: string, root: string): Promise; +} + +interface VitestOptions { + packageInstaller?: VitestPackageInstaller; +} +declare class Vitest { + readonly mode: VitestRunMode; + config: ResolvedConfig; + configOverride: Partial; + server: ViteDevServer; + state: StateManager; + snapshot: SnapshotManager; + cache: VitestCache; + reporters: Reporter[]; + coverageProvider: CoverageProvider | null | undefined; + browserProvider: BrowserProvider | undefined; + logger: Logger; + pool: ProcessPool | undefined; + vitenode: ViteNodeServer; + invalidates: Set; + changedTests: Set; + filenamePattern?: string; + runningPromise?: Promise; + closingPromise?: Promise; + isCancelling: boolean; + isFirstRun: boolean; + restartsCount: number; + runner: ViteNodeRunner; + packageInstaller: VitestPackageInstaller; + private coreWorkspaceProject; + private resolvedProjects; + projects: WorkspaceProject[]; + private projectsTestFiles; + distPath: string; + constructor(mode: VitestRunMode, options?: VitestOptions); + private _onRestartListeners; + private _onClose; + private _onSetServer; + private _onCancelListeners; + setServer(options: UserConfig, server: ViteDevServer, cliOptions: UserConfig): Promise; + private createCoreProject; + getCoreWorkspaceProject(): WorkspaceProject; + getProjectByTaskId(taskId: string): WorkspaceProject; + private getWorkspaceConfigPath; + private resolveWorkspace; + private initCoverageProvider; + private initBrowserProviders; + start(filters?: string[]): Promise; + private getTestDependencies; + filterTestsBySource(specs: WorkspaceSpec[]): Promise; + getProjectsByTestFile(file: string): WorkspaceSpec[]; + initializeGlobalSetup(paths: WorkspaceSpec[]): Promise; + runFiles(paths: WorkspaceSpec[], allTestsRun: boolean): Promise; + cancelCurrentRun(reason: CancelReason): Promise; + rerunFiles(files?: string[], trigger?: string): Promise; + changeProjectName(pattern: string): Promise; + changeNamePattern(pattern: string, files?: string[], trigger?: string): Promise; + changeFilenamePattern(pattern: string): Promise; + rerunFailed(): Promise; + updateSnapshot(files?: string[]): Promise; + private _rerunTimer; + private scheduleRerun; + getModuleProjects(filepath: string): WorkspaceProject[]; + private unregisterWatcher; + private registerWatcher; + /** + * @returns A value indicating whether rerun is needed (changedTests was mutated) + */ + private handleFileChanged; + private reportCoverage; + close(): Promise; + /** + * Close the thread pool and exit the process + */ + exit(force?: boolean): Promise; + report(name: T, ...args: ArgumentsType$1): Promise; + globTestFiles(filters?: string[]): Promise; + shouldKeepServer(): boolean; + onServerRestart(fn: OnServerRestartHandler): void; + onAfterSetServer(fn: OnServerRestartHandler): void; + onCancel(fn: (reason: CancelReason) => void): void; + onClose(fn: () => void): void; +} + +interface TestSequencer { + /** + * Slicing tests into shards. Will be run before `sort`. + * Only run, if `shard` is defined. + */ + shard: (files: WorkspaceSpec[]) => Awaitable; + sort: (files: WorkspaceSpec[]) => Awaitable; +} +interface TestSequencerConstructor { + new (ctx: Vitest): TestSequencer; +} + +declare abstract class BaseReporter implements Reporter { + start: number; + end: number; + watchFilters?: string[]; + isTTY: boolean; + ctx: Vitest; + private _filesInWatchMode; + private _lastRunTimeout; + private _lastRunTimer; + private _lastRunCount; + private _timeStart; + private _offUnhandledRejection?; + constructor(); + get mode(): VitestRunMode; + onInit(ctx: Vitest): void; + relative(path: string): string; + onFinished(files?: File[], errors?: unknown[]): Promise; + onTaskUpdate(packs: TaskResultPack[]): void; + onWatcherStart(files?: File[], errors?: unknown[]): Promise; + private resetLastRunLog; + onWatcherRerun(files: string[], trigger?: string): Promise; + onUserConsoleLog(log: UserConsoleLog): void; + shouldLog(log: UserConsoleLog): boolean; + onServerRestart(reason?: string): void; + reportSummary(files: File[], errors: unknown[]): Promise; + reportTestSummary(files: File[], errors: unknown[]): Promise; + private printErrorsSummary; + reportBenchmarkSummary(files: File[]): Promise; + private printTaskErrors; + registerUnhandledRejection(): void; +} + +declare class BasicReporter extends BaseReporter { + isTTY: boolean; + reportSummary(files: File[], errors: unknown[]): Promise; +} + +interface ListRendererOptions { + renderSucceed?: boolean; + logger: Logger; + showHeap: boolean; + slowTestThreshold: number; + mode: VitestRunMode; +} +declare function createListRenderer(_tasks: Task[], options: ListRendererOptions): { + start(): any; + update(_tasks: Task[]): any; + stop(): Promise; + clear(): void; +}; + +declare class DefaultReporter extends BaseReporter { + renderer?: ReturnType; + rendererOptions: ListRendererOptions; + private renderSucceedDefault?; + onPathsCollected(paths?: string[]): void; + onTestRemoved(trigger?: string): Promise; + onCollected(): void; + onFinished(files?: _vitest_runner.File[], errors?: unknown[]): Promise; + onWatcherStart(files?: _vitest_runner.File[], errors?: unknown[]): Promise; + stopListRender(): Promise; + onWatcherRerun(files: string[], trigger?: string): Promise; + onUserConsoleLog(log: UserConsoleLog): void; +} + +interface DotRendererOptions { + logger: Logger; +} +declare function createDotRenderer(_tasks: Task[], options: DotRendererOptions): { + start(): any; + update(_tasks: Task[]): any; + stop(): Promise; + clear(): void; +}; + +declare class DotReporter extends BaseReporter { + renderer?: ReturnType; + onCollected(): void; + onFinished(files?: _vitest_runner.File[], errors?: unknown[]): Promise; + onWatcherStart(): Promise; + stopListRender(): Promise; + onWatcherRerun(files: string[], trigger?: string): Promise; + onUserConsoleLog(log: UserConsoleLog): void; +} + +type Status = 'passed' | 'failed' | 'skipped' | 'pending' | 'todo' | 'disabled'; +type Milliseconds = number; +interface Callsite { + line: number; + column: number; +} +interface JsonAssertionResult { + ancestorTitles: Array; + fullName: string; + status: Status; + title: string; + duration?: Milliseconds | null; + failureMessages: Array; + location?: Callsite | null; +} +interface JsonTestResult { + message: string; + name: string; + status: 'failed' | 'passed'; + startTime: number; + endTime: number; + assertionResults: Array; +} +interface JsonTestResults { + numFailedTests: number; + numFailedTestSuites: number; + numPassedTests: number; + numPassedTestSuites: number; + numPendingTests: number; + numPendingTestSuites: number; + numTodoTests: number; + numTotalTests: number; + numTotalTestSuites: number; + startTime: number; + success: boolean; + testResults: Array; +} +interface JsonOptions$1 { + outputFile?: string; +} +declare class JsonReporter$1 implements Reporter { + start: number; + ctx: Vitest; + options: JsonOptions$1; + constructor(options: JsonOptions$1); + onInit(ctx: Vitest): void; + protected logTasks(files: File[]): Promise; + onFinished(files?: File[]): Promise; + /** + * Writes the report to an output file if specified in the config, + * or logs it to the console otherwise. + * @param report + */ + writeReport(report: string): Promise; + protected getFailureLocation(test: Task): Promise; +} + +declare class VerboseReporter extends DefaultReporter { + constructor(); + onTaskUpdate(packs: TaskResultPack[]): void; +} + +interface Reporter { + onInit?: (ctx: Vitest) => void; + onPathsCollected?: (paths?: string[]) => Awaitable; + onCollected?: (files?: File[]) => Awaitable; + onFinished?: (files?: File[], errors?: unknown[]) => Awaitable; + onTaskUpdate?: (packs: TaskResultPack[]) => Awaitable; + onTestRemoved?: (trigger?: string) => Awaitable; + onWatcherStart?: (files?: File[], errors?: unknown[]) => Awaitable; + onWatcherRerun?: (files: string[], trigger?: string) => Awaitable; + onServerRestart?: (reason?: string) => Awaitable; + onUserConsoleLog?: (log: UserConsoleLog) => Awaitable; + onProcessTimeout?: () => Awaitable; +} + +declare class TapReporter implements Reporter { + protected ctx: Vitest; + private logger; + onInit(ctx: Vitest): void; + static getComment(task: Task): string; + private logErrorDetails; + protected logTasks(tasks: Task[]): void; + onFinished(files?: _vitest_runner.File[]): Promise; +} + +interface JUnitOptions { + outputFile?: string; + classname?: string; + suiteName?: string; +} +declare class JUnitReporter implements Reporter { + private ctx; + private reportFile?; + private baseLog; + private logger; + private _timeStart; + private fileFd?; + private options; + constructor(options: JUnitOptions); + onInit(ctx: Vitest): Promise; + writeElement(name: string, attrs: Record, children: () => Promise): Promise; + writeErrorDetails(task: Task, error: ErrorWithDiff): Promise; + writeLogs(task: Task, type: 'err' | 'out'): Promise; + writeTasks(tasks: Task[], filename: string): Promise; + onFinished(files?: _vitest_runner.File[]): Promise; +} + +declare class TapFlatReporter extends TapReporter { + onInit(ctx: Vitest): void; + onFinished(files?: _vitest_runner.File[]): Promise; +} + +declare class HangingProcessReporter implements Reporter { + whyRunning: (() => void) | undefined; + onInit(): void; + onProcessTimeout(): void; +} + +declare class GithubActionsReporter implements Reporter { + ctx: Vitest; + onInit(ctx: Vitest): void; + onFinished(files?: File[], errors?: unknown[]): Promise; +} + +declare class JsonReporter implements Reporter { + start: number; + ctx: Vitest; + onInit(ctx: Vitest): void; + protected logTasks(files: File[]): Promise; + onFinished(files?: File[]): Promise; + /** + * Writes the report to an output file if specified in the config, + * or logs it to the console otherwise. + * @param report + */ + writeReport(report: string): Promise; +} + +interface TableRendererOptions { + renderSucceed?: boolean; + logger: Logger; + showHeap: boolean; + slowTestThreshold: number; +} +declare function createTableRenderer(_tasks: Task[], options: TableRendererOptions): { + start(): any; + update(_tasks: Task[]): any; + stop(): Promise; + clear(): void; +}; + +declare class TableReporter extends BaseReporter { + renderer?: ReturnType; + rendererOptions: TableRendererOptions; + onTestRemoved(trigger?: string): Promise; + onCollected(): void; + onFinished(files?: _vitest_runner.File[], errors?: unknown[]): Promise; + onWatcherStart(): Promise; + stopListRender(): Promise; + onWatcherRerun(files: string[], trigger?: string): Promise; + onUserConsoleLog(log: UserConsoleLog): void; +} + +declare const BenchmarkReportsMap: { + default: typeof TableReporter; + verbose: typeof VerboseReporter; + json: typeof JsonReporter; +}; +type BenchmarkBuiltinReporters = keyof typeof BenchmarkReportsMap; + +declare const ReportersMap: { + default: typeof DefaultReporter; + basic: typeof BasicReporter; + verbose: typeof VerboseReporter; + dot: typeof DotReporter; + json: typeof JsonReporter$1; + tap: typeof TapReporter; + 'tap-flat': typeof TapFlatReporter; + junit: typeof JUnitReporter; + 'hanging-process': typeof HangingProcessReporter; + 'github-actions': typeof GithubActionsReporter; +}; +type BuiltinReporters = keyof typeof ReportersMap; +interface BuiltinReporterOptions { + 'default': never; + 'basic': never; + 'verbose': never; + 'dot': never; + 'json': JsonOptions$1; + 'tap': never; + 'tap-flat': never; + 'junit': JUnitOptions; + 'hanging-process': never; + 'html': { + outputFile?: string; + }; +} + +type ChaiConfig = Omit, 'useProxy' | 'proxyExcludedKeys'>; + +interface Node { + isRoot(): boolean; + visit(visitor: Visitor, state: any): void; +} + +interface Visitor { + onStart(root: N, state: any): void; + onSummary(root: N, state: any): void; + onDetail(root: N, state: any): void; + onSummaryEnd(root: N, state: any): void; + onEnd(root: N, state: any): void; +} + +interface FileOptions { + file: string; +} + +interface ProjectOptions { + projectRoot: string; +} + +interface ReportOptions { + clover: CloverOptions; + cobertura: CoberturaOptions; + "html-spa": HtmlSpaOptions; + html: HtmlOptions; + json: JsonOptions; + "json-summary": JsonSummaryOptions; + lcov: LcovOptions; + lcovonly: LcovOnlyOptions; + none: never; + teamcity: TeamcityOptions; + text: TextOptions; + "text-lcov": TextLcovOptions; + "text-summary": TextSummaryOptions; +} + +interface CloverOptions extends FileOptions, ProjectOptions {} + +interface CoberturaOptions extends FileOptions, ProjectOptions {} + +interface HtmlSpaOptions extends HtmlOptions { + metricsToShow: Array<"lines" | "branches" | "functions" | "statements">; +} +interface HtmlOptions { + verbose: boolean; + skipEmpty: boolean; + subdir: string; + linkMapper: LinkMapper; +} + +type JsonOptions = FileOptions; +type JsonSummaryOptions = FileOptions; + +interface LcovOptions extends FileOptions, ProjectOptions {} +interface LcovOnlyOptions extends FileOptions, ProjectOptions {} + +interface TeamcityOptions extends FileOptions { + blockName: string; +} + +interface TextOptions extends FileOptions { + maxCols: number; + skipEmpty: boolean; + skipFull: boolean; +} +type TextLcovOptions = ProjectOptions; +type TextSummaryOptions = FileOptions; + +interface LinkMapper { + getPath(node: string | Node): string; + relativePath(source: string | Node, target: string | Node): string; + assetPath(node: Node, name: string): string; +} + +type ArgumentsType = T extends (...args: infer A) => any ? A : never; +type ReturnType$1 = T extends (...args: any) => infer R ? R : never; +type PromisifyFn = ReturnType$1 extends Promise ? T : (...args: ArgumentsType) => Promise>>; +type BirpcResolver = (name: string, resolved: (...args: unknown[]) => unknown) => ((...args: unknown[]) => unknown) | undefined; +interface ChannelOptions { + /** + * Function to post raw message + */ + post: (data: any, ...extras: any[]) => any | Promise; + /** + * Listener to receive raw message + */ + on: (fn: (data: any, ...extras: any[]) => void) => any | Promise; + /** + * Custom function to serialize data + * + * by default it passes the data as-is + */ + serialize?: (data: any) => any; + /** + * Custom function to deserialize data + * + * by default it passes the data as-is + */ + deserialize?: (data: any) => any; +} +interface EventOptions { + /** + * Names of remote functions that do not need response. + */ + eventNames?: (keyof Remote)[]; + /** + * Maximum timeout for waiting for response, in milliseconds. + * + * @default 60_000 + */ + timeout?: number; + /** + * Custom resolver to resolve function to be called + * + * For advanced use cases only + */ + resolver?: BirpcResolver; + /** + * Custom error handler + */ + onError?: (error: Error, functionName: string, args: any[]) => boolean | void; + /** + * Custom error handler for timeouts + */ + onTimeoutError?: (functionName: string, args: any[]) => boolean | void; +} +type BirpcOptions = EventOptions & ChannelOptions; +type BirpcFn = PromisifyFn & { + /** + * Send event without asking for response + */ + asEvent(...args: ArgumentsType): void; +}; +type BirpcReturn> = { + [K in keyof RemoteFunctions]: BirpcFn; +} & { + $functions: LocalFunctions; +}; + +type MockFactoryWithHelper = (importOriginal: () => Promise) => any; +type MockFactory = () => any; +type MockMap = Map>; +interface PendingSuiteMock { + id: string; + importer: string; + type: 'mock' | 'unmock'; + throwIfCached: boolean; + factory?: MockFactory; +} + +type TransformMode = 'web' | 'ssr'; +interface RuntimeRPC { + fetch: (id: string, environment: TransformMode) => Promise; + transform: (id: string, environment: TransformMode) => Promise; + resolveId: (id: string, importer: string | undefined, environment: TransformMode) => Promise; + getSourceMap: (id: string, force?: boolean) => Promise; + onFinished: (files: File[], errors?: unknown[]) => void; + onPathsCollected: (paths: string[]) => void; + onUserConsoleLog: (log: UserConsoleLog) => void; + onUnhandledError: (err: unknown, type: string) => void; + onCollected: (files: File[]) => Promise; + onAfterSuiteRun: (meta: AfterSuiteRunMeta) => void; + onTaskUpdate: (pack: TaskResultPack[]) => Promise; + onCancel: (reason: CancelReason) => void; + getCountOfFailedTests: () => number; + snapshotSaved: (snapshot: SnapshotResult) => void; + resolveSnapshotPath: (testPath: string) => string; +} +interface RunnerRPC { + onCancel: (reason: CancelReason) => void; +} +interface ContextTestEnvironment { + name: VitestEnvironment; + transformMode?: TransformMode; + options: EnvironmentOptions | null; +} +interface ResolvedTestEnvironment { + environment: Environment; + options: EnvironmentOptions | null; +} +interface ContextRPC { + pool: Pool; + worker: string; + workerId: number; + config: ResolvedConfig; + projectName: string; + files: string[]; + environment: ContextTestEnvironment; + providedContext: Record; + invalidates?: string[]; +} + +interface WorkerContext extends ContextRPC { + port: MessagePort; +} +type ResolveIdFunction = (id: string, importer?: string) => Promise; +interface AfterSuiteRunMeta { + coverage?: unknown; + transformMode: Environment['transformMode']; + projectName?: string; +} +type WorkerRPC = BirpcReturn; +interface WorkerGlobalState { + ctx: ContextRPC; + config: ResolvedConfig; + rpc: WorkerRPC; + current?: Task; + filepath?: string; + environment: Environment; + environmentTeardownRun?: boolean; + onCancel: Promise; + moduleCache: ModuleCacheMap; + mockMap: MockMap; + providedContext: Record; + durations: { + environment: number; + prepare: number; + }; +} + +type TransformResult = string | Partial | undefined | null | void; +interface CoverageProvider { + name: string; + initialize: (ctx: Vitest) => Promise | void; + resolveOptions: () => ResolvedCoverageOptions; + clean: (clean?: boolean) => void | Promise; + onAfterSuiteRun: (meta: AfterSuiteRunMeta) => void | Promise; + reportCoverage: (reportContext?: ReportContext) => void | Promise; + onFileTransform?: (sourceCode: string, id: string, pluginCtx: any) => TransformResult | Promise; +} +interface ReportContext { + /** Indicates whether all tests were run. False when only specific tests were run. */ + allTestsRun?: boolean; +} +interface CoverageProviderModule { + /** + * Factory for creating a new coverage provider + */ + getProvider: () => CoverageProvider | Promise; + /** + * Executed before tests are run in the worker thread. + */ + startCoverage?: () => unknown | Promise; + /** + * Executed on after each run in the worker thread. Possible to return a payload passed to the provider + */ + takeCoverage?: () => unknown | Promise; + /** + * Executed after all tests have been run in the worker thread. + */ + stopCoverage?: () => unknown | Promise; +} +type CoverageReporter = keyof ReportOptions | (string & {}); +type CoverageReporterWithOptions = ReporterName extends keyof ReportOptions ? ReportOptions[ReporterName] extends never ? [ReporterName, {}] : [ReporterName, Partial] : [ReporterName, Record]; +type Provider = 'v8' | 'istanbul' | 'custom' | undefined; +type CoverageOptions = T extends 'istanbul' ? ({ + provider: T; +} & CoverageIstanbulOptions) : T extends 'v8' ? ({ + provider: T; +} & CoverageV8Options) : T extends 'custom' ? ({ + provider: T; +} & CustomProviderOptions) : ({ + provider?: T; +} & (CoverageV8Options)); +/** Fields that have default values. Internally these will always be defined. */ +type FieldsWithDefaultValues = 'enabled' | 'clean' | 'cleanOnRerun' | 'reportsDirectory' | 'exclude' | 'extension' | 'reportOnFailure' | 'allowExternal' | 'processingConcurrency'; +type ResolvedCoverageOptions = CoverageOptions & Required, FieldsWithDefaultValues>> & { + reporter: CoverageReporterWithOptions[]; +}; +interface BaseCoverageOptions { + /** + * Enables coverage collection. Can be overridden using `--coverage` CLI option. + * + * @default false + */ + enabled?: boolean; + /** + * List of files included in coverage as glob patterns + * + * @default ['**'] + */ + include?: string[]; + /** + * Extensions for files to be included in coverage + * + * @default ['.js', '.cjs', '.mjs', '.ts', '.tsx', '.jsx', '.vue', '.svelte', '.marko'] + */ + extension?: string | string[]; + /** + * List of files excluded from coverage as glob patterns + */ + exclude?: string[]; + /** + * Whether to include all files, including the untested ones into report + * + * @default false + */ + all?: boolean; + /** + * Clean coverage results before running tests + * + * @default true + */ + clean?: boolean; + /** + * Clean coverage report on watch rerun + * + * @default true + */ + cleanOnRerun?: boolean; + /** + * Directory to write coverage report to + */ + reportsDirectory?: string; + /** + * Coverage reporters to use. + * See [istanbul documentation](https://istanbul.js.org/docs/advanced/alternative-reporters/) for detailed list of all reporters. + * + * @default ['text', 'html', 'clover', 'json'] + */ + reporter?: Arrayable | (CoverageReporter | [CoverageReporter] | CoverageReporterWithOptions)[]; + /** + * Do not show files with 100% statement, branch, and function coverage + * + * @default false + */ + skipFull?: boolean; + /** + * Configurations for thresholds + * + * @example + * + * ```ts + * { + * // Thresholds for all files + * functions: 95, + * branches: 70, + * perFile: true, + * autoUpdate: true, + * + * // Thresholds for utilities + * 'src/utils/**.ts': { + * lines: 100, + * statements: 95, + * } + * } + * ``` + */ + thresholds?: Thresholds | ({ + [glob: string]: Pick; + } & Thresholds); + /** + * Watermarks for statements, lines, branches and functions. + * + * Default value is `[50,80]` for each property. + */ + watermarks?: { + statements?: [number, number]; + functions?: [number, number]; + branches?: [number, number]; + lines?: [number, number]; + }; + /** + * Generate coverage report even when tests fail. + * + * @default false + */ + reportOnFailure?: boolean; + /** + * Collect coverage of files outside the project `root`. + * + * @default false + */ + allowExternal?: boolean; + /** + * Concurrency limit used when processing the coverage results. + * Defaults to `Math.min(20, os.availableParallelism?.() ?? os.cpus().length)` + */ + processingConcurrency?: number; +} +interface CoverageIstanbulOptions extends BaseCoverageOptions { + /** + * Set to array of class method names to ignore for coverage + * + * @default [] + */ + ignoreClassMethods?: string[]; +} +interface CoverageV8Options extends BaseCoverageOptions { +} +interface CustomProviderOptions extends Pick { + /** Name of the module or path to a file to load the custom provider from */ + customProviderModule: string; +} +interface Thresholds { + /** Set global thresholds to `100` */ + 100?: boolean; + /** Check thresholds per file. */ + perFile?: boolean; + /** + * Update threshold values automatically when current coverage is higher than earlier thresholds + * + * @default false + */ + autoUpdate?: boolean; + /** Thresholds for statements */ + statements?: number; + /** Thresholds for functions */ + functions?: number; + /** Thresholds for branches */ + branches?: number; + /** Thresholds for lines */ + lines?: number; +} + +interface JSDOMOptions { + /** + * The html content for the test. + * + * @default '' + */ + html?: string | Buffer | ArrayBufferLike; + /** + * referrer just affects the value read from document.referrer. + * It defaults to no referrer (which reflects as the empty string). + */ + referrer?: string; + /** + * userAgent affects the value read from navigator.userAgent, as well as the User-Agent header sent while fetching subresources. + * + * @default `Mozilla/5.0 (${process.platform}) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/${jsdomVersion}` + */ + userAgent?: string; + /** + * url sets the value returned by window.location, document.URL, and document.documentURI, + * and affects things like resolution of relative URLs within the document + * and the same-origin restrictions and referrer used while fetching subresources. + * + * @default 'http://localhost:3000'. + */ + url?: string; + /** + * contentType affects the value read from document.contentType, and how the document is parsed: as HTML or as XML. + * Values that are not "text/html" or an XML mime type will throw. + * + * @default 'text/html'. + */ + contentType?: string; + /** + * The maximum size in code units for the separate storage areas used by localStorage and sessionStorage. + * Attempts to store data larger than this limit will cause a DOMException to be thrown. By default, it is set + * to 5,000,000 code units per origin, as inspired by the HTML specification. + * + * @default 5_000_000 + */ + storageQuota?: number; + /** + * Enable console? + * + * @default false + */ + console?: boolean; + /** + * jsdom does not have the capability to render visual content, and will act like a headless browser by default. + * It provides hints to web pages through APIs such as document.hidden that their content is not visible. + * + * When the `pretendToBeVisual` option is set to `true`, jsdom will pretend that it is rendering and displaying + * content. + * + * @default true + */ + pretendToBeVisual?: boolean; + /** + * `includeNodeLocations` preserves the location info produced by the HTML parser, + * allowing you to retrieve it with the nodeLocation() method (described below). + * + * It defaults to false to give the best performance, + * and cannot be used with an XML content type since our XML parser does not support location info. + * + * @default false + */ + includeNodeLocations?: boolean | undefined; + /** + * @default 'dangerously' + */ + runScripts?: 'dangerously' | 'outside-only'; + /** + * Enable CookieJar + * + * @default false + */ + cookieJar?: boolean; + resources?: 'usable' | any; +} + +/** + * Happy DOM options. + */ +interface HappyDOMOptions { + width?: number; + height?: number; + url?: string; + settings?: { + disableJavaScriptEvaluation?: boolean; + disableJavaScriptFileLoading?: boolean; + disableCSSFileLoading?: boolean; + disableIframePageLoading?: boolean; + disableComputedStyleRendering?: boolean; + enableFileSystemHttpRequests?: boolean; + navigator?: { + userAgent?: string; + }; + device?: { + prefersColorScheme?: string; + mediaType?: string; + }; + }; +} + +interface BenchmarkUserOptions { + /** + * Include globs for benchmark test files + * + * @default ['**\/*.{bench,benchmark}.?(c|m)[jt]s?(x)'] + */ + include?: string[]; + /** + * Exclude globs for benchmark test files + * @default ['node_modules', 'dist', '.idea', '.git', '.cache'] + */ + exclude?: string[]; + /** + * Include globs for in-source benchmark test files + * + * @default [] + */ + includeSource?: string[]; + /** + * Custom reporter for output. Can contain one or more built-in report names, reporter instances, + * and/or paths to custom reporters + */ + reporters?: Arrayable$1; + /** + * Write test results to a file when the `--reporter=json` option is also specified. + * Also definable individually per reporter by using an object instead. + */ + outputFile?: string | (Partial> & Record); +} +interface Benchmark extends Custom { + meta: { + benchmark: true; + result?: TaskResult; + }; +} +interface BenchmarkResult extends TaskResult { + name: string; + rank: number; +} +type BenchFunction = (this: Bench) => Promise | void; +type ChainableBenchmarkAPI = ChainableFunction<'skip' | 'only' | 'todo', (name: string | Function, fn?: BenchFunction, options?: Options) => void>; +type BenchmarkAPI = ChainableBenchmarkAPI & { + skipIf: (condition: any) => ChainableBenchmarkAPI; + runIf: (condition: any) => ChainableBenchmarkAPI; +}; + +declare const defaultInclude: string[]; +declare const defaultExclude: string[]; +declare const coverageConfigDefaults: ResolvedCoverageOptions; +declare const configDefaults: Readonly<{ + allowOnly: boolean; + isolate: true; + watch: boolean; + globals: false; + environment: "node"; + pool: "threads"; + clearMocks: false; + restoreMocks: false; + mockReset: false; + include: string[]; + exclude: string[]; + testTimeout: number; + hookTimeout: number; + teardownTimeout: number; + watchExclude: string[]; + forceRerunTriggers: string[]; + update: false; + reporters: never[]; + silent: false; + hideSkippedTests: false; + api: false; + ui: false; + uiBase: string; + open: boolean; + css: { + include: never[]; + }; + coverage: CoverageV8Options; + fakeTimers: { + loopLimit: number; + shouldClearNativeTimers: true; + toFake: ("setTimeout" | "setInterval" | "clearInterval" | "clearTimeout" | "setImmediate" | "clearImmediate" | "Date")[]; + }; + maxConcurrency: number; + dangerouslyIgnoreUnhandledErrors: false; + typecheck: { + checker: "tsc"; + include: string[]; + exclude: string[]; + }; + slowTestThreshold: number; + disableConsoleIntercept: false; +}>; + +declare const extraInlineDeps: (string | RegExp)[]; + +interface UserWorkspaceConfig extends UserConfig$1 { + test?: ProjectConfig; +} + +type UserConfigFnObject = (env: ConfigEnv) => UserConfig$1; +type UserConfigFnPromise = (env: ConfigEnv) => Promise; +type UserConfigFn = (env: ConfigEnv) => UserConfig$1 | Promise; +type UserConfigExport = UserConfig$1 | Promise | UserConfigFnObject | UserConfigFnPromise | UserConfigFn; +type UserProjectConfigFn = (env: ConfigEnv) => UserWorkspaceConfig | Promise; +type UserProjectConfigExport = UserWorkspaceConfig | Promise | UserProjectConfigFn; +declare function defineConfig(config: UserConfig$1): UserConfig$1; +declare function defineConfig(config: Promise): Promise; +declare function defineConfig(config: UserConfigFnObject): UserConfigFnObject; +declare function defineConfig(config: UserConfigExport): UserConfigExport; +declare function defineProject(config: T): T; +type Workspace = (string | (UserProjectConfigExport & { + extends?: string; +})); +declare function defineWorkspace(config: Workspace[]): Workspace[]; + +type BuiltinEnvironment = 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime'; +type VitestEnvironment = BuiltinEnvironment | (string & Record); + +type CSSModuleScopeStrategy = 'stable' | 'scoped' | 'non-scoped'; +type ApiConfig = Pick; + +interface EnvironmentOptions { + /** + * jsdom options. + */ + jsdom?: JSDOMOptions; + happyDOM?: HappyDOMOptions; + [x: string]: unknown; +} +type VitestRunMode = 'test' | 'benchmark'; +interface SequenceOptions { + /** + * Class that handles sorting and sharding algorithm. + * If you only need to change sorting, you can extend + * your custom sequencer from `BaseSequencer` from `vitest/node`. + * @default BaseSequencer + */ + sequencer?: TestSequencerConstructor; + /** + * Should tests run in random order. + * @default false + */ + shuffle?: boolean; + /** + * Should tests run in parallel. + * @default false + */ + concurrent?: boolean; + /** + * Defines how setup files should be ordered + * - 'parallel' will run all setup files in parallel + * - 'list' will run all setup files in the order they are defined in the config file + * @default 'parallel' + */ + setupFiles?: SequenceSetupFiles; + /** + * Seed for the random number generator. + * @default Date.now() + */ + seed?: number; + /** + * Defines how hooks should be ordered + * - `stack` will order "after" hooks in reverse order, "before" hooks will run sequentially + * - `list` will order hooks in the order they are defined + * - `parallel` will run hooks in a single group in parallel + * @default 'parallel' + */ + hooks?: SequenceHooks; +} +type DepsOptimizationOptions = Omit & { + enabled?: boolean; +}; +interface TransformModePatterns { + /** + * Use SSR transform pipeline for all modules inside specified tests. + * Vite plugins will receive `ssr: true` flag when processing those files. + * + * @default tests with node or edge environment + */ + ssr?: string[]; + /** + * First do a normal transform pipeline (targeting browser), + * then then do a SSR rewrite to run the code in Node. + * Vite plugins will receive `ssr: false` flag when processing those files. + * + * @default tests with jsdom or happy-dom environment + */ + web?: string[]; +} +interface DepsOptions { + /** + * Enable dependency optimization. This can improve the performance of your tests. + */ + optimizer?: { + web?: DepsOptimizationOptions; + ssr?: DepsOptimizationOptions; + }; + web?: { + /** + * Should Vitest process assets (.png, .svg, .jpg, etc) files and resolve them like Vite does in the browser. + * + * These module will have a default export equal to the path to the asset, if no query is specified. + * + * **At the moment, this option only works with `{ pool: 'vmThreads' }`.** + * + * @default true + */ + transformAssets?: boolean; + /** + * Should Vitest process CSS (.css, .scss, .sass, etc) files and resolve them like Vite does in the browser. + * + * If CSS files are disabled with `css` options, this option will just silence UNKNOWN_EXTENSION errors. + * + * **At the moment, this option only works with `{ pool: 'vmThreads' }`.** + * + * @default true + */ + transformCss?: boolean; + /** + * Regexp pattern to match external files that should be transformed. + * + * By default, files inside `node_modules` are externalized and not transformed. + * + * **At the moment, this option only works with `{ pool: 'vmThreads' }`.** + * + * @default [] + */ + transformGlobPattern?: RegExp | RegExp[]; + }; + /** + * Externalize means that Vite will bypass the package to native Node. + * + * Externalized dependencies will not be applied Vite's transformers and resolvers. + * And does not support HMR on reload. + * + * Typically, packages under `node_modules` are externalized. + * + * @deprecated If you rely on vite-node directly, use `server.deps.external` instead. Otherwise, consider using `deps.optimizer.{web,ssr}.exclude`. + */ + external?: (string | RegExp)[]; + /** + * Vite will process inlined modules. + * + * This could be helpful to handle packages that ship `.js` in ESM format (that Node can't handle). + * + * If `true`, every dependency will be inlined + * + * @deprecated If you rely on vite-node directly, use `server.deps.inline` instead. Otherwise, consider using `deps.optimizer.{web,ssr}.include`. + */ + inline?: (string | RegExp)[] | true; + /** + * Interpret CJS module's default as named exports + * + * @default true + */ + interopDefault?: boolean; + /** + * When a dependency is a valid ESM package, try to guess the cjs version based on the path. + * This will significantly improve the performance in huge repo, but might potentially + * cause some misalignment if a package have different logic in ESM and CJS mode. + * + * @default false + * + * @deprecated Use `server.deps.fallbackCJS` instead. + */ + fallbackCJS?: boolean; + /** + * A list of directories relative to the config file that should be treated as module directories. + * + * @default ['node_modules'] + */ + moduleDirectories?: string[]; +} +type InlineReporter = Reporter; +type ReporterName = BuiltinReporters | 'html' | (string & {}); +type ReporterWithOptions = Name extends keyof BuiltinReporterOptions ? BuiltinReporterOptions[Name] extends never ? [Name, {}] : [Name, Partial] : [Name, Record]; +interface InlineConfig { + /** + * Name of the project. Will be used to display in the reporter. + */ + name?: string; + /** + * Benchmark options. + * + * @default {} + */ + benchmark?: BenchmarkUserOptions; + /** + * Include globs for test files + * + * @default ['**\/*.{test,spec}.?(c|m)[jt]s?(x)'] + */ + include?: string[]; + /** + * Exclude globs for test files + * @default ['node_modules', 'dist', '.idea', '.git', '.cache'] + */ + exclude?: string[]; + /** + * Include globs for in-source test files + * + * @default [] + */ + includeSource?: string[]; + /** + * Handling for dependencies inlining or externalizing + * + */ + deps?: DepsOptions; + /** + * Vite-node server options + */ + server?: Omit; + /** + * Base directory to scan for the test files + * + * @default `config.root` + */ + dir?: string; + /** + * Register apis globally + * + * @default false + */ + globals?: boolean; + /** + * Running environment + * + * Supports 'node', 'jsdom', 'happy-dom', 'edge-runtime' + * + * If used unsupported string, will try to load the package `vitest-environment-${env}` + * + * @default 'node' + */ + environment?: VitestEnvironment; + /** + * Environment options. + */ + environmentOptions?: EnvironmentOptions; + /** + * Automatically assign environment based on globs. The first match will be used. + * This has effect only when running tests inside Node.js. + * + * Format: [glob, environment-name] + * + * @default [] + * @example [ + * // all tests in tests/dom will run in jsdom + * ['tests/dom/**', 'jsdom'], + * // all tests in tests/ with .edge.test.ts will run in edge-runtime + * ['**\/*.edge.test.ts', 'edge-runtime'], + * // ... + * ] + */ + environmentMatchGlobs?: [string, VitestEnvironment][]; + /** + * Run tests in an isolated environment. This option has no effect on vmThreads pool. + * + * Disabling this option might improve performance if your code doesn't rely on side effects. + * + * @default true + */ + isolate?: boolean; + /** + * Pool used to run tests in. + * + * Supports 'threads', 'forks', 'vmThreads' + * + * @default 'threads' + */ + pool?: Exclude; + /** + * Pool options + */ + poolOptions?: PoolOptions; + /** + * Maximum number of workers to run tests in. `poolOptions.{threads,vmThreads}.maxThreads`/`poolOptions.forks.maxForks` has higher priority. + */ + maxWorkers?: number; + /** + * Minimum number of workers to run tests in. `poolOptions.{threads,vmThreads}.minThreads`/`poolOptions.forks.minForks` has higher priority. + */ + minWorkers?: number; + /** + * Should all test files run in parallel. Doesn't affect tests running in the same file. + * Setting this to `false` will override `maxWorkers` and `minWorkers` options to `1`. + * + * @default true + */ + fileParallelism?: boolean; + /** + * Automatically assign pool based on globs. The first match will be used. + * + * Format: [glob, pool-name] + * + * @default [] + * @example [ + * // all tests in "forks" directory will run using "poolOptions.forks" API + * ['tests/forks/**', 'forks'], + * // all other tests will run based on "poolOptions.threads" option, if you didn't specify other globs + * // ... + * ] + */ + poolMatchGlobs?: [string, Exclude][]; + /** + * Path to a workspace configuration file + */ + workspace?: string; + /** + * Update snapshot + * + * @default false + */ + update?: boolean; + /** + * Watch mode + * + * @default true + */ + watch?: boolean; + /** + * Project root + * + * @default process.cwd() + */ + root?: string; + /** + * Custom reporter for output. Can contain one or more built-in report names, reporter instances, + * and/or paths to custom reporters. + */ + reporters?: Arrayable | ((ReporterName | InlineReporter) | [ReporterName] | ReporterWithOptions)[]; + /** + * Write test results to a file when the --reporter=json` or `--reporter=junit` option is also specified. + * Also definable individually per reporter by using an object instead. + */ + outputFile?: string | (Partial> & Record); + /** + * Default timeout of a test in milliseconds + * + * @default 5000 + */ + testTimeout?: number; + /** + * Default timeout of a hook in milliseconds + * + * @default 10000 + */ + hookTimeout?: number; + /** + * Default timeout to wait for close when Vitest shuts down, in milliseconds + * + * @default 10000 + */ + teardownTimeout?: number; + /** + * Silent mode + * + * @default false + */ + silent?: boolean; + /** + * Hide logs for skipped tests + * + * @default false + */ + hideSkippedTests?: boolean; + /** + * Path to setup files + */ + setupFiles?: string | string[]; + /** + * Path to global setup files + */ + globalSetup?: string | string[]; + /** + * Glob pattern of file paths to be ignore from triggering watch rerun + * @deprecated Use server.watch.ignored instead + */ + watchExclude?: string[]; + /** + * Glob patter of file paths that will trigger the whole suite rerun + * + * Useful if you are testing calling CLI commands + * + * @default [] + */ + forceRerunTriggers?: string[]; + /** + * Coverage options + */ + coverage?: CoverageOptions; + /** + * run test names with the specified pattern + */ + testNamePattern?: string | RegExp; + /** + * Will call `.mockClear()` on all spies before each test + * @default false + */ + clearMocks?: boolean; + /** + * Will call `.mockReset()` on all spies before each test + * @default false + */ + mockReset?: boolean; + /** + * Will call `.mockRestore()` on all spies before each test + * @default false + */ + restoreMocks?: boolean; + /** + * Will restore all global stubs to their original values before each test + * @default false + */ + unstubGlobals?: boolean; + /** + * Will restore all env stubs to their original values before each test + * @default false + */ + unstubEnvs?: boolean; + /** + * Serve API options. + * + * When set to true, the default port is 51204. + * + * @default false + */ + api?: boolean | number | ApiConfig; + /** + * Enable Vitest UI + */ + ui?: boolean; + /** + * options for test in a browser environment + * @experimental + * + * @default false + */ + browser?: BrowserConfigOptions; + /** + * Open UI automatically. + * + * @default true + */ + open?: boolean; + /** + * Base url for the UI + * + * @default '/__vitest__/' + */ + uiBase?: string; + /** + * Determine the transform method for all modules imported inside a test that matches the glob pattern. + */ + testTransformMode?: TransformModePatterns; + /** + * Format options for snapshot testing. + */ + snapshotFormat?: Omit; + /** + * Path to a module which has a default export of diff config. + */ + diff?: string; + /** + * Paths to snapshot serializer modules. + */ + snapshotSerializers?: string[]; + /** + * Resolve custom snapshot path + */ + resolveSnapshotPath?: (path: string, extension: string) => string; + /** + * Pass with no tests + */ + passWithNoTests?: boolean; + /** + * Allow tests and suites that are marked as only + */ + allowOnly?: boolean; + /** + * Show heap usage after each test. Useful for debugging memory leaks. + */ + logHeapUsage?: boolean; + /** + * Custom environment variables assigned to `process.env` before running tests. + */ + env?: Record; + /** + * Options for @sinon/fake-timers + */ + fakeTimers?: FakeTimerInstallOpts; + /** + * Custom handler for console.log in tests. + * + * Return `false` to ignore the log. + */ + onConsoleLog?: (log: string, type: 'stdout' | 'stderr') => false | void; + /** + * Enable stack trace filtering. If absent, all stack trace frames + * will be shown. + * + * Return `false` to omit the frame. + */ + onStackTrace?: (error: Error, frame: ParsedStack) => boolean | void; + /** + * Indicates if CSS files should be processed. + * + * When excluded, the CSS files will be replaced with empty strings to bypass the subsequent processing. + * + * @default { include: [], modules: { classNameStrategy: false } } + */ + css?: boolean | { + include?: RegExp | RegExp[]; + exclude?: RegExp | RegExp[]; + modules?: { + classNameStrategy?: CSSModuleScopeStrategy; + }; + }; + /** + * A number of tests that are allowed to run at the same time marked with `test.concurrent`. + * @default 5 + */ + maxConcurrency?: number; + /** + * Options for configuring cache policy. + * @default { dir: 'node_modules/.vitest' } + */ + cache?: false | { + dir?: string; + }; + /** + * Options for configuring the order of running tests. + */ + sequence?: SequenceOptions; + /** + * Specifies an `Object`, or an `Array` of `Object`, + * which defines aliases used to replace values in `import` or `require` statements. + * Will be merged with the default aliases inside `resolve.alias`. + */ + alias?: AliasOptions; + /** + * Ignore any unhandled errors that occur + */ + dangerouslyIgnoreUnhandledErrors?: boolean; + /** + * Options for configuring typechecking test environment. + */ + typecheck?: Partial; + /** + * The number of milliseconds after which a test is considered slow and reported as such in the results. + * + * @default 300 + */ + slowTestThreshold?: number; + /** + * Path to a custom test runner. + */ + runner?: string; + /** + * Debug tests by opening `node:inspector` in worker / child process. + * Provides similar experience as `--inspect` Node CLI argument. + * + * Requires `poolOptions.threads.singleThread: true` OR `poolOptions.forks.singleFork: true`. + */ + inspect?: boolean; + /** + * Debug tests by opening `node:inspector` in worker / child process and wait for debugger to connect. + * Provides similar experience as `--inspect-brk` Node CLI argument. + * + * Requires `poolOptions.threads.singleThread: true` OR `poolOptions.forks.singleFork: true`. + */ + inspectBrk?: boolean; + /** + * Modify default Chai config. Vitest uses Chai for `expect` and `assert` matches. + * https://github.com/chaijs/chai/blob/4.x.x/lib/chai/config.js + */ + chaiConfig?: ChaiConfig; + /** + * Stop test execution when given number of tests have failed. + */ + bail?: number; + /** + * Retry the test specific number of times if it fails. + * + * @default 0 + */ + retry?: number; + /** + * Show full diff when snapshot fails instead of a patch. + */ + expandSnapshotDiff?: boolean; + /** + * By default, Vitest automatically intercepts console logging during tests for extra formatting of test file, test title, etc... + * This is also required for console log preview on Vitest UI. + * However, disabling such interception might help when you want to debug a code with normal synchronus terminal console logging. + * + * This option has no effect on browser pool since Vitest preserves original logging on browser devtools. + * + * @default false + */ + disableConsoleIntercept?: boolean; +} +interface TypecheckConfig { + /** + * Run typechecking tests alongisde regular tests. + */ + enabled?: boolean; + /** + * When typechecking is enabled, only run typechecking tests. + */ + only?: boolean; + /** + * What tools to use for type checking. + */ + checker: 'tsc' | 'vue-tsc' | (string & Record); + /** + * Pattern for files that should be treated as test files + */ + include: string[]; + /** + * Pattern for files that should not be treated as test files + */ + exclude: string[]; + /** + * Check JS files that have `@ts-check` comment. + * If you have it enabled in tsconfig, this will not overwrite it. + */ + allowJs?: boolean; + /** + * Do not fail, if Vitest found errors outside the test files. + */ + ignoreSourceErrors?: boolean; + /** + * Path to tsconfig, relative to the project root. + */ + tsconfig?: string; +} +interface UserConfig extends InlineConfig { + /** + * Path to the config file. + * + * Default resolving to `vitest.config.*`, `vite.config.*` + * + * Setting to `false` will disable config resolving. + */ + config?: string | false | undefined; + /** + * Use happy-dom + */ + dom?: boolean; + /** + * Run tests that cover a list of source files + */ + related?: string[] | string; + /** + * Overrides Vite mode + * @default 'test' + */ + mode?: string; + /** + * Runs tests that are affected by the changes in the repository, or between specified branch or commit hash + * Requires initialized git repository + * @default false + */ + changed?: boolean | string; + /** + * Test suite shard to execute in a format of /. + * Will divide tests into a `count` numbers, and run only the `indexed` part. + * Cannot be used with enabled watch. + * @example --shard=2/3 + */ + shard?: string; + /** + * Name of the project or projects to run. + */ + project?: string | string[]; + /** + * Additional exclude patterns + */ + cliExclude?: string[]; +} +interface ResolvedConfig extends Omit, 'config' | 'filters' | 'browser' | 'coverage' | 'testNamePattern' | 'related' | 'api' | 'reporters' | 'resolveSnapshotPath' | 'benchmark' | 'shard' | 'cache' | 'sequence' | 'typecheck' | 'runner' | 'poolOptions' | 'pool' | 'cliExclude'> { + mode: VitestRunMode; + base?: string; + config?: string; + filters?: string[]; + testNamePattern?: RegExp; + related?: string[]; + coverage: ResolvedCoverageOptions; + snapshotOptions: SnapshotStateOptions; + browser: ResolvedBrowserOptions; + pool: Pool; + poolOptions?: PoolOptions; + reporters: (InlineReporter | ReporterWithOptions)[]; + defines: Record; + api?: ApiConfig; + cliExclude?: string[]; + benchmark?: Required> & Pick; + shard?: { + index: number; + count: number; + }; + cache: { + dir: string; + } | false; + sequence: { + sequencer: TestSequencerConstructor; + hooks: SequenceHooks; + setupFiles: SequenceSetupFiles; + shuffle?: boolean; + concurrent?: boolean; + seed: number; + }; + typecheck: Omit & { + enabled: boolean; + }; + runner?: string; +} +type ProjectConfig = Omit & { + sequencer?: Omit; + deps?: Omit; + poolOptions?: { + threads?: Pick, 'singleThread' | 'isolate'>; + vmThreads?: Pick, 'singleThread'>; + forks?: Pick, 'singleFork' | 'isolate'>; + }; +}; +type RuntimeConfig = Pick & { + sequence?: { + concurrent?: boolean; + hooks?: SequenceHooks; + }; +}; + +type VitestInlineConfig = InlineConfig; +declare module 'vite' { + interface UserConfig { + /** + * Options for Vitest + */ + test?: VitestInlineConfig; + } +} + +declare global { + namespace Chai { + interface Assertion { + containSubset: (expected: any) => Assertion; + } + interface Assert { + containSubset: (val: any, exp: any, msg?: string) => void; + } + } +} +interface SnapshotMatcher { + (snapshot: Partial, message?: string): void; + (message?: string): void; +} +interface InlineSnapshotMatcher { + (properties: Partial, snapshot?: string, message?: string): void; + (message?: string): void; +} +declare module '@vitest/expect' { + interface MatcherState { + environment: VitestEnvironment; + snapshotState: SnapshotState; + } + interface ExpectStatic { + addSnapshotSerializer: (plugin: Plugin_2) => void; + } + interface Assertion { + matchSnapshot: SnapshotMatcher; + toMatchSnapshot: SnapshotMatcher; + toMatchInlineSnapshot: InlineSnapshotMatcher; + toThrowErrorMatchingSnapshot: (message?: string) => void; + toThrowErrorMatchingInlineSnapshot: (snapshot?: string, message?: string) => void; + toMatchFileSnapshot: (filepath: string, message?: string) => Promise; + } +} +declare module '@vitest/runner' { + interface TestContext { + expect: ExpectStatic; + } + interface TaskMeta { + typecheck?: boolean; + benchmark?: boolean; + } + interface File { + prepareDuration?: number; + environmentLoad?: number; + } + interface TaskBase { + logs?: UserConsoleLog[]; + } + interface TaskResult { + benchmark?: BenchmarkResult; + } +} + +type RawErrsMap = Map; +interface TscErrorInfo { + filePath: string; + errCode: number; + errMsg: string; + line: number; + column: number; +} +interface CollectLineNumbers { + target: number; + next: number; + prev?: number; +} +type CollectLines = { + [key in keyof CollectLineNumbers]: string; +}; +interface RootAndTarget { + root: string; + targetAbsPath: string; +} +type Context = RootAndTarget & { + rawErrsMap: RawErrsMap; + openedDirs: Set; + lastActivePath?: string; +}; + +export { type ProjectConfig as $, type AfterSuiteRunMeta as A, type BaseCoverageOptions as B, type CoverageOptions as C, type RootAndTarget as D, type Environment as E, type FakeTimerInstallOpts as F, type Context as G, type Pool as H, type PoolOptions as I, type JSDOMOptions as J, type HappyDOMOptions as K, type BuiltinEnvironment as L, type MockFactoryWithHelper as M, type VitestEnvironment as N, type CSSModuleScopeStrategy as O, type ProvidedContext as P, type ApiConfig as Q, type ResolvedConfig as R, type EnvironmentOptions as S, type TestSequencer as T, type UserConfig as U, type VitestRunMode as V, WorkspaceProject as W, type DepsOptimizationOptions as X, type TransformModePatterns as Y, type InlineConfig as Z, type TypecheckConfig as _, type ResolvedCoverageOptions as a, type UserWorkspaceConfig as a0, type RunnerRPC as a1, type ContextTestEnvironment as a2, type ResolvedTestEnvironment as a3, type ResolveIdFunction as a4, type WorkerRPC as a5, type Awaitable as a6, type Nullable as a7, type Arrayable as a8, type ArgumentsType$1 as a9, defineProject as aA, defineWorkspace as aB, configDefaults as aC, defaultInclude as aD, defaultExclude as aE, coverageConfigDefaults as aF, extraInlineDeps as aG, DefaultReporter as aH, BasicReporter as aI, DotReporter as aJ, JsonReporter$1 as aK, VerboseReporter as aL, TapReporter as aM, JUnitReporter as aN, TapFlatReporter as aO, HangingProcessReporter as aP, GithubActionsReporter as aQ, BaseReporter as aR, ReportersMap as aS, type BuiltinReporters as aT, type BuiltinReporterOptions as aU, type JsonAssertionResult as aV, type JsonTestResult as aW, type JsonTestResults as aX, BenchmarkReportsMap as aY, type BenchmarkBuiltinReporters as aZ, type MutableArray as aa, type Constructable as ab, type ModuleCache as ac, type EnvironmentReturn as ad, type VmEnvironmentReturn as ae, type OnServerRestartHandler as af, type ReportContext as ag, type CoverageReporter as ah, type CoverageIstanbulOptions as ai, type CoverageV8Options as aj, type CustomProviderOptions as ak, type BenchmarkUserOptions as al, type Benchmark as am, type BenchmarkResult as an, type BenchFunction as ao, type BenchmarkAPI as ap, type PendingSuiteMock as aq, type MockFactory as ar, type MockMap as as, type UserConfigFnObject as at, type UserConfigFnPromise as au, type UserConfigFn as av, type UserConfigExport as aw, type UserProjectConfigFn as ax, type UserProjectConfigExport as ay, defineConfig as az, type CoverageProvider as b, type CoverageProviderModule as c, type VitestOptions as d, Vitest as e, type RuntimeRPC as f, type WorkspaceSpec as g, type ProcessPool as h, VitestPackageInstaller as i, type TestSequencerConstructor as j, type BrowserProviderInitializationOptions as k, type BrowserProvider as l, type BrowserProviderOptions as m, type BirpcOptions as n, type ContextRPC as o, type WorkerGlobalState as p, type WorkerContext as q, type RuntimeConfig as r, startVitest as s, type UserConsoleLog as t, type ModuleGraphData as u, type Reporter as v, type RawErrsMap as w, type TscErrorInfo as x, type CollectLineNumbers as y, type CollectLines as z }; diff --git a/.pnpm-store/v3/files/71/be82648fdc01c5ceba91ccb3f525278312058a677893e8165b9361bcf084de8d5ea8ae0cc68a7f6b2aff8860df0b6b50f9f3e2fdcf67555f87202b49f3c144 b/.pnpm-store/v3/files/71/be82648fdc01c5ceba91ccb3f525278312058a677893e8165b9361bcf084de8d5ea8ae0cc68a7f6b2aff8860df0b6b50f9f3e2fdcf67555f87202b49f3c144 new file mode 100644 index 00000000..7db06811 --- /dev/null +++ b/.pnpm-store/v3/files/71/be82648fdc01c5ceba91ccb3f525278312058a677893e8165b9361bcf084de8d5ea8ae0cc68a7f6b2aff8860df0b6b50f9f3e2fdcf67555f87202b49f3c144 @@ -0,0 +1,60 @@ +import { Plugin, OptionsReceived } from 'pretty-format'; +import { S as SnapshotEnvironment } from './environment-cMiGIVXz.js'; + +interface RawSnapshotInfo { + file: string; + readonly?: boolean; + content?: string; +} + +type SnapshotData = Record; +type SnapshotUpdateState = 'all' | 'new' | 'none'; +type SnapshotSerializer = Plugin; +interface SnapshotStateOptions { + updateSnapshot: SnapshotUpdateState; + snapshotEnvironment: SnapshotEnvironment; + expand?: boolean; + snapshotFormat?: OptionsReceived; + resolveSnapshotPath?: (path: string, extension: string) => string; +} +interface SnapshotMatchOptions { + testName: string; + received: unknown; + key?: string; + inlineSnapshot?: string; + isInline: boolean; + error?: Error; + rawSnapshot?: RawSnapshotInfo; +} +interface SnapshotResult { + filepath: string; + added: number; + fileDeleted: boolean; + matched: number; + unchecked: number; + uncheckedKeys: Array; + unmatched: number; + updated: number; +} +interface UncheckedSnapshot { + filePath: string; + keys: Array; +} +interface SnapshotSummary { + added: number; + didUpdate: boolean; + failure: boolean; + filesAdded: number; + filesRemoved: number; + filesRemovedList: Array; + filesUnmatched: number; + filesUpdated: number; + matched: number; + total: number; + unchecked: number; + uncheckedKeysByFile: Array; + unmatched: number; + updated: number; +} + +export type { RawSnapshotInfo as R, SnapshotStateOptions as S, UncheckedSnapshot as U, SnapshotMatchOptions as a, SnapshotResult as b, SnapshotData as c, SnapshotUpdateState as d, SnapshotSerializer as e, SnapshotSummary as f }; diff --git a/.pnpm-store/v3/files/76/19ae98039220f9706e0b50bf33068342bdcc4c1de7d7c6f08819d5dd774bb23f576200750dc87dc3b66edfc7112499e8db2728ac2b03eedb92daaa38e74629 b/.pnpm-store/v3/files/76/19ae98039220f9706e0b50bf33068342bdcc4c1de7d7c6f08819d5dd774bb23f576200750dc87dc3b66edfc7112499e8db2728ac2b03eedb92daaa38e74629 new file mode 100644 index 00000000..8695e5de --- /dev/null +++ b/.pnpm-store/v3/files/76/19ae98039220f9706e0b50bf33068342bdcc4c1de7d7c6f08819d5dd774bb23f576200750dc87dc3b66edfc7112499e8db2728ac2b03eedb92daaa38e74629 @@ -0,0 +1,18 @@ +import { S as SnapshotStateOptions, f as SnapshotSummary, b as SnapshotResult } from './index-S94ASl6q.js'; +import 'pretty-format'; +import './environment-cMiGIVXz.js'; + +declare class SnapshotManager { + options: Omit; + summary: SnapshotSummary; + extension: string; + constructor(options: Omit); + clear(): void; + add(result: SnapshotResult): void; + resolvePath(testPath: string): string; + resolveRawPath(testPath: string, rawPath: string): string; +} +declare function emptySummary(options: Omit): SnapshotSummary; +declare function addSnapshotResult(summary: SnapshotSummary, result: SnapshotResult): void; + +export { SnapshotManager, addSnapshotResult, emptySummary }; diff --git a/.pnpm-store/v3/files/76/2081e205700aa0931625b119c47ded47fdbccbb73c8fec6b339c35d83f70d7709fd1a4507a099aae9fc4c709388c6394a65d28e5c2a2a15a28ebaf81a95f3e b/.pnpm-store/v3/files/76/2081e205700aa0931625b119c47ded47fdbccbb73c8fec6b339c35d83f70d7709fd1a4507a099aae9fc4c709388c6394a65d28e5c2a2a15a28ebaf81a95f3e new file mode 100644 index 00000000..56f2b435 --- /dev/null +++ b/.pnpm-store/v3/files/76/2081e205700aa0931625b119c47ded47fdbccbb73c8fec6b339c35d83f70d7709fd1a4507a099aae9fc4c709388c6394a65d28e5c2a2a15a28ebaf81a95f3e @@ -0,0 +1,2 @@ +import type { IImage } from './interface.ts'; +export declare const JPG: IImage; diff --git a/.pnpm-store/v3/files/77/a8cd9970fc6d5873d7952196ea46d827466e10de7384fb056658f47735d28c5b8ac4c60cbbce418be69b9183bcd8b5ac9a1125f42080c09b93bd27d3bb57b3 b/.pnpm-store/v3/files/77/a8cd9970fc6d5873d7952196ea46d827466e10de7384fb056658f47735d28c5b8ac4c60cbbce418be69b9183bcd8b5ac9a1125f42080c09b93bd27d3bb57b3 new file mode 100644 index 00000000..a3328e23 --- /dev/null +++ b/.pnpm-store/v3/files/77/a8cd9970fc6d5873d7952196ea46d827466e10de7384fb056658f47735d28c5b8ac4c60cbbce418be69b9183bcd8b5ac9a1125f42080c09b93bd27d3bb57b3 @@ -0,0 +1,564 @@ +const UnknownCompilerError = { + name: "UnknownCompilerError", + title: "Unknown compiler error.", + hint: "This is almost always a problem with the Astro compiler, not your code. Please open an issue at https://astro.build/issues/compiler." +}; +const StaticRedirectNotAvailable = { + name: "StaticRedirectNotAvailable", + title: "`Astro.redirect` is not available in static mode.", + message: "Redirects are only available when using `output: 'server'` or `output: 'hybrid'`. Update your Astro config if you need SSR features.", + hint: "See https://docs.astro.build/en/guides/server-side-rendering/ for more information on how to enable SSR." +}; +const ClientAddressNotAvailable = { + name: "ClientAddressNotAvailable", + title: "`Astro.clientAddress` is not available in current adapter.", + message: (adapterName) => `\`Astro.clientAddress\` is not available in the \`${adapterName}\` adapter. File an issue with the adapter to add support.` +}; +const StaticClientAddressNotAvailable = { + name: "StaticClientAddressNotAvailable", + title: "`Astro.clientAddress` is not available in static mode.", + message: "`Astro.clientAddress` is only available when using `output: 'server'` or `output: 'hybrid'`. Update your Astro config if you need SSR features.", + hint: "See https://docs.astro.build/en/guides/server-side-rendering/ for more information on how to enable SSR." +}; +const NoMatchingStaticPathFound = { + name: "NoMatchingStaticPathFound", + title: "No static path found for requested path.", + message: (pathName) => `A \`getStaticPaths()\` route pattern was matched, but no matching static path was found for requested path \`${pathName}\`.`, + hint: (possibleRoutes) => `Possible dynamic routes being matched: ${possibleRoutes.join(", ")}.` +}; +const OnlyResponseCanBeReturned = { + name: "OnlyResponseCanBeReturned", + title: "Invalid type returned by Astro page.", + message: (route, returnedValue) => `Route \`${route ? route : ""}\` returned a \`${returnedValue}\`. Only a [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) can be returned from Astro files.`, + hint: "See https://docs.astro.build/en/guides/server-side-rendering/#response for more information." +}; +const MissingMediaQueryDirective = { + name: "MissingMediaQueryDirective", + title: "Missing value for `client:media` directive.", + message: 'Media query not provided for `client:media` directive. A media query similar to `client:media="(max-width: 600px)"` must be provided' +}; +const NoMatchingRenderer = { + name: "NoMatchingRenderer", + title: "No matching renderer found.", + message: (componentName, componentExtension, plural, validRenderersCount) => `Unable to render \`${componentName}\`. + +${validRenderersCount > 0 ? `There ${plural ? "are" : "is"} ${validRenderersCount} renderer${plural ? "s" : ""} configured in your \`astro.config.mjs\` file, +but ${plural ? "none were" : "it was not"} able to server-side render \`${componentName}\`.` : `No valid renderer was found ${componentExtension ? `for the \`.${componentExtension}\` file extension.` : `for this file extension.`}`}`, + hint: (probableRenderers) => `Did you mean to enable the ${probableRenderers} integration? + +See https://docs.astro.build/en/guides/framework-components/ for more information on how to install and configure integrations.` +}; +const NoClientEntrypoint = { + name: "NoClientEntrypoint", + title: "No client entrypoint specified in renderer.", + message: (componentName, clientDirective, rendererName) => `\`${componentName}\` component has a \`client:${clientDirective}\` directive, but no client entrypoint was provided by \`${rendererName}\`.`, + hint: "See https://docs.astro.build/en/reference/integrations-reference/#addrenderer-option for more information on how to configure your renderer." +}; +const NoClientOnlyHint = { + name: "NoClientOnlyHint", + title: "Missing hint on client:only directive.", + message: (componentName) => `Unable to render \`${componentName}\`. When using the \`client:only\` hydration strategy, Astro needs a hint to use the correct renderer.`, + hint: (probableRenderers) => `Did you mean to pass \`client:only="${probableRenderers}"\`? See https://docs.astro.build/en/reference/directives-reference/#clientonly for more information on client:only` +}; +const InvalidGetStaticPathParam = { + name: "InvalidGetStaticPathParam", + title: "Invalid value returned by a `getStaticPaths` path.", + message: (paramType) => `Invalid params given to \`getStaticPaths\` path. Expected an \`object\`, got \`${paramType}\``, + hint: "See https://docs.astro.build/en/reference/api-reference/#getstaticpaths for more information on getStaticPaths." +}; +const InvalidGetStaticPathsEntry = { + name: "InvalidGetStaticPathsEntry", + title: "Invalid entry inside getStaticPath's return value", + message: (entryType) => `Invalid entry returned by getStaticPaths. Expected an object, got \`${entryType}\``, + hint: "If you're using a `.map` call, you might be looking for `.flatMap()` instead. See https://docs.astro.build/en/reference/api-reference/#getstaticpaths for more information on getStaticPaths." +}; +const InvalidGetStaticPathsReturn = { + name: "InvalidGetStaticPathsReturn", + title: "Invalid value returned by getStaticPaths.", + message: (returnType) => `Invalid type returned by \`getStaticPaths\`. Expected an \`array\`, got \`${returnType}\``, + hint: "See https://docs.astro.build/en/reference/api-reference/#getstaticpaths for more information on getStaticPaths." +}; +const GetStaticPathsRemovedRSSHelper = { + name: "GetStaticPathsRemovedRSSHelper", + title: "getStaticPaths RSS helper is not available anymore.", + message: "The RSS helper has been removed from `getStaticPaths`. Try the new @astrojs/rss package instead.", + hint: "See https://docs.astro.build/en/guides/rss/ for more information." +}; +const GetStaticPathsExpectedParams = { + name: "GetStaticPathsExpectedParams", + title: "Missing params property on `getStaticPaths` route.", + message: "Missing or empty required `params` property on `getStaticPaths` route.", + hint: "See https://docs.astro.build/en/reference/api-reference/#getstaticpaths for more information on getStaticPaths." +}; +const GetStaticPathsInvalidRouteParam = { + name: "GetStaticPathsInvalidRouteParam", + title: "Invalid value for `getStaticPaths` route parameter.", + message: (key, value, valueType) => `Invalid getStaticPaths route parameter for \`${key}\`. Expected undefined, a string or a number, received \`${valueType}\` (\`${value}\`)`, + hint: "See https://docs.astro.build/en/reference/api-reference/#getstaticpaths for more information on getStaticPaths." +}; +const GetStaticPathsRequired = { + name: "GetStaticPathsRequired", + title: "`getStaticPaths()` function required for dynamic routes.", + message: "`getStaticPaths()` function is required for dynamic routes. Make sure that you `export` a `getStaticPaths` function from your dynamic route.", + hint: `See https://docs.astro.build/en/guides/routing/#dynamic-routes for more information on dynamic routes. + +Alternatively, set \`output: "server"\` or \`output: "hybrid"\` in your Astro config file to switch to a non-static server build. This error can also occur if using \`export const prerender = true;\`. +See https://docs.astro.build/en/guides/server-side-rendering/ for more information on non-static rendering.` +}; +const ReservedSlotName = { + name: "ReservedSlotName", + title: "Invalid slot name.", + message: (slotName) => `Unable to create a slot named \`${slotName}\`. \`${slotName}\` is a reserved slot name. Please update the name of this slot.` +}; +const NoAdapterInstalled = { + name: "NoAdapterInstalled", + title: "Cannot use Server-side Rendering without an adapter.", + message: `Cannot use \`output: 'server'\` or \`output: 'hybrid'\` without an adapter. Please install and configure the appropriate server adapter for your final deployment.`, + hint: "See https://docs.astro.build/en/guides/server-side-rendering/ for more information." +}; +const NoMatchingImport = { + name: "NoMatchingImport", + title: "No import found for component.", + message: (componentName) => `Could not render \`${componentName}\`. No matching import has been found for \`${componentName}\`.`, + hint: "Please make sure the component is properly imported." +}; +const InvalidPrerenderExport = { + name: "InvalidPrerenderExport", + title: "Invalid prerender export.", + message(prefix, suffix, isHydridOuput) { + const defaultExpectedValue = isHydridOuput ? "false" : "true"; + let msg = `A \`prerender\` export has been detected, but its value cannot be statically analyzed.`; + if (prefix !== "const") + msg += ` +Expected \`const\` declaration but got \`${prefix}\`.`; + if (suffix !== "true") + msg += ` +Expected \`${defaultExpectedValue}\` value but got \`${suffix}\`.`; + return msg; + }, + hint: "Mutable values declared at runtime are not supported. Please make sure to use exactly `export const prerender = true`." +}; +const InvalidComponentArgs = { + name: "InvalidComponentArgs", + title: "Invalid component arguments.", + message: (name) => `Invalid arguments passed to${name ? ` <${name}>` : ""} component.`, + hint: "Astro components cannot be rendered directly via function call, such as `Component()` or `{items.map(Component)}`." +}; +const PageNumberParamNotFound = { + name: "PageNumberParamNotFound", + title: "Page number param not found.", + message: (paramName) => `[paginate()] page number param \`${paramName}\` not found in your filepath.`, + hint: "Rename your file to `[page].astro` or `[...page].astro`." +}; +const ImageMissingAlt = { + name: "ImageMissingAlt", + title: 'Image missing required "alt" property.', + message: 'Image missing "alt" property. "alt" text is required to describe important images on the page.', + hint: 'Use an empty string ("") for decorative images.' +}; +const InvalidImageService = { + name: "InvalidImageService", + title: "Error while loading image service.", + message: "There was an error loading the configured image service. Please see the stack trace for more information." +}; +const MissingImageDimension = { + name: "MissingImageDimension", + title: "Missing image dimensions", + message: (missingDimension, imageURL) => `Missing ${missingDimension === "both" ? "width and height attributes" : `${missingDimension} attribute`} for ${imageURL}. When using remote images, both dimensions are required unless in order to avoid CLS.`, + hint: "If your image is inside your `src` folder, you probably meant to import it instead. See [the Imports guide for more information](https://docs.astro.build/en/guides/imports/#other-assets). You can also use `inferSize={true}` for remote images to get the original dimensions." +}; +const FailedToFetchRemoteImageDimensions = { + name: "FailedToFetchRemoteImageDimensions", + title: "Failed to retrieve remote image dimensions", + message: (imageURL) => `Failed to get the dimensions for ${imageURL}.`, + hint: "Verify your remote image URL is accurate, and that you are not using `inferSize` with a file located in your `public/` folder." +}; +const UnsupportedImageFormat = { + name: "UnsupportedImageFormat", + title: "Unsupported image format", + message: (format, imagePath, supportedFormats) => `Received unsupported format \`${format}\` from \`${imagePath}\`. Currently only ${supportedFormats.join( + ", " + )} are supported by our image services.`, + hint: "Using an `img` tag directly instead of the `Image` component might be what you're looking for." +}; +const UnsupportedImageConversion = { + name: "UnsupportedImageConversion", + title: "Unsupported image conversion", + message: "Converting between vector (such as SVGs) and raster (such as PNGs and JPEGs) images is not currently supported." +}; +const PrerenderDynamicEndpointPathCollide = { + name: "PrerenderDynamicEndpointPathCollide", + title: "Prerendered dynamic endpoint has path collision.", + message: (pathname) => `Could not render \`${pathname}\` with an \`undefined\` param as the generated path will collide during prerendering. Prevent passing \`undefined\` as \`params\` for the endpoint's \`getStaticPaths()\` function, or add an additional extension to the endpoint's filename.`, + hint: (filename) => `Rename \`${filename}\` to \`${filename.replace(/\.(?:js|ts)/, (m) => `.json` + m)}\`` +}; +const ExpectedImage = { + name: "ExpectedImage", + title: "Expected src to be an image.", + message: (src, typeofOptions, fullOptions) => `Expected \`src\` property for \`getImage\` or \`\` to be either an ESM imported image or a string with the path of a remote image. Received \`${src}\` (type: \`${typeofOptions}\`). + +Full serialized options received: \`${fullOptions}\`.`, + hint: "This error can often happen because of a wrong path. Make sure the path to your image is correct. If you're passing an async function, make sure to call and await it." +}; +const ExpectedImageOptions = { + name: "ExpectedImageOptions", + title: "Expected image options.", + message: (options) => `Expected getImage() parameter to be an object. Received \`${options}\`.` +}; +const IncompatibleDescriptorOptions = { + name: "IncompatibleDescriptorOptions", + title: "Cannot set both `densities` and `widths`", + message: "Only one of `densities` or `widths` can be specified. In most cases, you'll probably want to use only `widths` if you require specific widths.", + hint: "Those attributes are used to construct a `srcset` attribute, which cannot have both `x` and `w` descriptors." +}; +const ImageNotFound = { + name: "ImageNotFound", + title: "Image not found.", + message: (imagePath) => `Could not find requested image \`${imagePath}\`. Does it exist?`, + hint: "This is often caused by a typo in the image path. Please make sure the file exists, and is spelled correctly." +}; +const NoImageMetadata = { + name: "NoImageMetadata", + title: "Could not process image metadata.", + message: (imagePath) => `Could not process image metadata${imagePath ? ` for \`${imagePath}\`` : ""}.`, + hint: "This is often caused by a corrupted or malformed image. Re-exporting the image from your image editor may fix this issue." +}; +const MarkdownImageNotFound = { + name: "MarkdownImageNotFound", + title: "Image not found.", + message: (imagePath, fullImagePath) => `Could not find requested image \`${imagePath}\`${fullImagePath ? ` at \`${fullImagePath}\`.` : "."}`, + hint: "This is often caused by a typo in the image path. Please make sure the file exists, and is spelled correctly." +}; +const CouldNotTransformImage = { + name: "CouldNotTransformImage", + title: "Could not transform image.", + message: (imagePath) => `Could not transform image \`${imagePath}\`. See the stack trace for more information.`, + hint: "This is often caused by a corrupted or malformed image. Re-exporting the image from your image editor may fix this issue." +}; +const ResponseSentError = { + name: "ResponseSentError", + title: "Unable to set response.", + message: "The response has already been sent to the browser and cannot be altered." +}; +const MiddlewareNoDataOrNextCalled = { + name: "MiddlewareNoDataOrNextCalled", + title: "The middleware didn't return a `Response`.", + message: "Make sure your middleware returns a `Response` object, either directly or by returning the `Response` from calling the `next` function." +}; +const MiddlewareNotAResponse = { + name: "MiddlewareNotAResponse", + title: "The middleware returned something that is not a `Response` object.", + message: "Any data returned from middleware must be a valid `Response` object." +}; +const LocalsNotAnObject = { + name: "LocalsNotAnObject", + title: "Value assigned to `locals` is not accepted.", + message: "`locals` can only be assigned to an object. Other values like numbers, strings, etc. are not accepted.", + hint: "If you tried to remove some information from the `locals` object, try to use `delete` or set the property to `undefined`." +}; +const MiddlewareCantBeLoaded = { + name: "MiddlewareCantBeLoaded", + title: "Can't load the middleware.", + message: "The middleware threw an error while Astro was trying to loading it." +}; +const LocalImageUsedWrongly = { + name: "LocalImageUsedWrongly", + title: "Local images must be imported.", + message: (imageFilePath) => `\`Image\`'s and \`getImage\`'s \`src\` parameter must be an imported image or an URL, it cannot be a string filepath. Received \`${imageFilePath}\`.`, + hint: "If you want to use an image from your `src` folder, you need to either import it or if the image is coming from a content collection, use the [image() schema helper](https://docs.astro.build/en/guides/images/#images-in-content-collections). See https://docs.astro.build/en/guides/images/#src-required for more information on the `src` property." +}; +const AstroGlobUsedOutside = { + name: "AstroGlobUsedOutside", + title: "Astro.glob() used outside of an Astro file.", + message: (globStr) => `\`Astro.glob(${globStr})\` can only be used in \`.astro\` files. \`import.meta.glob(${globStr})\` can be used instead to achieve a similar result.`, + hint: "See Vite's documentation on `import.meta.glob` for more information: https://vitejs.dev/guide/features.html#glob-import" +}; +const AstroGlobNoMatch = { + name: "AstroGlobNoMatch", + title: "Astro.glob() did not match any files.", + message: (globStr) => `\`Astro.glob(${globStr})\` did not return any matching files.`, + hint: "Check the pattern for typos." +}; +const RedirectWithNoLocation = { + name: "RedirectWithNoLocation", + title: "A redirect must be given a location with the `Location` header." +}; +const InvalidDynamicRoute = { + name: "InvalidDynamicRoute", + title: "Invalid dynamic route.", + message: (route, invalidParam, received) => `The ${invalidParam} param for route ${route} is invalid. Received **${received}**.` +}; +const MissingSharp = { + name: "MissingSharp", + title: "Could not find Sharp.", + message: "Could not find Sharp. Please install Sharp (`sharp`) manually into your project or migrate to another image service.", + hint: "See Sharp's installation instructions for more information: https://sharp.pixelplumbing.com/install. If you are not relying on `astro:assets` to optimize, transform, or process any images, you can configure a passthrough image service instead of installing Sharp. See https://docs.astro.build/en/reference/errors/missing-sharp for more information.\n\nSee https://docs.astro.build/en/guides/images/#default-image-service for more information on how to migrate to another image service." +}; +const UnknownViteError = { + name: "UnknownViteError", + title: "Unknown Vite Error." +}; +const FailedToLoadModuleSSR = { + name: "FailedToLoadModuleSSR", + title: "Could not import file.", + message: (importName) => `Could not import \`${importName}\`.`, + hint: "This is often caused by a typo in the import path. Please make sure the file exists." +}; +const InvalidGlob = { + name: "InvalidGlob", + title: "Invalid glob pattern.", + message: (globPattern) => `Invalid glob pattern: \`${globPattern}\`. Glob patterns must start with './', '../' or '/'.`, + hint: "See https://docs.astro.build/en/guides/imports/#glob-patterns for more information on supported glob patterns." +}; +const FailedToFindPageMapSSR = { + name: "FailedToFindPageMapSSR", + title: "Astro couldn't find the correct page to render", + message: "Astro couldn't find the correct page to render, probably because it wasn't correctly mapped for SSR usage. This is an internal error. Please file an issue." +}; +const MissingLocale = { + name: "MissingLocaleError", + title: "The provided locale does not exist.", + message: (locale) => `The locale/path \`${locale}\` does not exist in the configured \`i18n.locales\`.` +}; +const MissingIndexForInternationalization = { + name: "MissingIndexForInternationalizationError", + title: "Index page not found.", + message: (defaultLocale) => `Could not find index page. A root index page is required in order to create a redirect to the index URL of the default locale. (\`/${defaultLocale}\`)`, + hint: (src) => `Create an index page (\`index.astro, index.md, etc.\`) in \`${src}\`.` +}; +const NoPrerenderedRoutesWithDomains = { + name: "NoPrerenderedRoutesWithDomains", + title: "Prerendered routes aren't supported when internationalization domains are enabled.", + message: (component) => `Static pages aren't yet supported with multiple domains. If you wish to enable this feature, you have to disable prerendering for the page ${component}` +}; +const CantRenderPage = { + name: "CantRenderPage", + title: "Astro can't render the route.", + message: "Astro cannot find any content to render for this route. There is no file or redirect associated with this route.", + hint: "If you expect to find a route here, this may be an Astro bug. Please file an issue/restart the dev server" +}; +const UnhandledRejection = { + name: "UnhandledRejection", + title: "Unhandled rejection", + message: (stack) => `Astro detected an unhandled rejection. Here's the stack trace: +${stack}`, + hint: "Make sure your promises all have an `await` or a `.catch()` handler." +}; +const i18nNotEnabled = { + name: "i18nNotEnabled", + title: "i18n Not Enabled", + message: "The `astro:i18n` module can not be used without enabling i18n in your Astro config.", + hint: "See https://docs.astro.build/en/guides/internationalization for a guide on setting up i18n." +}; +const UnknownCSSError = { + name: "UnknownCSSError", + title: "Unknown CSS Error." +}; +const CSSSyntaxError = { + name: "CSSSyntaxError", + title: "CSS Syntax Error." +}; +const UnknownMarkdownError = { + name: "UnknownMarkdownError", + title: "Unknown Markdown Error." +}; +const MarkdownFrontmatterParseError = { + name: "MarkdownFrontmatterParseError", + title: "Failed to parse Markdown frontmatter." +}; +const InvalidFrontmatterInjectionError = { + name: "InvalidFrontmatterInjectionError", + title: "Invalid frontmatter injection.", + message: 'A remark or rehype plugin attempted to inject invalid frontmatter. Ensure "astro.frontmatter" is set to a valid JSON object that is not `null` or `undefined`.', + hint: "See the frontmatter injection docs https://docs.astro.build/en/guides/markdown-content/#modifying-frontmatter-programmatically for more information." +}; +const MdxIntegrationMissingError = { + name: "MdxIntegrationMissingError", + title: "MDX integration missing.", + message: (file) => `Unable to render ${file}. Ensure that the \`@astrojs/mdx\` integration is installed.`, + hint: "See the MDX integration docs for installation and usage instructions: https://docs.astro.build/en/guides/integrations-guide/mdx/" +}; +const UnknownConfigError = { + name: "UnknownConfigError", + title: "Unknown configuration error." +}; +const ConfigNotFound = { + name: "ConfigNotFound", + title: "Specified configuration file not found.", + message: (configFile) => `Unable to resolve \`--config "${configFile}"\`. Does the file exist?` +}; +const ConfigLegacyKey = { + name: "ConfigLegacyKey", + title: "Legacy configuration detected.", + message: (legacyConfigKey) => `Legacy configuration detected: \`${legacyConfigKey}\`.`, + hint: "Please update your configuration to the new format.\nSee https://astro.build/config for more information." +}; +const UnknownCLIError = { + name: "UnknownCLIError", + title: "Unknown CLI Error." +}; +const GenerateContentTypesError = { + name: "GenerateContentTypesError", + title: "Failed to generate content types.", + message: (errorMessage) => `\`astro sync\` command failed to generate content collection types: ${errorMessage}`, + hint: "Check your `src/content/config.*` file for typos." +}; +const UnknownContentCollectionError = { + name: "UnknownContentCollectionError", + title: "Unknown Content Collection Error." +}; +const InvalidContentEntryFrontmatterError = { + name: "InvalidContentEntryFrontmatterError", + title: "Content entry frontmatter does not match schema.", + message(collection, entryId, error) { + return [ + `**${String(collection)} \u2192 ${String( + entryId + )}** frontmatter does not match collection schema.`, + ...error.errors.map((zodError) => zodError.message) + ].join("\n"); + }, + hint: "See https://docs.astro.build/en/guides/content-collections/ for more information on content schemas." +}; +const InvalidContentEntrySlugError = { + name: "InvalidContentEntrySlugError", + title: "Invalid content entry slug.", + message(collection, entryId) { + return `${String(collection)} \u2192 ${String( + entryId + )} has an invalid slug. \`slug\` must be a string.`; + }, + hint: "See https://docs.astro.build/en/guides/content-collections/ for more on the `slug` field." +}; +const ContentSchemaContainsSlugError = { + name: "ContentSchemaContainsSlugError", + title: "Content Schema should not contain `slug`.", + message: (collectionName) => `A content collection schema should not contain \`slug\` since it is reserved for slug generation. Remove this from your ${collectionName} collection schema.`, + hint: "See https://docs.astro.build/en/guides/content-collections/ for more on the `slug` field." +}; +const CollectionDoesNotExistError = { + name: "CollectionDoesNotExistError", + title: "Collection does not exist", + message: (collectionName) => `The collection **${collectionName}** does not exist. Ensure a collection directory with this name exists.`, + hint: "See https://docs.astro.build/en/guides/content-collections/ for more on creating collections." +}; +const MixedContentDataCollectionError = { + name: "MixedContentDataCollectionError", + title: "Content and data cannot be in same collection.", + message: (collectionName) => `**${collectionName}** contains a mix of content and data entries. All entries must be of the same type.`, + hint: "Store data entries in a new collection separate from your content collection." +}; +const ContentCollectionTypeMismatchError = { + name: "ContentCollectionTypeMismatchError", + title: "Collection contains entries of a different type.", + message: (collection, expectedType, actualType) => `${collection} contains ${expectedType} entries, but is configured as a ${actualType} collection.` +}; +const DataCollectionEntryParseError = { + name: "DataCollectionEntryParseError", + title: "Data collection entry failed to parse.", + message(entryId, errorMessage) { + return `**${entryId}** failed to parse: ${errorMessage}`; + }, + hint: "Ensure your data entry is an object with valid JSON (for `.json` entries) or YAML (for `.yaml` entries)." +}; +const DuplicateContentEntrySlugError = { + name: "DuplicateContentEntrySlugError", + title: "Duplicate content entry slug.", + message(collection, slug, preExisting, alsoFound) { + return `**${collection}** contains multiple entries with the same slug: \`${slug}\`. Slugs must be unique. + +Entries: +- ${preExisting} +- ${alsoFound}`; + } +}; +const UnsupportedConfigTransformError = { + name: "UnsupportedConfigTransformError", + title: "Unsupported transform in content config.", + message: (parseError) => `\`transform()\` functions in your content config must return valid JSON, or data types compatible with the devalue library (including Dates, Maps, and Sets). +Full error: ${parseError}`, + hint: "See the devalue library for all supported types: https://github.com/rich-harris/devalue" +}; +const UnknownError = { name: "UnknownError", title: "Unknown Error." }; +export { + AstroGlobNoMatch, + AstroGlobUsedOutside, + CSSSyntaxError, + CantRenderPage, + ClientAddressNotAvailable, + CollectionDoesNotExistError, + ConfigLegacyKey, + ConfigNotFound, + ContentCollectionTypeMismatchError, + ContentSchemaContainsSlugError, + CouldNotTransformImage, + DataCollectionEntryParseError, + DuplicateContentEntrySlugError, + ExpectedImage, + ExpectedImageOptions, + FailedToFetchRemoteImageDimensions, + FailedToFindPageMapSSR, + FailedToLoadModuleSSR, + GenerateContentTypesError, + GetStaticPathsExpectedParams, + GetStaticPathsInvalidRouteParam, + GetStaticPathsRemovedRSSHelper, + GetStaticPathsRequired, + ImageMissingAlt, + ImageNotFound, + IncompatibleDescriptorOptions, + InvalidComponentArgs, + InvalidContentEntryFrontmatterError, + InvalidContentEntrySlugError, + InvalidDynamicRoute, + InvalidFrontmatterInjectionError, + InvalidGetStaticPathParam, + InvalidGetStaticPathsEntry, + InvalidGetStaticPathsReturn, + InvalidGlob, + InvalidImageService, + InvalidPrerenderExport, + LocalImageUsedWrongly, + LocalsNotAnObject, + MarkdownFrontmatterParseError, + MarkdownImageNotFound, + MdxIntegrationMissingError, + MiddlewareCantBeLoaded, + MiddlewareNoDataOrNextCalled, + MiddlewareNotAResponse, + MissingImageDimension, + MissingIndexForInternationalization, + MissingLocale, + MissingMediaQueryDirective, + MissingSharp, + MixedContentDataCollectionError, + NoAdapterInstalled, + NoClientEntrypoint, + NoClientOnlyHint, + NoImageMetadata, + NoMatchingImport, + NoMatchingRenderer, + NoMatchingStaticPathFound, + NoPrerenderedRoutesWithDomains, + OnlyResponseCanBeReturned, + PageNumberParamNotFound, + PrerenderDynamicEndpointPathCollide, + RedirectWithNoLocation, + ReservedSlotName, + ResponseSentError, + StaticClientAddressNotAvailable, + StaticRedirectNotAvailable, + UnhandledRejection, + UnknownCLIError, + UnknownCSSError, + UnknownCompilerError, + UnknownConfigError, + UnknownContentCollectionError, + UnknownError, + UnknownMarkdownError, + UnknownViteError, + UnsupportedConfigTransformError, + UnsupportedImageConversion, + UnsupportedImageFormat, + i18nNotEnabled +}; diff --git a/.pnpm-store/v3/files/77/b5fba4de6b0f4897ec37a6cebc1873ad08a8f963eba08ff24f502b27eb9e6bafb8e9ecad375d32bdeeb3d0b50f3fa41082932b5804c75526fc1c02feed1bf5 b/.pnpm-store/v3/files/77/b5fba4de6b0f4897ec37a6cebc1873ad08a8f963eba08ff24f502b27eb9e6bafb8e9ecad375d32bdeeb3d0b50f3fa41082932b5804c75526fc1c02feed1bf5 new file mode 100644 index 00000000..904e9b01 --- /dev/null +++ b/.pnpm-store/v3/files/77/b5fba4de6b0f4897ec37a6cebc1873ad08a8f963eba08ff24f502b27eb9e6bafb8e9ecad375d32bdeeb3d0b50f3fa41082932b5804c75526fc1c02feed1bf5 @@ -0,0 +1,11 @@ +import { readUInt32LE } from "./utils.js"; +const DDS = { + validate: (input) => readUInt32LE(input, 0) === 542327876, + calculate: (input) => ({ + height: readUInt32LE(input, 12), + width: readUInt32LE(input, 16) + }) +}; +export { + DDS +}; diff --git a/.pnpm-store/v3/files/78/d8f2ec08148f7d7142214072694ee4d60ffb42c74a2b386149913b2b262150f5fca1b6204e9edcf382d6fe59e1f868ec9b087decbcb94093c526ab7520a093 b/.pnpm-store/v3/files/78/d8f2ec08148f7d7142214072694ee4d60ffb42c74a2b386149913b2b262150f5fca1b6204e9edcf382d6fe59e1f868ec9b087decbcb94093c526ab7520a093 new file mode 100644 index 00000000..f50f95d0 --- /dev/null +++ b/.pnpm-store/v3/files/78/d8f2ec08148f7d7142214072694ee4d60ffb42c74a2b386149913b2b262150f5fca1b6204e9edcf382d6fe59e1f868ec9b087decbcb94093c526ab7520a093 @@ -0,0 +1,53 @@ +import { findBox, readUInt32BE, toUTF8String } from "./utils.js"; +const brandMap = { + avif: "avif", + mif1: "heif", + msf1: "heif", + // hief-sequence + heic: "heic", + heix: "heic", + hevc: "heic", + // heic-sequence + hevx: "heic" + // heic-sequence +}; +function detectBrands(buffer, start, end) { + let brandsDetected = {}; + for (let i = start; i <= end; i += 4) { + const brand = toUTF8String(buffer, i, i + 4); + if (brand in brandMap) { + brandsDetected[brand] = 1; + } + } + if ("avif" in brandsDetected) { + return "avif"; + } else if ("heic" in brandsDetected || "heix" in brandsDetected || "hevc" in brandsDetected || "hevx" in brandsDetected) { + return "heic"; + } else if ("mif1" in brandsDetected || "msf1" in brandsDetected) { + return "heif"; + } +} +const HEIF = { + validate(buffer) { + const ftype = toUTF8String(buffer, 4, 8); + const brand = toUTF8String(buffer, 8, 12); + return "ftyp" === ftype && brand in brandMap; + }, + calculate(buffer) { + const metaBox = findBox(buffer, "meta", 0); + const iprpBox = metaBox && findBox(buffer, "iprp", metaBox.offset + 12); + const ipcoBox = iprpBox && findBox(buffer, "ipco", iprpBox.offset + 8); + const ispeBox = ipcoBox && findBox(buffer, "ispe", ipcoBox.offset + 8); + if (ispeBox) { + return { + height: readUInt32BE(buffer, ispeBox.offset + 16), + width: readUInt32BE(buffer, ispeBox.offset + 12), + type: detectBrands(buffer, 8, metaBox.offset) + }; + } + throw new TypeError("Invalid HEIF, no size found"); + } +}; +export { + HEIF +}; diff --git a/.pnpm-store/v3/files/79/ab845c1816caaf3970b2dd60c3cdff67ec97def1cfa4c6635ca48c5364aed36b543f3ca944d07aa9c1760165cfe7612bf5fc65f7f3467619bd9259c3a21b88 b/.pnpm-store/v3/files/79/ab845c1816caaf3970b2dd60c3cdff67ec97def1cfa4c6635ca48c5364aed36b543f3ca944d07aa9c1760165cfe7612bf5fc65f7f3467619bd9259c3a21b88 new file mode 100644 index 00000000..4e06c634 --- /dev/null +++ b/.pnpm-store/v3/files/79/ab845c1816caaf3970b2dd60c3cdff67ec97def1cfa4c6635ca48c5364aed36b543f3ca944d07aa9c1760165cfe7612bf5fc65f7f3467619bd9259c3a21b88 @@ -0,0 +1,2 @@ +import type { IImage } from './interface.ts'; +export declare const WEBP: IImage; diff --git a/.pnpm-store/v3/files/7b/594ec29b2a01b7a316c3004226f1f1965a912e043a93240758abce6e5be8fa997d88b8dfa66c3d159445a9fd2975e1f33045a388f6cc3b641a3bbd897155e0 b/.pnpm-store/v3/files/7b/594ec29b2a01b7a316c3004226f1f1965a912e043a93240758abce6e5be8fa997d88b8dfa66c3d159445a9fd2975e1f33045a388f6cc3b641a3bbd897155e0 new file mode 100644 index 00000000..88f50985 --- /dev/null +++ b/.pnpm-store/v3/files/7b/594ec29b2a01b7a316c3004226f1f1965a912e043a93240758abce6e5be8fa997d88b8dfa66c3d159445a9fd2975e1f33045a388f6cc3b641a3bbd897155e0 @@ -0,0 +1,34 @@ +import { toUTF8String, readUInt32BE } from "./utils.js"; +const pngSignature = "PNG\r\n\n"; +const pngImageHeaderChunkName = "IHDR"; +const pngFriedChunkName = "CgBI"; +const PNG = { + validate(input) { + if (pngSignature === toUTF8String(input, 1, 8)) { + let chunkName = toUTF8String(input, 12, 16); + if (chunkName === pngFriedChunkName) { + chunkName = toUTF8String(input, 28, 32); + } + if (chunkName !== pngImageHeaderChunkName) { + throw new TypeError("Invalid PNG"); + } + return true; + } + return false; + }, + calculate(input) { + if (toUTF8String(input, 12, 16) === pngFriedChunkName) { + return { + height: readUInt32BE(input, 36), + width: readUInt32BE(input, 32) + }; + } + return { + height: readUInt32BE(input, 20), + width: readUInt32BE(input, 16) + }; + } +}; +export { + PNG +}; diff --git a/.pnpm-store/v3/files/7d/31fbce0bdd747d14cf58648a055289a3588f609b43496818c8b6f748a89ac2bf39dd03d329e73f8ce105a9b9b942ccb7996f670d14eaa5de2d6c07265f3ffa b/.pnpm-store/v3/files/7d/31fbce0bdd747d14cf58648a055289a3588f609b43496818c8b6f748a89ac2bf39dd03d329e73f8ce105a9b9b942ccb7996f670d14eaa5de2d6c07265f3ffa new file mode 100644 index 00000000..f07e1ac1 --- /dev/null +++ b/.pnpm-store/v3/files/7d/31fbce0bdd747d14cf58648a055289a3588f609b43496818c8b6f748a89ac2bf39dd03d329e73f8ce105a9b9b942ccb7996f670d14eaa5de2d6c07265f3ffa @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Simon Lydell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/.pnpm-store/v3/files/7d/b84cdcf9fe01b2c06039accb8c95dcd617c1f5225c7089f9c49fe02d2e15967df59bf752aca9930b0b45e70f35b18c98a8bd6c147f1c62a54e30059654b363 b/.pnpm-store/v3/files/7d/b84cdcf9fe01b2c06039accb8c95dcd617c1f5225c7089f9c49fe02d2e15967df59bf752aca9930b0b45e70f35b18c98a8bd6c147f1c62a54e30059654b363 new file mode 100644 index 00000000..d49e64e8 --- /dev/null +++ b/.pnpm-store/v3/files/7d/b84cdcf9fe01b2c06039accb8c95dcd617c1f5225c7089f9c49fe02d2e15967df59bf752aca9930b0b45e70f35b18c98a8bd6c147f1c62a54e30059654b363 @@ -0,0 +1,62 @@ +import { renderComponentToString } from "./component.js"; +import { isAstroComponentFactory } from "./astro/index.js"; +import { renderToReadableStream, renderToString, renderToAsyncIterable } from "./astro/render.js"; +import { encoder } from "./common.js"; +import { isNode } from "./util.js"; +async function renderPage(result, componentFactory, props, children, streaming, route) { + if (!isAstroComponentFactory(componentFactory)) { + result._metadata.headInTree = result.componentMetadata.get(componentFactory.moduleId)?.containsHead ?? false; + const pageProps = { ...props ?? {}, "server:root": true }; + const str = await renderComponentToString( + result, + componentFactory.name, + componentFactory, + pageProps, + {}, + true, + route + ); + const bytes = encoder.encode(str); + return new Response(bytes, { + headers: new Headers([ + ["Content-Type", "text/html; charset=utf-8"], + ["Content-Length", bytes.byteLength.toString()] + ]) + }); + } + result._metadata.headInTree = result.componentMetadata.get(componentFactory.moduleId)?.containsHead ?? false; + let body; + if (streaming) { + if (isNode) { + const nodeBody = await renderToAsyncIterable( + result, + componentFactory, + props, + children, + true, + route + ); + body = nodeBody; + } else { + body = await renderToReadableStream(result, componentFactory, props, children, true, route); + } + } else { + body = await renderToString(result, componentFactory, props, children, true, route); + } + if (body instanceof Response) + return body; + const init = result.response; + const headers = new Headers(init.headers); + if (!streaming && typeof body === "string") { + body = encoder.encode(body); + headers.set("Content-Length", body.byteLength.toString()); + } + if (route?.component.endsWith(".md")) { + headers.set("Content-Type", "text/html; charset=utf-8"); + } + const response = new Response(body, { ...init, headers }); + return response; +} +export { + renderPage +}; diff --git a/.pnpm-store/v3/files/7f/96ca959e18fc88146a94bf2553f5dec3c2571a77fe5dac2720b8ce7a035eff0923c8fbd0f720a88f5e7966272cbe5e4a919760f71badf4908b651f4bb123f6 b/.pnpm-store/v3/files/7f/96ca959e18fc88146a94bf2553f5dec3c2571a77fe5dac2720b8ce7a035eff0923c8fbd0f720a88f5e7966272cbe5e4a919760f71badf4908b651f4bb123f6 new file mode 100644 index 00000000..a4910cbf --- /dev/null +++ b/.pnpm-store/v3/files/7f/96ca959e18fc88146a94bf2553f5dec3c2571a77fe5dac2720b8ce7a035eff0923c8fbd0f720a88f5e7966272cbe5e4a919760f71badf4908b651f4bb123f6 @@ -0,0 +1,439 @@ +import {FileImporter, Importer, NodePackageImporter} from './importer'; +import {Logger} from './logger'; +import {Value} from './value'; +import {PromiseOr} from './util/promise_or'; + +/** + * Syntaxes supported by Sass: + * + * - `'scss'` is the [SCSS + * syntax](https://sass-lang.com/documentation/syntax#scss). + * - `'indented'` is the [indented + * syntax](https://sass-lang.com/documentation/syntax#the-indented-syntax) + * - `'css'` is plain CSS, which is parsed like SCSS but forbids the use of any + * special Sass features. + * + * @category Options + */ +export type Syntax = 'scss' | 'indented' | 'css'; + +/** + * Possible output styles for the compiled CSS: + * + * - `"expanded"` (the default for Dart Sass) writes each selector and + * declaration on its own line. + * + * - `"compressed"` removes as many extra characters as possible, and writes + * the entire stylesheet on a single line. + * + * @category Options + */ +export type OutputStyle = 'expanded' | 'compressed'; + +/** + * A callback that implements a custom Sass function. This can be passed to + * {@link Options.functions}. + * + * ```js + * const result = sass.compile('style.scss', { + * functions: { + * "sum($arg1, $arg2)": (args) => { + * const arg1 = args[0].assertNumber('arg1'); + * const value1 = arg1.value; + * const value2 = args[1].assertNumber('arg2') + * .convertValueToMatch(arg1, 'arg2', 'arg1'); + * return new sass.SassNumber(value1 + value2).coerceToMatch(arg1); + * } + * } + * }); + * ``` + * + * @typeParam sync - A `CustomFunction<'sync'>` must return synchronously, but + * in return it can be passed to {@link compile} and {@link compileString} in + * addition to {@link compileAsync} and {@link compileStringAsync}. + * + * A `CustomFunction<'async'>` may either return synchronously or + * asynchronously, but it can only be used with {@link compileAsync} and {@link + * compileStringAsync}. + * + * @param args - An array of arguments passed by the function's caller. If the + * function takes [arbitrary + * arguments](https://sass-lang.com/documentation/at-rules/function#taking-arbitrary-arguments), + * the last element will be a {@link SassArgumentList}. + * + * @returns The function's result. This may be in the form of a `Promise`, but + * if it is the function may only be passed to {@link compileAsync} and {@link + * compileStringAsync}, not {@link compile} or {@link compileString}. + * + * @throws any - This function may throw an error, which the Sass compiler will + * treat as the function call failing. If the exception object has a `message` + * property, it will be used as the wrapped exception's message; otherwise, the + * exception object's `toString()` will be used. This means it's safe for custom + * functions to throw plain strings. + * + * @category Custom Function + */ +export type CustomFunction = ( + args: Value[] +) => PromiseOr; + +/** + * Options that can be passed to {@link compile}, {@link compileAsync}, {@link + * compileString}, or {@link compileStringAsync}. + * + * @typeParam sync - This lets the TypeScript checker verify that asynchronous + * {@link Importer}s, {@link FileImporter}s, and {@link CustomFunction}s aren't + * passed to {@link compile} or {@link compileString}. + * + * @category Options + */ +export interface Options { + /** + * If this is `true`, the compiler will exclusively use ASCII characters in + * its error and warning messages. Otherwise, it may use non-ASCII Unicode + * characters as well. + * + * @defaultValue `false` + * @category Messages + */ + alertAscii?: boolean; + + /** + * If this is `true`, the compiler will use ANSI color escape codes in its + * error and warning messages. If it's `false`, it won't use these. If it's + * undefined, the compiler will determine whether or not to use colors + * depending on whether the user is using an interactive terminal. + * + * @category Messages + */ + alertColor?: boolean; + + /** + * If `true`, the compiler may prepend `@charset "UTF-8";` or U+FEFF + * (byte-order marker) if it outputs non-ASCII CSS. + * + * If `false`, the compiler never emits these byte sequences. This is ideal + * when concatenating or embedding in HTML `