diff --git a/README.md b/README.md
index 097a44f..dc2ef93 100644
--- a/README.md
+++ b/README.md
@@ -53,18 +53,62 @@ const rootDir = new URL('.', import.meta.url).pathname
export default defineConfig({
integrations: [
shield({
- // Enables SRI hashes generation for statically generated pages
- enableStatic_SRI: true, // true by default
-
- // Enables a middleware that generates SRI hashes for dynamically
- // generated pages
- enableMiddleware_SRI: false, // false by default
-
- // This is the path where we'll generate the module containing the SRI
- // hashes for your scripts and styles. There's no need to pass this
- // parameter if you don't need this data, but it can be useful to
- // configure your CSP policies.
- sriHashesModule: resolve(rootDir, 'src', 'utils', 'sriHashes.mjs'),
+ sri: {
+ // Enables SRI hashes generation for statically generated pages
+ enableStatic: true, // true by default
+
+ // Enables a middleware that generates SRI hashes for dynamically
+ // generated pages
+ enableMiddleware: false, // false by default
+
+ // This is the path where we'll generate the module containing the SRI
+ // hashes for your scripts and styles. There's no need to pass this
+ // parameter if you don't need this data, but it can be useful to
+ // configure your CSP policies.
+ hashesModule: resolve(rootDir, 'src', 'utils', 'sriHashes.mjs'),
+
+ // For SSR content, Cross-Origin scripts must be explicitly allow-listed
+ // by URL in order to be allowed by the Content Security Policy.
+ //
+ // Defaults to []
+ scriptsAllowListUrls: [
+ 'https://code.jquery.com/jquery-3.7.1.slim.min.js',
+ ],
+
+ // For SSR content, Cross-Origin styles must be explicitly allow-listed
+ // by URL in order to be allowed by the Content Security Policy.
+ //
+ // Defaults to []
+ stylesAllowListUrls: [
+ 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css',
+ ],
+
+ /**
+ * Inline styles are usually considered unsafe because they could make it
+ * easier for an attacker to inject CSS rules in dynamic pages. However, they
+ * don't pose a serious security risk for _most_ static pages.
+ *
+ * You can disable this option in case you want to enforce a stricter policy.
+ *
+ * @type {'all' | 'static' | false}
+ *
+ * Defaults to 'all'.
+ */
+ allowInlineStyles: 'all',
+
+ /**
+ * Inline scripts are usually considered unsafe because they could make it
+ * easier for an attacker to inject JS code in dynamic pages. However, they
+ * don't pose a serious security risk for _most_ static pages.
+ *
+ * You can disable this option in case you want to enforce a stricter policy.
+ *
+ * @type {'all' | 'static' | false}
+ *
+ * Defaults to 'all'.
+ */
+ allowInlineScript: 'all',
+ },
// - If set, it controls how the security headers will be generated in the
// middleware.
@@ -100,8 +144,10 @@ the `cspDirectives` option.
> [!IMPORTANT]
> It is advisable to set the option `sriHashesModule` in case your dynamic pages
-> include static JS or CSS resources (also: do not explicitly disable the
-> `enableStatic_SRI` option if you want support for those static assets).
+> include static JS or CSS resources.
+>
+> Also, do not explicitly disable the `enableStatic_SRI` option if you want
+> support for those static assets).
### Accessing metadata generated at build time
diff --git a/e2e/fixtures/dynamic/package.json b/e2e/fixtures/dynamic/package.json
index 7441ac8..1a0571c 100644
--- a/e2e/fixtures/dynamic/package.json
+++ b/e2e/fixtures/dynamic/package.json
@@ -11,7 +11,7 @@
"license": "MIT",
"dependencies": {
"@astrojs/node": "^8.2.5",
- "astro": "^4.5.9"
+ "astro": "^4.5.10"
},
"devDependencies": {
"@kindspells/astro-shield": "link:../../.."
diff --git a/e2e/fixtures/dynamic/pnpm-lock.yaml b/e2e/fixtures/dynamic/pnpm-lock.yaml
index 753f652..5d136ee 100644
--- a/e2e/fixtures/dynamic/pnpm-lock.yaml
+++ b/e2e/fixtures/dynamic/pnpm-lock.yaml
@@ -7,10 +7,10 @@ settings:
dependencies:
'@astrojs/node':
specifier: ^8.2.5
- version: 8.2.5(astro@4.5.9)
+ version: 8.2.5(astro@4.5.10)
astro:
- specifier: ^4.5.9
- version: 4.5.9
+ specifier: ^4.5.10
+ version: 4.5.10
devDependencies:
'@kindspells/astro-shield':
@@ -35,8 +35,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: false
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -50,7 +50,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -60,12 +60,12 @@ packages:
- supports-color
dev: false
- /@astrojs/node@8.2.5(astro@4.5.9):
+ /@astrojs/node@8.2.5(astro@4.5.10):
resolution: {integrity: sha512-IdVD4dBNyg+ScmCATZ0FM7vNLAHq0TSdiJ3LpR4jcWIUhpN1ps5Jg+9CfzMaLmCCe/SJUZejK5EnzqUJdnGYyg==}
peerDependencies:
astro: ^4.2.0
dependencies:
- astro: 4.5.9
+ astro: 4.5.10
send: 0.18.0
server-destroy: 1.0.1
transitivePeerDependencies:
@@ -787,112 +787,120 @@ packages:
fastq: 1.17.1
dev: false
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: false
/@types/babel__core@7.20.5:
@@ -1030,14 +1038,14 @@ packages:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
- /astro@4.5.9:
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10:
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1062,7 +1070,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1085,7 +1093,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3
@@ -1216,7 +1224,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: false
@@ -1511,8 +1519,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: false
/emoji-regex@10.3.0:
@@ -1545,8 +1553,8 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: false
/esbuild@0.19.12:
@@ -3100,26 +3108,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: false
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: false
@@ -3212,10 +3221,10 @@ packages:
engines: {node: '>=8'}
dev: false
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: false
/signal-exit@3.0.7:
@@ -3683,7 +3692,7 @@ packages:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: false
diff --git a/e2e/fixtures/hybrid/package.json b/e2e/fixtures/hybrid/package.json
index 66f9567..3e9ea54 100644
--- a/e2e/fixtures/hybrid/package.json
+++ b/e2e/fixtures/hybrid/package.json
@@ -9,7 +9,7 @@
"license": "MIT",
"dependencies": {
"@astrojs/node": "^8.2.5",
- "astro": "^4.5.9"
+ "astro": "^4.5.10"
},
"devDependencies": {
"@kindspells/astro-shield": "link:../../.."
diff --git a/e2e/fixtures/hybrid/pnpm-lock.yaml b/e2e/fixtures/hybrid/pnpm-lock.yaml
index 925bb84..429a4dd 100644
--- a/e2e/fixtures/hybrid/pnpm-lock.yaml
+++ b/e2e/fixtures/hybrid/pnpm-lock.yaml
@@ -7,10 +7,10 @@ settings:
dependencies:
'@astrojs/node':
specifier: ^8.2.5
- version: 8.2.5(astro@4.5.9)
+ version: 8.2.5(astro@4.5.10)
astro:
- specifier: ^4.5.9
- version: 4.5.9
+ specifier: ^4.5.10
+ version: 4.5.10
devDependencies:
'@kindspells/astro-shield':
@@ -35,8 +35,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: false
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -50,7 +50,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -60,12 +60,12 @@ packages:
- supports-color
dev: false
- /@astrojs/node@8.2.5(astro@4.5.9):
+ /@astrojs/node@8.2.5(astro@4.5.10):
resolution: {integrity: sha512-IdVD4dBNyg+ScmCATZ0FM7vNLAHq0TSdiJ3LpR4jcWIUhpN1ps5Jg+9CfzMaLmCCe/SJUZejK5EnzqUJdnGYyg==}
peerDependencies:
astro: ^4.2.0
dependencies:
- astro: 4.5.9
+ astro: 4.5.10
send: 0.18.0
server-destroy: 1.0.1
transitivePeerDependencies:
@@ -787,112 +787,120 @@ packages:
fastq: 1.17.1
dev: false
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: false
/@types/babel__core@7.20.5:
@@ -1030,14 +1038,14 @@ packages:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
- /astro@4.5.9:
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10:
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1062,7 +1070,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1085,7 +1093,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3
@@ -1216,7 +1224,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: false
@@ -1511,8 +1519,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: false
/emoji-regex@10.3.0:
@@ -1545,8 +1553,8 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: false
/esbuild@0.19.12:
@@ -3100,26 +3108,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: false
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: false
@@ -3211,10 +3220,10 @@ packages:
engines: {node: '>=8'}
dev: false
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: false
/signal-exit@3.0.7:
@@ -3680,7 +3689,7 @@ packages:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: false
diff --git a/e2e/fixtures/hybrid2/package.json b/e2e/fixtures/hybrid2/package.json
index e5e41ee..13d6ad0 100644
--- a/e2e/fixtures/hybrid2/package.json
+++ b/e2e/fixtures/hybrid2/package.json
@@ -9,7 +9,7 @@
"license": "MIT",
"dependencies": {
"@astrojs/node": "^8.2.5",
- "astro": "^4.5.9"
+ "astro": "^4.5.10"
},
"devDependencies": {
"@kindspells/astro-shield": "link:../../.."
diff --git a/e2e/fixtures/hybrid2/pnpm-lock.yaml b/e2e/fixtures/hybrid2/pnpm-lock.yaml
index 753f652..5d136ee 100644
--- a/e2e/fixtures/hybrid2/pnpm-lock.yaml
+++ b/e2e/fixtures/hybrid2/pnpm-lock.yaml
@@ -7,10 +7,10 @@ settings:
dependencies:
'@astrojs/node':
specifier: ^8.2.5
- version: 8.2.5(astro@4.5.9)
+ version: 8.2.5(astro@4.5.10)
astro:
- specifier: ^4.5.9
- version: 4.5.9
+ specifier: ^4.5.10
+ version: 4.5.10
devDependencies:
'@kindspells/astro-shield':
@@ -35,8 +35,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: false
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -50,7 +50,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -60,12 +60,12 @@ packages:
- supports-color
dev: false
- /@astrojs/node@8.2.5(astro@4.5.9):
+ /@astrojs/node@8.2.5(astro@4.5.10):
resolution: {integrity: sha512-IdVD4dBNyg+ScmCATZ0FM7vNLAHq0TSdiJ3LpR4jcWIUhpN1ps5Jg+9CfzMaLmCCe/SJUZejK5EnzqUJdnGYyg==}
peerDependencies:
astro: ^4.2.0
dependencies:
- astro: 4.5.9
+ astro: 4.5.10
send: 0.18.0
server-destroy: 1.0.1
transitivePeerDependencies:
@@ -787,112 +787,120 @@ packages:
fastq: 1.17.1
dev: false
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: false
/@types/babel__core@7.20.5:
@@ -1030,14 +1038,14 @@ packages:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
- /astro@4.5.9:
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10:
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1062,7 +1070,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1085,7 +1093,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3
@@ -1216,7 +1224,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: false
@@ -1511,8 +1519,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: false
/emoji-regex@10.3.0:
@@ -1545,8 +1553,8 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: false
/esbuild@0.19.12:
@@ -3100,26 +3108,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: false
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: false
@@ -3212,10 +3221,10 @@ packages:
engines: {node: '>=8'}
dev: false
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: false
/signal-exit@3.0.7:
@@ -3683,7 +3692,7 @@ packages:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: false
diff --git a/e2e/fixtures/hybrid3/package.json b/e2e/fixtures/hybrid3/package.json
index a27f3fa..f5d47e0 100644
--- a/e2e/fixtures/hybrid3/package.json
+++ b/e2e/fixtures/hybrid3/package.json
@@ -9,7 +9,7 @@
"license": "MIT",
"dependencies": {
"@astrojs/node": "^8.2.5",
- "astro": "^4.5.9"
+ "astro": "^4.5.10"
},
"devDependencies": {
"@kindspells/astro-shield": "link:../../.."
diff --git a/e2e/fixtures/hybrid3/pnpm-lock.yaml b/e2e/fixtures/hybrid3/pnpm-lock.yaml
index 753f652..5d136ee 100644
--- a/e2e/fixtures/hybrid3/pnpm-lock.yaml
+++ b/e2e/fixtures/hybrid3/pnpm-lock.yaml
@@ -7,10 +7,10 @@ settings:
dependencies:
'@astrojs/node':
specifier: ^8.2.5
- version: 8.2.5(astro@4.5.9)
+ version: 8.2.5(astro@4.5.10)
astro:
- specifier: ^4.5.9
- version: 4.5.9
+ specifier: ^4.5.10
+ version: 4.5.10
devDependencies:
'@kindspells/astro-shield':
@@ -35,8 +35,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: false
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -50,7 +50,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -60,12 +60,12 @@ packages:
- supports-color
dev: false
- /@astrojs/node@8.2.5(astro@4.5.9):
+ /@astrojs/node@8.2.5(astro@4.5.10):
resolution: {integrity: sha512-IdVD4dBNyg+ScmCATZ0FM7vNLAHq0TSdiJ3LpR4jcWIUhpN1ps5Jg+9CfzMaLmCCe/SJUZejK5EnzqUJdnGYyg==}
peerDependencies:
astro: ^4.2.0
dependencies:
- astro: 4.5.9
+ astro: 4.5.10
send: 0.18.0
server-destroy: 1.0.1
transitivePeerDependencies:
@@ -787,112 +787,120 @@ packages:
fastq: 1.17.1
dev: false
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: false
/@types/babel__core@7.20.5:
@@ -1030,14 +1038,14 @@ packages:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
- /astro@4.5.9:
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10:
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1062,7 +1070,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1085,7 +1093,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3
@@ -1216,7 +1224,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: false
@@ -1511,8 +1519,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: false
/emoji-regex@10.3.0:
@@ -1545,8 +1553,8 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: false
/esbuild@0.19.12:
@@ -3100,26 +3108,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: false
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: false
@@ -3212,10 +3221,10 @@ packages:
engines: {node: '>=8'}
dev: false
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: false
/signal-exit@3.0.7:
@@ -3683,7 +3692,7 @@ packages:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: false
diff --git a/e2e/fixtures/static/package.json b/e2e/fixtures/static/package.json
index 26e36fd..aa50cb5 100644
--- a/e2e/fixtures/static/package.json
+++ b/e2e/fixtures/static/package.json
@@ -8,7 +8,7 @@
},
"license": "MIT",
"dependencies": {
- "astro": "^4.5.9"
+ "astro": "^4.5.10"
},
"devDependencies": {
"@kindspells/astro-shield": "link:../../.."
diff --git a/e2e/fixtures/static/pnpm-lock.yaml b/e2e/fixtures/static/pnpm-lock.yaml
index c2e402e..2118cbc 100644
--- a/e2e/fixtures/static/pnpm-lock.yaml
+++ b/e2e/fixtures/static/pnpm-lock.yaml
@@ -6,8 +6,8 @@ settings:
dependencies:
astro:
- specifier: ^4.5.9
- version: 4.5.9
+ specifier: ^4.5.10
+ version: 4.5.10
devDependencies:
'@kindspells/astro-shield':
@@ -32,8 +32,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: false
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -47,7 +47,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -772,112 +772,120 @@ packages:
fastq: 1.17.1
dev: false
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: false
/@types/babel__core@7.20.5:
@@ -1015,14 +1023,14 @@ packages:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
- /astro@4.5.9:
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10:
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1047,7 +1055,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1070,7 +1078,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3
@@ -1201,7 +1209,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: false
@@ -1471,8 +1479,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: false
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: false
/emoji-regex@10.3.0:
@@ -1500,8 +1508,8 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: false
/esbuild@0.19.12:
@@ -3004,26 +3012,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: false
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: false
@@ -3087,10 +3096,10 @@ packages:
engines: {node: '>=8'}
dev: false
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: false
/signal-exit@3.0.7:
@@ -3548,7 +3557,7 @@ packages:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: false
diff --git a/package.json b/package.json
index c754440..7c7bebd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@kindspells/astro-shield",
- "version": "1.2.0",
+ "version": "1.3.0",
"description": "Astro integration to enhance your website's security with SubResource Integrity hashes, Content-Security-Policy headers, and other techniques.",
"private": false,
"type": "module",
@@ -24,7 +24,9 @@
"imports": {
"#as/*": "./src/*"
},
- "files": ["src/*"],
+ "files": [
+ "src/*"
+ ],
"scripts": {
"format": "biome format --write .",
"install-githooks": "if [ -d .git ]; then git config core.hooksPath .hooks; fi",
@@ -60,10 +62,10 @@
"astro": "^4.0.0"
},
"devDependencies": {
- "@biomejs/biome": "^1.6.2",
+ "@biomejs/biome": "^1.6.3",
"@types/node": "^20.11.30",
"@vitest/coverage-v8": "^1.4.0",
- "astro": "^4.5.9",
+ "astro": "^4.5.10",
"publint": "^0.2.7",
"typescript": "^5.4.3",
"vite": "^5.2.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fec3932..83ae95b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,8 +6,8 @@ settings:
devDependencies:
'@biomejs/biome':
- specifier: ^1.6.2
- version: 1.6.2
+ specifier: ^1.6.3
+ version: 1.6.3
'@types/node':
specifier: ^20.11.30
version: 20.11.30
@@ -15,8 +15,8 @@ devDependencies:
specifier: ^1.4.0
version: 1.4.0(vitest@1.4.0)
astro:
- specifier: ^4.5.9
- version: 4.5.9(@types/node@20.11.30)(typescript@5.4.3)
+ specifier: ^4.5.10
+ version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3)
publint:
specifier: ^0.2.7
version: 0.2.7
@@ -48,8 +48,8 @@ packages:
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
dev: true
- /@astrojs/markdown-remark@4.3.1:
- resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ /@astrojs/markdown-remark@4.3.2:
+ resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==}
dependencies:
'@astrojs/prism': 3.0.0
github-slugger: 2.0.0
@@ -63,7 +63,7 @@ packages:
remark-parse: 11.0.0
remark-rehype: 11.1.0
remark-smartypants: 2.1.0
- shiki: 1.2.0
+ shiki: 1.2.1
unified: 11.0.4
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -327,24 +327,24 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
- /@biomejs/biome@1.6.2:
- resolution: {integrity: sha512-vw6JhYnpLRRDaawI+d7NaQj17F7LSSJrgT03IQUETwRUG3Q1/a4ByJRphTVXPuhiTnaKVmUlEF3I5NSitcdD+g==}
+ /@biomejs/biome@1.6.3:
+ resolution: {integrity: sha512-Xnp/TIpIcTnRA4LwerJuoGYQJEqwXtn5AL0U0OPXll/QGbAKmcUAfizU880xTwZRD4f53iceqODLDaD3wxYlIw==}
engines: {node: '>=14.*'}
hasBin: true
requiresBuild: true
optionalDependencies:
- '@biomejs/cli-darwin-arm64': 1.6.2
- '@biomejs/cli-darwin-x64': 1.6.2
- '@biomejs/cli-linux-arm64': 1.6.2
- '@biomejs/cli-linux-arm64-musl': 1.6.2
- '@biomejs/cli-linux-x64': 1.6.2
- '@biomejs/cli-linux-x64-musl': 1.6.2
- '@biomejs/cli-win32-arm64': 1.6.2
- '@biomejs/cli-win32-x64': 1.6.2
- dev: true
-
- /@biomejs/cli-darwin-arm64@1.6.2:
- resolution: {integrity: sha512-2sGcNO1wDuQ6r97/SDaPzP3ehrCL7qHXpVggcB/OonbVBEamqIkN1tHsID/snnX3R2ax2QTarjb4bQ+1BpEWzA==}
+ '@biomejs/cli-darwin-arm64': 1.6.3
+ '@biomejs/cli-darwin-x64': 1.6.3
+ '@biomejs/cli-linux-arm64': 1.6.3
+ '@biomejs/cli-linux-arm64-musl': 1.6.3
+ '@biomejs/cli-linux-x64': 1.6.3
+ '@biomejs/cli-linux-x64-musl': 1.6.3
+ '@biomejs/cli-win32-arm64': 1.6.3
+ '@biomejs/cli-win32-x64': 1.6.3
+ dev: true
+
+ /@biomejs/cli-darwin-arm64@1.6.3:
+ resolution: {integrity: sha512-0E8PGu3/8HSkBJdtjno+niJE1ANS/12D7sPK65vw5lTBYmmaYwJdfclDp6XO0IAX7uVd3/YtXlsEua0SVrNt3Q==}
engines: {node: '>=14.*'}
cpu: [arm64]
os: [darwin]
@@ -352,8 +352,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-darwin-x64@1.6.2:
- resolution: {integrity: sha512-qtHDXIHd7eRIHv41XdG6pt1dbw+qiD0OgLlJn5rvW20kSSFfLxW8yc4upcC1PzlruP1BQpKFec3r5rx1duTtzw==}
+ /@biomejs/cli-darwin-x64@1.6.3:
+ resolution: {integrity: sha512-UWu0We/aIRtWXgJKe6ygWt2xR0yXs64BwWqtZbfxBojRn3jgW8UdFAkV5yiUOX3TQlsV6BZH1EQaUAVsccUeeA==}
engines: {node: '>=14.*'}
cpu: [x64]
os: [darwin]
@@ -361,8 +361,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-linux-arm64-musl@1.6.2:
- resolution: {integrity: sha512-ej3Jj6O9KUSCJUWqVs+9aOo6IcRIALHaGFB20wnQTWtRMFhu1PluM48MrQtMKputgdk5/CopQ662IdKf1PeuEg==}
+ /@biomejs/cli-linux-arm64-musl@1.6.3:
+ resolution: {integrity: sha512-AntGCSfLN1nPcQj4VOk3X2JgnDw07DaPC8BuBmRcsRmn+7GPSWLllVN5awIKlRPZEbGJtSnLkTiDc5Bxw8OiuA==}
engines: {node: '>=14.*'}
cpu: [arm64]
os: [linux]
@@ -370,8 +370,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-linux-arm64@1.6.2:
- resolution: {integrity: sha512-e1FJ59lx84QoqQgu1/uzAPIcYGcTkZY/m6Aj8ZHwi7KoWAE5xSogximFHNQ82lS4qkUfG7KaPTbYT6cGJjN9jQ==}
+ /@biomejs/cli-linux-arm64@1.6.3:
+ resolution: {integrity: sha512-wFVkQw38kOssfnkbpSh6ums5TaElw3RAt5i/VZwHmgR2nQgE0fHXLO7HwIE9VBkOEdbiIFq+2PxvFIHuJF3z3Q==}
engines: {node: '>=14.*'}
cpu: [arm64]
os: [linux]
@@ -379,8 +379,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-linux-x64-musl@1.6.2:
- resolution: {integrity: sha512-uOVt4UBkFTFtdXgPX3QuSHRPVIvj07FP0P7A0UOP++idd0r9Bxyt5iIBaAORM3eQyGQqzCGPln1GuM6GalYKzg==}
+ /@biomejs/cli-linux-x64-musl@1.6.3:
+ resolution: {integrity: sha512-GelAvGsUwbxfFpKLG+7+dvDmbrfkGqn08sL8CMQrGnhjE1krAqHWiXQsjfmi0UMFdMsk7hbc4oSAP+1+mrXcHQ==}
engines: {node: '>=14.*'}
cpu: [x64]
os: [linux]
@@ -388,8 +388,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-linux-x64@1.6.2:
- resolution: {integrity: sha512-S6Wc5YX6aLDLMzwlDmiw/kjK62Ex+xzE432M5ge9q8tSCluGeHIzrenrJlu8E0xPG2FEipDaK4iqwnjS9O6e2A==}
+ /@biomejs/cli-linux-x64@1.6.3:
+ resolution: {integrity: sha512-vyn8TQaTZg617hjqFitwGmb1St5XXvq6I3vmxU/QFalM74BryMSvYCrYWb2Yw/TkykdEwZTMGYp+SWHRb04fTg==}
engines: {node: '>=14.*'}
cpu: [x64]
os: [linux]
@@ -397,8 +397,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-win32-arm64@1.6.2:
- resolution: {integrity: sha512-5zuxNyvnKy7oLN7KLkqcYpsMKGubfMaeQ+RqnpFsmrofQAxpOo6EL/TyJvr8g533Z0a2/cQ/ALqnwl0mN3KQoQ==}
+ /@biomejs/cli-win32-arm64@1.6.3:
+ resolution: {integrity: sha512-Gx8N2Tixke6pAI1BniteCVZgUUmaFEDYosdWxoaCus15BZI/7RcBxhsRM0ZL/lC66StSQ8vHl8JBrrld1k570Q==}
engines: {node: '>=14.*'}
cpu: [arm64]
os: [win32]
@@ -406,8 +406,8 @@ packages:
dev: true
optional: true
- /@biomejs/cli-win32-x64@1.6.2:
- resolution: {integrity: sha512-O3nf09/m3cb3/U3M+uO4l236iTZr4F4SmLNG3okKXPfyZqKLNnF6OjdTHOYEiNXnGEtlRuUeemqb3vht9JkXaw==}
+ /@biomejs/cli-win32-x64@1.6.3:
+ resolution: {integrity: sha512-meungPJw64SqoR7LXY1wG7GC4+4wgpyThdFUMGXa6PCe0BLFOIOcZ9VMj9PstuczMPdgmt/BUMPsj25dK1VO8A==}
engines: {node: '>=14.*'}
cpu: [x64]
os: [win32]
@@ -892,112 +892,120 @@ packages:
fastq: 1.17.1
dev: true
- /@rollup/rollup-android-arm-eabi@4.13.0:
- resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
+ /@rollup/rollup-android-arm-eabi@4.13.1:
+ resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-android-arm64@4.13.0:
- resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==}
+ /@rollup/rollup-android-arm64@4.13.1:
+ resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-arm64@4.13.0:
- resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==}
+ /@rollup/rollup-darwin-arm64@4.13.1:
+ resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-x64@4.13.0:
- resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==}
+ /@rollup/rollup-darwin-x64@4.13.1:
+ resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.0:
- resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
+ resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.0:
- resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==}
+ /@rollup/rollup-linux-arm64-gnu@4.13.1:
+ resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.0:
- resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==}
+ /@rollup/rollup-linux-arm64-musl@4.13.1:
+ resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.0:
- resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==}
+ /@rollup/rollup-linux-riscv64-gnu@4.13.1:
+ resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.0:
- resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==}
+ /@rollup/rollup-linux-s390x-gnu@4.13.1:
+ resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.13.1:
+ resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.0:
- resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==}
+ /@rollup/rollup-linux-x64-musl@4.13.1:
+ resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.0:
- resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==}
+ /@rollup/rollup-win32-arm64-msvc@4.13.1:
+ resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.0:
- resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==}
+ /@rollup/rollup-win32-ia32-msvc@4.13.1:
+ resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.0:
- resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==}
+ /@rollup/rollup-win32-x64-msvc@4.13.1:
+ resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@shikijs/core@1.2.0:
- resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ /@shikijs/core@1.2.1:
+ resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==}
dev: true
/@sinclair/typebox@0.27.8:
@@ -1226,14 +1234,14 @@ packages:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true
- /astro@4.5.9(@types/node@20.11.30)(typescript@5.4.3):
- resolution: {integrity: sha512-GheU72Goz7dYQNKaqTxB2H49cNvHfahGSbNkTvMXk+gyHf/g633qadqlO2ZQbTUacoUWmDzvS5fhMZt2/w4naQ==}
+ /astro@4.5.10(@types/node@20.11.30)(typescript@5.4.3):
+ resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.7.0
'@astrojs/internal-helpers': 0.3.0
- '@astrojs/markdown-remark': 4.3.1
+ '@astrojs/markdown-remark': 4.3.2
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.24.3
'@babel/generator': 7.24.1
@@ -1258,7 +1266,7 @@ packages:
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.3
- es-module-lexer: 1.4.2
+ es-module-lexer: 1.5.0
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
@@ -1281,7 +1289,7 @@ packages:
rehype: 13.0.1
resolve: 1.22.8
semver: 7.6.0
- shiki: 1.2.0
+ shiki: 1.2.1
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.3(typescript@5.4.3)
@@ -1429,7 +1437,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.715
+ electron-to-chromium: 1.4.717
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
dev: true
@@ -1739,8 +1747,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /electron-to-chromium@1.4.715:
- resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==}
+ /electron-to-chromium@1.4.717:
+ resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==}
dev: true
/emoji-regex@10.3.0:
@@ -1768,8 +1776,8 @@ packages:
engines: {node: '>=0.12'}
dev: true
- /es-module-lexer@1.4.2:
- resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==}
+ /es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
dev: true
/esbuild@0.19.12:
@@ -3488,26 +3496,27 @@ packages:
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
- /rollup@4.13.0:
- resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==}
+ /rollup@4.13.1:
+ resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.0
- '@rollup/rollup-android-arm64': 4.13.0
- '@rollup/rollup-darwin-arm64': 4.13.0
- '@rollup/rollup-darwin-x64': 4.13.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.0
- '@rollup/rollup-linux-arm64-gnu': 4.13.0
- '@rollup/rollup-linux-arm64-musl': 4.13.0
- '@rollup/rollup-linux-riscv64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-gnu': 4.13.0
- '@rollup/rollup-linux-x64-musl': 4.13.0
- '@rollup/rollup-win32-arm64-msvc': 4.13.0
- '@rollup/rollup-win32-ia32-msvc': 4.13.0
- '@rollup/rollup-win32-x64-msvc': 4.13.0
+ '@rollup/rollup-android-arm-eabi': 4.13.1
+ '@rollup/rollup-android-arm64': 4.13.1
+ '@rollup/rollup-darwin-arm64': 4.13.1
+ '@rollup/rollup-darwin-x64': 4.13.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
+ '@rollup/rollup-linux-arm64-gnu': 4.13.1
+ '@rollup/rollup-linux-arm64-musl': 4.13.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.13.1
+ '@rollup/rollup-linux-s390x-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-gnu': 4.13.1
+ '@rollup/rollup-linux-x64-musl': 4.13.1
+ '@rollup/rollup-win32-arm64-msvc': 4.13.1
+ '@rollup/rollup-win32-ia32-msvc': 4.13.1
+ '@rollup/rollup-win32-x64-msvc': 4.13.1
fsevents: 2.3.3
dev: true
@@ -3578,10 +3587,10 @@ packages:
engines: {node: '>=8'}
dev: true
- /shiki@1.2.0:
- resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ /shiki@1.2.1:
+ resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==}
dependencies:
- '@shikijs/core': 1.2.0
+ '@shikijs/core': 1.2.1
dev: true
/siginfo@2.0.0:
@@ -3834,8 +3843,8 @@ packages:
resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==}
dev: true
- /tinypool@0.8.2:
- resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==}
+ /tinypool@0.8.3:
+ resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==}
engines: {node: '>=14.0.0'}
dev: true
@@ -4139,7 +4148,7 @@ packages:
'@types/node': 20.11.30
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.13.0
+ rollup: 4.13.1
optionalDependencies:
fsevents: 2.3.3
dev: true
@@ -4197,7 +4206,7 @@ packages:
std-env: 3.7.0
strip-literal: 2.0.0
tinybench: 2.6.0
- tinypool: 0.8.2
+ tinypool: 0.8.3
vite: 5.2.6(@types/node@20.11.30)
vite-node: 1.4.0(@types/node@20.11.30)
why-is-node-running: 2.2.2
diff --git a/src/core.mjs b/src/core.mjs
index 90dc2df..66dbcc2 100644
--- a/src/core.mjs
+++ b/src/core.mjs
@@ -13,6 +13,7 @@ import { doesFileExist, scanDirectory } from './fs.mjs'
import { patchHeaders } from './headers.mjs'
/**
+ * @typedef {import('./main.d.ts').SRIOptions} SRIOptions
* @typedef {import('./main.d.ts').SecurityHeadersOptions} SecurityHeadersOptions
* @typedef {import('./core.d.ts').PerPageHashes} PerPageHashes
* @typedef {import('./core.d.ts').PerPageHashesCollection} PerPageHashesCollection
@@ -40,7 +41,7 @@ export const generateSRIHash = data => {
/**
* @typedef {(
- * hash: string,
+ * hash: string | null,
* attrs: string,
* setCrossorigin: boolean,
* content?: string | undefined,
@@ -49,19 +50,19 @@ export const generateSRIHash = data => {
/** @type {ElemReplacer} */
const scriptReplacer = (hash, attrs, setCrossorigin, content) =>
- ``
/** @type {ElemReplacer} */
const styleReplacer = (hash, attrs, setCrossorigin, content) =>
- ``
/** @type {ElemReplacer} */
const linkStyleReplacer = (hash, attrs, setCrossorigin) =>
- ``
@@ -114,6 +115,8 @@ const getRegexProcessors = () => {
* @param {string} relativeFilepath
* @param {string} content
* @param {HashesCollection} h
+ * @param {'all' | 'static' | false} allowInlineScripts
+ * @param {'all' | 'static' | false} allowInlineStyles
* @returns {Promise}
*/
export const updateStaticPageSriHashes = async (
@@ -122,6 +125,8 @@ export const updateStaticPageSriHashes = async (
relativeFilepath,
content,
h,
+ allowInlineScripts = 'all',
+ allowInlineStyles = 'all',
) => {
const processors = getRegexProcessors()
@@ -201,9 +206,18 @@ export const updateStaticPageSriHashes = async (
}
if (hasContent && !sriHash) {
- sriHash = generateSRIHash(content)
- h[`inline${t}Hashes`].add(sriHash)
- pageHashes[t2].add(sriHash)
+ if (
+ !(allowInlineScripts === false && t === 'Script') &&
+ !(allowInlineStyles === false && t === 'Style')
+ ) {
+ sriHash = generateSRIHash(content)
+ h[`inline${t}Hashes`].add(sriHash)
+ pageHashes[t2].add(sriHash)
+ } else {
+ logger.warn(
+ `Skipping SRI hash generation for inline ${t.toLowerCase()} "${relativeFilepath}" (inline ${t2} are disabled)`,
+ )
+ }
}
if (sriHash) {
@@ -222,11 +236,13 @@ export const updateStaticPageSriHashes = async (
* @param {Logger} logger
* @param {string} content
* @param {MiddlewareHashes} globalHashes
+ * @param {Required=} sri
*/
export const updateDynamicPageSriHashes = async (
logger,
content,
globalHashes,
+ sri,
) => {
const processors = getRegexProcessors()
@@ -238,7 +254,7 @@ export const updateDynamicPageSriHashes = async (
styles: new Set(),
})
- for (const { attrsRegex, hasContent, regex, replacer, t2 } of processors) {
+ for (const { attrsRegex, hasContent, regex, replacer, t, t2 } of processors) {
// biome-ignore lint/suspicious/noAssignInExpressions: safe
while ((match = regex.exec(content)) !== null) {
const attrs = match.groups?.attrs ?? ''
@@ -315,12 +331,23 @@ export const updateDynamicPageSriHashes = async (
if (sriHash) {
pageHashes[t2].add(sriHash)
} else {
- const resourceResponse = await fetch(src, { method: 'GET' })
- const resourceContent = await resourceResponse.arrayBuffer()
+ logger.warn(
+ `Detected reference to not-allow-listed external resource "${src}"`,
+ )
+ if (setCrossorigin) {
+ updatedContent = updatedContent.replace(
+ match[0],
+ replacer(null, attrs, true, ''),
+ )
+ }
+ continue
- sriHash = generateSRIHash(resourceContent)
- globalHashes[t2].set(src, sriHash)
- pageHashes[t2].add(sriHash)
+ // TODO: add scape hatch to allow fetching arbitrary external resources
+ // const resourceResponse = await fetch(src, { method: 'GET' })
+ // const resourceContent = await resourceResponse.arrayBuffer()
+ // sriHash = generateSRIHash(resourceContent)
+ // globalHashes[t2].set(src, sriHash)
+ // pageHashes[t2].add(sriHash)
}
} else {
logger.warn(`Unable to process external resource: "${src}"`)
@@ -330,8 +357,18 @@ export const updateDynamicPageSriHashes = async (
}
if (hasContent && !sriHash) {
- sriHash = generateSRIHash(content)
- pageHashes[t2].add(sriHash)
+ // TODO: port logic from `updateStaticPageSriHashes` to handle inline resources
+ if (
+ ((sri?.allowInlineScripts ?? 'all') === 'all' && t === 'Script') ||
+ ((sri?.allowInlineStyles ?? 'all') === 'all' && t === 'Style')
+ ) {
+ sriHash = generateSRIHash(content)
+ pageHashes[t2].add(sriHash)
+ } else {
+ logger.warn(
+ `Skipping SRI hash generation for inline ${t.toLowerCase()} (inline ${t2} are disabled)`,
+ )
+ }
}
if (sriHash) {
@@ -354,8 +391,9 @@ export const updateDynamicPageSriHashes = async (
* @param {string} filePath
* @param {string} distDir
* @param {HashesCollection} h
+ * @param {SRIOptions=} sri
*/
-const processHTMLFile = async (logger, filePath, distDir, h) => {
+const processHTMLFile = async (logger, filePath, distDir, h, sri) => {
const content = await readFile(filePath, 'utf8')
const updatedContent = await updateStaticPageSriHashes(
logger,
@@ -363,6 +401,8 @@ const processHTMLFile = async (logger, filePath, distDir, h) => {
relative(distDir, filePath),
content,
h,
+ sri?.allowInlineScripts ?? 'all',
+ sri?.allowInlineStyles ?? 'all',
)
if (updatedContent !== content) {
@@ -488,6 +528,30 @@ export const scanForNestedResources = async (logger, dirPath, h) => {
)
}
+/**
+ * @param {Required>} sri
+ * @param {HashesCollection} h
+ */
+export const scanAllowLists = async (sri, h) => {
+ for (const scriptUrl of sri.scriptsAllowListUrls) {
+ const resourceResponse = await fetch(scriptUrl, { method: 'GET' })
+ const resourceContent = await resourceResponse.arrayBuffer()
+ const sriHash = generateSRIHash(resourceContent)
+
+ h.extScriptHashes.add(sriHash)
+ h.perResourceSriHashes.scripts.set(scriptUrl, sriHash)
+ }
+
+ for (const styleUrl of sri.stylesAllowListUrls) {
+ const resourceResponse = await fetch(styleUrl, { method: 'GET' })
+ const resourceContent = await resourceResponse.arrayBuffer()
+ const sriHash = generateSRIHash(resourceContent)
+
+ h.extStyleHashes.add(sriHash)
+ h.perResourceSriHashes.styles.set(styleUrl, sriHash)
+ }
+}
+
/**
* @param {Logger} logger
* @param {HashesCollection} h
@@ -607,10 +671,7 @@ export async function generateSRIHashesModule(
* @param {Logger} logger
* @param {import('./main.d.ts').StrictShieldOptions} shieldOptions
*/
-export const processStaticFiles = async (
- logger,
- { distDir, sriHashesModule, enableMiddleware_SRI },
-) => {
+export const processStaticFiles = async (logger, { distDir, sri }) => {
const h = /** @satisfies {HashesCollection} */ {
inlineScriptHashes: new Set(),
inlineStyleHashes: new Set(),
@@ -629,36 +690,40 @@ export const processStaticFiles = async (
h,
processHTMLFile,
file => extname(file) === '.html',
+ sri,
)
await scanForNestedResources(logger, distDir, h)
- if (!sriHashesModule) {
+ if (!sri.hashesModule) {
return
}
await generateSRIHashesModule(
logger,
h,
- sriHashesModule,
- enableMiddleware_SRI,
+ sri.hashesModule,
+ sri.enableMiddleware,
)
}
/**
+ * @param {Logger} logger
* @param {MiddlewareHashes} globalHashes
+ * @param {Required} sri
* @returns {import('astro').MiddlewareHandler}
*/
-export const getMiddlewareHandler = globalHashes => {
+export const getMiddlewareHandler = (logger, globalHashes, sri) => {
/** @satisfies {import('astro').MiddlewareHandler} */
return async (_ctx, next) => {
const response = await next()
const content = await response.text()
const { updatedContent } = await updateDynamicPageSriHashes(
- console,
+ logger,
content,
globalHashes,
+ sri,
)
const patchedResponse = new Response(updatedContent, {
@@ -673,20 +738,28 @@ export const getMiddlewareHandler = globalHashes => {
/**
* Variant of `getMiddlewareHandler` that also applies security headers.
*
+ * @param {Logger} logger
* @param {MiddlewareHashes} globalHashes
* @param {SecurityHeadersOptions} securityHeadersOpts
+ * @param {Required} sri
* @returns {import('astro').MiddlewareHandler}
*/
-export const getCSPMiddlewareHandler = (globalHashes, securityHeadersOpts) => {
+export const getCSPMiddlewareHandler = (
+ logger,
+ globalHashes,
+ securityHeadersOpts,
+ sri,
+) => {
/** @satisfies {import('astro').MiddlewareHandler} */
return async (_ctx, next) => {
const response = await next()
const content = await response.text()
const { updatedContent, pageHashes } = await updateDynamicPageSriHashes(
- console,
+ logger,
content,
globalHashes,
+ sri,
)
const patchedResponse = new Response(updatedContent, {
@@ -703,16 +776,14 @@ const resolvedMiddlewareVirtualModuleId = `\0${middlewareVirtualModuleId}`
/**
* @param {Logger} logger
- * @param {boolean} enableStatic_SRI
- * @param {string | undefined} sriHashesModule
+ * @param {Required} sri
* @param {SecurityHeadersOptions | undefined} securityHeadersOptions
* @param {string} publicDir
* @returns {Promise}
*/
const loadVirtualMiddlewareModule = async (
logger,
- enableStatic_SRI,
- sriHashesModule,
+ sri,
securityHeadersOptions,
publicDir,
) => {
@@ -720,9 +791,9 @@ const loadVirtualMiddlewareModule = async (
let staticHashesModuleLoader = ''
if (
- enableStatic_SRI &&
- sriHashesModule &&
- !(await doesFileExist(sriHashesModule))
+ sri.enableStatic &&
+ sri.hashesModule &&
+ !(await doesFileExist(sri.hashesModule))
) {
const h = /** @satisfies {HashesCollection} */ {
inlineScriptHashes: new Set(),
@@ -739,20 +810,21 @@ const loadVirtualMiddlewareModule = async (
// We generate a provisional hashes module. It won't contain the hashes for
// resources created by Astro, but it can be useful nonetheless.
await scanForNestedResources(logger, publicDir, h)
+ await scanAllowLists(sri, h)
await generateSRIHashesModule(
logger,
h,
- sriHashesModule,
+ sri.hashesModule,
false, // So we don't get redundant warnings
)
}
if (
- enableStatic_SRI &&
- sriHashesModule &&
- (await doesFileExist(sriHashesModule))
+ sri.enableStatic &&
+ sri.hashesModule &&
+ (await doesFileExist(sri.hashesModule))
) {
- extraImports = `import { perResourceSriHashes } from '${sriHashesModule}'`
+ extraImports = `import { perResourceSriHashes } from '${sri.hashesModule}'`
staticHashesModuleLoader = `
try {
if (perResourceSriHashes) {
@@ -771,11 +843,11 @@ try {
console.error('Failed to load static hashes module:', err)
}
`
- } else if (enableStatic_SRI && sriHashesModule) {
+ } else if (sri.enableStatic && sri.hashesModule) {
// Highly unlikely that this happens because of the provisional hashes
// module, but the world is a strange place.
logger.warn(
- `The SRI hashes module "${sriHashesModule}" did not exist at build time. You may have to run the build step again`,
+ `The SRI hashes module "${sri.hashesModule}" did not exist at build time. You may have to run the build step again`,
)
}
@@ -796,10 +868,10 @@ export const onRequest = await (async () => {
return defineMiddleware(${
securityHeadersOptions !== undefined
- ? `getCSPMiddlewareHandler(globalHashes, ${JSON.stringify(
+ ? `getCSPMiddlewareHandler(console, globalHashes, ${JSON.stringify(
securityHeadersOptions,
- )})`
- : 'getMiddlewareHandler(globalHashes)'
+ )}, ${JSON.stringify(sri)})`
+ : `getMiddlewareHandler(console, globalHashes, ${JSON.stringify(sri)})`
})
})()
`
@@ -807,19 +879,12 @@ export const onRequest = await (async () => {
/**
* @param {Logger} logger
- * @param {boolean} enableStatic_SRI
- * @param {string | undefined} sriHashesModule
+ * @param {Required} sri
* @param {SecurityHeadersOptions | undefined} securityHeaders
* @param {string} publicDir
* @return {import('vite').Plugin}
*/
-const getViteMiddlewarePlugin = (
- logger,
- enableStatic_SRI,
- sriHashesModule,
- securityHeaders,
- publicDir,
-) => {
+const getViteMiddlewarePlugin = (logger, sri, securityHeaders, publicDir) => {
return {
name: 'vite-plugin-astro-shield',
resolveId(id) {
@@ -833,8 +898,7 @@ const getViteMiddlewarePlugin = (
case resolvedMiddlewareVirtualModuleId:
return await loadVirtualMiddlewareModule(
logger,
- enableStatic_SRI,
- sriHashesModule,
+ sri,
securityHeaders,
publicDir,
)
@@ -846,24 +910,17 @@ const getViteMiddlewarePlugin = (
}
/**
- *
- * @param {boolean} enableStatic_SRI
- * @param {string | undefined} sriHashesModule
+ * @param {Required} sri
* @param {SecurityHeadersOptions | undefined} securityHeaders
* @returns
*/
-export const getAstroConfigSetup = (
- enableStatic_SRI,
- sriHashesModule,
- securityHeaders,
-) => {
+export const getAstroConfigSetup = (sri, securityHeaders) => {
/** @type {Required['astro:config:setup']} */
return async ({ logger, addMiddleware, config, updateConfig }) => {
const publicDir = fileURLToPath(config.publicDir)
const plugin = getViteMiddlewarePlugin(
logger,
- enableStatic_SRI,
- sriHashesModule,
+ sri,
securityHeaders,
publicDir,
)
diff --git a/src/fs.mjs b/src/fs.mjs
index 077a4e4..139101d 100644
--- a/src/fs.mjs
+++ b/src/fs.mjs
@@ -8,8 +8,9 @@ import { readdir, stat } from 'node:fs/promises'
import { resolve } from 'node:path'
/**
- * @typedef {import('./core.js').Logger} Logger
- * @typedef {import('./core.js').HashesCollection} HashesCollection
+ * @typedef {import('./core.d.ts').Logger} Logger
+ * @typedef {import('./core.d.ts').HashesCollection} HashesCollection
+ * @typedef {import('./main.d.ts').SRIOptions} SRIOptions
*/
/**
@@ -33,8 +34,15 @@ export const doesFileExist = async path => {
* @param {string} currentPath
* @param {string} rootPath
* @param {HashesCollection} h
- * @param {(logger: Logger, filePath: string, distDir: string, h: HashesCollection) => Promise} processFile
+ * @param {(
+ * logger: Logger,
+ * filePath: string,
+ * distDir: string,
+ * h: HashesCollection,
+ * sri?: SRIOptions
+ * ) => Promise} processFile
* @param {(filename: string) => boolean} filenameCondition
+ * @param {SRIOptions=} sri
*/
export const scanDirectory = async (
logger,
@@ -43,6 +51,7 @@ export const scanDirectory = async (
h,
processFile,
filenameCondition,
+ sri,
) => {
for (const file of await readdir(currentPath)) {
const filePath = resolve(currentPath, file)
@@ -56,9 +65,10 @@ export const scanDirectory = async (
h,
processFile,
filenameCondition,
+ sri,
)
} else if (stats.isFile() && filenameCondition(file)) {
- await processFile(logger, filePath, rootPath, h)
+ await processFile(logger, filePath, rootPath, h, sri)
}
}
}
diff --git a/src/headers.mjs b/src/headers.mjs
index b41d821..8af07f6 100644
--- a/src/headers.mjs
+++ b/src/headers.mjs
@@ -96,9 +96,13 @@ export const patchCspHeader = (plainHeaders, pageHashes, cspOpts) => {
if (pageHashes.scripts.size > 0) {
setSrcDirective(directives, 'script-src', pageHashes.scripts)
+ } else {
+ directives['script-src'] = "'none'"
}
if (pageHashes.styles.size > 0) {
setSrcDirective(directives, 'style-src', pageHashes.styles)
+ } else {
+ directives['style-src'] = "'none'"
}
if (Object.keys(directives).length > 0) {
plainHeaders['content-security-policy'] = serialiseCspDirectives(directives)
@@ -115,7 +119,11 @@ export const patchHeaders = (headers, pageHashes, securityHeadersOpts) => {
const plainHeaders = Object.fromEntries(headers.entries())
if (securityHeadersOpts.contentSecurityPolicy !== undefined) {
- patchCspHeader(plainHeaders, pageHashes, securityHeadersOpts.contentSecurityPolicy)
+ patchCspHeader(
+ plainHeaders,
+ pageHashes,
+ securityHeadersOpts.contentSecurityPolicy,
+ )
}
return new Headers(plainHeaders)
diff --git a/src/main.d.ts b/src/main.d.ts
index 0611c2c..9b22fe5 100644
--- a/src/main.d.ts
+++ b/src/main.d.ts
@@ -56,25 +56,14 @@ export type CSPOptions = {
cspDirectives?: CSPDirectives
}
-export type SecurityHeadersOptions = {
- /**
- * - If set, it controls how the CSP (Content Security Policy) header will be
- * generated in the middleware.
- * - If not set, no CSP header will be generated.
- *
- * Defaults to `undefined`.
- */
- contentSecurityPolicy?: CSPOptions | undefined
-}
-
-export type ShieldOptions = {
+export type SRIOptions = {
/**
* When set to `true`, `@kindspells/astro-shield` will generate Subresource
* Integrity (SRI) hashes for all assets referenced in static HTML pages.
*
* Defaults to `true`.
*/
- enableStatic_SRI?: boolean | undefined
+ enableStatic?: boolean
/**
* When set to `true`, `@kindspells/astro-shield` will generate Subresource
@@ -84,7 +73,7 @@ export type ShieldOptions = {
*
* Defaults to `false`.
*/
- enableMiddleware_SRI?: boolean | undefined
+ enableMiddleware?: boolean
/**
* Specifies the path for the auto-generated module that will contain the SRI
@@ -93,7 +82,59 @@ export type ShieldOptions = {
* - The generated module should be treated as source code, and not as a build
* artifact.
*/
- sriHashesModule?: string | undefined
+ hashesModule?: string | undefined
+
+ /**
+ * Inline styles are usually considered unsafe because they could make it
+ * easier for an attacker to inject CSS rules in dynamic pages. However, they
+ * don't pose a serious security risk for _most_ static pages.
+ *
+ * You can disable this option in case you want to enforce a stricter policy.
+ *
+ * Defaults to 'all'.
+ */
+ allowInlineStyles?: 'all' | 'static' | false
+
+ /**
+ * Inline scripts are usually considered unsafe because they could make it
+ * easier for an attacker to inject JS code in dynamic pages. However, they
+ * don't pose a serious security risk for _most_ static pages.
+ *
+ * You can disable this option in case you want to enforce a stricter policy.
+ *
+ * Defaults to 'all'.
+ */
+ allowInlineScripts?: 'all' | 'static' | false
+
+ /**
+ * Cross-Origin scripts must be explicitly allow-listed by URL in order to be
+ * allowed by the Content Security Policy.
+ */
+ scriptsAllowListUrls?: string[]
+
+ /**
+ * Cross-Origin styles must be explicitly allow-listed by URL in order to be
+ * allowed by the Content Security Policy.
+ */
+ stylesAllowListUrls?: string[]
+}
+
+export type SecurityHeadersOptions = {
+ /**
+ * - If set, it controls how the CSP (Content Security Policy) header will be
+ * generated in the middleware.
+ * - If not set, no CSP header will be generated.
+ *
+ * Defaults to `undefined`.
+ */
+ contentSecurityPolicy?: CSPOptions | undefined
+}
+
+export type ShieldOptions = {
+ /**
+ * Options related to Subresource Integrity (SRI).
+ */
+ sri?: SRIOptions | undefined
/**
* - If set, it controls how the security headers will be generated in the
@@ -103,10 +144,19 @@ export type ShieldOptions = {
* Defaults to `undefined`.
*/
securityHeaders?: SecurityHeadersOptions | undefined
+
+ /** @deprecated Use `sri.enableStatic` instead. */
+ enableStatic_SRI?: boolean | undefined
+
+ /** @deprecated Use `sri.enableMiddleware` instead. */
+ enableMiddleware_SRI?: boolean | undefined
+
+ /** @deprecated Use `sri.hashesModule` instead. */
+ sriHashesModule?: string | undefined
}
export type StrictShieldOptions = ShieldOptions & {
distDir: string
- enableMiddleware_SRI: boolean
+ sri: SRIOptions & { enableStatic: boolean; enableMiddleware: boolean }
}
// Main Integration
diff --git a/src/main.mjs b/src/main.mjs
index 93d7268..3d54453 100644
--- a/src/main.mjs
+++ b/src/main.mjs
@@ -11,12 +11,31 @@ import { getAstroConfigSetup, processStaticFiles } from './core.mjs'
* @typedef {import('astro').AstroIntegration} AstroIntegration
* @typedef {AstroIntegration['hooks']} AstroHooks
* @typedef {import('./core.d.ts').MiddlewareHashes} MiddlewareHashes
+ * @typedef {import('./main.d.ts').SRIOptions} SRIOptions
+ * @typedef {import('./main.d.ts').ShieldOptions} ShieldOptions
*/
+/**
+ * @param {Required} sri
+ * @returns {NonNullable}
+ */
+const getAstroBuildDone =
+ sri =>
+ /** @satisfies {NonNullable} */
+ async ({ dir, logger }) =>
+ await processStaticFiles(logger, {
+ distDir: fileURLToPath(dir),
+ sri,
+ })
+
+/** @param {string} msg */
+const logWarn = msg =>
+ console.warn(`\nWARNING (@kindspells/astro-shield):\n\t${msg}\n`)
+
// Integration
// -----------------------------------------------------------------------------
/**
- * @param {import('./main.d.ts').ShieldOptions} sriCspOptions
+ * @param {ShieldOptions} sriCspOptions
* @returns {AstroIntegration}
*/
export const shield = ({
@@ -24,44 +43,49 @@ export const shield = ({
enableStatic_SRI,
sriHashesModule,
securityHeaders,
+ sri,
}) => {
- if (sriHashesModule && enableStatic_SRI === false) {
- console.warn(
- '\nWARNING (@kindspells/astro-shield):\n\t`sriHashesModule` is ignored when `enableStatic_SRI` is `false`\n',
+ // TODO: Remove deprecated options in a future release
+ if (enableMiddleware_SRI !== undefined) {
+ logWarn(
+ '`enableMiddleware_SRI` is deprecated, use `sri.enableMiddleware` instead',
)
}
+ if (enableStatic_SRI !== undefined) {
+ logWarn('`enableStatic_SRI` is deprecated, use `sri.enableStatic` instead')
+ }
+ if (sriHashesModule !== undefined) {
+ logWarn('`sriHashesModule` is deprecated, use `sri.hashesModule` instead')
+ }
- /**
- * @param {boolean} enableMiddleware_SRI
- * @returns {NonNullable}
- */
- const getAstroBuildDone =
- enableMiddleware_SRI =>
- /** @satisfies {NonNullable} */
- async ({ dir, logger }) =>
- await processStaticFiles(logger, {
- distDir: fileURLToPath(dir),
- sriHashesModule,
- enableMiddleware_SRI,
- })
+ // We need to merge the deprecated options into the new object
+ const _sri = /** @satisfies {Required} */ {
+ enableMiddleware: sri?.enableMiddleware ?? enableMiddleware_SRI ?? false,
+ enableStatic: sri?.enableStatic ?? enableStatic_SRI ?? true,
+ hashesModule: sri?.hashesModule ?? sriHashesModule,
+
+ allowInlineScripts: sri?.allowInlineScripts ?? 'all',
+ allowInlineStyles: sri?.allowInlineStyles ?? 'all',
+
+ scriptsAllowListUrls: sri?.scriptsAllowListUrls ?? [],
+ stylesAllowListUrls: sri?.stylesAllowListUrls ?? [],
+ }
+
+ if (_sri.hashesModule && _sri.enableStatic === false) {
+ logWarn('`sriHashesModule` is ignored when `enableStatic_SRI` is `false`')
+ }
return /** @satisfies {AstroIntegration} */ {
name: '@kindspells/astro-shield',
hooks: {
- ...((enableStatic_SRI ?? true) === true
+ ...(_sri.enableStatic === true
? {
- 'astro:build:done': getAstroBuildDone(
- enableMiddleware_SRI ?? false,
- ),
+ 'astro:build:done': getAstroBuildDone(_sri),
}
: undefined),
- ...(enableMiddleware_SRI === true
+ ...(_sri.enableMiddleware === true
? {
- 'astro:config:setup': getAstroConfigSetup(
- enableStatic_SRI ?? true,
- sriHashesModule,
- securityHeaders,
- ),
+ 'astro:config:setup': getAstroConfigSetup(_sri, securityHeaders),
}
: undefined),
},
diff --git a/tests/core.test.mts b/tests/core.test.mts
index c664aef..90eb33c 100644
--- a/tests/core.test.mts
+++ b/tests/core.test.mts
@@ -7,12 +7,15 @@
import { resolve } from 'node:path'
import { readdir, rm } from 'node:fs/promises'
-import { beforeEach, describe, expect, it } from 'vitest'
+import { assert, beforeEach, describe, expect, it } from 'vitest'
import {
arraysEqual,
generateSRIHash,
generateSRIHashesModule,
+ getCSPMiddlewareHandler,
+ getMiddlewareHandler,
pageHashesEqual,
+ scanAllowLists,
scanForNestedResources,
sriHashesEqual,
updateDynamicPageSriHashes,
@@ -362,7 +365,7 @@ describe('updateStaticPageSriHashes', () => {
My Test Page
-
+