From 9252be67c7bea4c963f43fe549a21d2fa954fa24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Tue, 26 Mar 2024 22:57:43 +0100 Subject: [PATCH 1/6] feat: soft-deprecate sparse sri options Signed-off-by: Andres Correa Casablanca --- README.md | 6 ++-- src/core.mjs | 26 ++++++---------- src/headers.mjs | 6 +++- src/main.d.ts | 48 +++++++++++++++++++---------- src/main.mjs | 68 ++++++++++++++++++++++++++---------------- tests/core.test.mts | 4 +-- tests/headers.test.mts | 4 ++- vitest.config.unit.mts | 2 +- 8 files changed, 99 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 097a44f..5684eef 100644 --- a/README.md +++ b/README.md @@ -100,8 +100,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/src/core.mjs b/src/core.mjs index 90dc2df..820d6dd 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 @@ -607,10 +608,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(), @@ -633,15 +631,15 @@ export const processStaticFiles = async ( await scanForNestedResources(logger, distDir, h) - if (!sriHashesModule) { + if (!sri.hashesModule) { return } await generateSRIHashesModule( logger, h, - sriHashesModule, - enableMiddleware_SRI, + sri.hashesModule, + sri.enableMiddleware, ) } @@ -846,24 +844,18 @@ const getViteMiddlewarePlugin = ( } /** - * - * @param {boolean} enableStatic_SRI - * @param {string | undefined} sriHashesModule + * @param {SRIOptions} 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.enableStatic ?? true, + sri.hashesModule, securityHeaders, publicDir, ) diff --git a/src/headers.mjs b/src/headers.mjs index b41d821..bddf658 100644 --- a/src/headers.mjs +++ b/src/headers.mjs @@ -115,7 +115,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..506bb50 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,25 @@ export type ShieldOptions = { * - The generated module should be treated as source code, and not as a build * artifact. */ - sriHashesModule?: string | undefined + hashesModule?: string | undefined +} + +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 +110,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..973ec32 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,43 @@ 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') + } + + // 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, + } - /** - * @param {boolean} enableMiddleware_SRI - * @returns {NonNullable} - */ - const getAstroBuildDone = - enableMiddleware_SRI => - /** @satisfies {NonNullable} */ - async ({ dir, logger }) => - await processStaticFiles(logger, { - distDir: fileURLToPath(dir), - sriHashesModule, - enableMiddleware_SRI, - }) + 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 ? { - 'astro:build:done': getAstroBuildDone( - enableMiddleware_SRI ?? false, - ), + 'astro:build:done': getAstroBuildDone(_sri), } : undefined), ...(enableMiddleware_SRI === 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..933839e 100644 --- a/tests/core.test.mts +++ b/tests/core.test.mts @@ -362,7 +362,7 @@ describe('updateStaticPageSriHashes', () => { My Test Page - + ` @@ -379,7 +379,7 @@ describe('updateStaticPageSriHashes', () => { expect(h.extScriptHashes.size).toBe(1) expect( h.extScriptHashes.has( - 'sha256-OZvIBS4qHnaPlGAdVjMHjYLiBKWYKSAkj/gp8Mv8y7s=', + 'sha256-KrxzzNH5AjdyG84oIMGj043N5e4ZnvFjIC7HKOVJMv4=', ), ).toBe(true) expect(h.inlineScriptHashes.size).toBe(0) diff --git a/tests/headers.test.mts b/tests/headers.test.mts index 56a3df7..6701c8b 100644 --- a/tests/headers.test.mts +++ b/tests/headers.test.mts @@ -132,7 +132,9 @@ describe('patchHeaders', () => { scripts: new Set(['abc1', 'xyz2']), styles: new Set(['dbc1', 'xyz3', 'abc2']), } - const settings: SecurityHeadersOptions = { /* contentSecurityPolicy: {} */ } + const settings: SecurityHeadersOptions = { + /* contentSecurityPolicy: {} */ + } const patchedHeaders = patchHeaders(headers, pageHashes, settings) expect(patchedHeaders.has('content-security-policy')).toBe(false) diff --git a/vitest.config.unit.mts b/vitest.config.unit.mts index 78196bf..057ed7f 100644 --- a/vitest.config.unit.mts +++ b/vitest.config.unit.mts @@ -20,7 +20,7 @@ export default defineConfig({ ], thresholds: { statements: 72.0, - branches: 77.0, + branches: 76.0, functions: 80.0, lines: 72.0, }, From ad3abf5577bae9be420b7ddf376337a5b8817869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Tue, 26 Mar 2024 23:54:40 +0100 Subject: [PATCH 2/6] refactor: introduce new sri options Signed-off-by: Andres Correa Casablanca --- src/core.mjs | 45 +++++++++++++++++---------------------------- src/main.d.ts | 34 ++++++++++++++++++++++++++++++++++ src/main.mjs | 6 ++++++ tests/core.test.mts | 4 ++-- 4 files changed, 59 insertions(+), 30 deletions(-) diff --git a/src/core.mjs b/src/core.mjs index 820d6dd..38bbe84 100644 --- a/src/core.mjs +++ b/src/core.mjs @@ -701,16 +701,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, ) => { @@ -718,9 +716,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(), @@ -740,17 +738,17 @@ const loadVirtualMiddlewareModule = async ( 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) { @@ -769,11 +767,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`, ) } @@ -805,19 +803,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) { @@ -831,8 +822,7 @@ const getViteMiddlewarePlugin = ( case resolvedMiddlewareVirtualModuleId: return await loadVirtualMiddlewareModule( logger, - enableStatic_SRI, - sriHashesModule, + sri, securityHeaders, publicDir, ) @@ -844,7 +834,7 @@ const getViteMiddlewarePlugin = ( } /** - * @param {SRIOptions} sri + * @param {Required} sri * @param {SecurityHeadersOptions | undefined} securityHeaders * @returns */ @@ -854,8 +844,7 @@ export const getAstroConfigSetup = (sri, securityHeaders) => { const publicDir = fileURLToPath(config.publicDir) const plugin = getViteMiddlewarePlugin( logger, - sri.enableStatic ?? true, - sri.hashesModule, + sri, securityHeaders, publicDir, ) diff --git a/src/main.d.ts b/src/main.d.ts index 506bb50..9b22fe5 100644 --- a/src/main.d.ts +++ b/src/main.d.ts @@ -83,6 +83,40 @@ export type SRIOptions = { * artifact. */ 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 = { diff --git a/src/main.mjs b/src/main.mjs index 973ec32..e97d7e7 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -63,6 +63,12 @@ export const shield = ({ 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) { diff --git a/tests/core.test.mts b/tests/core.test.mts index 933839e..4d8a6d5 100644 --- a/tests/core.test.mts +++ b/tests/core.test.mts @@ -362,7 +362,7 @@ describe('updateStaticPageSriHashes', () => { My Test Page - + ` @@ -379,7 +379,7 @@ describe('updateStaticPageSriHashes', () => { expect(h.extScriptHashes.size).toBe(1) expect( h.extScriptHashes.has( - 'sha256-KrxzzNH5AjdyG84oIMGj043N5e4ZnvFjIC7HKOVJMv4=', + 'sha256-n5QiD5rG5p3P6N6SMn4S3Oc0MRSrqJdbCxTiOQHNdiU=', ), ).toBe(true) expect(h.inlineScriptHashes.size).toBe(0) From ccba042ec45639f3574b4bb37c3bc30bad4cde6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Wed, 27 Mar 2024 10:42:02 +0100 Subject: [PATCH 3/6] feat: guard against inline res for static pass Signed-off-by: Andres Correa Casablanca --- src/core.mjs | 26 ++++++++++++++++++++++---- src/fs.mjs | 18 ++++++++++++++---- tests/core.test.mts | 4 ++-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/core.mjs b/src/core.mjs index 38bbe84..fd58686 100644 --- a/src/core.mjs +++ b/src/core.mjs @@ -115,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 ( @@ -123,6 +125,8 @@ export const updateStaticPageSriHashes = async ( relativeFilepath, content, h, + allowInlineScripts = 'all', + allowInlineStyles = 'all', ) => { const processors = getRegexProcessors() @@ -202,9 +206,19 @@ export const updateStaticPageSriHashes = async ( } if (hasContent && !sriHash) { - sriHash = generateSRIHash(content) - h[`inline${t}Hashes`].add(sriHash) - pageHashes[t2].add(sriHash) + // TODO: Do not generate the hash if we disabled SRI for inline resources + 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) { @@ -355,8 +369,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, @@ -364,6 +379,8 @@ const processHTMLFile = async (logger, filePath, distDir, h) => { relative(distDir, filePath), content, h, + sri?.allowInlineScripts ?? 'all', + sri?.allowInlineStyles ?? 'all', ) if (updatedContent !== content) { @@ -627,6 +644,7 @@ export const processStaticFiles = async (logger, { distDir, sri }) => { h, processHTMLFile, file => extname(file) === '.html', + sri, ) await scanForNestedResources(logger, distDir, h) 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/tests/core.test.mts b/tests/core.test.mts index 4d8a6d5..5b936eb 100644 --- a/tests/core.test.mts +++ b/tests/core.test.mts @@ -362,7 +362,7 @@ describe('updateStaticPageSriHashes', () => { My Test Page - + ` @@ -379,7 +379,7 @@ describe('updateStaticPageSriHashes', () => { expect(h.extScriptHashes.size).toBe(1) expect( h.extScriptHashes.has( - 'sha256-n5QiD5rG5p3P6N6SMn4S3Oc0MRSrqJdbCxTiOQHNdiU=', + 'sha256-s3wSlNdTTOw87Nt6ZwYwxtjXOACkAFp+bNCiIBHLfus=', ), ).toBe(true) expect(h.inlineScriptHashes.size).toBe(0) From 4f73ba8530e2568c9fd4060954a0ce1b37ae19a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Wed, 27 Mar 2024 11:12:29 +0100 Subject: [PATCH 4/6] feat: guard against inline res for ssr pass Signed-off-by: Andres Correa Casablanca --- src/core.mjs | 19 +++++++++++++++---- tests/core.test.mts | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/core.mjs b/src/core.mjs index fd58686..4ad1430 100644 --- a/src/core.mjs +++ b/src/core.mjs @@ -206,7 +206,6 @@ export const updateStaticPageSriHashes = async ( } if (hasContent && !sriHash) { - // TODO: Do not generate the hash if we disabled SRI for inline resources if ( !(allowInlineScripts === false && t === 'Script') && !(allowInlineStyles === false && t === 'Style') @@ -237,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() @@ -253,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 ?? '' @@ -345,8 +346,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) { diff --git a/tests/core.test.mts b/tests/core.test.mts index 5b936eb..6bff87f 100644 --- a/tests/core.test.mts +++ b/tests/core.test.mts @@ -362,7 +362,7 @@ describe('updateStaticPageSriHashes', () => { My Test Page - + ` @@ -379,7 +379,7 @@ describe('updateStaticPageSriHashes', () => { expect(h.extScriptHashes.size).toBe(1) expect( h.extScriptHashes.has( - 'sha256-s3wSlNdTTOw87Nt6ZwYwxtjXOACkAFp+bNCiIBHLfus=', + 'sha256-vSvqa4zN5DZN/gOtz1s6Xuw0MUYNKQXvUPL8pXWgHGo=', ), ).toBe(true) expect(h.inlineScriptHashes.size).toBe(0) From 41b84576d37fa486a57005ea297658d0bc38566d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Wed, 27 Mar 2024 17:48:22 +0100 Subject: [PATCH 5/6] feat: cross-origin resources allow-lists Signed-off-by: Andres Correa Casablanca --- README.md | 68 ++++++-- package.json | 2 +- src/core.mjs | 81 +++++++-- src/headers.mjs | 4 + src/main.mjs | 4 +- tests/core.test.mts | 362 +++++++++++++++++++++++++++++++++++++++-- tests/headers.test.mts | 2 +- tests/main.test.mts | 6 +- vitest.config.unit.mts | 8 +- 9 files changed, 485 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 5684eef..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. diff --git a/package.json b/package.json index c754440..a18ae90 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", diff --git a/src/core.mjs b/src/core.mjs index 4ad1430..66dbcc2 100644 --- a/src/core.mjs +++ b/src/core.mjs @@ -41,7 +41,7 @@ export const generateSRIHash = data => { /** * @typedef {( - * hash: string, + * hash: string | null, * attrs: string, * setCrossorigin: boolean, * content?: string | undefined, @@ -50,19 +50,19 @@ export const generateSRIHash = data => { /** @type {ElemReplacer} */ const scriptReplacer = (hash, attrs, setCrossorigin, content) => - `${content ?? ''}` /** @type {ElemReplacer} */ const styleReplacer = (hash, attrs, setCrossorigin, content) => - `${content ?? ''}` /** @type {ElemReplacer} */ const linkStyleReplacer = (hash, attrs, setCrossorigin) => - `` @@ -242,7 +242,7 @@ export const updateDynamicPageSriHashes = async ( logger, content, globalHashes, - sri + sri, ) => { const processors = getRegexProcessors() @@ -331,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}"`) @@ -517,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 @@ -673,19 +708,22 @@ export const processStaticFiles = async (logger, { distDir, sri }) => { } /** + * @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, { @@ -700,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, { @@ -764,6 +810,7 @@ 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, @@ -821,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)})` }) })() ` diff --git a/src/headers.mjs b/src/headers.mjs index bddf658..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) diff --git a/src/main.mjs b/src/main.mjs index e97d7e7..3d54453 100644 --- a/src/main.mjs +++ b/src/main.mjs @@ -78,12 +78,12 @@ export const shield = ({ return /** @satisfies {AstroIntegration} */ { name: '@kindspells/astro-shield', hooks: { - ...((enableStatic_SRI ?? true) === true + ...(_sri.enableStatic === true ? { 'astro:build:done': getAstroBuildDone(_sri), } : undefined), - ...(enableMiddleware_SRI === true + ...(_sri.enableMiddleware === true ? { 'astro:config:setup': getAstroConfigSetup(_sri, securityHeaders), } diff --git a/tests/core.test.mts b/tests/core.test.mts index 6bff87f..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 - + ` @@ -379,7 +382,7 @@ describe('updateStaticPageSriHashes', () => { expect(h.extScriptHashes.size).toBe(1) expect( h.extScriptHashes.has( - 'sha256-vSvqa4zN5DZN/gOtz1s6Xuw0MUYNKQXvUPL8pXWgHGo=', + 'sha256-Xbdu1jxIAqCjb78wAdgir+Swc5faxBuLHPm0DC/lG80=', ), ).toBe(true) expect(h.inlineScriptHashes.size).toBe(0) @@ -656,7 +659,56 @@ describe('updateDynamicPageSriHashes', () => { expect(pageHashes.styles.size).toBe(0) }) - it('adds sri hash to external script (cross origin)', async () => { + it('avoids adding sri hash to external script when not allow-listed (cross origin)', async () => { + const remoteScript = + 'https://raw.githubusercontent.com/KindSpells/astro-shield/ae9521048f2129f633c075b7f7ef24e11bbd1884/main.mjs' + const content = ` + + My Test Page + + + + + ` + + const expected = ` + + My Test Page + + + + + ` + + const h = getMiddlewareHashes() + let warnCounter = 0 + const { pageHashes, updatedContent } = await updateDynamicPageSriHashes( + { + info: () => {}, + warn: () => { + warnCounter += 1 + }, + error: () => {}, + }, + content, + h, + ) + + expect(warnCounter).toBe(1) + expect(updatedContent).toEqual(expected) + expect(h.scripts.size).toBe(0) + expect(h.styles.size).toBe(0) + expect(h.scripts.get(remoteScript)).toBeUndefined() + expect(pageHashes.scripts.size).toBe(0) + expect( + pageHashes.scripts.has( + 'sha256-i4WR4ifasidZIuS67Rr6Knsy7/hK1xbVTc8ZAmnAv1Q=', + ), + ).toBe(false) + expect(pageHashes.styles.size).toBe(0) + }) + + it('adds sri hash to external script when allow-listed (cross origin)', async () => { const remoteScript = 'https://raw.githubusercontent.com/KindSpells/astro-shield/ae9521048f2129f633c075b7f7ef24e11bbd1884/main.mjs' const content = ` @@ -678,6 +730,10 @@ describe('updateDynamicPageSriHashes', () => { ` const h = getMiddlewareHashes() + h.scripts.set( + remoteScript, + 'sha256-i4WR4ifasidZIuS67Rr6Knsy7/hK1xbVTc8ZAmnAv1Q=', + ) const { pageHashes, updatedContent } = await updateDynamicPageSriHashes( console, content, @@ -778,16 +834,11 @@ describe('updateDynamicPageSriHashes', () => { let warnCalls = 0 const testLogger = { - info(msg: string) { - return console.info(msg) - }, - warn(msg: string) { + info(_msg: string) {}, + warn(_msg: string) { warnCalls += 1 - return console.warn(msg) - }, - error(msg: string) { - return console.error(msg) }, + error(_msg: string) {}, } const h = getMiddlewareHashes() @@ -846,6 +897,33 @@ describe('updateDynamicPageSriHashes', () => { }) }) +describe('scanAllowLists', () => { + it('populates hashes collection with hashes from allow-listed resources', async () => { + const scriptUrl = + 'https://raw.githubusercontent.com/KindSpells/astro-shield/ae9521048f2129f633c075b7f7ef24e11bbd1884/main.mjs' + const styleUrl = + 'https://raw.githubusercontent.com/KindSpells/astro-shield/26fdf5399d79baa3a8ea70ded526116b0bfc06ed/e2e/fixtures/hybrid2/src/styles/normalize.css' + + const h = getEmptyHashes() + await scanAllowLists( + { + scriptsAllowListUrls: [scriptUrl], + stylesAllowListUrls: [styleUrl], + }, + h, + ) + + expect(h.extScriptHashes.size).toBe(1) + expect(h.extStyleHashes.size).toBe(1) + expect(h.perResourceSriHashes.scripts.get(scriptUrl)).toBe( + 'sha256-i4WR4ifasidZIuS67Rr6Knsy7/hK1xbVTc8ZAmnAv1Q=', + ) + expect(h.perResourceSriHashes.styles.get(styleUrl)).toBe( + 'sha256-7o69ZgSUx++S5DC0Ek7X2CbY4GnxxUkwGZDdybWxSG8=', + ) + }) +}) + describe('scanForNestedResources', () => { it('populates our hashes collection with hashes from nested resources', async () => { const h = getEmptyHashes() @@ -901,3 +979,263 @@ describe('generateSRIHashesModule', () => { expect(hashesModule).toHaveProperty('perResourceSriHashes') }) }) + +describe('getMiddlewareHandler', () => { + it('returns a working middleware handler', async () => { + const hashes = { + scripts: new Map(), + styles: new Map(), + } + let warnCounter = 0 + const middleware = getMiddlewareHandler( + { + info: () => {}, + warn: () => { + warnCounter += 1 + }, + error: () => {}, + }, + hashes, + { + enableStatic: true, + enableMiddleware: true, + hashesModule: undefined, + allowInlineScripts: 'all', + allowInlineStyles: 'all', + scriptsAllowListUrls: [], + stylesAllowListUrls: [], + }, + ) + type MidParams = Parameters + + const patchedResponse = await middleware( + undefined as unknown as MidParams[0], + (async () => { + return { + text: async () => ` + + + My Test Page + + + + +`, + status: 200, + statusText: 'OK', + headers: new Headers(), + } + }) as MidParams[1], + ) + + expect(warnCounter).toBe(0) + assert(patchedResponse instanceof Response) + const responseText = await patchedResponse.text() + expect(responseText).toBe(` + + + My Test Page + + + + +`) + }) + + it('protects from validating disallowed inline scripts', async () => { + const hashes = { + scripts: new Map(), + styles: new Map(), + } + + let warnCounter = 0 + const middleware = getMiddlewareHandler( + { + info: () => {}, + warn: () => { + warnCounter += 1 + }, + error: () => {}, + }, + hashes, + { + enableStatic: true, + enableMiddleware: true, + hashesModule: undefined, + allowInlineScripts: 'static', + allowInlineStyles: 'static', + scriptsAllowListUrls: [], + stylesAllowListUrls: [], + }, + ) + type MidParams = Parameters + + const patchedResponse = await middleware( + undefined as unknown as MidParams[0], + (async () => { + return { + text: async () => ` + + + My Test Page + + + + +`, + status: 200, + statusText: 'OK', + headers: new Headers(), + } + }) as MidParams[1], + ) + + expect(warnCounter).toBe(1) + assert(patchedResponse instanceof Response) + const responseText = await patchedResponse.text() + expect(patchedResponse.headers.has('content-security-policy')).toBe(false) + expect(responseText).toBe(` + + + My Test Page + + + + +`) + }) +}) + +describe('getCSPMiddlewareHandler', () => { + it('returns a working middleware handler', async () => { + const hashes = { + scripts: new Map(), + styles: new Map(), + } + let warnCounter = 0 + const middleware = getCSPMiddlewareHandler( + { + info: () => {}, + warn: () => { + warnCounter += 1 + }, + error: () => {}, + }, + hashes, + { + contentSecurityPolicy: {}, + }, + { + enableStatic: true, + enableMiddleware: true, + hashesModule: undefined, + allowInlineScripts: 'all', + allowInlineStyles: 'all', + scriptsAllowListUrls: [], + stylesAllowListUrls: [], + }, + ) + type MidParams = Parameters + + const patchedResponse = await middleware( + undefined as unknown as MidParams[0], + (async () => { + return { + text: async () => ` + + + My Test Page + + + + +`, + status: 200, + statusText: 'OK', + headers: new Headers(), + } + }) as MidParams[1], + ) + + expect(warnCounter).toBe(0) + assert(patchedResponse instanceof Response) + expect(patchedResponse.headers.has('content-security-policy')).toBe(true) + expect(patchedResponse.headers.get('content-security-policy')).toBe( + `script-src 'self' 'sha256-TWupyvVdPa1DyFqLnQMqRpuUWdS3nKPnz70IcS/1o3Q='; style-src 'none'`, + ) + const responseText = await patchedResponse.text() + expect(responseText).toBe(` + + + My Test Page + + + + +`) + }) + + it('protects from validating disallowed inline scripts', async () => { + const hashes = { + scripts: new Map(), + styles: new Map(), + } + + let warnCounter = 0 + const middleware = getCSPMiddlewareHandler( + { + info: () => {}, + warn: () => { + warnCounter += 1 + }, + error: () => {}, + }, + hashes, + { contentSecurityPolicy: {} }, + { + enableStatic: true, + enableMiddleware: true, + hashesModule: undefined, + allowInlineScripts: 'static', + allowInlineStyles: 'static', + scriptsAllowListUrls: [], + stylesAllowListUrls: [], + }, + ) + type MidParams = Parameters + + const patchedResponse = await middleware( + undefined as unknown as MidParams[0], + (async () => { + return { + text: async () => ` + + + My Test Page + + + + +`, + status: 200, + statusText: 'OK', + headers: new Headers(), + } + }) as MidParams[1], + ) + + expect(warnCounter).toBe(1) + assert(patchedResponse instanceof Response) + const responseText = await patchedResponse.text() + expect(patchedResponse.headers.has('content-security-policy')).toBe(true) + expect(responseText).toBe(` + + + My Test Page + + + + +`) + }) +}) diff --git a/tests/headers.test.mts b/tests/headers.test.mts index 6701c8b..3fed2cf 100644 --- a/tests/headers.test.mts +++ b/tests/headers.test.mts @@ -154,7 +154,7 @@ describe('patchHeaders', () => { const patchedHeaders = patchHeaders(headers, pageHashes, settings) expect(patchedHeaders.get('content-security-policy')).toBe( - "form-action 'self'; frame-ancestors 'none'", + "form-action 'self'; frame-ancestors 'none'; script-src 'none'; style-src 'none'", ) }) diff --git a/tests/main.test.mts b/tests/main.test.mts index 2395a91..00d260a 100644 --- a/tests/main.test.mts +++ b/tests/main.test.mts @@ -36,17 +36,17 @@ describe('sriCSP', () => { }) it('returns a valid AstroIntegration object for almost-default config', () => { - const integration = shield({ enableStatic_SRI: true }) + const integration = shield({ sri: { enableStatic: true } }) checkIntegration(integration) }) it('returns an "empty" integration when we disable all features', () => { - const integration = shield({ enableStatic_SRI: false }) + const integration = shield({ sri: { enableStatic: false } }) checkIntegration(integration, []) }) it('returns hooks for static & dynamic content when we enable middleware', () => { - const integration = shield({ enableMiddleware_SRI: true }) + const integration = shield({ sri: { enableMiddleware: true } }) checkIntegration(integration, ['astro:build:done', 'astro:config:setup']) }) diff --git a/vitest.config.unit.mts b/vitest.config.unit.mts index 057ed7f..3cdbb6d 100644 --- a/vitest.config.unit.mts +++ b/vitest.config.unit.mts @@ -19,10 +19,10 @@ export default defineConfig({ 'coverage-unit/**/*', ], thresholds: { - statements: 72.0, - branches: 76.0, - functions: 80.0, - lines: 72.0, + statements: 77.0, + branches: 77.0, + functions: 87.0, + lines: 77.0, }, reportsDirectory: 'coverage-unit', }, From 504c88b636d2d99f5d24aa4a2656aee6ad13e5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Wed, 27 Mar 2024 17:52:55 +0100 Subject: [PATCH 6/6] chore: upgrade deps Signed-off-by: Andres Correa Casablanca --- e2e/fixtures/dynamic/package.json | 2 +- e2e/fixtures/dynamic/pnpm-lock.yaml | 139 ++++++++++--------- e2e/fixtures/hybrid/package.json | 2 +- e2e/fixtures/hybrid/pnpm-lock.yaml | 139 ++++++++++--------- e2e/fixtures/hybrid2/package.json | 2 +- e2e/fixtures/hybrid2/pnpm-lock.yaml | 139 ++++++++++--------- e2e/fixtures/hybrid3/package.json | 2 +- e2e/fixtures/hybrid3/pnpm-lock.yaml | 139 ++++++++++--------- e2e/fixtures/static/package.json | 2 +- e2e/fixtures/static/pnpm-lock.yaml | 133 ++++++++++--------- package.json | 8 +- pnpm-lock.yaml | 199 +++++++++++++++------------- 12 files changed, 481 insertions(+), 425 deletions(-) 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 a18ae90..7c7bebd 100644 --- a/package.json +++ b/package.json @@ -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