From 39e559e4a644811b74e91b9b91b7b8083bdb3a98 Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Sun, 20 Sep 2026 19:41:46 +0200 Subject: [PATCH 1/2] feat(core): ship puppeteer-core types The editor needs the real Page dts without depending on puppeteer. Copy it next to index.d.ts on test and publish. Co-authored-by: Cursor --- .gitignore | 1 + packages/core/package.json | 3 ++- packages/core/scripts/copy-puppeteer-dts.js | 14 ++++++++++++++ packages/core/test/build.mjs | 6 ++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 packages/core/scripts/copy-puppeteer-dts.js diff --git a/.gitignore b/.gitignore index 98a40da..22f648d 100755 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ stats.html packages/function/dist packages/mql/dist/index.js packages/mql/dist/index.umd.js +packages/core/src/puppeteer-core.d.ts diff --git a/packages/core/package.json b/packages/core/package.json index 1ebbbf5..68527cd 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -72,7 +72,8 @@ "src" ], "scripts": { - "test": "ava && tsd" + "prepublishOnly": "node scripts/copy-puppeteer-dts.js", + "test": "node scripts/copy-puppeteer-dts.js && ava && tsd" }, "preferGlobal": true, "license": "MIT", diff --git a/packages/core/scripts/copy-puppeteer-dts.js b/packages/core/scripts/copy-puppeteer-dts.js new file mode 100644 index 0000000..276ba27 --- /dev/null +++ b/packages/core/scripts/copy-puppeteer-dts.js @@ -0,0 +1,14 @@ +'use strict' + +const { createRequire } = require('node:module') +const { dirname, join } = require('node:path') +const { readFileSync, writeFileSync } = require('node:fs') + +const requireFromCore = createRequire(join(__dirname, '../package.json')) +const pkgPath = requireFromCore.resolve('puppeteer-core/package.json') +const { types } = requireFromCore(pkgPath) + +writeFileSync( + join(__dirname, '../src/puppeteer-core.d.ts'), + readFileSync(join(dirname(pkgPath), types), 'utf8') +) diff --git a/packages/core/test/build.mjs b/packages/core/test/build.mjs index febedc1..5c0ecb7 100644 --- a/packages/core/test/build.mjs +++ b/packages/core/test/build.mjs @@ -89,3 +89,9 @@ test('published files include every bin entry', t => { ) ) }) + +test('ships puppeteer-core types next to the package dts', async t => { + const dts = await readFile(path.join(root, 'src/puppeteer-core.d.ts'), 'utf8') + t.true(dts.includes('export declare abstract class Page')) + t.true(dts.includes('export declare abstract class HTTPResponse')) +}) From 2ac129adf7e44b3f9c2936ebf214968afccaa296 Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Sun, 20 Sep 2026 21:27:24 +0200 Subject: [PATCH 2/2] fix(core): export packed puppeteer dts prepack so npm pack includes the file; export the subpath the editor loads. Co-authored-by: Cursor --- packages/core/package.json | 5 +++-- packages/core/test/build.mjs | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 68527cd..4b28d03 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -17,7 +17,8 @@ "require": "./bin/run.js", "default": "./bin/cli.mjs" }, - "./docs": "./bin/docs.js" + "./docs": "./bin/docs.js", + "./src/puppeteer-core.d.ts": "./src/puppeteer-core.d.ts" }, "bin": { "microlink": "bin/index.js", @@ -72,7 +73,7 @@ "src" ], "scripts": { - "prepublishOnly": "node scripts/copy-puppeteer-dts.js", + "prepack": "node scripts/copy-puppeteer-dts.js", "test": "node scripts/copy-puppeteer-dts.js && ava && tsd" }, "preferGlobal": true, diff --git a/packages/core/test/build.mjs b/packages/core/test/build.mjs index 5c0ecb7..cb07989 100644 --- a/packages/core/test/build.mjs +++ b/packages/core/test/build.mjs @@ -1,5 +1,6 @@ -import { readFile, access, constants } from 'fs/promises' +import { readFile, access, constants, mkdtemp, readdir, rm } from 'fs/promises' import { fileURLToPath } from 'url' +import { tmpdir } from 'os' import $ from 'tinyspawn' import test from 'ava' import path from 'path' @@ -91,7 +92,15 @@ test('published files include every bin entry', t => { }) test('ships puppeteer-core types next to the package dts', async t => { + t.is(pkg.exports['./src/puppeteer-core.d.ts'], './src/puppeteer-core.d.ts') const dts = await readFile(path.join(root, 'src/puppeteer-core.d.ts'), 'utf8') t.true(dts.includes('export declare abstract class Page')) t.true(dts.includes('export declare abstract class HTTPResponse')) + + const dest = await mkdtemp(path.join(tmpdir(), 'microlink-pack-')) + t.teardown(() => rm(dest, { recursive: true, force: true })) + await $('pnpm', ['pack', '--pack-destination', dest], { cwd: root }) + const [tarball] = (await readdir(dest)).filter(name => name.endsWith('.tgz')) + const { stdout } = await $('tar', ['-tzf', path.join(dest, tarball)]) + t.true(stdout.includes('package/src/puppeteer-core.d.ts')) })