chore(docs): use playwright in showcase script

+ ts and use node 22 to run it
+ qwik version
+ update after a week
This commit is contained in:
Wout Mertens
2025-11-12 22:04:52 +01:00
parent 796be64e2b
commit 09bcfbba35
4 changed files with 87 additions and 287 deletions

View File

@@ -30,8 +30,8 @@
bashInteractive
gitMinimal
nodejs_20
corepack_20
nodejs_22
corepack_22
# Playwright for the end-to-end tests
playwright-driver.browsers

View File

@@ -43,7 +43,7 @@
"prettier": "3.6.2",
"prism-themes": "1.9.0",
"prismjs": "1.30.0",
"puppeteer": "22.13.1",
"playwright": "1.40.0",
"qwik-image": "0.0.16",
"react": "18.3.1",
"react-dom": "18.3.1",
@@ -75,7 +75,7 @@
"build.preview": "NODE_OPTIONS=--max-old-space-size=8192 vite build --ssr src/entry.preview.tsx",
"build.repl-sw": "vite --config vite.config-repl-sw.mts build",
"build.server": "NODE_OPTIONS=--max-old-space-size=8192 vite build -c adapters/cloudflare-pages/vite.config.mts",
"build.showcase": "pnpm node scripts/showcase.js",
"build.showcase": "node scripts/showcase.ts",
"codesandbox.sync": "node codesandbox.sync.ts",
"contributors": "node contributors.ts",
"deploy": "wrangler pages publish ./dist",

View File

