aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMael <mael.primet@gmail.com>2025-06-22 19:08:21 +0200
committerGitHub <noreply@github.com>2025-06-22 18:08:21 +0100
commitc70d64d4cde2bf2acc5c4164eef79c40fd58aa42 (patch)
treeebf43f4e486b339dcabc4e64a19daac24e419a44
parent727c7f227037f5e4f013173c07812891a58f1b58 (diff)
downloadkarakeep-c70d64d4cde2bf2acc5c4164eef79c40fd58aa42.tar.zst
feat(workers): migrate from puppeteer to playwright (#1296)
* feat: convert to playwright Convert crawling to use Playwright instead of Chrome. - Update Dockerfile to include Playwright - Update crawler worker to use Playwright API - Update dependencies * feat: convert from Puppeteer to Playwright for crawling * feat: update docker-compose * use separate browser context for better isolation * skip chrome download in linux script * readd the stealth plugin --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
-rw-r--r--apps/workers/package.json6
-rw-r--r--apps/workers/workers/crawlerWorker.ts67
-rw-r--r--docker/Dockerfile2
-rw-r--r--docker/Dockerfile.dev2
-rw-r--r--docker/docker-compose.dev.yml2
-rw-r--r--karakeep-linux.sh4
-rw-r--r--pnpm-lock.yaml602
-rw-r--r--tooling/oxlint/package.json5
8 files changed, 151 insertions, 539 deletions
diff --git a/apps/workers/package.json b/apps/workers/package.json
index c888350e..2ed6f9df 100644
--- a/apps/workers/package.json
+++ b/apps/workers/package.json
@@ -4,7 +4,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@ghostery/adblocker-puppeteer": "^2.5.1",
+ "@ghostery/adblocker-playwright": "^2.5.1",
"@karakeep/db": "workspace:^0.1.0",
"@karakeep/shared": "workspace:^0.1.0",
"@karakeep/trpc": "workspace:^0.1.0",
@@ -36,8 +36,8 @@
"pdf2json": "^3.1.5",
"pdf2pic": "^3.1.3",
"pdfjs-dist": "^4.2.67",
- "puppeteer": "^22.0.0",
- "puppeteer-extra": "^3.3.6",
+ "playwright": "^1.42.1",
+ "playwright-extra": "^4.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2",
"rss-parser": "^3.13.0",
"tesseract.js": "^5.1.1",
diff --git a/apps/workers/workers/crawlerWorker.ts b/apps/workers/workers/crawlerWorker.ts
index f0e831c2..d884d149 100644
--- a/apps/workers/workers/crawlerWorker.ts
+++ b/apps/workers/workers/crawlerWorker.ts
@@ -2,8 +2,7 @@ import * as dns from "dns";
import { promises as fs } from "fs";
import * as path from "node:path";
import * as os from "os";
-import type { Browser } from "puppeteer";
-import { PuppeteerBlocker } from "@ghostery/adblocker-puppeteer";
+import { PlaywrightBlocker } from "@ghostery/adblocker-playwright";
import { Readability } from "@mozilla/readability";
import { Mutex } from "async-mutex";
import DOMPurify from "dompurify";
@@ -25,7 +24,8 @@ import metascraperTitle from "metascraper-title";
import metascraperTwitter from "metascraper-twitter";
import metascraperUrl from "metascraper-url";
import fetch from "node-fetch";
-import puppeteer from "puppeteer-extra";
+import { Browser } from "playwright";
+import { chromium } from "playwright-extra";
import StealthPlugin from "puppeteer-extra-plugin-stealth";
import { withTimeout } from "utils";
import { getBookmarkDetails, updateAsset } from "workerUtils";
@@ -81,38 +81,37 @@ const metascraperParser = metascraper([
]);
let globalBrowser: Browser | undefined;
-let globalBlocker: PuppeteerBlocker | undefined;
+let globalBlocker: PlaywrightBlocker | undefined;
// Guards the interactions with the browser instance.
// This is needed given that most of the browser APIs are async.
const browserMutex = new Mutex();
async function startBrowserInstance() {
- const defaultViewport = {
- width: 1440,
- height: 900,
- };
if (serverConfig.crawler.browserWebSocketUrl) {
logger.info(
`[Crawler] Connecting to existing browser websocket address: ${serverConfig.crawler.browserWebSocketUrl}`,
);
- return puppeteer.connect({
- browserWSEndpoint: serverConfig.crawler.browserWebSocketUrl,
- defaultViewport,
+ return await chromium.connect(serverConfig.crawler.browserWebSocketUrl, {
+ // Important: using slowMo to ensure stability with remote browser
+ slowMo: 100,
+ timeout: 5000,
});
} else if (serverConfig.crawler.browserWebUrl) {
logger.info(
`[Crawler] Connecting to existing browser instance: ${serverConfig.crawler.browserWebUrl}`,
);
+
const webUrl = new URL(serverConfig.crawler.browserWebUrl);
- // We need to resolve the ip address as a workaround for https://github.com/puppeteer/puppeteer/issues/2242
const { address } = await dns.promises.lookup(webUrl.hostname);
webUrl.hostname = address;
logger.info(
`[Crawler] Successfully resolved IP address, new address: ${webUrl.toString()}`,
);
- return puppeteer.connect({
- browserURL: webUrl.toString(),
- defaultViewport,
+
+ return await chromium.connectOverCDP(webUrl.toString(), {
+ // Important: using slowMo to ensure stability with remote browser
+ slowMo: 100,
+ timeout: 5000,
});
} else {
logger.info(`Running in browserless mode`);
@@ -141,12 +140,12 @@ async function launchBrowser() {
globalBrowser?.on("disconnected", () => {
if (isShuttingDown) {
logger.info(
- "[Crawler] The puppeteer browser got disconnected. But we're shutting down so won't restart it.",
+ "[Crawler] The Playwright browser got disconnected. But we're shutting down so won't restart it.",
);
return;
}
logger.info(
- "[Crawler] The puppeteer browser got disconnected. Will attempt to launch it again.",
+ "[Crawler] The Playwright browser got disconnected. Will attempt to launch it again.",
);
launchBrowser();
});
@@ -155,11 +154,11 @@ async function launchBrowser() {
export class CrawlerWorker {
static async build() {
- puppeteer.use(StealthPlugin());
+ chromium.use(StealthPlugin());
if (serverConfig.crawler.enableAdblocker) {
try {
logger.info("[crawler] Loading adblocker ...");
- globalBlocker = await PuppeteerBlocker.fromPrebuiltFull(fetch, {
+ globalBlocker = await PlaywrightBlocker.fromPrebuiltFull(fetch, {
path: path.join(os.tmpdir(), "karakeep_adblocker.bin"),
read: fs.readFile,
write: fs.writeFile,
@@ -287,39 +286,45 @@ async function crawlPage(
if (!browser) {
return browserlessCrawlPage(jobId, url, abortSignal);
}
- const context = await browser.createBrowserContext();
+ const context = await browser.newContext({
+ viewport: { width: 1440, height: 900 },
+ userAgent:
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
+ });
try {
+ // Create a new page in the context
const page = await context.newPage();
+
+ // Apply ad blocking
if (globalBlocker) {
await globalBlocker.enableBlockingInPage(page);
}
- await page.setUserAgent(
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
- );
+ // Navigate to the target URL
+ logger.info(`[Crawler][${jobId}] Navigating to "${url}"`);
const response = await page.goto(url, {
timeout: serverConfig.crawler.navigateTimeoutSec * 1000,
+ waitUntil: "domcontentloaded",
});
+
logger.info(
`[Crawler][${jobId}] Successfully navigated to "${url}". Waiting for the page to load ...`,
);
- // Wait until there's at most two connections for 2 seconds
- // Attempt to wait only for 5 seconds
+ // Wait until network is relatively idle or timeout after 5 seconds
await Promise.race([
- page.waitForNetworkIdle({
- idleTime: 1000, // 1 sec
- concurrency: 2,
- }),
- new Promise((f) => setTimeout(f, 5000)),
+ page.waitForLoadState("networkidle", { timeout: 5000 }).catch(() => ({})),
+ new Promise((resolve) => setTimeout(resolve, 5000)),
]);
logger.info(`[Crawler][${jobId}] Finished waiting for the page to load.`);
+ // Extract content from the page
const htmlContent = await page.content();
logger.info(`[Crawler][${jobId}] Successfully fetched the page content.`);
+ // Take a screenshot if configured
let screenshot: Buffer | undefined = undefined;
if (serverConfig.crawler.storeScreenshot) {
try {
@@ -327,7 +332,6 @@ async function crawlPage(
page.screenshot({
// If you change this, you need to change the asset type in the store function.
type: "png",
- encoding: "binary",
fullPage: serverConfig.crawler.fullPageScreenshot,
}),
new Promise((_, reject) =>
@@ -358,6 +362,7 @@ async function crawlPage(
};
} finally {
await context.close();
+ // Only close the browser if it was created on demand
if (serverConfig.crawler.browserConnectOnDemand) {
await browser.close();
}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 54e337f5..7a3f4cb2 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -13,7 +13,7 @@ RUN apk add --no-cache libc6-compat make g++ py3-pip linux-headers
COPY . .
ENV NEXT_TELEMETRY_DISABLED 1
-ENV PUPPETEER_SKIP_DOWNLOAD true
+ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
RUN pnpm install --frozen-lockfile
# Build the db migration script
diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev
index 50048a6d..d4051cc5 100644
--- a/docker/Dockerfile.dev
+++ b/docker/Dockerfile.dev
@@ -11,4 +11,4 @@ RUN corepack enable
COPY . .
ENV NEXT_TELEMETRY_DISABLED 1
-ENV PUPPETEER_SKIP_DOWNLOAD true
+ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
index 0384ced5..3eb62030 100644
--- a/docker/docker-compose.dev.yml
+++ b/docker/docker-compose.dev.yml
@@ -20,6 +20,8 @@ services:
chrome:
image: gcr.io/zenika-hub/alpine-chrome:123
restart: unless-stopped
+ ports:
+ - 9222:9222
command:
- --no-sandbox
- --disable-gpu
diff --git a/karakeep-linux.sh b/karakeep-linux.sh
index e07b3bd3..073c3908 100644
--- a/karakeep-linux.sh
+++ b/karakeep-linux.sh
@@ -223,7 +223,7 @@ install_karakeep() {
mv karakeep-"$RELEASE" "$INSTALL_DIR" && cd "$APP_DIR"/web
corepack enable
export NEXT_TELEMETRY_DISABLED=1
- export PUPPETEER_SKIP_DOWNLOAD="true"
+ export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
export CI="true"
$shh pnpm i --frozen-lockfile
$shh pnpm build
@@ -433,7 +433,7 @@ update_karakeep() {
fi
corepack enable
export NEXT_TELEMETRY_DISABLED=1
- export PUPPETEER_SKIP_DOWNLOAD="true"
+ export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
export CI="true"
cd "$APP_DIR"/web && $shh pnpm i --frozen-lockfile
$shh pnpm build
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3253a3bf..20c65a62 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -750,9 +750,9 @@ importers:
apps/workers:
dependencies:
- '@ghostery/adblocker-puppeteer':
+ '@ghostery/adblocker-playwright':
specifier: ^2.5.1
- version: 2.5.1(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ version: 2.7.0(playwright@1.53.1)
'@karakeep/db':
specifier: workspace:^0.1.0
version: link:../../packages/db
@@ -846,15 +846,15 @@ importers:
pdfjs-dist:
specifier: ^4.2.67
version: 4.10.38
- puppeteer:
- specifier: ^22.0.0
- version: 22.3.0(encoding@0.1.13)(typescript@5.8.2)
- puppeteer-extra:
- specifier: ^3.3.6
- version: 3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ playwright:
+ specifier: ^1.42.1
+ version: 1.53.1
+ playwright-extra:
+ specifier: ^4.3.6
+ version: 4.3.6(playwright-core@1.53.1)(playwright@1.53.1)
puppeteer-extra-plugin-stealth:
specifier: ^2.11.2
- version: 2.11.2(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
+ version: 2.11.2(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
rss-parser:
specifier: ^3.13.0
version: 3.13.0
@@ -1214,8 +1214,12 @@ importers:
specifier: ^1.6.1
version: 1.6.1(@types/node@22.15.30)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.41.0)
+ tooling/eslint: {}
+
tooling/github: {}
+ tooling/oxlint: {}
+
tooling/prettier:
dependencies:
'@ianvs/prettier-plugin-sort-imports':
@@ -3109,19 +3113,22 @@ packages:
'@floating-ui/utils@0.2.9':
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
- '@ghostery/adblocker-content@2.6.1':
- resolution: {integrity: sha512-R0/X+16r1qsGSbef2UPWC35dq2+iObljLZ04lSYWz5s2fVgSu6g+qlmuPMOdB3mm/YLd+ZyQOQ/8UuSi65afGg==}
+ '@ghostery/adblocker-content@2.7.0':
+ resolution: {integrity: sha512-NZN4XyQ2bXBC86qFEevw8GEXoVXuzAvvj9urgHu+Ud/JfAzW5agaLUoXNz5gT/ZU6fVZScwOVvbL48AI66JUUg==}
- '@ghostery/adblocker-extended-selectors@2.6.1':
- resolution: {integrity: sha512-ZNVmSan8gMaUfC6TWN/m7gErXtCMVTTWJQ7fkpd3na/GCOGMv3NbSV8fed50eK2ck2qGTNqLVPEQp+h/u/pE0w==}
+ '@ghostery/adblocker-extended-selectors@2.7.0':
+ resolution: {integrity: sha512-6lmdm3ydxpiIGwwsD8kjcFPY3IPHkveQaunZW6bHaAbN7a1eYhPZZRjNmNjhwHvu+Noa5eb2bJ4x3YnFp2TKpQ==}
- '@ghostery/adblocker-puppeteer@2.5.1':
- resolution: {integrity: sha512-K9v8LzUkUBmV51vYeBH9EcmIBABpq4fd6Yi+iEZYQdqzDTYsr4z/yKbuD3wN5s2QVZycLoeWBeaUwVZlAgnlrQ==}
+ '@ghostery/adblocker-playwright@2.7.0':
+ resolution: {integrity: sha512-kS4Jug8PgYB8Ejfm9H3sWidzdX6g/lu2NsF6GrpOWyyMsoUcnT+03131+gOu19ZYnZ7mJxKWJweGuviADl8fVw==}
peerDependencies:
- puppeteer: '>5'
+ playwright: ^1.x
- '@ghostery/adblocker@2.6.1':
- resolution: {integrity: sha512-D9sLqx+StZ3JASDqKtTWUmVXRacbtZAcMUnooU0TQKcMmIeSF20TbIwde2bc+zoz1q+dV/qtYx2ngWf1Jb9KbA==}
+ '@ghostery/adblocker@2.7.0':
+ resolution: {integrity: sha512-OzOKr8PwT6oE5qh5dpF9qJgmNUKlK/781Pm18oEMCho+6CSseCWrTk5+m+2QNGE3Fs+QjQb7DZdMoQisZ6r3uA==}
+
+ '@ghostery/url-parser@1.3.0':
+ resolution: {integrity: sha512-FEzdSeiva0Mt3bR4xePFzthhjT4IzvA5QTvS1xXkNyLpMGeq40mb3V2fSs0ZItRaP9IybZthDfHUSbQ1HLdx4Q==}
'@hapi/hoek@9.3.0':
resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
@@ -3791,11 +3798,6 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
- '@puppeteer/browsers@2.1.0':
- resolution: {integrity: sha512-xloWvocjvryHdUjDam/ZuGMh7zn4Sn3ZAaV4Ah2e2EwEt90N3XphZlSsU3n0VDc1F7kggCjMuH0UuxfPQ5mD9w==}
- engines: {node: '>=18'}
- hasBin: true
-
'@radix-ui/number@1.1.1':
resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
@@ -4830,9 +4832,6 @@ packages:
peerDependencies:
react: ^18 || ^19
- '@tootallnate/quickjs-emscripten@0.23.0':
- resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
-
'@trpc/client@11.0.0':
resolution: {integrity: sha512-U2THlxsdr4ykAX5lpTU8k5WRADPQ+68Ex2gfUht3MlCxGK7njBmNSSzjpQSWNt7tMI/xsYrddFiRlmEPrh+Cbg==}
peerDependencies:
@@ -5172,9 +5171,6 @@ packages:
'@types/yargs@17.0.33':
resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
- '@types/yauzl@2.10.3':
- resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
-
'@uidotdev/usehooks@2.4.1':
resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==}
engines: {node: '>=16'}
@@ -5535,10 +5531,6 @@ packages:
assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
- ast-types@0.13.4:
- resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
- engines: {node: '>=4'}
-
ast-types@0.15.2:
resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==}
engines: {node: '>=4'}
@@ -5596,9 +5588,6 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
- b4a@1.6.7:
- resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
-
babel-core@7.0.0-bridge.0:
resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==}
peerDependencies:
@@ -5694,39 +5683,12 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- bare-events@2.5.4:
- resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
-
- bare-fs@2.3.5:
- resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==}
-
- bare-os@2.4.4:
- resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==}
-
- bare-path@2.1.3:
- resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==}
-
- bare-stream@2.6.5:
- resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==}
- peerDependencies:
- bare-buffer: '*'
- bare-events: '*'
- peerDependenciesMeta:
- bare-buffer:
- optional: true
- bare-events:
- optional: true
-
base-64@0.1.0:
resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- basic-ftp@5.0.5:
- resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
- engines: {node: '>=10.0.0'}
-
batch@0.6.1:
resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
@@ -5820,9 +5782,6 @@ packages:
buffer-alloc@1.2.0:
resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
- buffer-crc32@0.2.13:
- resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
-
buffer-fill@1.0.0:
resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
@@ -6034,11 +5993,6 @@ packages:
resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
engines: {node: '>=6.0'}
- chromium-bidi@0.5.10:
- resolution: {integrity: sha512-4hsPE1VaLLM/sgNK/SlLbI24Ra7ZOuWAjA3rhw1lVCZ8ZiUgccS6cL5L/iqo4hjRcl5vwgYJ8xTtbXdulA9b6Q==}
- peerDependencies:
- devtools-protocol: '*'
-
chromium-edge-launcher@0.2.0:
resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==}
@@ -6367,21 +6321,9 @@ packages:
typescript:
optional: true
- cosmiconfig@9.0.0:
- resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
- engines: {node: '>=14'}
- peerDependencies:
- typescript: '>=4.9.5'
- peerDependenciesMeta:
- typescript:
- optional: true
-
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
- cross-fetch@4.0.0:
- resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
-
cross-spawn@6.0.6:
resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
engines: {node: '>=4.8'}
@@ -6552,10 +6494,6 @@ packages:
resolution: {integrity: sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==}
engines: {node: '>= 14'}
- data-uri-to-buffer@6.0.2:
- resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
- engines: {node: '>= 14'}
-
data-uri-utils@1.0.8:
resolution: {integrity: sha512-LHm6O/aHmTdSsIKGI6d/BJ8gQyBiai/5g57s1XKDHFecVWbq0HYlEXheohwiLbpsEHjpdHNf+D50Q/onMnNIYQ==}
engines: {node: '>= 14'}
@@ -6612,15 +6550,6 @@ packages:
supports-color:
optional: true
- debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
engines: {node: '>=6.0'}
@@ -6690,10 +6619,6 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
- degenerator@5.0.1:
- resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
- engines: {node: '>= 14'}
-
del@4.1.1:
resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==}
engines: {node: '>=6'}
@@ -6757,9 +6682,6 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- devtools-protocol@0.0.1249869:
- resolution: {integrity: sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg==}
-
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -7233,11 +7155,6 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
- escodegen@2.1.0:
- resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
- engines: {node: '>=6.0'}
- hasBin: true
-
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
@@ -7621,17 +7538,9 @@ packages:
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
- extract-zip@2.0.1:
- resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
- engines: {node: '>= 10.17.0'}
- hasBin: true
-
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- fast-fifo@1.3.2:
- resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
-
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
@@ -7677,9 +7586,6 @@ packages:
fbjs@3.0.5:
resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==}
- fd-slicer@1.1.0:
- resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
-
fdir@6.4.5:
resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
peerDependencies:
@@ -7949,6 +7855,11 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -8026,10 +7937,6 @@ packages:
get-tsconfig@4.10.1:
resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
- get-uri@6.0.4:
- resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==}
- engines: {node: '>= 14'}
-
getenv@1.0.0:
resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==}
engines: {node: '>=6'}
@@ -9388,10 +9295,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'}
-
lru-queue@0.1.0:
resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==}
@@ -10106,9 +10009,6 @@ packages:
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -10168,10 +10068,6 @@ packages:
nested-error-stacks@2.0.1:
resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==}
- netmask@2.0.2:
- resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
- engines: {node: '>= 0.4.0'}
-
next-auth@4.24.11:
resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==}
peerDependencies:
@@ -10603,14 +10499,6 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
- 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==}
@@ -10773,9 +10661,6 @@ packages:
resolution: {integrity: sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==}
engines: {node: '>=20'}
- pend@1.2.0:
- resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
-
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -10837,6 +10722,28 @@ packages:
resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
engines: {node: '>=8'}
+ playwright-core@1.53.1:
+ resolution: {integrity: sha512-Z46Oq7tLAyT0lGoFx4DOuB1IA9D1TPj0QkYxpPVUnGDqHHvDpCftu1J2hM2PiWsNMoZh8+LQaarAWcDfPBc6zg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright-extra@4.3.6:
+ resolution: {integrity: sha512-q2rVtcE8V8K3vPVF1zny4pvwZveHLH8KBuVU2MoE3Jw4OKVoBWsHI9CH9zPydovHHOCDxjGN2Vg+2m644q3ijA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ playwright: '*'
+ playwright-core: '*'
+ peerDependenciesMeta:
+ playwright:
+ optional: true
+ playwright-core:
+ optional: true
+
+ playwright@1.53.1:
+ resolution: {integrity: sha512-LJ13YLr/ocweuwxyGf1XNFWIU4M2zUSo149Qbp+A4cpwDjsxRPj7k6H25LBrEHiEwxvRbD8HdwvQmRMSvquhYw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
plist@3.1.0:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
@@ -11463,13 +11370,6 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
- proxy-agent@6.4.0:
- resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==}
- engines: {node: '>= 14'}
-
- proxy-from-env@1.1.0:
- resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
-
psl@1.15.0:
resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
@@ -11491,10 +11391,6 @@ packages:
resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
engines: {node: '>=12.20'}
- puppeteer-core@22.3.0:
- resolution: {integrity: sha512-Ho5Vdpdro05ZyCx/l5Hkc5vHiibKTaY37fIAD9NF9Gi/vDxkVTeX40U/mFnEmeoxyuYALvWCJfi7JTT82R6Tuw==}
- engines: {node: '>=18'}
-
puppeteer-extra-plugin-stealth@2.11.2:
resolution: {integrity: sha512-bUemM5XmTj9i2ZerBzsk2AN5is0wHMNE6K0hXBzBXOzP5m5G3Wl0RHhiqKeHToe/uIH8AoZiGhc1tCkLZQPKTQ==}
engines: {node: '>=8'}
@@ -11543,27 +11439,6 @@ packages:
puppeteer-extra:
optional: true
- puppeteer-extra@3.3.6:
- resolution: {integrity: sha512-rsLBE/6mMxAjlLd06LuGacrukP2bqbzKCLzV1vrhHFavqQE/taQ2UXv3H5P0Ls7nsrASa+6x3bDbXHpqMwq+7A==}
- engines: {node: '>=8'}
- peerDependencies:
- '@types/puppeteer': '*'
- puppeteer: '*'
- puppeteer-core: '*'
- peerDependenciesMeta:
- '@types/puppeteer':
- optional: true
- puppeteer:
- optional: true
- puppeteer-core:
- optional: true
-
- puppeteer@22.3.0:
- resolution: {integrity: sha512-GC+tyjzYKjaNjhlDAuqRgDM+IOsqOG75Da4L28G4eULNLLxKDt+79x2OOSQ47HheJBgGq7ATSExNE6gayxP6cg==}
- engines: {node: '>=18'}
- deprecated: < 22.8.2 is no longer supported
- hasBin: true
-
qrcode-terminal@0.11.0:
resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==}
hasBin: true
@@ -12409,11 +12284,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
- engines: {node: '>=10'}
- hasBin: true
-
semver@7.6.3:
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
engines: {node: '>=10'}
@@ -12788,9 +12658,6 @@ packages:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
- streamx@2.22.1:
- resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==}
-
strict-uri-encode@2.0.0:
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
engines: {node: '>=4'}
@@ -12993,16 +12860,10 @@ packages:
tar-fs@2.1.3:
resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==}
- tar-fs@3.0.5:
- resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==}
-
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
- tar-stream@3.1.7:
- resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
-
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
@@ -13062,9 +12923,6 @@ packages:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
- text-decoder@1.2.3:
- resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
-
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
@@ -13081,9 +12939,6 @@ packages:
throat@5.0.0:
resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
thunky@1.1.0:
resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
@@ -13122,9 +12977,6 @@ packages:
tldts-core@7.0.8:
resolution: {integrity: sha512-Ze39mm8EtocSXPbH6cv5rDeBBhehp8OLxWJKZXLEyv2dKMlblJsoAw2gmA0ZaU6iOwNlCZ4LrmaTW1reUQEmJw==}
- tldts-experimental@6.1.86:
- resolution: {integrity: sha512-X3N3+SrwSajvANDyIBFa6tf/nO0VoqaXvvINSnQkZMGbzNlD+9G7Xb24Mtk3ZBVZJRGY7UynAJJL8kRVt6Z46Q==}
-
tldts-experimental@7.0.8:
resolution: {integrity: sha512-47LInzMIelfHqD1Gx5+PRYQBl6vU3Xt5KYY6AhqITIKldzu/ctwzdUpbm7AdmsRyzxnly9YH4GLHTtXPwhQhTw==}
@@ -13328,9 +13180,6 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
- unbzip2-stream@1.4.3:
- resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
-
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
@@ -13493,9 +13342,6 @@ packages:
resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
engines: {node: '>= 0.4'}
- urlpattern-polyfill@10.0.0:
- resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==}
-
use-callback-ref@1.3.3:
resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
engines: {node: '>=10'}
@@ -14025,18 +13871,6 @@ packages:
utf-8-validate:
optional: true
- ws@8.16.0:
- resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
ws@8.18.2:
resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==}
engines: {node: '>=10.0.0'}
@@ -14137,9 +13971,6 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
- yauzl@2.10.0:
- resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
-
yjs@13.6.27:
resolution: {integrity: sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==}
engines: {node: '>=16.0.0', npm: '>=8.0.0'}
@@ -17670,28 +17501,33 @@ snapshots:
'@floating-ui/utils@0.2.9': {}
- '@ghostery/adblocker-content@2.6.1':
+ '@ghostery/adblocker-content@2.7.0':
dependencies:
- '@ghostery/adblocker-extended-selectors': 2.6.1
+ '@ghostery/adblocker-extended-selectors': 2.7.0
- '@ghostery/adblocker-extended-selectors@2.6.1': {}
+ '@ghostery/adblocker-extended-selectors@2.7.0': {}
- '@ghostery/adblocker-puppeteer@2.5.1(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))':
+ '@ghostery/adblocker-playwright@2.7.0(playwright@1.53.1)':
dependencies:
- '@ghostery/adblocker': 2.6.1
- '@ghostery/adblocker-content': 2.6.1
- puppeteer: 22.3.0(encoding@0.1.13)(typescript@5.8.2)
- tldts-experimental: 6.1.86
+ '@ghostery/adblocker': 2.7.0
+ '@ghostery/adblocker-content': 2.7.0
+ playwright: 1.53.1
+ tldts-experimental: 7.0.8
- '@ghostery/adblocker@2.6.1':
+ '@ghostery/adblocker@2.7.0':
dependencies:
- '@ghostery/adblocker-content': 2.6.1
- '@ghostery/adblocker-extended-selectors': 2.6.1
+ '@ghostery/adblocker-content': 2.7.0
+ '@ghostery/adblocker-extended-selectors': 2.7.0
+ '@ghostery/url-parser': 1.3.0
'@remusao/guess-url-type': 2.1.0
'@remusao/small': 2.1.0
'@remusao/smaz': 2.2.0
tldts-experimental: 7.0.8
+ '@ghostery/url-parser@1.3.0':
+ dependencies:
+ tldts-experimental: 7.0.8
+
'@hapi/hoek@9.3.0': {}
'@hapi/topo@5.1.0':
@@ -18454,20 +18290,6 @@ snapshots:
'@polka/url@1.0.0-next.29': {}
- '@puppeteer/browsers@2.1.0':
- dependencies:
- debug: 4.3.4
- extract-zip: 2.0.1
- progress: 2.0.3
- proxy-agent: 6.4.0
- semver: 7.6.0
- tar-fs: 3.0.5
- unbzip2-stream: 1.4.3
- yargs: 17.7.2
- transitivePeerDependencies:
- - bare-buffer
- - supports-color
-
'@radix-ui/number@1.1.1': {}
'@radix-ui/primitive@1.1.2': {}
@@ -19702,8 +19524,6 @@ snapshots:
'@tanstack/query-core': 5.69.0
react: 18.3.1
- '@tootallnate/quickjs-emscripten@0.23.0': {}
-
'@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2)':
dependencies:
'@trpc/server': 11.0.0(typescript@5.8.2)
@@ -20088,11 +19908,6 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@types/yauzl@2.10.3':
- dependencies:
- '@types/node': 22.15.30
- optional: true
-
'@uidotdev/usehooks@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
@@ -20511,10 +20326,6 @@ snapshots:
assertion-error@1.1.0: {}
- ast-types@0.13.4:
- dependencies:
- tslib: 2.8.1
-
ast-types@0.15.2:
dependencies:
tslib: 2.8.1
@@ -20559,8 +20370,6 @@ snapshots:
dependencies:
possible-typed-array-names: 1.1.0
- b4a@1.6.7: {}
-
babel-core@7.0.0-bridge.0(@babel/core@7.26.0):
dependencies:
'@babel/core': 7.26.0
@@ -20774,39 +20583,10 @@ snapshots:
balanced-match@1.0.2: {}
- bare-events@2.5.4:
- optional: true
-
- bare-fs@2.3.5:
- dependencies:
- bare-events: 2.5.4
- bare-path: 2.1.3
- bare-stream: 2.6.5(bare-events@2.5.4)
- transitivePeerDependencies:
- - bare-buffer
- optional: true
-
- bare-os@2.4.4:
- optional: true
-
- bare-path@2.1.3:
- dependencies:
- bare-os: 2.4.4
- optional: true
-
- bare-stream@2.6.5(bare-events@2.5.4):
- dependencies:
- streamx: 2.22.1
- optionalDependencies:
- bare-events: 2.5.4
- optional: true
-
base-64@0.1.0: {}
base64-js@1.5.1: {}
- basic-ftp@5.0.5: {}
-
batch@0.6.1: {}
bcryptjs@2.4.3: {}
@@ -20945,8 +20725,6 @@ snapshots:
buffer-alloc-unsafe: 1.1.0
buffer-fill: 1.0.0
- buffer-crc32@0.2.13: {}
-
buffer-fill@1.0.0: {}
buffer-from@1.1.2: {}
@@ -21199,12 +20977,6 @@ snapshots:
chrome-trace-event@1.0.4: {}
- chromium-bidi@0.5.10(devtools-protocol@0.0.1249869):
- dependencies:
- devtools-protocol: 0.0.1249869
- mitt: 3.0.1
- urlpattern-polyfill: 10.0.0
-
chromium-edge-launcher@0.2.0:
dependencies:
'@types/node': 22.15.30
@@ -21537,27 +21309,12 @@ snapshots:
optionalDependencies:
typescript: 5.8.2
- cosmiconfig@9.0.0(typescript@5.8.2):
- dependencies:
- env-paths: 2.2.1
- import-fresh: 3.3.1
- js-yaml: 4.1.0
- parse-json: 5.2.0
- optionalDependencies:
- typescript: 5.8.2
-
cross-fetch@3.2.0(encoding@0.1.13):
dependencies:
node-fetch: 2.7.0(encoding@0.1.13)
transitivePeerDependencies:
- encoding
- cross-fetch@4.0.0(encoding@0.1.13):
- dependencies:
- node-fetch: 2.7.0(encoding@0.1.13)
- transitivePeerDependencies:
- - encoding
-
cross-spawn@6.0.6:
dependencies:
nice-try: 1.0.5
@@ -21749,8 +21506,6 @@ snapshots:
data-uri-to-buffer@5.0.1: {}
- data-uri-to-buffer@6.0.2: {}
-
data-uri-utils@1.0.8:
dependencies:
data-uri-to-buffer: 5.0.1
@@ -21810,10 +21565,6 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.3.4:
- dependencies:
- ms: 2.1.2
-
debug@4.4.1(supports-color@10.0.0):
dependencies:
ms: 2.1.3
@@ -21893,12 +21644,6 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
- degenerator@5.0.1:
- dependencies:
- ast-types: 0.13.4
- escodegen: 2.1.0
- esprima: 4.0.1
-
del@4.1.1:
dependencies:
'@types/glob': 7.2.0
@@ -21966,8 +21711,6 @@ snapshots:
dependencies:
dequal: 2.0.3
- devtools-protocol@0.0.1249869: {}
-
didyoumean@1.2.2: {}
diff-sequences@29.6.3: {}
@@ -22440,14 +22183,6 @@ snapshots:
escape-string-regexp@5.0.0: {}
- escodegen@2.1.0:
- dependencies:
- esprima: 4.0.1
- estraverse: 5.3.0
- esutils: 2.0.3
- optionalDependencies:
- source-map: 0.6.1
-
eslint-scope@5.1.1:
dependencies:
esrecurse: 4.3.0
@@ -22999,20 +22734,8 @@ snapshots:
extend@3.0.2: {}
- extract-zip@2.0.1:
- dependencies:
- debug: 4.4.1(supports-color@10.0.0)
- get-stream: 5.2.0
- yauzl: 2.10.0
- optionalDependencies:
- '@types/yauzl': 2.10.3
- transitivePeerDependencies:
- - supports-color
-
fast-deep-equal@3.1.3: {}
- fast-fifo@1.3.2: {}
-
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -23072,10 +22795,6 @@ snapshots:
transitivePeerDependencies:
- encoding
- fd-slicer@1.1.0:
- dependencies:
- pend: 1.2.0
-
fdir@6.4.5(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -23355,6 +23074,9 @@ snapshots:
fs.realpath@1.0.0: {}
+ fsevents@2.3.2:
+ optional: true
+
fsevents@2.3.3:
optional: true
@@ -23439,14 +23161,6 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
- get-uri@6.0.4:
- dependencies:
- basic-ftp: 5.0.5
- data-uri-to-buffer: 6.0.2
- debug: 4.4.1(supports-color@10.0.0)
- transitivePeerDependencies:
- - supports-color
-
getenv@1.0.0: {}
github-from-package@0.0.0: {}
@@ -24982,8 +24696,6 @@ snapshots:
dependencies:
yallist: 4.0.0
- lru-cache@7.18.3: {}
-
lru-queue@0.1.0:
dependencies:
es5-ext: 0.10.64
@@ -26341,8 +26053,6 @@ snapshots:
ms@2.0.0: {}
- ms@2.1.2: {}
-
ms@2.1.3: {}
muggle-string@0.4.1: {}
@@ -26409,8 +26119,6 @@ snapshots:
nested-error-stacks@2.0.1: {}
- netmask@2.0.2: {}
-
next-auth@4.24.11(next@14.2.25(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.89.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@babel/runtime': 7.27.6
@@ -26899,24 +26607,6 @@ snapshots:
p-try@2.2.0: {}
- pac-proxy-agent@7.2.0:
- dependencies:
- '@tootallnate/quickjs-emscripten': 0.23.0
- agent-base: 7.1.3
- debug: 4.4.1(supports-color@10.0.0)
- get-uri: 6.0.4
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6(supports-color@10.0.0)
- 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@8.1.1:
@@ -27073,8 +26763,6 @@ snapshots:
optionalDependencies:
'@napi-rs/canvas': 0.1.70
- pend@1.2.0: {}
-
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -27125,6 +26813,23 @@ snapshots:
dependencies:
find-up: 3.0.0
+ playwright-core@1.53.1: {}
+
+ playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1):
+ dependencies:
+ debug: 4.4.1(supports-color@10.0.0)
+ optionalDependencies:
+ playwright: 1.53.1
+ playwright-core: 1.53.1
+ transitivePeerDependencies:
+ - supports-color
+
+ playwright@1.53.1:
+ dependencies:
+ playwright-core: 1.53.1
+ optionalDependencies:
+ fsevents: 2.3.2
+
plist@3.1.0:
dependencies:
'@xmldom/xmldom': 0.8.10
@@ -27756,21 +27461,6 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
- proxy-agent@6.4.0:
- dependencies:
- agent-base: 7.1.3
- debug: 4.4.1(supports-color@10.0.0)
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6(supports-color@10.0.0)
- 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: {}
-
psl@1.15.0:
dependencies:
punycode: 2.3.1
@@ -27790,87 +27480,48 @@ snapshots:
dependencies:
escape-goat: 4.0.0
- puppeteer-core@22.3.0(encoding@0.1.13):
- dependencies:
- '@puppeteer/browsers': 2.1.0
- chromium-bidi: 0.5.10(devtools-protocol@0.0.1249869)
- cross-fetch: 4.0.0(encoding@0.1.13)
- debug: 4.3.4
- devtools-protocol: 0.0.1249869
- ws: 8.16.0
- transitivePeerDependencies:
- - bare-buffer
- - bufferutil
- - encoding
- - supports-color
- - utf-8-validate
-
- puppeteer-extra-plugin-stealth@2.11.2(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))):
+ puppeteer-extra-plugin-stealth@2.11.2(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1)):
dependencies:
debug: 4.4.1(supports-color@10.0.0)
- puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
- puppeteer-extra-plugin-user-preferences: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
+ puppeteer-extra-plugin: 3.2.3(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
+ puppeteer-extra-plugin-user-preferences: 2.4.1(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
optionalDependencies:
- puppeteer-extra: 3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ playwright-extra: 4.3.6(playwright-core@1.53.1)(playwright@1.53.1)
transitivePeerDependencies:
- supports-color
- puppeteer-extra-plugin-user-data-dir@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))):
+ puppeteer-extra-plugin-user-data-dir@2.4.1(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1)):
dependencies:
debug: 4.4.1(supports-color@10.0.0)
fs-extra: 10.1.0
- puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
+ puppeteer-extra-plugin: 3.2.3(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
rimraf: 3.0.2
optionalDependencies:
- puppeteer-extra: 3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ playwright-extra: 4.3.6(playwright-core@1.53.1)(playwright@1.53.1)
transitivePeerDependencies:
- supports-color
- puppeteer-extra-plugin-user-preferences@2.4.1(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))):
+ puppeteer-extra-plugin-user-preferences@2.4.1(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1)):
dependencies:
debug: 4.4.1(supports-color@10.0.0)
deepmerge: 4.3.1
- puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
- puppeteer-extra-plugin-user-data-dir: 2.4.1(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)))
+ puppeteer-extra-plugin: 3.2.3(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
+ puppeteer-extra-plugin-user-data-dir: 2.4.1(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1))
optionalDependencies:
- puppeteer-extra: 3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ playwright-extra: 4.3.6(playwright-core@1.53.1)(playwright@1.53.1)
transitivePeerDependencies:
- supports-color
- puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))):
+ puppeteer-extra-plugin@3.2.3(playwright-extra@4.3.6(playwright-core@1.53.1)(playwright@1.53.1)):
dependencies:
'@types/debug': 4.1.12
debug: 4.4.1(supports-color@10.0.0)
merge-deep: 3.0.3
optionalDependencies:
- puppeteer-extra: 3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2))
+ playwright-extra: 4.3.6(playwright-core@1.53.1)(playwright@1.53.1)
transitivePeerDependencies:
- supports-color
- puppeteer-extra@3.3.6(puppeteer-core@22.3.0(encoding@0.1.13))(puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2)):
- dependencies:
- '@types/debug': 4.1.12
- debug: 4.4.1(supports-color@10.0.0)
- deepmerge: 4.3.1
- optionalDependencies:
- puppeteer: 22.3.0(encoding@0.1.13)(typescript@5.8.2)
- puppeteer-core: 22.3.0(encoding@0.1.13)
- transitivePeerDependencies:
- - supports-color
-
- puppeteer@22.3.0(encoding@0.1.13)(typescript@5.8.2):
- dependencies:
- '@puppeteer/browsers': 2.1.0
- cosmiconfig: 9.0.0(typescript@5.8.2)
- puppeteer-core: 22.3.0(encoding@0.1.13)
- transitivePeerDependencies:
- - bare-buffer
- - bufferutil
- - encoding
- - supports-color
- - typescript
- - utf-8-validate
-
qrcode-terminal@0.11.0: {}
qs@6.13.0:
@@ -29074,10 +28725,6 @@ snapshots:
dependencies:
lru-cache: 6.0.0
- semver@7.6.0:
- dependencies:
- lru-cache: 6.0.0
-
semver@7.6.3: {}
semver@7.7.2: {}
@@ -29542,13 +29189,6 @@ snapshots:
streamsearch@1.1.0: {}
- streamx@2.22.1:
- dependencies:
- fast-fifo: 1.3.2
- text-decoder: 1.2.3
- optionalDependencies:
- bare-events: 2.5.4
-
strict-uri-encode@2.0.0: {}
string-argv@0.3.2: {}
@@ -29803,16 +29443,6 @@ snapshots:
pump: 3.0.2
tar-stream: 2.2.0
- tar-fs@3.0.5:
- dependencies:
- pump: 3.0.2
- tar-stream: 3.1.7
- optionalDependencies:
- bare-fs: 2.3.5
- bare-path: 2.1.3
- transitivePeerDependencies:
- - bare-buffer
-
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
@@ -29821,12 +29451,6 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
- tar-stream@3.1.7:
- dependencies:
- b4a: 1.6.7
- fast-fifo: 1.3.2
- streamx: 2.22.1
-
tar@6.2.1:
dependencies:
chownr: 2.0.0
@@ -29910,10 +29534,6 @@ snapshots:
glob: 7.2.3
minimatch: 3.1.2
- text-decoder@1.2.3:
- dependencies:
- b4a: 1.6.7
-
text-hex@1.0.0: {}
text-table@0.2.0: {}
@@ -29928,8 +29548,6 @@ snapshots:
throat@5.0.0: {}
- through@2.3.8: {}
-
thunky@1.1.0: {}
timers-ext@0.1.8:
@@ -29958,10 +29576,6 @@ snapshots:
tldts-core@7.0.8: {}
- tldts-experimental@6.1.86:
- dependencies:
- tldts-core: 6.1.86
-
tldts-experimental@7.0.8:
dependencies:
tldts-core: 7.0.8
@@ -30149,11 +29763,6 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
- unbzip2-stream@1.4.3:
- dependencies:
- buffer: 5.7.1
- through: 2.3.8
-
undici-types@5.26.5: {}
undici-types@6.21.0: {}
@@ -30343,8 +29952,6 @@ snapshots:
punycode: 1.4.1
qs: 6.14.0
- urlpattern-polyfill@10.0.0: {}
-
use-callback-ref@1.3.3(@types/react@18.3.12)(react@18.3.1):
dependencies:
react: 18.3.1
@@ -31042,8 +30649,6 @@ snapshots:
ws@7.5.10: {}
- ws@8.16.0: {}
-
ws@8.18.2: {}
xcode@3.0.1(patch_hash=kvggi4abfe6iel7wt6iiemonyq):
@@ -31113,11 +30718,6 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
- yauzl@2.10.0:
- dependencies:
- buffer-crc32: 0.2.13
- fd-slicer: 1.1.0
-
yjs@13.6.27:
dependencies:
lib0: 0.2.108
diff --git a/tooling/oxlint/package.json b/tooling/oxlint/package.json
new file mode 100644
index 00000000..6d24420b
--- /dev/null
+++ b/tooling/oxlint/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "oxlint",
+ "version": "0.0.0",
+ "private": true
+} \ No newline at end of file