@@ -1,49 +1,72 @@
/* eslint-disable no-console */
const fs = require('fs');
const puppeteer = require('puppeteer');
const pages = require('./pages.json');
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
import { chromium, type Page } from 'playwright';
import { fetch } from 'undici';
import pages from './pages.json' with { type: 'json' };
type InputPageData = {
href: string;
tags: string[];
size: 'small' | 'large';
repo?: string;
};
type PageData = InputPageData & {
title?: string;
imgSrc?: string;
perf?: {
score?: number;
inpMs?: number;
clsScore?: number;
ttfbMs?: number;
fcpDisplay?: string;
fcpScore?: number;
lcpDisplay?: string;
lcpScore?: number;
ttiDisplay?: string;
ttiScore?: number;
ttiTime?: number;
};
version?: string;
ts: number;
};
const OUTPUT_JSON = 'src/routes/(ecosystem)/showcase/generated-pages.json';
async function captureMultipleScreenshots() {
if (!fs.existsSync('public/showcases')) {
fs.mkdirSync('public/showcases');
if (!existsSync('public/showcases')) {
mkdirSync('public/showcases');
}
let browser = null;
const output = [];
try {
// launch headless Chromium browser
browser = await puppeteer.launch({
browser = await chromium.launch({
headless: true,
incognito: true,
});
const incognito = await browser.createBrowserContext();
let existingJson = [];
const context = await browser.newContext();
let existingJson: PageData[] = [];
try {
const data = fs.readFileSync(OUTPUT_JSON, 'utf8');
existingJson = JSON.parse(data);
const data = readFileSync(OUTPUT_JSON, 'utf8');
existingJson = JSON.parse(data) as PageData[];
} catch {
// ignore
}
for (const pageData of pages) {
let page;
let page: Page;
try {
page = await incognito.newPage();
page.setUserAgent(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
);
page = await context.newPage();
// page.setUserAgent(
// 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
// );
// set viewport width and height
await page.setViewport({
await page.setViewportSize({
width: 1440,
height: 980,
});
const href = pageData.href;
const existing = existingJson.find((item) => item.href === href);
if (existing) {
if (existing && existing.ts - Date.now() < 1000 * 60 * 60 * 24 * 7) {
console.log('Skipping page', href);
output.push({
@@ -58,12 +81,13 @@ async function captureMultipleScreenshots() {
await page.goto(href);
const title = await page.title();
const html = await page.$('html');
const html = page.locator('html');
const hasContainer = await html.evaluate((node) => node.hasAttribute('q:container'));
if (!hasContainer) {
console.warn('❌ Not Qwik Site', href);
continue;
}
const version = await html.getAttribute('q:version');
const filename = href
.replace('https://', '')
.replace('/', '_')
@@ -72,12 +96,12 @@ async function captureMultipleScreenshots() {
.toLowerCase();
await wait(5000);
const path = `public/showcases/${filename}.webp`;
const path = `public/showcases/${filename}.jpeg`;
const [pagespeedOutput, _] = await Promise.all([
getPagespeedData(href),
page.screenshot({
path: path,
type: 'webp',
type: 'jpeg',
quality: 50,
}),
]);
@@ -119,33 +143,34 @@ async function captureMultipleScreenshots() {
ttiTime,
};
output.push({
title,
imgSrc: `/showcases/${filename}.webp`,
perf,
...pageData,
ts: Date.now(),
title,
imgSrc: `/showcases/${filename}.jpeg`,
perf,
version,
});
console.log(`${title} - (${href})`);
} catch (err) {
console.error(err);
} finally {
if (page) {
if (page!) {
await page.close();
}
}
}
} catch (err) {
console.log(`❌ Error: ${err.message}`);
console.log(`❌ Error: ${(err as Error)?.message || err}`);
} finally {
if (browser) {
await browser.close();
}
console.log(`\n🎉 ${pages.length} screenshots captured.`);
}
fs.writeFileSync(OUTPUT_JSON, JSON.stringify(output, undefined, 2) + '\n');
writeFileSync(OUTPUT_JSON, JSON.stringify(output, undefined, 2) + '\n');
}
async function getPagespeedData(url) {
const { fetch } = await import('undici');
async function getPagespeedData(url: string) {
const requestURL = `https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=${encodeURIComponent(
url
)}&key=AIzaSyApBC9gblaCzWrtEBgHnZkd_B37OF49BfM&category=PERFORMANCE&strategy=MOBILE`;
@@ -157,11 +182,15 @@ async function getPagespeedData(url) {
if (!res.ok) {
throw new Error(await res.text());
}
return res.json();
return res.json() as Promise<{
lighthouseResult: any;
loadingExperience: any;
pagespeedResult: any;
}>;
});
}
captureMultipleScreenshots();
function wait(ms) {
function wait(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

271
pnpm-lock.yaml generated
View File

@@ -402,6 +402,9 @@ importers:
openai:
specifier: 3.3.0
version: 3.3.0
playwright:
specifier: 1.40.0
version: 1.40.0
prettier:
specifier: 3.6.2
version: 3.6.2
@@ -411,9 +414,6 @@ importers:
prismjs:
specifier: 1.30.0
version: 1.30.0
puppeteer:
specifier: 22.13.1
version: 22.13.1(typescript@5.4.5)
qwik-image:
specifier: 0.0.16
version: 0.0.16
@@ -3066,11 +3066,6 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
'@puppeteer/browsers@2.2.4':
resolution: {integrity: sha512-BdG2qiI1dn89OTUUsx2GZSpUzW+DRffR1wlMJyKxVHYrhnKoELSDxDd+2XImUkuWPEKk76H5FcM/gPFrEK1Tfw==}
engines: {node: '>=18'}
hasBin: true
'@qwik-ui/headless@0.6.7':
resolution: {integrity: sha512-rbBQslITfPFXpqcDlh5jKrb2hwGuTncyB9Z4Vu/8WKHO1iLiAxPcML16yKFxEBkMxq4hEjFRUc31ztg93sH3Rg==}
engines: {node: '>=16.0.0'}
@@ -3566,9 +3561,6 @@ packages:
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -4274,10 +4266,6 @@ packages:
resolution: {integrity: sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ==}
engines: {node: '>=14'}
ast-types@0.13.4:
resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
engines: {node: '>=4'}
astring@1.9.0:
resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
hasBin: true
@@ -4381,10 +4369,6 @@ packages:
resolution: {integrity: sha512-hY/u2lxLrbecMEWSB0IpGzGyDyeoMFQhCvZd2jGFSE5I17Fh01sYUBPCJtkWERw7zrac9+cIghxm/ytJa2X8iA==}
hasBin: true
basic-ftp@5.0.5:
resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
engines: {node: '>=10.0.0'}
before-after-hook@2.2.3:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
@@ -4620,11 +4604,6 @@ packages:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
chromium-bidi@0.6.1:
resolution: {integrity: sha512-kSxJRj0VgtUKz6nmzc2JPfyfJGzwzt65u7PqhPHtgGQUZLF5oG+ST6l6e5ONfStUMAlhSutFCjaGKllXZa16jA==}
peerDependencies:
devtools-protocol: '*'
ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
@@ -4953,10 +4932,6 @@ packages:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
data-uri-to-buffer@6.0.2:
resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
engines: {node: '>= 14'}
data-view-buffer@1.0.2:
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
@@ -5066,10 +5041,6 @@ packages:
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
degenerator@5.0.1:
resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
engines: {node: '>= 14'}
del@8.0.1:
resolution: {integrity: sha512-gPqh0mKTPvaUZGAuHbrBUYKZWBNAeHG7TU3QH5EhVwPMyKvmfJaNXhcD2jTcXsJRRcffuho4vaYweu80dRrMGA==}
engines: {node: '>=18'}
@@ -5159,9 +5130,6 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
devtools-protocol@0.0.1299070:
resolution: {integrity: sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==}
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -6152,10 +6120,6 @@ packages:
get-tsconfig@4.11.0:
resolution: {integrity: sha512-sNsqf7XKQ38IawiVGPOoAlqZo1DMrO7TU+ZcZwi7yLl7/7S0JwmoBMKz/IkUPhSoXM0Ng3vT0yB1iCe5XavDeQ==}
get-uri@6.0.5:
resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==}
engines: {node: '>= 14'}
gh-release-fetch@4.0.3:
resolution: {integrity: sha512-TOiP1nwLsH5shG85Yt6v6Kjq5JU/44jXyEpbcfPgmj3C829yeXIlx9nAEwQRaxtRF3SJinn2lz7XUkfG9W/U4g==}
engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0}
@@ -6382,10 +6346,6 @@ packages:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
http-proxy-agent@7.0.2:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
http-proxy-middleware@2.0.9:
resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==}
engines: {node: '>=12.0.0'}
@@ -6574,10 +6534,6 @@ packages:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
ip-address@10.0.1:
resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
engines: {node: '>= 12'}
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -7291,10 +7247,6 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
lru-cache@7.18.3:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
luxon@3.7.2:
resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
engines: {node: '>=12'}
@@ -7649,9 +7601,6 @@ packages:
resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
engines: {node: '>= 18'}
mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
@@ -7750,10 +7699,6 @@ packages:
netlify-redirector@0.5.0:
resolution: {integrity: sha512-4zdzIP+6muqPCuE8avnrgDJ6KW/2+UpHTRcTbMXCIRxiRmyrX+IZ4WSJGZdHPWF3WmQpXpy603XxecZ9iygN7w==}
netmask@2.0.2:
resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
engines: {node: '>= 0.4.0'}
new-github-release-url@2.0.0:
resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -8098,14 +8043,6 @@ packages:
resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==}
engines: {node: '>=12'}
pac-proxy-agent@7.2.0:
resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==}
engines: {node: '>= 14'}
pac-resolver@7.0.1:
resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==}
engines: {node: '>= 14'}
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
@@ -8279,11 +8216,21 @@ packages:
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
playwright-core@1.40.0:
resolution: {integrity: sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==}
engines: {node: '>=16'}
hasBin: true
playwright-core@1.54.1:
resolution: {integrity: sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==}
engines: {node: '>=18'}
hasBin: true
playwright@1.40.0:
resolution: {integrity: sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==}
engines: {node: '>=16'}
hasBin: true
playwright@1.54.1:
resolution: {integrity: sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==}
engines: {node: '>=18'}
@@ -8463,10 +8410,6 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
promise-limit@2.7.0:
resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==}
@@ -8490,13 +8433,6 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
proxy-agent@6.5.0:
resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==}
engines: {node: '>= 14'}
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
ps-list@8.1.1:
resolution: {integrity: sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -8515,16 +8451,6 @@ packages:
resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==}
engines: {node: '>=12.20'}
puppeteer-core@22.13.1:
resolution: {integrity: sha512-NmhnASYp51QPRCAf9n0OPxuPMmzkKd8+2sB9Q+BjwwCG25gz6iuNc3LQDWa+cH2tyivmJppLhNNFt6Q3HmoOpw==}
engines: {node: '>=18'}
puppeteer@22.13.1:
resolution: {integrity: sha512-PwXLDQK5u83Fm5A7TGMq+9BR7iHDJ8a3h21PSsh/E6VfhxiKYkU7+tvGZNSCap6k3pCNDd9oNteVBEctcBalmQ==}
engines: {node: '>=18'}
deprecated: < 24.15.0 is no longer supported
hasBin: true
pure-rand@6.1.0:
resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
@@ -9095,24 +9021,12 @@ packages:
slow-redact@0.3.0:
resolution: {integrity: sha512-cf723wn9JeRIYP9tdtd86GuqoR5937u64Io+CYjlm2i7jvu7g0H+Cp0l0ShAf/4ZL+ISUTVT+8Qzz7RZmp9FjA==}
smart-buffer@4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
snarkdown@2.0.0:
resolution: {integrity: sha512-MgL/7k/AZdXCTJiNgrO7chgDqaB9FGM/1Tvlcenenb7div6obaDATzs16JhFyHHBGodHT3B7RzRc5qk8pFhg3A==}
snoop@1.0.4:
resolution: {integrity: sha512-VgTDhcpNDEf63CMPWh/J/kr2mTKDYsonG6Kpd9kXCpoMyUMZoe+3NkkbMKIcu7dUwmX4OeeQQ0m/uQfTjMY8bw==}
socks-proxy-agent@8.0.5:
resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
engines: {node: '>= 14'}
socks@2.8.7:
resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
sonic-boom@4.2.0:
resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
@@ -9868,9 +9782,6 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
urlpattern-polyfill@10.0.0:
resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==}
urlpattern-polyfill@10.1.0:
resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==}
@@ -10320,9 +10231,6 @@ packages:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
engines: {node: '>= 10'}
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
zod@3.25.48:
resolution: {integrity: sha512-0X1mz8FtgEIvaxGjdIImYpZEaZMrund9pGXm3M6vM7Reba0e2eI71KPjSCGXBfwKDPwPoywf6waUKc3/tFvX2Q==}
@@ -12595,21 +12503,6 @@ snapshots:
'@popperjs/core@2.11.8': {}
'@puppeteer/browsers@2.2.4':
dependencies:
debug: 4.4.3(supports-color@9.4.0)
extract-zip: 2.0.1
progress: 2.0.3
proxy-agent: 6.5.0
semver: 7.7.2
tar-fs: 3.1.1
unbzip2-stream: 1.4.3
yargs: 17.7.2
transitivePeerDependencies:
- bare-buffer
- react-native-b4a
- supports-color
'@qwik-ui/headless@0.6.7(@builder.io/qwik@packages+qwik)':
dependencies:
'@builder.io/qwik': link:packages/qwik
@@ -13073,8 +12966,6 @@ snapshots:
'@tokenizer/token@0.3.0': {}
'@tootallnate/quickjs-emscripten@0.23.0': {}
'@trysound/sax@0.2.0': {}
'@ts-morph/common@0.24.0':
@@ -13976,10 +13867,6 @@ snapshots:
ast-module-types@5.0.0: {}
ast-types@0.13.4:
dependencies:
tslib: 2.8.1
astring@1.9.0: {}
async-function@1.0.0: {}
@@ -14077,8 +13964,6 @@ snapshots:
baseline-browser-mapping@2.8.9: {}
basic-ftp@5.0.5: {}
before-after-hook@2.2.3: {}
before-after-hook@3.0.2: {}
@@ -14335,13 +14220,6 @@ snapshots:
chownr@3.0.0: {}
chromium-bidi@0.6.1(devtools-protocol@0.0.1299070):
dependencies:
devtools-protocol: 0.0.1299070
mitt: 3.0.1
urlpattern-polyfill: 10.0.0
zod: 3.23.8
ci-info@3.9.0: {}
ci-info@4.2.0: {}
@@ -14660,8 +14538,6 @@ snapshots:
data-uri-to-buffer@4.0.1: {}
data-uri-to-buffer@6.0.2: {}
data-view-buffer@1.0.2:
dependencies:
call-bound: 1.0.4
@@ -14753,12 +14629,6 @@ snapshots:
defu@6.1.4: {}
degenerator@5.0.1:
dependencies:
ast-types: 0.13.4
escodegen: 2.1.0
esprima: 4.0.1
del@8.0.1:
dependencies:
globby: 14.1.0
@@ -14842,8 +14712,6 @@ snapshots:
dependencies:
dequal: 2.0.3
devtools-protocol@0.0.1299070: {}
didyoumean@1.2.2: {}
diff@4.0.2: {}
@@ -16019,14 +15887,6 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
get-uri@6.0.5:
dependencies:
basic-ftp: 5.0.5
data-uri-to-buffer: 6.0.2
debug: 4.4.3(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
gh-release-fetch@4.0.3:
dependencies:
'@xhmikosr/downloader': 13.0.1
@@ -16347,13 +16207,6 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
http-proxy-middleware@2.0.9(@types/express@4.17.21)(debug@4.4.0):
dependencies:
'@types/http-proxy': 1.17.16
@@ -16563,8 +16416,6 @@ snapshots:
hasown: 2.0.2
side-channel: 1.1.0
ip-address@10.0.1: {}
ipaddr.js@1.9.1: {}
ipx@2.1.0(@netlify/blobs@8.2.0):
@@ -17276,8 +17127,6 @@ snapshots:
dependencies:
yallist: 4.0.0
lru-cache@7.18.3: {}
luxon@3.7.2: {}
macos-release@3.4.0: {}
@@ -17890,8 +17739,6 @@ snapshots:
dependencies:
minipass: 7.1.2
mitt@3.0.1: {}
mkdirp-classic@0.5.3: {}
mkdirp@1.0.4: {}
@@ -18093,8 +17940,6 @@ snapshots:
netlify-redirector@0.5.0: {}
netmask@2.0.2: {}
new-github-release-url@2.0.0:
dependencies:
type-fest: 2.19.0
@@ -18492,24 +18337,6 @@ snapshots:
dependencies:
p-timeout: 6.1.4
pac-proxy-agent@7.2.0:
dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0
agent-base: 7.1.4
debug: 4.4.3(supports-color@9.4.0)
get-uri: 6.0.5
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
pac-resolver: 7.0.1
socks-proxy-agent: 8.0.5
transitivePeerDependencies:
- supports-color
pac-resolver@7.0.1:
dependencies:
degenerator: 5.0.1
netmask: 2.0.2
package-json-from-dist@1.0.1: {}
package-json@10.0.1:
@@ -18664,8 +18491,16 @@ snapshots:
mlly: 1.8.0
pathe: 2.0.3
playwright-core@1.40.0: {}
playwright-core@1.54.1: {}
playwright@1.40.0:
dependencies:
playwright-core: 1.40.0
optionalDependencies:
fsevents: 2.3.2
playwright@1.54.1:
dependencies:
playwright-core: 1.54.1
@@ -18798,8 +18633,6 @@ snapshots:
process@0.11.10: {}
progress@2.0.3: {}
promise-limit@2.7.0: {}
prompts@2.4.2:
@@ -18824,21 +18657,6 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
proxy-agent@6.5.0:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@9.4.0)
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
lru-cache: 7.18.3
pac-proxy-agent: 7.2.0
proxy-from-env: 1.1.0
socks-proxy-agent: 8.0.5
transitivePeerDependencies:
- supports-color
proxy-from-env@1.1.0: {}
ps-list@8.1.1: {}
pump@1.0.3:
@@ -18857,34 +18675,6 @@ snapshots:
dependencies:
escape-goat: 4.0.0
puppeteer-core@22.13.1:
dependencies:
'@puppeteer/browsers': 2.2.4
chromium-bidi: 0.6.1(devtools-protocol@0.0.1299070)
debug: 4.4.3(supports-color@9.4.0)
devtools-protocol: 0.0.1299070
ws: 8.18.3
transitivePeerDependencies:
- bare-buffer
- bufferutil
- react-native-b4a
- supports-color
- utf-8-validate
puppeteer@22.13.1(typescript@5.4.5):
dependencies:
'@puppeteer/browsers': 2.2.4
cosmiconfig: 9.0.0(typescript@5.4.5)
devtools-protocol: 0.0.1299070
puppeteer-core: 22.13.1
transitivePeerDependencies:
- bare-buffer
- bufferutil
- react-native-b4a
- supports-color
- typescript
- utf-8-validate
pure-rand@6.1.0: {}
qs@6.11.0:
@@ -19666,25 +19456,10 @@ snapshots:
slow-redact@0.3.0: {}
smart-buffer@4.2.0: {}
snarkdown@2.0.0: {}
snoop@1.0.4: {}
socks-proxy-agent@8.0.5:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@9.4.0)
socks: 2.8.7
transitivePeerDependencies:
- supports-color
socks@2.8.7:
dependencies:
ip-address: 10.0.1
smart-buffer: 4.2.0
sonic-boom@4.2.0:
dependencies:
atomic-sleep: 1.0.0
@@ -20423,8 +20198,6 @@ snapshots:
dependencies:
punycode: 2.3.1
urlpattern-polyfill@10.0.0: {}
urlpattern-polyfill@10.1.0: {}
urlpattern-polyfill@8.0.2: {}
@@ -20941,8 +20714,6 @@ snapshots:
compress-commons: 4.1.2
readable-stream: 3.6.2
zod@3.23.8: {}
zod@3.25.48: {}
zwitch@2.0.4: {}