From 95d7412a8e1a88f2740705a38abb6b834005c072 Mon Sep 17 00:00:00 2001 From: Randolf J Date: Wed, 28 Sep 2022 23:01:27 +0200 Subject: [PATCH] chore: migrate puppeteer --- .eslintignore | 2 +- .github/workflows/ci.yml | 5 +- .github/workflows/publish.yml | 23 +-- .github/workflows/tot-ci.yml | 6 +- .gitignore | 8 +- .prettierignore | 3 +- .release-please-manifest.json | 4 +- compat/cjs/tsconfig.json | 8 - compat/esm/tsconfig.json | 8 - docs/api/puppeteer.connect.md | 5 +- docs/api/puppeteer.launch.md | 4 +- docs/contributing.md | 6 +- lerna.json | 2 +- package-lock.json | 167 +++++++++++++++--- package.json | 91 ++++------ .../puppeteer-core/api-extractor.json | 2 +- packages/puppeteer-core/package.json | 155 ++++++++++++++++ .../rollup.third_party.config.js | 2 +- .../puppeteer-core/src}/api/Browser.ts | 0 .../puppeteer-core/src}/api/Page.ts | 0 .../src}/common/Accessibility.ts | 0 .../src}/common/AriaQueryHandler.ts | 0 .../puppeteer-core/src}/common/Browser.ts | 0 .../src}/common/BrowserConnector.ts | 2 +- .../src}/common/BrowserWebSocketTransport.ts | 0 .../src}/common/ChromeTargetManager.ts | 0 .../puppeteer-core/src}/common/Connection.ts | 0 .../src}/common/ConnectionTransport.ts | 0 .../src}/common/ConsoleMessage.ts | 0 .../puppeteer-core/src}/common/Coverage.ts | 0 .../puppeteer-core/src}/common/Debug.ts | 0 .../src}/common/DeviceDescriptors.ts | 0 .../puppeteer-core/src}/common/Dialog.ts | 0 .../src}/common/ElementHandle.ts | 0 .../src}/common/EmulationManager.ts | 0 .../puppeteer-core/src}/common/Errors.ts | 0 .../src}/common/EventEmitter.ts | 0 .../src}/common/ExecutionContext.ts | 0 .../puppeteer-core/src}/common/FileChooser.ts | 0 .../src}/common/FirefoxTargetManager.ts | 0 .../puppeteer-core/src}/common/Frame.ts | 0 .../src}/common/FrameManager.ts | 0 .../puppeteer-core/src}/common/FrameTree.ts | 0 .../puppeteer-core/src}/common/HTTPRequest.ts | 0 .../src}/common/HTTPResponse.ts | 0 .../puppeteer-core/src}/common/Input.ts | 0 .../src}/common/IsolatedWorld.ts | 0 .../puppeteer-core/src}/common/JSHandle.ts | 0 .../puppeteer-core/src}/common/LazyArg.ts | 0 .../src}/common/LifecycleWatcher.ts | 0 .../src}/common/NetworkConditions.ts | 0 .../src}/common/NetworkEventManager.ts | 0 .../src}/common/NetworkManager.ts | 0 .../src/common}/NodeWebSocketTransport.ts | 0 .../puppeteer-core/src}/common/PDFOptions.ts | 0 .../puppeteer-core/src}/common/Page.ts | 0 .../puppeteer-core/src}/common/Product.ts | 0 .../puppeteer-core/src}/common/Puppeteer.ts | 0 .../src}/common/PuppeteerViewport.ts | 0 .../src}/common/QueryHandler.ts | 0 .../src}/common/SecurityDetails.ts | 0 .../puppeteer-core/src}/common/Target.ts | 0 .../src}/common/TargetManager.ts | 0 .../puppeteer-core/src}/common/TaskQueue.ts | 0 .../src}/common/TimeoutSettings.ts | 0 .../puppeteer-core/src}/common/Tracing.ts | 0 .../src}/common/USKeyboardLayout.ts | 0 .../puppeteer-core/src}/common/WaitTask.ts | 0 .../puppeteer-core/src}/common/WebWorker.ts | 0 .../src}/common/bidi/Browser.ts | 0 .../src}/common/bidi/BrowserContext.ts | 0 .../src}/common/bidi/Connection.ts | 0 .../puppeteer-core/src}/common/bidi/Page.ts | 0 .../puppeteer-core/src}/common/fetch.ts | 0 .../puppeteer-core/src}/common/types.ts | 0 .../puppeteer-core/src}/common/util.ts | 0 .../puppeteer-core/src}/environment.ts | 0 .../src}/injected/PierceQuerySelector.ts | 0 .../puppeteer-core/src}/injected/Poller.ts | 0 .../puppeteer-core/src}/injected/README.md | 0 .../src}/injected/TextContent.ts | 0 .../src}/injected/TextQuerySelector.ts | 0 .../src}/injected/XPathQuerySelector.ts | 0 .../puppeteer-core/src}/injected/injected.ts | 0 .../puppeteer-core/src}/injected/util.ts | 0 .../puppeteer-core/src}/puppeteer-core.ts | 19 +- .../puppeteer-core/src}/templates/README.md | 0 .../src}/templates/injected.ts.tmpl | 0 .../src}/templates/version.ts.tmpl | 0 packages/puppeteer-core/src/tsconfig.cjs.json | 8 + packages/puppeteer-core/src/tsconfig.esm.json | 7 + {src => packages/puppeteer-core/src}/types.ts | 19 +- .../src}/util/DebuggableDeferredPromise.ts | 0 .../src}/util/DeferredPromise.ts | 0 .../puppeteer-core/src}/util/ErrorLike.ts | 0 .../puppeteer-core/src}/util/assert.ts | 0 .../puppeteer-core/third_party}/README.md | 0 .../puppeteer-core/third_party}/mitt/index.ts | 0 .../third_party}/tsconfig.cjs.json | 3 +- .../puppeteer-core/third_party}/tsconfig.json | 3 +- ...nsure-correct-devtools-protocol-package.ts | 2 +- .../puppeteer-core/tools}/generate_sources.ts | 46 +++-- packages/puppeteer-core/tsconfig.json | 8 + packages/puppeteer/api-extractor.json | 50 ++++++ .../puppeteer/compat}/README.md | 0 .../puppeteer/compat}/cjs/compat.ts | 0 packages/puppeteer/compat/cjs/tsconfig.json | 7 + .../puppeteer/compat}/esm/compat.ts | 0 packages/puppeteer/compat/esm/tsconfig.json | 6 + install.js => packages/puppeteer/install.js | 13 +- packages/puppeteer/package.json | 140 +++++++++++++++ {src => packages/puppeteer/src}/compat.d.ts | 3 + {src => packages/puppeteer/src}/constants.ts | 0 .../puppeteer/src}/node/BrowserFetcher.ts | 26 ++- .../puppeteer/src}/node/BrowserRunner.ts | 29 +-- .../puppeteer/src}/node/ChromeLauncher.ts | 6 +- .../puppeteer/src}/node/FirefoxLauncher.ts | 10 +- .../puppeteer/src}/node/LaunchOptions.ts | 4 +- .../puppeteer/src}/node/PipeTransport.ts | 6 +- .../puppeteer/src}/node/ProductLauncher.ts | 13 +- .../puppeteer/src/node/PuppeteerNode.ts | 14 +- .../puppeteer/src}/node/install.ts | 2 +- .../puppeteer/src/node/util.ts | 13 ++ packages/puppeteer/src/puppeteer.ts | 60 +++++++ {src => packages/puppeteer/src}/revisions.ts | 0 packages/puppeteer/src/tsconfig.cjs.json | 9 + packages/puppeteer/src/tsconfig.esm.json | 8 + packages/puppeteer/src/types.ts | 77 ++++++++ packages/puppeteer/tools/generate_sources.ts | 52 ++++++ packages/puppeteer/tsconfig.json | 16 ++ versions.js => packages/puppeteer/versions.js | 0 packages/testserver/package.json | 9 +- release-please-config.json | 7 +- scripts/test-install.sh | 1 + scripts/tsconfig.json | 2 +- src/initializePuppeteer.ts | 46 ----- src/node/util.ts | 13 -- src/puppeteer.ts | 39 ---- src/tsconfig.cjs.json | 12 -- src/tsconfig.esm.json | 12 -- test-d/ElementHandle.test-d.ts | 2 +- test-d/JSHandle.test-d.ts | 3 +- test-d/puppeteer.test-d.ts | 7 +- test-d/tsconfig.json | 8 - test/README.md | 2 +- test/src/CDPSession.spec.ts | 2 +- test/src/EventEmitter.spec.ts | 2 +- test/src/NetworkManager.spec.ts | 10 +- test/src/TargetManager.spec.ts | 2 +- test/src/accessibility.spec.ts | 2 +- test/src/ariaqueryhandler.spec.ts | 2 +- test/src/bidi/Connection.spec.ts | 4 +- test/src/elementhandle.spec.ts | 2 +- test/src/emulation.spec.ts | 2 +- test/src/frame.spec.ts | 4 +- test/src/headful.spec.ts | 2 +- test/src/idle_override.spec.ts | 2 +- test/src/ignorehttpserrors.spec.ts | 6 +- test/src/injected.spec.ts | 3 +- test/src/keyboard.spec.ts | 2 +- test/src/launcher.spec.ts | 4 +- test/src/mocha-utils.ts | 14 +- test/src/mouse.spec.ts | 2 +- test/src/navigation.spec.ts | 2 +- test/src/network.spec.ts | 4 +- test/src/oopif.spec.ts | 4 +- test/src/page.spec.ts | 8 +- test/src/proxy.spec.ts | 2 +- test/src/queryhandler.spec.ts | 2 +- test/src/queryselector.spec.ts | 2 +- .../requestinterception-experimental.spec.ts | 4 +- test/src/requestinterception.spec.ts | 4 +- test/src/target.spec.ts | 4 +- test/src/tracing.spec.ts | 4 +- test/src/utils.ts | 6 +- test/src/waittask.spec.ts | 2 +- test/src/worker.spec.ts | 4 +- test/tsconfig.json | 9 +- tsconfig.base.json | 3 + tsconfig.json | 13 -- tsconfig.lib.json | 16 -- typescript-if-required.js | 70 -------- utils/generate_artifacts.ts | 28 --- utils/generate_docs.ts | 9 +- utils/internal/job.ts | 17 +- utils/mochaRunner/README.md | 6 +- utils/prepare_puppeteer_core.js | 31 ---- .../version-18.0.5/contributing.md | 4 +- 188 files changed, 1024 insertions(+), 646 deletions(-) delete mode 100644 compat/cjs/tsconfig.json delete mode 100644 compat/esm/tsconfig.json rename api-extractor.json => packages/puppeteer-core/api-extractor.json (91%) create mode 100644 packages/puppeteer-core/package.json rename rollup.third_party.config.js => packages/puppeteer-core/rollup.third_party.config.js (95%) rename {src => packages/puppeteer-core/src}/api/Browser.ts (100%) rename {src => packages/puppeteer-core/src}/api/Page.ts (100%) rename {src => packages/puppeteer-core/src}/common/Accessibility.ts (100%) rename {src => packages/puppeteer-core/src}/common/AriaQueryHandler.ts (100%) rename {src => packages/puppeteer-core/src}/common/Browser.ts (100%) rename {src => packages/puppeteer-core/src}/common/BrowserConnector.ts (98%) rename {src => packages/puppeteer-core/src}/common/BrowserWebSocketTransport.ts (100%) rename {src => packages/puppeteer-core/src}/common/ChromeTargetManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/Connection.ts (100%) rename {src => packages/puppeteer-core/src}/common/ConnectionTransport.ts (100%) rename {src => packages/puppeteer-core/src}/common/ConsoleMessage.ts (100%) rename {src => packages/puppeteer-core/src}/common/Coverage.ts (100%) rename {src => packages/puppeteer-core/src}/common/Debug.ts (100%) rename {src => packages/puppeteer-core/src}/common/DeviceDescriptors.ts (100%) rename {src => packages/puppeteer-core/src}/common/Dialog.ts (100%) rename {src => packages/puppeteer-core/src}/common/ElementHandle.ts (100%) rename {src => packages/puppeteer-core/src}/common/EmulationManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/Errors.ts (100%) rename {src => packages/puppeteer-core/src}/common/EventEmitter.ts (100%) rename {src => packages/puppeteer-core/src}/common/ExecutionContext.ts (100%) rename {src => packages/puppeteer-core/src}/common/FileChooser.ts (100%) rename {src => packages/puppeteer-core/src}/common/FirefoxTargetManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/Frame.ts (100%) rename {src => packages/puppeteer-core/src}/common/FrameManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/FrameTree.ts (100%) rename {src => packages/puppeteer-core/src}/common/HTTPRequest.ts (100%) rename {src => packages/puppeteer-core/src}/common/HTTPResponse.ts (100%) rename {src => packages/puppeteer-core/src}/common/Input.ts (100%) rename {src => packages/puppeteer-core/src}/common/IsolatedWorld.ts (100%) rename {src => packages/puppeteer-core/src}/common/JSHandle.ts (100%) rename {src => packages/puppeteer-core/src}/common/LazyArg.ts (100%) rename {src => packages/puppeteer-core/src}/common/LifecycleWatcher.ts (100%) rename {src => packages/puppeteer-core/src}/common/NetworkConditions.ts (100%) rename {src => packages/puppeteer-core/src}/common/NetworkEventManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/NetworkManager.ts (100%) rename {src/node => packages/puppeteer-core/src/common}/NodeWebSocketTransport.ts (100%) rename {src => packages/puppeteer-core/src}/common/PDFOptions.ts (100%) rename {src => packages/puppeteer-core/src}/common/Page.ts (100%) rename {src => packages/puppeteer-core/src}/common/Product.ts (100%) rename {src => packages/puppeteer-core/src}/common/Puppeteer.ts (100%) rename {src => packages/puppeteer-core/src}/common/PuppeteerViewport.ts (100%) rename {src => packages/puppeteer-core/src}/common/QueryHandler.ts (100%) rename {src => packages/puppeteer-core/src}/common/SecurityDetails.ts (100%) rename {src => packages/puppeteer-core/src}/common/Target.ts (100%) rename {src => packages/puppeteer-core/src}/common/TargetManager.ts (100%) rename {src => packages/puppeteer-core/src}/common/TaskQueue.ts (100%) rename {src => packages/puppeteer-core/src}/common/TimeoutSettings.ts (100%) rename {src => packages/puppeteer-core/src}/common/Tracing.ts (100%) rename {src => packages/puppeteer-core/src}/common/USKeyboardLayout.ts (100%) rename {src => packages/puppeteer-core/src}/common/WaitTask.ts (100%) rename {src => packages/puppeteer-core/src}/common/WebWorker.ts (100%) rename {src => packages/puppeteer-core/src}/common/bidi/Browser.ts (100%) rename {src => packages/puppeteer-core/src}/common/bidi/BrowserContext.ts (100%) rename {src => packages/puppeteer-core/src}/common/bidi/Connection.ts (100%) rename {src => packages/puppeteer-core/src}/common/bidi/Page.ts (100%) rename {src => packages/puppeteer-core/src}/common/fetch.ts (100%) rename {src => packages/puppeteer-core/src}/common/types.ts (100%) rename {src => packages/puppeteer-core/src}/common/util.ts (100%) rename {src => packages/puppeteer-core/src}/environment.ts (100%) rename {src => packages/puppeteer-core/src}/injected/PierceQuerySelector.ts (100%) rename {src => packages/puppeteer-core/src}/injected/Poller.ts (100%) rename {src => packages/puppeteer-core/src}/injected/README.md (100%) rename {src => packages/puppeteer-core/src}/injected/TextContent.ts (100%) rename {src => packages/puppeteer-core/src}/injected/TextQuerySelector.ts (100%) rename {src => packages/puppeteer-core/src}/injected/XPathQuerySelector.ts (100%) rename {src => packages/puppeteer-core/src}/injected/injected.ts (100%) rename {src => packages/puppeteer-core/src}/injected/util.ts (100%) rename {src => packages/puppeteer-core/src}/puppeteer-core.ts (78%) rename {src => packages/puppeteer-core/src}/templates/README.md (100%) rename {src => packages/puppeteer-core/src}/templates/injected.ts.tmpl (100%) rename {src => packages/puppeteer-core/src}/templates/version.ts.tmpl (100%) create mode 100644 packages/puppeteer-core/src/tsconfig.cjs.json create mode 100644 packages/puppeteer-core/src/tsconfig.esm.json rename {src => packages/puppeteer-core/src}/types.ts (79%) rename {src => packages/puppeteer-core/src}/util/DebuggableDeferredPromise.ts (100%) rename {src => packages/puppeteer-core/src}/util/DeferredPromise.ts (100%) rename {src => packages/puppeteer-core/src}/util/ErrorLike.ts (100%) rename {src => packages/puppeteer-core/src}/util/assert.ts (100%) rename {third_party => packages/puppeteer-core/third_party}/README.md (100%) rename {third_party => packages/puppeteer-core/third_party}/mitt/index.ts (100%) rename {third_party => packages/puppeteer-core/third_party}/tsconfig.cjs.json (66%) rename {third_party => packages/puppeteer-core/third_party}/tsconfig.json (66%) rename {scripts => packages/puppeteer-core/tools}/ensure-correct-devtools-protocol-package.ts (97%) rename {utils => packages/puppeteer-core/tools}/generate_sources.ts (83%) create mode 100644 packages/puppeteer-core/tsconfig.json create mode 100644 packages/puppeteer/api-extractor.json rename {compat => packages/puppeteer/compat}/README.md (100%) rename {compat => packages/puppeteer/compat}/cjs/compat.ts (100%) create mode 100644 packages/puppeteer/compat/cjs/tsconfig.json rename {compat => packages/puppeteer/compat}/esm/compat.ts (100%) create mode 100644 packages/puppeteer/compat/esm/tsconfig.json rename install.js => packages/puppeteer/install.js (87%) create mode 100644 packages/puppeteer/package.json rename {src => packages/puppeteer/src}/compat.d.ts (97%) rename {src => packages/puppeteer/src}/constants.ts (100%) rename {src => packages/puppeteer/src}/node/BrowserFetcher.ts (99%) rename {src => packages/puppeteer/src}/node/BrowserRunner.ts (94%) rename {src => packages/puppeteer/src}/node/ChromeLauncher.ts (97%) rename {src => packages/puppeteer/src}/node/FirefoxLauncher.ts (97%) rename {src => packages/puppeteer/src}/node/LaunchOptions.ts (96%) rename {src => packages/puppeteer/src}/node/PipeTransport.ts (92%) rename {src => packages/puppeteer/src}/node/ProductLauncher.ts (98%) rename src/node/Puppeteer.ts => packages/puppeteer/src/node/PuppeteerNode.ts (95%) rename {src => packages/puppeteer/src}/node/install.ts (99%) rename src/util/getPackageDirectory.ts => packages/puppeteer/src/node/util.ts (59%) create mode 100644 packages/puppeteer/src/puppeteer.ts rename {src => packages/puppeteer/src}/revisions.ts (100%) create mode 100644 packages/puppeteer/src/tsconfig.cjs.json create mode 100644 packages/puppeteer/src/tsconfig.esm.json create mode 100644 packages/puppeteer/src/types.ts create mode 100644 packages/puppeteer/tools/generate_sources.ts create mode 100644 packages/puppeteer/tsconfig.json rename versions.js => packages/puppeteer/versions.js (100%) delete mode 100644 src/initializePuppeteer.ts delete mode 100644 src/node/util.ts delete mode 100644 src/puppeteer.ts delete mode 100644 src/tsconfig.cjs.json delete mode 100644 src/tsconfig.esm.json delete mode 100644 test-d/tsconfig.json delete mode 100644 tsconfig.json delete mode 100644 tsconfig.lib.json delete mode 100644 typescript-if-required.js delete mode 100644 utils/generate_artifacts.ts delete mode 100755 utils/prepare_puppeteer_core.js diff --git a/.eslintignore b/.eslintignore index 7d90ff9e87cc7..19151366c6030 100644 --- a/.eslintignore +++ b/.eslintignore @@ -18,7 +18,7 @@ yarn.lock test/output-*/ .dev_profile* coverage/ -src/generated +generated/ # IDE Artifacts .vscode diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e93baac8f96ba..954670f2a3beb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -242,7 +242,7 @@ jobs: if: ${{ matrix.spec.xvfb }} run: sudo apt-get install xvfb - name: Build - run: npm run build:dev + run: npm run build:test - name: Test types run: npm run test:types - name: Run all tests with xvfb @@ -258,7 +258,8 @@ jobs: npm run clean npm run build # Note: this modifies package.json to test puppeteer-core, so we test this last. - npm run test:install + # TODO(jrandolf): Disabled for now. + # npm run test:install docker-tests: runs-on: ${{ matrix.os }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d1283d9af4fdd..18c46457b643b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,25 +15,18 @@ jobs: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies - run: npm install - - name: Build puppeteer + run: | + npm install + npx lerna bootstrap + - name: Build packages run: npm run build - - name: Publish puppeteer + - name: Publish packages env: - NPM_TOKEN: ${{secrets.NPM_TOKEN_PUPPETEER}} + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN_PUPPETEER}} run: | npm config set registry 'https://wombat-dressing-room.appspot.com/' - npm config set '//wombat-dressing-room.appspot.com/:_authToken' '${NPM_TOKEN}' - echo "Publishing puppeteer" - npm publish + npm config set '//wombat-dressing-room.appspot.com/:_authToken' '${NODE_AUTH_TOKEN}' + npx lerna publish from-package --registry 'https://wombat-dressing-room.appspot.com/' # DEPRECATED_RANGE=$(node utils/get_deprecated_version_range.js) # echo "Deprecating old puppeteer versions: $DEPRECATED_RANGE" # npm deprecate puppeteer@$DEPRECATED_RANGE "Version no longer supported. Upgrade to @latest" - - name: Publish puppeteer-core - env: - NPM_TOKEN: ${{secrets.NPM_TOKEN_PUPPETEER_CORE}} - run: | - utils/prepare_puppeteer_core.js - npm config set registry 'https://wombat-dressing-room.appspot.com/' - npm config set '//wombat-dressing-room.appspot.com/:_authToken' '${NPM_TOKEN}' - npm publish diff --git a/.github/workflows/tot-ci.yml b/.github/workflows/tot-ci.yml index 4e5ad0cb45d37..203bb3ecbdfae 100644 --- a/.github/workflows/tot-ci.yml +++ b/.github/workflows/tot-ci.yml @@ -43,7 +43,7 @@ jobs: echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts - npm run build:dev + npm run build:test npm install - name: Run unit tests in headless @@ -81,7 +81,7 @@ jobs: echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts - npm run build:dev + npm run build:test npm install - name: Run unit tests in headful @@ -119,7 +119,7 @@ jobs: echo "Installing revision $REV" cat src/revisions.ts | sed "s/[0-9]\{6,\}/$REV/" > src/revisions.ts.replaced mv src/revisions.ts.replaced src/revisions.ts - npm run build:dev + npm run build:test npm install - name: Run unit tests in chrome headless diff --git a/.gitignore b/.gitignore index 81ab684afc83e..76e8974e858c4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ lib/ # Generated files **/*.tsbuildinfo -puppeteer.api.json +*.api.json puppeteer*.tgz yarn.lock .docusaurus/ @@ -17,7 +17,8 @@ yarn.lock test/output-*/ .dev_profile* coverage/ -src/generated +generated/ +.eslintcache # IDE Artifacts .vscode @@ -33,3 +34,6 @@ src/generated npm-debug.log* yarn-debug.log* yarn-error.log* + +# Wireit +.wireit diff --git a/.prettierignore b/.prettierignore index aca403091bb7c..91185a0ff89a5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -18,7 +18,7 @@ yarn.lock test/output-*/ .dev_profile* coverage/ -src/generated +generated/ # IDE Artifacts .vscode @@ -40,7 +40,6 @@ yarn-error.log* assets/ CHANGELOG.md package-lock.json -package.json test/assets/ docs/ versioned_*/ diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 201d76d723827..d146dc1d4a6e9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,5 @@ { - ".": "18.0.5" + "puppeteer": "18.0.5", + "puppeteer-core": "18.0.5", + "testserver": "0.5.0" } diff --git a/compat/cjs/tsconfig.json b/compat/cjs/tsconfig.json deleted file mode 100644 index 542926884354b..0000000000000 --- a/compat/cjs/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "composite": true, - "outDir": "../../lib/cjs/puppeteer", - "module": "CommonJS" - } -} diff --git a/compat/esm/tsconfig.json b/compat/esm/tsconfig.json deleted file mode 100644 index 5afe459a0500f..0000000000000 --- a/compat/esm/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "composite": true, - "outDir": "../../lib/esm/puppeteer", - "module": "esnext" - } -} diff --git a/docs/api/puppeteer.connect.md b/docs/api/puppeteer.connect.md index 417bbdd4603c2..b7ab48f9d5c24 100644 --- a/docs/api/puppeteer.connect.md +++ b/docs/api/puppeteer.connect.md @@ -7,6 +7,7 @@ sidebar_label: connect **Signature:** ```typescript -connect: (options: import('./types.js').ConnectOptions) => - Promise; +connect: ( + options: import('puppeteer-core/internal/common/Puppeteer.js').ConnectOptions +) => Promise; ``` diff --git a/docs/api/puppeteer.launch.md b/docs/api/puppeteer.launch.md index 8bf8c1fea7d9b..9324c9ffb656b 100644 --- a/docs/api/puppeteer.launch.md +++ b/docs/api/puppeteer.launch.md @@ -7,6 +7,6 @@ sidebar_label: launch **Signature:** ```typescript -launch: (options?: import('./types.js').PuppeteerLaunchOptions) => - Promise; +launch: (options?: import('./node/PuppeteerNode.js').PuppeteerLaunchOptions) => + Promise; ``` diff --git a/docs/contributing.md b/docs/contributing.md index 42103f2410ef9..ca68b62fd8b94 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -42,7 +42,7 @@ Puppeteer has two configurations for building: - `npm run build` (or `npm run build:prod`) - Builds Puppeteer and artifacts used in production. -- `npm run build:dev` - Builds Puppeteer, test runner, tests, and artifacts used in +- `npm run build:test` - Builds Puppeteer, test runner, tests, and artifacts used in production. ## Testing Puppeteer @@ -50,7 +50,7 @@ Puppeteer has two configurations for building: For browser testing, you can run ```bash -npm run build:dev && npm run test +npm run build:test && npm run test ``` We also have other tests such as `test:types` that tests types and @@ -274,7 +274,7 @@ The following steps are needed to update the Chromium version. 1. Update `versions.js` with the new Chromium-to-Puppeteer version mapping and update `lastMaintainedChromiumVersion` with the latest stable Chrome version. 1. Run `npm run check:protocol-revision`. If it fails, update `package.json` with the expected `devtools-protocol` version. -1. Run `npm run build && npm run build:dev` and `npm install`. +1. Run `npm run build && npm run build:test` and `npm install`. 1. Run `npm test` and ensure that all tests pass. If a test fails, [bisect](#bisecting-upstream-changes) the upstream cause of the failure, and either update the test expectations accordingly (if it was an intended change) or work around the changes in Puppeteer (if it’s not desirable to change Puppeteer’s observable behavior). 1. Commit and push your changes and open a pull request. The commit message must contain the version in `Chromium ()` format to ensure that [pptr.dev](https://pptr.dev/) can parse it correctly, e.g. `'feat(chromium): roll to Chromium 90.0.4427.0 (r856583)'`. diff --git a/lerna.json b/lerna.json index 9f357e1d36253..d62aae1ff817a 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useNx": true, "useWorkspaces": true, - "version": "0.0.0" + "version": "independent" } diff --git a/package-lock.json b/package-lock.json index cfe9f2ae7a5e3..06d3205264d68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,30 +1,13 @@ { "name": "puppeteer", - "version": "18.0.5", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "puppeteer", - "version": "18.0.5", "hasInstallScript": true, - "license": "Apache-2.0", "workspaces": [ "packages/*" ], - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1036444", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.9.0" - }, "devDependencies": { "@commitlint/cli": "17.1.2", "@commitlint/config-conventional": "17.1.0", @@ -80,6 +63,7 @@ "pixelmatch": "5.3.0", "pngjs": "6.0.0", "prettier": "2.7.1", + "puppeteer": "*", "rollup": "2.79.1", "rollup-plugin-dts": "4.2.2", "rollup-plugin-node-resolve": "5.2.0", @@ -90,10 +74,8 @@ "tsd": "0.24.1", "tsx": "3.9.0", "typescript": "4.8.3", + "wireit": "0.7.2", "zod": "3.19.1" - }, - "engines": { - "node": ">=14.1.0" } }, "node_modules/@babel/code-frame": { @@ -8529,7 +8511,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, "bin": { "mime": "cli.js" }, @@ -10529,6 +10510,17 @@ "read": "1" } }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -10564,6 +10556,14 @@ "node": ">=6" } }, + "node_modules/puppeteer": { + "resolved": "packages/puppeteer", + "link": true + }, + "node_modules/puppeteer-core": { + "resolved": "packages/puppeteer-core", + "link": true + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -12300,6 +12300,25 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/wireit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.7.2.tgz", + "integrity": "sha512-Zjq50QH5hguk64hXfJmJJpLGgi8TUy7780w0u2VXK325qWxJtw1fP6HhOYcdjTWeoYLWQDDkTytQ119y/UMseg==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "jsonc-parser": "^3.0.0", + "proper-lockfile": "^4.1.2" + }, + "bin": { + "wireit": "bin/wireit.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -12684,10 +12703,54 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "packages/puppeteer": { + "version": "18.0.5", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "*", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.9.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "packages/puppeteer-core": { + "version": "18.0.5", + "license": "Apache-2.0", + "dependencies": { + "devtools-protocol": "0.0.1036444" + }, + "devDependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "ws": "8.9.0" + }, + "engines": { + "node": ">=14.1.0" + }, + "peerDependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "ws": "8.9.0" + } + }, "packages/testserver": { - "name": "@pptr/testserver", "version": "0.5.0", - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "mime": "3.0.0", + "ws": "8.9.0" + } } }, "dependencies": { @@ -14868,7 +14931,11 @@ } }, "@pptr/testserver": { - "version": "file:packages/testserver" + "version": "file:packages/testserver", + "requires": { + "mime": "3.0.0", + "ws": "8.9.0" + } }, "@rushstack/node-core-library": { "version": "3.52.0", @@ -19211,8 +19278,7 @@ "mime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" }, "mimic-fn": { "version": "2.1.0", @@ -20719,6 +20785,17 @@ "read": "1" } }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -20751,6 +20828,31 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "puppeteer": { + "version": "file:packages/puppeteer", + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "*", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.9.0" + } + }, + "puppeteer-core": { + "version": "file:packages/puppeteer-core", + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1036444", + "ws": "8.9.0" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -22045,6 +22147,19 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "wireit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.7.2.tgz", + "integrity": "sha512-Zjq50QH5hguk64hXfJmJJpLGgi8TUy7780w0u2VXK325qWxJtw1fP6HhOYcdjTWeoYLWQDDkTytQ119y/UMseg==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "jsonc-parser": "^3.0.0", + "proper-lockfile": "^4.1.2" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index ec5104d6325f2..2a7d04b7d352e 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,11 @@ { - "name": "puppeteer", - "version": "18.0.5", - "description": "A high-level API to control headless Chrome over the DevTools Protocol", - "keywords": [ - "puppeteer", - "chrome", - "headless", - "automation" - ], - "type": "commonjs", - "main": "./lib/cjs/puppeteer/puppeteer.js", - "exports": { - ".": { - "types": "./lib/types.d.ts", - "import": "./lib/esm/puppeteer/puppeteer.js", - "require": "./lib/cjs/puppeteer/puppeteer.js" - }, - "./*": { - "import": "./*", - "require": "./*" - } - }, - "types": "lib/types.d.ts", - "repository": "github:puppeteer/puppeteer", - "engines": { - "node": ">=14.1.0" + "repository": { + "type": "git", + "url": "https://github.com/puppeteer/puppeteer" }, "scripts": { "test": "cross-env PUPPETEER_DEFERRED_PROMISE_DEBUG_TIMEOUT=20000 node utils/mochaRunner/lib/main.js", - "test:types": "tsd", + "test:types": "tsd -t packages/puppeteer", "test:install": "scripts/test-install.sh", "test:firefox": "run-s test:firefox:*", "test:firefox:headless": "npm run test -- --test-suite firefox-headless", @@ -38,51 +15,41 @@ "test:chrome:headless-chrome": "npm run test -- --test-suite chrome-new-headless", "test:chrome:headful": "npm run test -- --test-suite chrome-headful", "prepublishOnly": "npm run build", - "prepare": "node typescript-if-required.js && husky install", + "install": "npm run install:husky && lerna run install", + "install:husky": "husky install", "lint": "run-s lint:prettier lint:eslint", "lint:prettier": "prettier --check .", "lint:eslint": "([ \"$CI\" = true ] && eslint --ext js --ext ts --quiet -f codeframe . || eslint --ext js --ext ts .)", - "install": "node install.js", - "generate:sources": "tsx utils/generate_sources.ts", - "generate:artifacts": "tsx utils/generate_artifacts.ts", "generate:markdown": "tsx utils/generate_docs.ts", "format": "run-s format:*", "format:prettier": "prettier --write .", "format:eslint": "eslint --ext js --ext ts --fix .", "docs": "run-s build generate:markdown", - "debug": "npm run build:dev && mocha --inspect-brk", + "debug": "npm run build:test && mocha --inspect-brk", "commitlint": "commitlint --from=HEAD~1", - "clean": "rimraf lib && rimraf test/build", - "check": "run-p check:*", - "check:protocol-revision": "tsx scripts/ensure-correct-devtools-protocol-package", + "clean": "lerna run clean && rimraf **/.wireit", + "check": "lerna run check && run-p check:*", "check:pinned-deps": "tsx scripts/ensure-pinned-deps", - "build": "npm run build:prod", - "build:dev": "run-s generate:sources build:tsc:dev && run-p bundle:third_party generate:artifacts", - "build:prod": "run-s generate:sources build:tsc:prod && run-p bundle:third_party generate:artifacts", - "build:tsc:dev": "tsc -b test", - "build:tsc:prod": "tsc -b tsconfig.lib.json", - "bundle:third_party": "rollup --config rollup.third_party.config.js" + "build": "lerna run build", + "build:test": "wireit" }, - "files": [ - "lib", - "install.js", - "typescript-if-required.js", - "!**/*.tsbuildinfo" - ], - "author": "The Chromium Authors", - "license": "Apache-2.0", - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1036444", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.9.0" + "wireit": { + "build:test": { + "command": "tsc -b test", + "clean": "if-file-deleted", + "dependencies": [ + "./packages/puppeteer:build", + "./packages/puppeteer-core:build", + "./packages/testserver:build" + ], + "files": [ + "test/src/**" + ], + "output": [ + "test/build/**", + "test/tsconfig.tsbuildinfo" + ] + } }, "devDependencies": { "@commitlint/cli": "17.1.2", @@ -139,6 +106,7 @@ "pixelmatch": "5.3.0", "pngjs": "6.0.0", "prettier": "2.7.1", + "puppeteer": "*", "rollup": "2.79.1", "rollup-plugin-dts": "4.2.2", "rollup-plugin-node-resolve": "5.2.0", @@ -149,6 +117,7 @@ "tsd": "0.24.1", "tsx": "3.9.0", "typescript": "4.8.3", + "wireit": "0.7.2", "zod": "3.19.1" }, "workspaces": [ diff --git a/api-extractor.json b/packages/puppeteer-core/api-extractor.json similarity index 91% rename from api-extractor.json rename to packages/puppeteer-core/api-extractor.json index 8a80ee1e3e0a9..feba8decbef6f 100644 --- a/api-extractor.json +++ b/packages/puppeteer-core/api-extractor.json @@ -9,7 +9,7 @@ "docModel": { "enabled": true, - "apiJsonFilePath": "/docs/.api.json" + "apiJsonFilePath": "/../../docs/.api.json" }, "dtsRollup": { diff --git a/packages/puppeteer-core/package.json b/packages/puppeteer-core/package.json new file mode 100644 index 0000000000000..a9a1f3c22e63f --- /dev/null +++ b/packages/puppeteer-core/package.json @@ -0,0 +1,155 @@ +{ + "name": "puppeteer-core", + "version": "18.0.5", + "description": "A high-level API to control headless Chrome over the DevTools Protocol", + "keywords": [ + "puppeteer", + "chrome", + "headless", + "automation" + ], + "type": "commonjs", + "main": "./lib/cjs/puppeteer/puppeteer-core.js", + "types": "./lib/types.d.ts", + "exports": { + ".": { + "types": "./lib/types.d.ts", + "import": "./lib/esm/puppeteer/puppeteer-core.js", + "require": "./lib/cjs/puppeteer/puppeteer-core.js" + }, + "./internal/*": { + "import": "./lib/esm/puppeteer/*", + "require": "./lib/cjs/puppeteer/*" + }, + "./*": { + "import": "./*", + "require": "./*" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/puppeteer/puppeteer/tree/main/packages/puppeteer-core" + }, + "engines": { + "node": ">=14.1.0" + }, + "scripts": { + "build:tsc": "wireit", + "build:types": "wireit", + "build": "wireit", + "bundle:third_party": "wireit", + "check": "tsx tools/ensure-correct-devtools-protocol-package", + "clean": "tsc -b --clean && rimraf lib src/generated", + "format:types": "wireit", + "generate:package-json": "wireit", + "generate:sources": "wireit" + }, + "wireit": { + "build": { + "dependencies": [ + "bundle:third_party", + "format:types", + "generate:package-json" + ] + }, + "generate:sources": { + "command": "tsx tools/generate_sources.ts", + "files": [ + "tools/generate_sources.ts", + "src/templates/**" + ], + "output": [ + "src/generated/**", + "src/types.ts" + ] + }, + "bundle:third_party": { + "command": "rollup --config rollup.third_party.config.js", + "dependencies": [ + "build:tsc" + ], + "clean": false, + "files": [ + "lib/esm/third_party/**", + "lib/cjs/third_party/**" + ], + "output": [ + "lib/esm/third_party/**", + "lib/cjs/third_party/**" + ] + }, + "generate:package-json": { + "command": "echo '{\"type\": \"module\"}' > lib/esm/package.json", + "clean": "if-file-deleted", + "dependencies": [ + "build:tsc" + ], + "output": [ + "lib/esm/package.json" + ] + }, + "build:types": { + "command": "api-extractor run --local", + "dependencies": [ + "build:tsc" + ], + "files": [ + "tsconfig.json", + "api-extractor.json", + "lib/esm/puppeteer/types.d.ts" + ], + "output": [ + "lib/types.d.ts" + ] + }, + "format:types": { + "command": "eslint --cache-location .eslintcache --cache --ext=ts --no-ignore --no-eslintrc -c=../../.eslintrc.types.cjs --fix lib/types.d.ts", + "dependencies": [ + "build:types" + ], + "clean": false, + "files": [ + "lib/types.d.ts", + "../../.eslintrc.types.cjs" + ], + "output": [ + "lib/types.d.ts" + ] + }, + "build:tsc": { + "command": "tsc -b", + "clean": "if-file-deleted", + "dependencies": [ + "generate:sources" + ], + "files": [ + "src/**", + "compat/**", + "**/tsconfig.*.json" + ], + "output": [ + "lib/esm/**", + "lib/cjs/**" + ] + } + }, + "files": [ + "lib", + "!*.tsbuildinfo" + ], + "author": "The Chromium Authors", + "license": "Apache-2.0", + "dependencies": { + "devtools-protocol": "0.0.1036444" + }, + "peerDependencies": { + "ws": "8.9.0", + "cross-fetch": "3.1.5", + "debug": "4.3.4" + }, + "devDependencies": { + "ws": "8.9.0", + "cross-fetch": "3.1.5", + "debug": "4.3.4" + } +} diff --git a/rollup.third_party.config.js b/packages/puppeteer-core/rollup.third_party.config.js similarity index 95% rename from rollup.third_party.config.js rename to packages/puppeteer-core/rollup.third_party.config.js index 0ca4ba3e43cd4..5a6cb11c6cbfa 100644 --- a/rollup.third_party.config.js +++ b/packages/puppeteer-core/rollup.third_party.config.js @@ -25,7 +25,7 @@ export default ['cjs', 'esm'].flatMap(outputType => { for (const jsFile of glob.sync(`${thirdPartyPath}/**/*.js`)) { configs.push({ input: jsFile, - output: {file: jsFile, exports: 'auto', format: outputType}, + output: {file: jsFile, format: outputType}, plugins: [resolve()], }); } diff --git a/src/api/Browser.ts b/packages/puppeteer-core/src/api/Browser.ts similarity index 100% rename from src/api/Browser.ts rename to packages/puppeteer-core/src/api/Browser.ts diff --git a/src/api/Page.ts b/packages/puppeteer-core/src/api/Page.ts similarity index 100% rename from src/api/Page.ts rename to packages/puppeteer-core/src/api/Page.ts diff --git a/src/common/Accessibility.ts b/packages/puppeteer-core/src/common/Accessibility.ts similarity index 100% rename from src/common/Accessibility.ts rename to packages/puppeteer-core/src/common/Accessibility.ts diff --git a/src/common/AriaQueryHandler.ts b/packages/puppeteer-core/src/common/AriaQueryHandler.ts similarity index 100% rename from src/common/AriaQueryHandler.ts rename to packages/puppeteer-core/src/common/AriaQueryHandler.ts diff --git a/src/common/Browser.ts b/packages/puppeteer-core/src/common/Browser.ts similarity index 100% rename from src/common/Browser.ts rename to packages/puppeteer-core/src/common/Browser.ts diff --git a/src/common/BrowserConnector.ts b/packages/puppeteer-core/src/common/BrowserConnector.ts similarity index 98% rename from src/common/BrowserConnector.ts rename to packages/puppeteer-core/src/common/BrowserConnector.ts index 4eaba3bd2cdc7..6c925a4609287 100644 --- a/src/common/BrowserConnector.ts +++ b/packages/puppeteer-core/src/common/BrowserConnector.ts @@ -61,7 +61,7 @@ export interface BrowserConnectOptions { const getWebSocketTransportClass = async () => { return isNode - ? (await import('../node/NodeWebSocketTransport.js')).NodeWebSocketTransport + ? (await import('./NodeWebSocketTransport.js')).NodeWebSocketTransport : (await import('./BrowserWebSocketTransport.js')) .BrowserWebSocketTransport; }; diff --git a/src/common/BrowserWebSocketTransport.ts b/packages/puppeteer-core/src/common/BrowserWebSocketTransport.ts similarity index 100% rename from src/common/BrowserWebSocketTransport.ts rename to packages/puppeteer-core/src/common/BrowserWebSocketTransport.ts diff --git a/src/common/ChromeTargetManager.ts b/packages/puppeteer-core/src/common/ChromeTargetManager.ts similarity index 100% rename from src/common/ChromeTargetManager.ts rename to packages/puppeteer-core/src/common/ChromeTargetManager.ts diff --git a/src/common/Connection.ts b/packages/puppeteer-core/src/common/Connection.ts similarity index 100% rename from src/common/Connection.ts rename to packages/puppeteer-core/src/common/Connection.ts diff --git a/src/common/ConnectionTransport.ts b/packages/puppeteer-core/src/common/ConnectionTransport.ts similarity index 100% rename from src/common/ConnectionTransport.ts rename to packages/puppeteer-core/src/common/ConnectionTransport.ts diff --git a/src/common/ConsoleMessage.ts b/packages/puppeteer-core/src/common/ConsoleMessage.ts similarity index 100% rename from src/common/ConsoleMessage.ts rename to packages/puppeteer-core/src/common/ConsoleMessage.ts diff --git a/src/common/Coverage.ts b/packages/puppeteer-core/src/common/Coverage.ts similarity index 100% rename from src/common/Coverage.ts rename to packages/puppeteer-core/src/common/Coverage.ts diff --git a/src/common/Debug.ts b/packages/puppeteer-core/src/common/Debug.ts similarity index 100% rename from src/common/Debug.ts rename to packages/puppeteer-core/src/common/Debug.ts diff --git a/src/common/DeviceDescriptors.ts b/packages/puppeteer-core/src/common/DeviceDescriptors.ts similarity index 100% rename from src/common/DeviceDescriptors.ts rename to packages/puppeteer-core/src/common/DeviceDescriptors.ts diff --git a/src/common/Dialog.ts b/packages/puppeteer-core/src/common/Dialog.ts similarity index 100% rename from src/common/Dialog.ts rename to packages/puppeteer-core/src/common/Dialog.ts diff --git a/src/common/ElementHandle.ts b/packages/puppeteer-core/src/common/ElementHandle.ts similarity index 100% rename from src/common/ElementHandle.ts rename to packages/puppeteer-core/src/common/ElementHandle.ts diff --git a/src/common/EmulationManager.ts b/packages/puppeteer-core/src/common/EmulationManager.ts similarity index 100% rename from src/common/EmulationManager.ts rename to packages/puppeteer-core/src/common/EmulationManager.ts diff --git a/src/common/Errors.ts b/packages/puppeteer-core/src/common/Errors.ts similarity index 100% rename from src/common/Errors.ts rename to packages/puppeteer-core/src/common/Errors.ts diff --git a/src/common/EventEmitter.ts b/packages/puppeteer-core/src/common/EventEmitter.ts similarity index 100% rename from src/common/EventEmitter.ts rename to packages/puppeteer-core/src/common/EventEmitter.ts diff --git a/src/common/ExecutionContext.ts b/packages/puppeteer-core/src/common/ExecutionContext.ts similarity index 100% rename from src/common/ExecutionContext.ts rename to packages/puppeteer-core/src/common/ExecutionContext.ts diff --git a/src/common/FileChooser.ts b/packages/puppeteer-core/src/common/FileChooser.ts similarity index 100% rename from src/common/FileChooser.ts rename to packages/puppeteer-core/src/common/FileChooser.ts diff --git a/src/common/FirefoxTargetManager.ts b/packages/puppeteer-core/src/common/FirefoxTargetManager.ts similarity index 100% rename from src/common/FirefoxTargetManager.ts rename to packages/puppeteer-core/src/common/FirefoxTargetManager.ts diff --git a/src/common/Frame.ts b/packages/puppeteer-core/src/common/Frame.ts similarity index 100% rename from src/common/Frame.ts rename to packages/puppeteer-core/src/common/Frame.ts diff --git a/src/common/FrameManager.ts b/packages/puppeteer-core/src/common/FrameManager.ts similarity index 100% rename from src/common/FrameManager.ts rename to packages/puppeteer-core/src/common/FrameManager.ts diff --git a/src/common/FrameTree.ts b/packages/puppeteer-core/src/common/FrameTree.ts similarity index 100% rename from src/common/FrameTree.ts rename to packages/puppeteer-core/src/common/FrameTree.ts diff --git a/src/common/HTTPRequest.ts b/packages/puppeteer-core/src/common/HTTPRequest.ts similarity index 100% rename from src/common/HTTPRequest.ts rename to packages/puppeteer-core/src/common/HTTPRequest.ts diff --git a/src/common/HTTPResponse.ts b/packages/puppeteer-core/src/common/HTTPResponse.ts similarity index 100% rename from src/common/HTTPResponse.ts rename to packages/puppeteer-core/src/common/HTTPResponse.ts diff --git a/src/common/Input.ts b/packages/puppeteer-core/src/common/Input.ts similarity index 100% rename from src/common/Input.ts rename to packages/puppeteer-core/src/common/Input.ts diff --git a/src/common/IsolatedWorld.ts b/packages/puppeteer-core/src/common/IsolatedWorld.ts similarity index 100% rename from src/common/IsolatedWorld.ts rename to packages/puppeteer-core/src/common/IsolatedWorld.ts diff --git a/src/common/JSHandle.ts b/packages/puppeteer-core/src/common/JSHandle.ts similarity index 100% rename from src/common/JSHandle.ts rename to packages/puppeteer-core/src/common/JSHandle.ts diff --git a/src/common/LazyArg.ts b/packages/puppeteer-core/src/common/LazyArg.ts similarity index 100% rename from src/common/LazyArg.ts rename to packages/puppeteer-core/src/common/LazyArg.ts diff --git a/src/common/LifecycleWatcher.ts b/packages/puppeteer-core/src/common/LifecycleWatcher.ts similarity index 100% rename from src/common/LifecycleWatcher.ts rename to packages/puppeteer-core/src/common/LifecycleWatcher.ts diff --git a/src/common/NetworkConditions.ts b/packages/puppeteer-core/src/common/NetworkConditions.ts similarity index 100% rename from src/common/NetworkConditions.ts rename to packages/puppeteer-core/src/common/NetworkConditions.ts diff --git a/src/common/NetworkEventManager.ts b/packages/puppeteer-core/src/common/NetworkEventManager.ts similarity index 100% rename from src/common/NetworkEventManager.ts rename to packages/puppeteer-core/src/common/NetworkEventManager.ts diff --git a/src/common/NetworkManager.ts b/packages/puppeteer-core/src/common/NetworkManager.ts similarity index 100% rename from src/common/NetworkManager.ts rename to packages/puppeteer-core/src/common/NetworkManager.ts diff --git a/src/node/NodeWebSocketTransport.ts b/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts similarity index 100% rename from src/node/NodeWebSocketTransport.ts rename to packages/puppeteer-core/src/common/NodeWebSocketTransport.ts diff --git a/src/common/PDFOptions.ts b/packages/puppeteer-core/src/common/PDFOptions.ts similarity index 100% rename from src/common/PDFOptions.ts rename to packages/puppeteer-core/src/common/PDFOptions.ts diff --git a/src/common/Page.ts b/packages/puppeteer-core/src/common/Page.ts similarity index 100% rename from src/common/Page.ts rename to packages/puppeteer-core/src/common/Page.ts diff --git a/src/common/Product.ts b/packages/puppeteer-core/src/common/Product.ts similarity index 100% rename from src/common/Product.ts rename to packages/puppeteer-core/src/common/Product.ts diff --git a/src/common/Puppeteer.ts b/packages/puppeteer-core/src/common/Puppeteer.ts similarity index 100% rename from src/common/Puppeteer.ts rename to packages/puppeteer-core/src/common/Puppeteer.ts diff --git a/src/common/PuppeteerViewport.ts b/packages/puppeteer-core/src/common/PuppeteerViewport.ts similarity index 100% rename from src/common/PuppeteerViewport.ts rename to packages/puppeteer-core/src/common/PuppeteerViewport.ts diff --git a/src/common/QueryHandler.ts b/packages/puppeteer-core/src/common/QueryHandler.ts similarity index 100% rename from src/common/QueryHandler.ts rename to packages/puppeteer-core/src/common/QueryHandler.ts diff --git a/src/common/SecurityDetails.ts b/packages/puppeteer-core/src/common/SecurityDetails.ts similarity index 100% rename from src/common/SecurityDetails.ts rename to packages/puppeteer-core/src/common/SecurityDetails.ts diff --git a/src/common/Target.ts b/packages/puppeteer-core/src/common/Target.ts similarity index 100% rename from src/common/Target.ts rename to packages/puppeteer-core/src/common/Target.ts diff --git a/src/common/TargetManager.ts b/packages/puppeteer-core/src/common/TargetManager.ts similarity index 100% rename from src/common/TargetManager.ts rename to packages/puppeteer-core/src/common/TargetManager.ts diff --git a/src/common/TaskQueue.ts b/packages/puppeteer-core/src/common/TaskQueue.ts similarity index 100% rename from src/common/TaskQueue.ts rename to packages/puppeteer-core/src/common/TaskQueue.ts diff --git a/src/common/TimeoutSettings.ts b/packages/puppeteer-core/src/common/TimeoutSettings.ts similarity index 100% rename from src/common/TimeoutSettings.ts rename to packages/puppeteer-core/src/common/TimeoutSettings.ts diff --git a/src/common/Tracing.ts b/packages/puppeteer-core/src/common/Tracing.ts similarity index 100% rename from src/common/Tracing.ts rename to packages/puppeteer-core/src/common/Tracing.ts diff --git a/src/common/USKeyboardLayout.ts b/packages/puppeteer-core/src/common/USKeyboardLayout.ts similarity index 100% rename from src/common/USKeyboardLayout.ts rename to packages/puppeteer-core/src/common/USKeyboardLayout.ts diff --git a/src/common/WaitTask.ts b/packages/puppeteer-core/src/common/WaitTask.ts similarity index 100% rename from src/common/WaitTask.ts rename to packages/puppeteer-core/src/common/WaitTask.ts diff --git a/src/common/WebWorker.ts b/packages/puppeteer-core/src/common/WebWorker.ts similarity index 100% rename from src/common/WebWorker.ts rename to packages/puppeteer-core/src/common/WebWorker.ts diff --git a/src/common/bidi/Browser.ts b/packages/puppeteer-core/src/common/bidi/Browser.ts similarity index 100% rename from src/common/bidi/Browser.ts rename to packages/puppeteer-core/src/common/bidi/Browser.ts diff --git a/src/common/bidi/BrowserContext.ts b/packages/puppeteer-core/src/common/bidi/BrowserContext.ts similarity index 100% rename from src/common/bidi/BrowserContext.ts rename to packages/puppeteer-core/src/common/bidi/BrowserContext.ts diff --git a/src/common/bidi/Connection.ts b/packages/puppeteer-core/src/common/bidi/Connection.ts similarity index 100% rename from src/common/bidi/Connection.ts rename to packages/puppeteer-core/src/common/bidi/Connection.ts diff --git a/src/common/bidi/Page.ts b/packages/puppeteer-core/src/common/bidi/Page.ts similarity index 100% rename from src/common/bidi/Page.ts rename to packages/puppeteer-core/src/common/bidi/Page.ts diff --git a/src/common/fetch.ts b/packages/puppeteer-core/src/common/fetch.ts similarity index 100% rename from src/common/fetch.ts rename to packages/puppeteer-core/src/common/fetch.ts diff --git a/src/common/types.ts b/packages/puppeteer-core/src/common/types.ts similarity index 100% rename from src/common/types.ts rename to packages/puppeteer-core/src/common/types.ts diff --git a/src/common/util.ts b/packages/puppeteer-core/src/common/util.ts similarity index 100% rename from src/common/util.ts rename to packages/puppeteer-core/src/common/util.ts diff --git a/src/environment.ts b/packages/puppeteer-core/src/environment.ts similarity index 100% rename from src/environment.ts rename to packages/puppeteer-core/src/environment.ts diff --git a/src/injected/PierceQuerySelector.ts b/packages/puppeteer-core/src/injected/PierceQuerySelector.ts similarity index 100% rename from src/injected/PierceQuerySelector.ts rename to packages/puppeteer-core/src/injected/PierceQuerySelector.ts diff --git a/src/injected/Poller.ts b/packages/puppeteer-core/src/injected/Poller.ts similarity index 100% rename from src/injected/Poller.ts rename to packages/puppeteer-core/src/injected/Poller.ts diff --git a/src/injected/README.md b/packages/puppeteer-core/src/injected/README.md similarity index 100% rename from src/injected/README.md rename to packages/puppeteer-core/src/injected/README.md diff --git a/src/injected/TextContent.ts b/packages/puppeteer-core/src/injected/TextContent.ts similarity index 100% rename from src/injected/TextContent.ts rename to packages/puppeteer-core/src/injected/TextContent.ts diff --git a/src/injected/TextQuerySelector.ts b/packages/puppeteer-core/src/injected/TextQuerySelector.ts similarity index 100% rename from src/injected/TextQuerySelector.ts rename to packages/puppeteer-core/src/injected/TextQuerySelector.ts diff --git a/src/injected/XPathQuerySelector.ts b/packages/puppeteer-core/src/injected/XPathQuerySelector.ts similarity index 100% rename from src/injected/XPathQuerySelector.ts rename to packages/puppeteer-core/src/injected/XPathQuerySelector.ts diff --git a/src/injected/injected.ts b/packages/puppeteer-core/src/injected/injected.ts similarity index 100% rename from src/injected/injected.ts rename to packages/puppeteer-core/src/injected/injected.ts diff --git a/src/injected/util.ts b/packages/puppeteer-core/src/injected/util.ts similarity index 100% rename from src/injected/util.ts rename to packages/puppeteer-core/src/injected/util.ts diff --git a/src/puppeteer-core.ts b/packages/puppeteer-core/src/puppeteer-core.ts similarity index 78% rename from src/puppeteer-core.ts rename to packages/puppeteer-core/src/puppeteer-core.ts index 50da7183450a6..b095390c90349 100644 --- a/src/puppeteer-core.ts +++ b/packages/puppeteer-core/src/puppeteer-core.ts @@ -14,21 +14,16 @@ * limitations under the License. */ -import {initializePuppeteer} from './initializePuppeteer.js'; - -export * from './common/NetworkConditions.js'; -export * from './common/QueryHandler.js'; +export {Protocol} from 'devtools-protocol'; export * from './common/DeviceDescriptors.js'; export * from './common/Errors.js'; +export * from './common/NetworkConditions.js'; +export * from './common/QueryHandler.js'; + +import {Puppeteer} from './common/Puppeteer.js'; -const puppeteer = initializePuppeteer('puppeteer-core'); +const puppeteer = new Puppeteer({isPuppeteerCore: true}); -export const { - connect, - createBrowserFetcher, - defaultArgs, - executablePath, - launch, -} = puppeteer; +export const {connect} = puppeteer; export default puppeteer; diff --git a/src/templates/README.md b/packages/puppeteer-core/src/templates/README.md similarity index 100% rename from src/templates/README.md rename to packages/puppeteer-core/src/templates/README.md diff --git a/src/templates/injected.ts.tmpl b/packages/puppeteer-core/src/templates/injected.ts.tmpl similarity index 100% rename from src/templates/injected.ts.tmpl rename to packages/puppeteer-core/src/templates/injected.ts.tmpl diff --git a/src/templates/version.ts.tmpl b/packages/puppeteer-core/src/templates/version.ts.tmpl similarity index 100% rename from src/templates/version.ts.tmpl rename to packages/puppeteer-core/src/templates/version.ts.tmpl diff --git a/packages/puppeteer-core/src/tsconfig.cjs.json b/packages/puppeteer-core/src/tsconfig.cjs.json new file mode 100644 index 0000000000000..0fabc5470c286 --- /dev/null +++ b/packages/puppeteer-core/src/tsconfig.cjs.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "../lib/cjs/puppeteer" + }, + "references": [{"path": "../third_party/tsconfig.cjs.json"}] +} diff --git a/packages/puppeteer-core/src/tsconfig.esm.json b/packages/puppeteer-core/src/tsconfig.esm.json new file mode 100644 index 0000000000000..2cd2ab579fcce --- /dev/null +++ b/packages/puppeteer-core/src/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../lib/esm/puppeteer" + }, + "references": [{"path": "../third_party/tsconfig.json"}] +} diff --git a/src/types.ts b/packages/puppeteer-core/src/types.ts similarity index 79% rename from src/types.ts rename to packages/puppeteer-core/src/types.ts index f44ab5c6cf695..5d619a1baeb6f 100644 --- a/src/types.ts +++ b/packages/puppeteer-core/src/types.ts @@ -36,6 +36,7 @@ export * from './common/LifecycleWatcher.js'; export * from './common/NetworkConditions.js'; export * from './common/NetworkEventManager.js'; export * from './common/NetworkManager.js'; +export * from './common/NodeWebSocketTransport.js'; export * from './common/Page.js'; export * from './common/PDFOptions.js'; export * from './common/Product.js'; @@ -53,27 +54,11 @@ export * from './common/USKeyboardLayout.js'; export * from './common/util.js'; export * from './common/WaitTask.js'; export * from './common/WebWorker.js'; -export * from './compat.d.js'; -export * from './constants.js'; export * from './environment.js'; export * from './generated/injected.js'; export * from './generated/version.js'; -export * from './initializePuppeteer.js'; -export * from './node/BrowserFetcher.js'; -export * from './node/BrowserRunner.js'; -export * from './node/ChromeLauncher.js'; -export * from './node/FirefoxLauncher.js'; -export * from './node/install.js'; -export * from './node/LaunchOptions.js'; -export * from './node/NodeWebSocketTransport.js'; -export * from './node/PipeTransport.js'; -export * from './node/ProductLauncher.js'; -export * from './node/Puppeteer.js'; -export * from './node/util.js'; -export * from './puppeteer.js'; -export * from './revisions.js'; +export * from './puppeteer-core.js'; export * from './util/assert.js'; export * from './util/DebuggableDeferredPromise.js'; export * from './util/DeferredPromise.js'; export * from './util/ErrorLike.js'; -export * from './util/getPackageDirectory.js'; diff --git a/src/util/DebuggableDeferredPromise.ts b/packages/puppeteer-core/src/util/DebuggableDeferredPromise.ts similarity index 100% rename from src/util/DebuggableDeferredPromise.ts rename to packages/puppeteer-core/src/util/DebuggableDeferredPromise.ts diff --git a/src/util/DeferredPromise.ts b/packages/puppeteer-core/src/util/DeferredPromise.ts similarity index 100% rename from src/util/DeferredPromise.ts rename to packages/puppeteer-core/src/util/DeferredPromise.ts diff --git a/src/util/ErrorLike.ts b/packages/puppeteer-core/src/util/ErrorLike.ts similarity index 100% rename from src/util/ErrorLike.ts rename to packages/puppeteer-core/src/util/ErrorLike.ts diff --git a/src/util/assert.ts b/packages/puppeteer-core/src/util/assert.ts similarity index 100% rename from src/util/assert.ts rename to packages/puppeteer-core/src/util/assert.ts diff --git a/third_party/README.md b/packages/puppeteer-core/third_party/README.md similarity index 100% rename from third_party/README.md rename to packages/puppeteer-core/third_party/README.md diff --git a/third_party/mitt/index.ts b/packages/puppeteer-core/third_party/mitt/index.ts similarity index 100% rename from third_party/mitt/index.ts rename to packages/puppeteer-core/third_party/mitt/index.ts diff --git a/third_party/tsconfig.cjs.json b/packages/puppeteer-core/third_party/tsconfig.cjs.json similarity index 66% rename from third_party/tsconfig.cjs.json rename to packages/puppeteer-core/third_party/tsconfig.cjs.json index 9da8dfb79e9e4..a169b93816090 100644 --- a/third_party/tsconfig.cjs.json +++ b/packages/puppeteer-core/third_party/tsconfig.cjs.json @@ -1,7 +1,6 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { - "composite": true, "declarationMap": false, "outDir": "../lib/cjs/third_party", "sourceMap": false diff --git a/third_party/tsconfig.json b/packages/puppeteer-core/third_party/tsconfig.json similarity index 66% rename from third_party/tsconfig.json rename to packages/puppeteer-core/third_party/tsconfig.json index fac274760328c..cfe3a26f4c71d 100644 --- a/third_party/tsconfig.json +++ b/packages/puppeteer-core/third_party/tsconfig.json @@ -1,7 +1,6 @@ { - "extends": "../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { - "composite": true, "declarationMap": false, "outDir": "../lib/esm/third_party", "sourceMap": false diff --git a/scripts/ensure-correct-devtools-protocol-package.ts b/packages/puppeteer-core/tools/ensure-correct-devtools-protocol-package.ts similarity index 97% rename from scripts/ensure-correct-devtools-protocol-package.ts rename to packages/puppeteer-core/tools/ensure-correct-devtools-protocol-package.ts index 40b3c3b79f51b..88628bcaa8ed7 100644 --- a/scripts/ensure-correct-devtools-protocol-package.ts +++ b/packages/puppeteer-core/tools/ensure-correct-devtools-protocol-package.ts @@ -34,7 +34,7 @@ */ // eslint-disable-next-line import/extensions -import {PUPPETEER_REVISIONS} from '../src/revisions'; +import {PUPPETEER_REVISIONS} from '../../puppeteer/src/revisions.js'; import {execSync} from 'child_process'; import packageJson from '../package.json'; diff --git a/utils/generate_sources.ts b/packages/puppeteer-core/tools/generate_sources.ts similarity index 83% rename from utils/generate_sources.ts rename to packages/puppeteer-core/tools/generate_sources.ts index 0e0ad1f676003..d8a7addd369bb 100644 --- a/utils/generate_sources.ts +++ b/packages/puppeteer-core/tools/generate_sources.ts @@ -1,12 +1,15 @@ #!/usr/bin/env node -import {createHash} from 'crypto'; import esbuild from 'esbuild'; import {mkdir, mkdtemp, readFile, rm, writeFile} from 'fs/promises'; import {sync as glob} from 'glob'; -import path from 'path'; -import {job} from './internal/job.js'; +import path, {join, resolve} from 'path'; +import {chdir} from 'process'; +import {job} from '../../../utils/internal/job.js'; -const INCLUDED_FOLDERS = ['common', 'node', 'generated', 'util', 'api']; +const packageRoot = resolve(join(__dirname, '..')); +chdir(packageRoot); + +const INCLUDED_FOLDERS = ['common', 'generated', 'util', 'api']; (async () => { await job('', async ({outputs}) => { @@ -19,7 +22,18 @@ const INCLUDED_FOLDERS = ['common', 'node', 'generated', 'util', 'api']; .outputs(['src/generated']) .build(); - await job('', async ({name, inputs, outputs}) => { + const versionJob = job('', async ({inputs, outputs}) => { + const version = JSON.parse(await readFile(inputs[0]!, 'utf8')).version; + await writeFile( + outputs[0]!, + (await readFile(inputs[1]!, 'utf8')).replace('PACKAGE_VERSION', version) + ); + }) + .inputs(['package.json', 'src/templates/version.ts.tmpl']) + .outputs(['src/generated/version.ts']) + .build(); + + const injectedJob = job('', async ({name, inputs, outputs}) => { const input = inputs.find(input => { return input.endsWith('injected.ts'); })!; @@ -54,8 +68,10 @@ const INCLUDED_FOLDERS = ['common', 'node', 'generated', 'util', 'api']; .outputs(['src/generated/injected.ts']) .build(); + await Promise.all([versionJob, injectedJob]); + const sources = glob( - `src/{@(${INCLUDED_FOLDERS.join('|')})/*.ts,!(types|puppeteer-core).ts}` + `src/{@(${INCLUDED_FOLDERS.join('|')})/*.ts,!(types).ts}` ); await job('', async ({outputs}) => { let types = @@ -67,13 +83,6 @@ const INCLUDED_FOLDERS = ['common', 'node', 'generated', 'util', 'api']; } await writeFile(outputs[0]!, types); }) - .value( - sources - .reduce((hmac, value) => { - return hmac.update(value); - }, createHash('sha256')) - .digest('hex') - ) .outputs(['src/types.ts']) .build(); @@ -92,15 +101,4 @@ const INCLUDED_FOLDERS = ['common', 'node', 'generated', 'util', 'api']; .inputs(['package.json', 'versions.js']) .build(); } - - job('', async ({inputs, outputs}) => { - const version = JSON.parse(await readFile(inputs[0]!, 'utf8')).version; - await writeFile( - outputs[0]!, - (await readFile(inputs[1]!, 'utf8')).replace('PACKAGE_VERSION', version) - ); - }) - .inputs(['package.json', 'src/templates/version.ts.tmpl']) - .outputs(['src/generated/version.ts']) - .build(); })(); diff --git a/packages/puppeteer-core/tsconfig.json b/packages/puppeteer-core/tsconfig.json new file mode 100644 index 0000000000000..a219f8b704f67 --- /dev/null +++ b/packages/puppeteer-core/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "references": [ + {"path": "src/tsconfig.esm.json"}, + {"path": "src/tsconfig.cjs.json"} + ] +} diff --git a/packages/puppeteer/api-extractor.json b/packages/puppeteer/api-extractor.json new file mode 100644 index 0000000000000..0e8fa60d1843a --- /dev/null +++ b/packages/puppeteer/api-extractor.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "/lib/esm/puppeteer/types.d.ts", + "bundledPackages": ["puppeteer-core"], + + "apiReport": { + "enabled": false + }, + + "docModel": { + "enabled": true, + "apiJsonFilePath": "/../../docs/.api.json" + }, + + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "alphaTrimmedFilePath": "lib/types.d.ts" + }, + + "tsdocMetadata": { + "enabled": false + }, + + "messages": { + "compilerMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + + "extractorMessageReporting": { + "ae-wrong-input-file-type": { + "logLevel": "none" + }, + "ae-internal-missing-underscore": { + "logLevel": "none" + }, + "default": { + "logLevel": "warning" + } + }, + + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + } + } + } +} diff --git a/compat/README.md b/packages/puppeteer/compat/README.md similarity index 100% rename from compat/README.md rename to packages/puppeteer/compat/README.md diff --git a/compat/cjs/compat.ts b/packages/puppeteer/compat/cjs/compat.ts similarity index 100% rename from compat/cjs/compat.ts rename to packages/puppeteer/compat/cjs/compat.ts diff --git a/packages/puppeteer/compat/cjs/tsconfig.json b/packages/puppeteer/compat/cjs/tsconfig.json new file mode 100644 index 0000000000000..99ee707939881 --- /dev/null +++ b/packages/puppeteer/compat/cjs/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "../../lib/cjs/puppeteer" + } +} diff --git a/compat/esm/compat.ts b/packages/puppeteer/compat/esm/compat.ts similarity index 100% rename from compat/esm/compat.ts rename to packages/puppeteer/compat/esm/compat.ts diff --git a/packages/puppeteer/compat/esm/tsconfig.json b/packages/puppeteer/compat/esm/tsconfig.json new file mode 100644 index 0000000000000..326aacfe32124 --- /dev/null +++ b/packages/puppeteer/compat/esm/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../lib/esm/puppeteer" + } +} diff --git a/install.js b/packages/puppeteer/install.js similarity index 87% rename from install.js rename to packages/puppeteer/install.js index 87fa7a32dbb0b..556760cd5776b 100644 --- a/install.js +++ b/packages/puppeteer/install.js @@ -24,15 +24,22 @@ * necessary. */ -const compileTypeScriptIfRequired = require('./typescript-if-required.js'); +const path = require('path'); +const fs = require('fs'); +const {execSync} = require('child_process'); async function download() { - await compileTypeScriptIfRequired(); + if (!fs.existsSync(path.join(__dirname, 'lib'))) { + console.log('It seems we are installing from the git repo.'); + console.log('Building install tools from scratch...'); + execSync('lerna run build'); + } + // need to ensure TS is compiled before loading the installer const { downloadBrowser, logPolitely, - } = require('./lib/cjs/puppeteer/node/install.js'); + } = require('puppeteer/lib/cjs/puppeteer/node/install.js'); if (process.env.PUPPETEER_SKIP_DOWNLOAD) { logPolitely( diff --git a/packages/puppeteer/package.json b/packages/puppeteer/package.json new file mode 100644 index 0000000000000..6423b3a943e39 --- /dev/null +++ b/packages/puppeteer/package.json @@ -0,0 +1,140 @@ +{ + "name": "puppeteer", + "version": "18.0.5", + "description": "A high-level API to control headless Chrome over the DevTools Protocol", + "keywords": [ + "puppeteer", + "chrome", + "headless", + "automation" + ], + "type": "commonjs", + "main": "./lib/cjs/puppeteer/puppeteer.js", + "types": "./lib/types.d.ts", + "exports": { + ".": { + "types": "./lib/types.d.ts", + "import": "./lib/esm/puppeteer/puppeteer.js", + "require": "./lib/cjs/puppeteer/puppeteer.js" + }, + "./internal/*": { + "import": "./lib/esm/puppeteer/*", + "require": "./lib/cjs/puppeteer/*" + }, + "./*": { + "import": "./*", + "require": "./*" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/puppeteer/puppeteer/tree/main/packages/puppeteer" + }, + "engines": { + "node": ">=14.1.0" + }, + "scripts": { + "build:tsc": "wireit", + "build:types": "wireit", + "build": "wireit", + "clean": "tsc -b --clean && rimraf lib", + "format:types": "wireit", + "generate:package-json": "wireit", + "generate:sources": "wireit", + "install": "node install.js" + }, + "wireit": { + "build": { + "dependencies": [ + "format:types", + "generate:package-json" + ] + }, + "generate:sources": { + "command": "tsx tools/generate_sources.ts", + "dependencies": [ + "../puppeteer-core:build" + ], + "files": [ + "tools/generate_sources.ts" + ], + "output": [ + "src/types.ts" + ] + }, + "generate:package-json": { + "command": "echo '{\"type\": \"module\"}' > lib/esm/package.json", + "clean": "if-file-deleted", + "dependencies": [ + "build:tsc" + ], + "output": [ + "lib/esm/package.json" + ] + }, + "build:types": { + "command": "api-extractor run --local", + "dependencies": [ + "build:tsc" + ], + "files": [ + "tsconfig.json", + "api-extractor.json", + "lib/esm/puppeteer/types.d.ts" + ], + "output": [ + "lib/types.d.ts" + ] + }, + "format:types": { + "command": "eslint --cache-location .eslintcache --cache --ext=ts --no-ignore --no-eslintrc -c=../../.eslintrc.types.cjs --fix lib/types.d.ts", + "dependencies": [ + "build:types" + ], + "clean": false, + "files": [ + "lib/types.d.ts", + "../../.eslintrc.types.cjs" + ], + "output": [ + "lib/types.d.ts" + ] + }, + "build:tsc": { + "command": "tsc -b", + "clean": "if-file-deleted", + "dependencies": [ + "../puppeteer-core:build", + "generate:sources" + ], + "files": [ + "src/**", + "compat/**", + "**/tsconfig.*.json" + ], + "output": [ + "lib/**" + ] + } + }, + "files": [ + "lib", + "install.js", + "!*.tsbuildinfo" + ], + "author": "The Chromium Authors", + "license": "Apache-2.0", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "*", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.9.0" + } +} diff --git a/src/compat.d.ts b/packages/puppeteer/src/compat.d.ts similarity index 97% rename from src/compat.d.ts rename to packages/puppeteer/src/compat.d.ts index 9d41b661e96eb..4010905b0712b 100644 --- a/src/compat.d.ts +++ b/packages/puppeteer/src/compat.d.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +/** + * @internal + */ declare const puppeteerDirname: string; export {puppeteerDirname}; diff --git a/src/constants.ts b/packages/puppeteer/src/constants.ts similarity index 100% rename from src/constants.ts rename to packages/puppeteer/src/constants.ts diff --git a/src/node/BrowserFetcher.ts b/packages/puppeteer/src/node/BrowserFetcher.ts similarity index 99% rename from src/node/BrowserFetcher.ts rename to packages/puppeteer/src/node/BrowserFetcher.ts index 17c7601b1b856..5e04e1cc2f0c2 100644 --- a/src/node/BrowserFetcher.ts +++ b/packages/puppeteer/src/node/BrowserFetcher.ts @@ -14,29 +14,27 @@ * limitations under the License. */ -import * as os from 'os'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as util from 'util'; import * as childProcess from 'child_process'; -import * as https from 'https'; -import * as http from 'http'; - -import {Product} from '../common/Product.js'; import extractZip from 'extract-zip'; -import {debug} from '../common/Debug.js'; -import {promisify} from 'util'; -import removeRecursive from 'rimraf'; -import * as URL from 'url'; +import * as fs from 'fs'; +import * as http from 'http'; +import * as https from 'https'; import createHttpsProxyAgent, { HttpsProxyAgent, HttpsProxyAgentOptions, } from 'https-proxy-agent'; +import * as os from 'os'; +import * as path from 'path'; import {getProxyForUrl} from 'proxy-from-env'; -import {assert} from '../util/assert.js'; - +import {debug} from 'puppeteer-core/internal/common/Debug.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; +import {assert} from 'puppeteer-core/internal/util/assert.js'; +import removeRecursive from 'rimraf'; import tar from 'tar-fs'; import bzip from 'unbzip2-stream'; +import * as URL from 'url'; +import * as util from 'util'; +import {promisify} from 'util'; const experimentalChromiumMacArm = process.env['PUPPETEER_EXPERIMENTAL_CHROMIUM_MAC_ARM'] || diff --git a/src/node/BrowserRunner.ts b/packages/puppeteer/src/node/BrowserRunner.ts similarity index 94% rename from src/node/BrowserRunner.ts rename to packages/puppeteer/src/node/BrowserRunner.ts index 4567ba73df528..cb98e53ae43e2 100644 --- a/src/node/BrowserRunner.ts +++ b/packages/puppeteer/src/node/BrowserRunner.ts @@ -17,23 +17,26 @@ import * as childProcess from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; -import * as readline from 'readline'; -import removeFolder from 'rimraf'; -import {promisify} from 'util'; -import {assert} from '../util/assert.js'; -import {Connection} from '../common/Connection.js'; -import {Connection as BiDiConnection} from '../common/bidi/Connection.js'; -import {debug} from '../common/Debug.js'; -import {TimeoutError} from '../common/Errors.js'; +import {Connection as BiDiConnection} from 'puppeteer-core/internal/common/bidi/Connection.js'; +import {Connection} from 'puppeteer-core/internal/common/Connection.js'; +import {debug} from 'puppeteer-core/internal/common/Debug.js'; +import {TimeoutError} from 'puppeteer-core/internal/common/Errors.js'; +import {NodeWebSocketTransport as WebSocketTransport} from 'puppeteer-core/internal/common/NodeWebSocketTransport.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; import { - debugError, addEventListener, + debugError, PuppeteerEventListener, removeEventListeners, -} from '../common/util.js'; -import {isErrnoException, isErrorLike} from '../util/ErrorLike.js'; -import {Product} from '../common/Product.js'; -import {NodeWebSocketTransport as WebSocketTransport} from '../node/NodeWebSocketTransport.js'; +} from 'puppeteer-core/internal/common/util.js'; +import {assert} from 'puppeteer-core/internal/util/assert.js'; +import { + isErrnoException, + isErrorLike, +} from 'puppeteer-core/internal/util/ErrorLike.js'; +import * as readline from 'readline'; +import removeFolder from 'rimraf'; +import {promisify} from 'util'; import {LaunchOptions} from './LaunchOptions.js'; import {PipeTransport} from './PipeTransport.js'; diff --git a/src/node/ChromeLauncher.ts b/packages/puppeteer/src/node/ChromeLauncher.ts similarity index 97% rename from src/node/ChromeLauncher.ts rename to packages/puppeteer/src/node/ChromeLauncher.ts index c9196617680fd..2a098f353ae3d 100644 --- a/src/node/ChromeLauncher.ts +++ b/packages/puppeteer/src/node/ChromeLauncher.ts @@ -1,8 +1,8 @@ import fs from 'fs'; import path from 'path'; -import {assert} from '../util/assert.js'; -import {CDPBrowser} from '../common/Browser.js'; -import {Product} from '../common/Product.js'; +import {CDPBrowser} from 'puppeteer-core/internal/common/Browser.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; +import {assert} from 'puppeteer-core/internal/util/assert.js'; import {BrowserRunner} from './BrowserRunner.js'; import { BrowserLaunchArgumentOptions, diff --git a/src/node/FirefoxLauncher.ts b/packages/puppeteer/src/node/FirefoxLauncher.ts similarity index 97% rename from src/node/FirefoxLauncher.ts rename to packages/puppeteer/src/node/FirefoxLauncher.ts index 6295057c38170..43b98f54d28f1 100644 --- a/src/node/FirefoxLauncher.ts +++ b/packages/puppeteer/src/node/FirefoxLauncher.ts @@ -1,11 +1,11 @@ import fs from 'fs'; import os from 'os'; import path from 'path'; -import {assert} from '../util/assert.js'; -import {Browser} from '../api/Browser.js'; -import {CDPBrowser as CDPBrowser} from '../common/Browser.js'; -import {Browser as BiDiBrowser} from '../common/bidi/Browser.js'; -import {Product} from '../common/Product.js'; +import {Browser} from 'puppeteer-core/internal/api/Browser.js'; +import {Browser as BiDiBrowser} from 'puppeteer-core/internal/common/bidi/Browser.js'; +import {CDPBrowser} from 'puppeteer-core/internal/common/Browser.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; +import {assert} from 'puppeteer-core/internal/util/assert.js'; import {BrowserFetcher} from './BrowserFetcher.js'; import {BrowserRunner} from './BrowserRunner.js'; import { diff --git a/src/node/LaunchOptions.ts b/packages/puppeteer/src/node/LaunchOptions.ts similarity index 96% rename from src/node/LaunchOptions.ts rename to packages/puppeteer/src/node/LaunchOptions.ts index ab10642d1bb1e..d569fcea07031 100644 --- a/src/node/LaunchOptions.ts +++ b/packages/puppeteer/src/node/LaunchOptions.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import {BrowserConnectOptions} from '../common/BrowserConnector.js'; -import {Product} from '../common/Product.js'; +import {BrowserConnectOptions} from 'puppeteer-core/internal/common/BrowserConnector.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; /** * Launcher options that only apply to Chrome. diff --git a/src/node/PipeTransport.ts b/packages/puppeteer/src/node/PipeTransport.ts similarity index 92% rename from src/node/PipeTransport.ts rename to packages/puppeteer/src/node/PipeTransport.ts index 3b7b042b0e416..96e131295b3e6 100644 --- a/src/node/PipeTransport.ts +++ b/packages/puppeteer/src/node/PipeTransport.ts @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {assert} from '../util/assert.js'; -import {ConnectionTransport} from '../common/ConnectionTransport.js'; +import {ConnectionTransport} from 'puppeteer-core/internal/common/ConnectionTransport.js'; import { addEventListener, debugError, PuppeteerEventListener, removeEventListeners, -} from '../common/util.js'; +} from 'puppeteer-core/internal/common/util.js'; +import {assert} from 'puppeteer-core/internal/util/assert.js'; /** * @internal diff --git a/src/node/ProductLauncher.ts b/packages/puppeteer/src/node/ProductLauncher.ts similarity index 98% rename from src/node/ProductLauncher.ts rename to packages/puppeteer/src/node/ProductLauncher.ts index e3dc3aabcecbf..c7461d0706aae 100644 --- a/src/node/ProductLauncher.ts +++ b/packages/puppeteer/src/node/ProductLauncher.ts @@ -13,22 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import {accessSync, existsSync} from 'fs'; import os from 'os'; - -import {Browser} from '../api/Browser.js'; +import {Browser} from 'puppeteer-core/internal/api/Browser.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; import {BrowserFetcher} from './BrowserFetcher.js'; - +import {ChromeLauncher} from './ChromeLauncher.js'; +import {FirefoxLauncher} from './FirefoxLauncher.js'; import { BrowserLaunchArgumentOptions, ChromeReleaseChannel, PuppeteerNodeLaunchOptions, } from './LaunchOptions.js'; -import {Product} from '../common/Product.js'; -import {ChromeLauncher} from './ChromeLauncher.js'; -import {FirefoxLauncher} from './FirefoxLauncher.js'; -import {accessSync, existsSync} from 'fs'; - /** * Describes a launcher - a class that is able to create and launch a browser instance. * @public diff --git a/src/node/Puppeteer.ts b/packages/puppeteer/src/node/PuppeteerNode.ts similarity index 95% rename from src/node/Puppeteer.ts rename to packages/puppeteer/src/node/PuppeteerNode.ts index b9968f469bf30..f7215810b297c 100644 --- a/src/node/Puppeteer.ts +++ b/packages/puppeteer/src/node/PuppeteerNode.ts @@ -14,18 +14,18 @@ * limitations under the License. */ +import {Browser} from 'puppeteer-core/internal/api/Browser.js'; +import {BrowserConnectOptions} from 'puppeteer-core/internal/common/BrowserConnector.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; import { - Puppeteer, CommonPuppeteerSettings, ConnectOptions, -} from '../common/Puppeteer.js'; + Puppeteer, +} from 'puppeteer-core/internal/common/Puppeteer.js'; +import {PUPPETEER_REVISIONS} from '../revisions.js'; import {BrowserFetcher, BrowserFetcherOptions} from './BrowserFetcher.js'; -import {LaunchOptions, BrowserLaunchArgumentOptions} from './LaunchOptions.js'; -import {BrowserConnectOptions} from '../common/BrowserConnector.js'; -import {Browser} from '../api/Browser.js'; +import {BrowserLaunchArgumentOptions, LaunchOptions} from './LaunchOptions.js'; import {createLauncher, ProductLauncher} from './ProductLauncher.js'; -import {PUPPETEER_REVISIONS} from '../revisions.js'; -import {Product} from '../common/Product.js'; /** * @public diff --git a/src/node/install.ts b/packages/puppeteer/src/node/install.ts similarity index 99% rename from src/node/install.ts rename to packages/puppeteer/src/node/install.ts index 9480a33470892..9f5f97938d642 100644 --- a/src/node/install.ts +++ b/packages/puppeteer/src/node/install.ts @@ -19,7 +19,7 @@ import ProgressBar from 'progress'; import URL from 'url'; import puppeteer from '../puppeteer.js'; import {PUPPETEER_REVISIONS} from '../revisions.js'; -import {PuppeteerNode} from './Puppeteer.js'; +import {PuppeteerNode} from './PuppeteerNode.js'; import createHttpsProxyAgent, {HttpsProxyAgentOptions} from 'https-proxy-agent'; import {getProxyForUrl} from 'proxy-from-env'; diff --git a/src/util/getPackageDirectory.ts b/packages/puppeteer/src/node/util.ts similarity index 59% rename from src/util/getPackageDirectory.ts rename to packages/puppeteer/src/node/util.ts index d0c5fc4cad2a1..5ae981eccc246 100644 --- a/src/util/getPackageDirectory.ts +++ b/packages/puppeteer/src/node/util.ts @@ -1,6 +1,19 @@ +import * as os from 'os'; import {existsSync} from 'fs'; import {dirname, join, parse} from 'path'; +/** + * Gets the temporary directory, either from the environmental variable + * `PUPPETEER_TMP_DIR` or the `os.tmpdir`. + * + * @returns The temporary directory path. + * + * @internal + */ +export const tmpdir = (): string => { + return process.env['PUPPETEER_TMP_DIR'] || os.tmpdir(); +}; + /** * @internal */ diff --git a/packages/puppeteer/src/puppeteer.ts b/packages/puppeteer/src/puppeteer.ts new file mode 100644 index 0000000000000..3b77d339ea5b5 --- /dev/null +++ b/packages/puppeteer/src/puppeteer.ts @@ -0,0 +1,60 @@ +/** + * Copyright 2017 Google Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export {Browser} from 'puppeteer-core/internal/api/Browser.js'; +export { + ConnectOptions, + Puppeteer, +} from 'puppeteer-core/internal/common/Puppeteer.js'; + +import {Product} from 'puppeteer-core/internal/common/Product.js'; +import {rootDirname} from './constants.js'; +import {PuppeteerNode} from './node/PuppeteerNode.js'; +import {getPackageDirectory} from './node/util.js'; +import {PUPPETEER_REVISIONS} from './revisions.js'; + +const productName = (process.env['PUPPETEER_PRODUCT'] || + process.env['npm_config_puppeteer_product'] || + process.env['npm_package_config_puppeteer_product']) as Product; + +let preferredRevision: string; +switch (productName) { + case 'firefox': + preferredRevision = PUPPETEER_REVISIONS.firefox; + break; + default: + preferredRevision = PUPPETEER_REVISIONS.chromium; +} + +/** + * @public + */ +const puppeteer = new PuppeteerNode({ + projectRoot: getPackageDirectory(rootDirname), + preferredRevision, + isPuppeteerCore: false, + productName, +}); + +export const { + connect, + createBrowserFetcher, + defaultArgs, + executablePath, + launch, +} = puppeteer; + +export default puppeteer; diff --git a/src/revisions.ts b/packages/puppeteer/src/revisions.ts similarity index 100% rename from src/revisions.ts rename to packages/puppeteer/src/revisions.ts diff --git a/packages/puppeteer/src/tsconfig.cjs.json b/packages/puppeteer/src/tsconfig.cjs.json new file mode 100644 index 0000000000000..ade4dbd87d76a --- /dev/null +++ b/packages/puppeteer/src/tsconfig.cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "module": "CommonJS", + "moduleResolution": "NodeNext", + "outDir": "../lib/cjs/puppeteer" + }, + "references": [{"path": "../compat/cjs/tsconfig.json"}] +} diff --git a/packages/puppeteer/src/tsconfig.esm.json b/packages/puppeteer/src/tsconfig.esm.json new file mode 100644 index 0000000000000..ba1c9a3f2ef50 --- /dev/null +++ b/packages/puppeteer/src/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../lib/esm/puppeteer", + "moduleResolution": "NodeNext" + }, + "references": [{"path": "../compat/esm/tsconfig.json"}] +} diff --git a/packages/puppeteer/src/types.ts b/packages/puppeteer/src/types.ts new file mode 100644 index 0000000000000..a10dc6e4db81f --- /dev/null +++ b/packages/puppeteer/src/types.ts @@ -0,0 +1,77 @@ +// AUTOGENERATED - Use `npm run generate:sources` to regenerate. + +export * from 'puppeteer-core/internal/api/Browser.js'; +export * from 'puppeteer-core/internal/api/Page.js'; +export * from 'puppeteer-core/internal/common/Accessibility.js'; +export * from 'puppeteer-core/internal/common/AriaQueryHandler.js'; +export * from 'puppeteer-core/internal/common/Browser.js'; +export * from 'puppeteer-core/internal/common/BrowserConnector.js'; +export * from 'puppeteer-core/internal/common/BrowserWebSocketTransport.js'; +export * from 'puppeteer-core/internal/common/ChromeTargetManager.js'; +export * from 'puppeteer-core/internal/common/Connection.js'; +export * from 'puppeteer-core/internal/common/ConnectionTransport.js'; +export * from 'puppeteer-core/internal/common/ConsoleMessage.js'; +export * from 'puppeteer-core/internal/common/Coverage.js'; +export * from 'puppeteer-core/internal/common/Debug.js'; +export * from 'puppeteer-core/internal/common/DeviceDescriptors.js'; +export * from 'puppeteer-core/internal/common/Dialog.js'; +export * from 'puppeteer-core/internal/common/ElementHandle.js'; +export * from 'puppeteer-core/internal/common/EmulationManager.js'; +export * from 'puppeteer-core/internal/common/Errors.js'; +export * from 'puppeteer-core/internal/common/EventEmitter.js'; +export * from 'puppeteer-core/internal/common/ExecutionContext.js'; +export * from 'puppeteer-core/internal/common/fetch.js'; +export * from 'puppeteer-core/internal/common/FileChooser.js'; +export * from 'puppeteer-core/internal/common/FirefoxTargetManager.js'; +export * from 'puppeteer-core/internal/common/Frame.js'; +export * from 'puppeteer-core/internal/common/FrameManager.js'; +export * from 'puppeteer-core/internal/common/FrameTree.js'; +export * from 'puppeteer-core/internal/common/HTTPRequest.js'; +export * from 'puppeteer-core/internal/common/HTTPResponse.js'; +export * from 'puppeteer-core/internal/common/Input.js'; +export * from 'puppeteer-core/internal/common/IsolatedWorld.js'; +export * from 'puppeteer-core/internal/common/JSHandle.js'; +export * from 'puppeteer-core/internal/common/LazyArg.js'; +export * from 'puppeteer-core/internal/common/LifecycleWatcher.js'; +export * from 'puppeteer-core/internal/common/NetworkConditions.js'; +export * from 'puppeteer-core/internal/common/NetworkEventManager.js'; +export * from 'puppeteer-core/internal/common/NetworkManager.js'; +export * from 'puppeteer-core/internal/common/NodeWebSocketTransport.js'; +export * from 'puppeteer-core/internal/common/Page.js'; +export * from 'puppeteer-core/internal/common/PDFOptions.js'; +export * from 'puppeteer-core/internal/common/Product.js'; +export * from 'puppeteer-core/internal/common/Puppeteer.js'; +export * from 'puppeteer-core/internal/common/PuppeteerViewport.js'; +export * from 'puppeteer-core/internal/common/QueryHandler.js'; +export * from 'puppeteer-core/internal/common/SecurityDetails.js'; +export * from 'puppeteer-core/internal/common/Target.js'; +export * from 'puppeteer-core/internal/common/TargetManager.js'; +export * from 'puppeteer-core/internal/common/TaskQueue.js'; +export * from 'puppeteer-core/internal/common/TimeoutSettings.js'; +export * from 'puppeteer-core/internal/common/Tracing.js'; +export * from 'puppeteer-core/internal/common/types.js'; +export * from 'puppeteer-core/internal/common/USKeyboardLayout.js'; +export * from 'puppeteer-core/internal/common/util.js'; +export * from 'puppeteer-core/internal/common/WaitTask.js'; +export * from 'puppeteer-core/internal/common/WebWorker.js'; +export * from 'puppeteer-core/internal/environment.js'; +export * from 'puppeteer-core/internal/generated/injected.js'; +export * from 'puppeteer-core/internal/generated/version.js'; +export * from 'puppeteer-core/internal/util/assert.js'; +export * from 'puppeteer-core/internal/util/DebuggableDeferredPromise.js'; +export * from 'puppeteer-core/internal/util/DeferredPromise.js'; +export * from 'puppeteer-core/internal/util/ErrorLike.js'; +export * from './compat.d.js'; +export * from './constants.js'; +export * from './node/BrowserFetcher.js'; +export * from './node/BrowserRunner.js'; +export * from './node/ChromeLauncher.js'; +export * from './node/FirefoxLauncher.js'; +export * from './node/install.js'; +export * from './node/LaunchOptions.js'; +export * from './node/PipeTransport.js'; +export * from './node/ProductLauncher.js'; +export * from './node/PuppeteerNode.js'; +export * from './node/util.js'; +export * from './puppeteer.js'; +export * from './revisions.js'; diff --git a/packages/puppeteer/tools/generate_sources.ts b/packages/puppeteer/tools/generate_sources.ts new file mode 100644 index 0000000000000..186f2a1816eca --- /dev/null +++ b/packages/puppeteer/tools/generate_sources.ts @@ -0,0 +1,52 @@ +/** + * Copyright 2022 Google Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {readFile, writeFile} from 'fs/promises'; +import {sync as glob} from 'glob'; +import {join} from 'path'; + +const INCLUDED_FOLDERS = ['node']; + +const puppeteerTypes = join(__dirname, '..', 'src', 'types.ts'); +const puppeteerCoreTypes = join( + __dirname, + '..', + '..', + 'puppeteer-core', + 'src', + 'types.ts' +); + +(async () => { + let content = await readFile(puppeteerCoreTypes, 'utf-8'); + content = content.replace(/\.\//g, 'puppeteer-core/internal/'); + content = content.replace( + "export * from 'puppeteer-core/internal/puppeteer-core.js';\n", + '' + ); + + const sources = glob( + `src/{@(${INCLUDED_FOLDERS.join('|')})/*.ts,!(types).ts}`, + {cwd: join(__dirname, '..')} + ); + for (const input of sources.map(source => { + return `.${source.slice(3)}`; + })) { + content += `export * from '${input.replace('.ts', '.js')}';\n`; + } + + await writeFile(puppeteerTypes, content); +})(); diff --git a/packages/puppeteer/tsconfig.json b/packages/puppeteer/tsconfig.json new file mode 100644 index 0000000000000..405998de4b8b5 --- /dev/null +++ b/packages/puppeteer/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "compilerOptions": { + // API extractor doesn't work well with NodeNext module resolution, so we + // just stick with ol'fashion path resolution. + "baseUrl": ".", + "paths": { + "puppeteer-core/internal/*": ["../puppeteer-core/lib/esm/puppeteer/*"] + } + }, + "references": [ + {"path": "src/tsconfig.esm.json"}, + {"path": "src/tsconfig.cjs.json"} + ] +} diff --git a/versions.js b/packages/puppeteer/versions.js similarity index 100% rename from versions.js rename to packages/puppeteer/versions.js diff --git a/packages/testserver/package.json b/packages/testserver/package.json index dedffdc7ded40..dd262748444ee 100644 --- a/packages/testserver/package.json +++ b/packages/testserver/package.json @@ -4,12 +4,17 @@ "description": "testing server", "main": "lib/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc -b", + "clean": "tsc -b --clean && rimraf lib" }, "repository": { "type": "git", "url": "https://github.com/puppeteer/puppeteer/tree/main/packages/testserver" }, "author": "The Chromium Authors", - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "mime": "3.0.0", + "ws": "8.9.0" + } } diff --git a/release-please-config.json b/release-please-config.json index c0181386980a4..161347d1bfd71 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,8 +1,7 @@ { "packages": { - ".": { - "releaseType": "node", - "include-component-in-tag": false - } + "puppeteer": {}, + "puppeteer-core": {}, + "testserver": {} } } diff --git a/scripts/test-install.sh b/scripts/test-install.sh index 77088981c9688..aee07a298e19f 100755 --- a/scripts/test-install.sh +++ b/scripts/test-install.sh @@ -10,6 +10,7 @@ set -e ## Puppeter tests echo "Setting up Puppeteer tests..." +cd packages/puppeteer ROOTDIR="$(pwd)" npm pack tarball="$(realpath puppeteer-*.tgz)" diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index c8d842173c698..3432441200fc1 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "module": "CommonJS" } diff --git a/src/initializePuppeteer.ts b/src/initializePuppeteer.ts deleted file mode 100644 index 8d1e9a515745e..0000000000000 --- a/src/initializePuppeteer.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright 2020 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {Product} from './common/Product.js'; -import {rootDirname} from './constants.js'; -import {PuppeteerNode} from './node/Puppeteer.js'; -import {PUPPETEER_REVISIONS} from './revisions.js'; -import {getPackageDirectory} from './util/getPackageDirectory.js'; - -/** - * @internal - */ -export const initializePuppeteer = (packageName: string): PuppeteerNode => { - const isPuppeteerCore = packageName === 'puppeteer-core'; - let preferredRevision = PUPPETEER_REVISIONS.chromium; - // puppeteer-core ignores environment variables - const productName = !isPuppeteerCore - ? ((process.env['PUPPETEER_PRODUCT'] || - process.env['npm_config_puppeteer_product'] || - process.env['npm_package_config_puppeteer_product']) as Product) - : undefined; - - if (!isPuppeteerCore && productName === 'firefox') { - preferredRevision = PUPPETEER_REVISIONS.firefox; - } - - return new PuppeteerNode({ - projectRoot: isPuppeteerCore ? undefined : getPackageDirectory(rootDirname), - preferredRevision, - isPuppeteerCore, - productName, - }); -}; diff --git a/src/node/util.ts b/src/node/util.ts deleted file mode 100644 index c362a39e65c85..0000000000000 --- a/src/node/util.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as os from 'os'; - -/** - * Gets the temporary directory, either from the environmental variable - * `PUPPETEER_TMP_DIR` or the `os.tmpdir`. - * - * @returns The temporary directory path. - * - * @internal - */ -export const tmpdir = (): string => { - return process.env['PUPPETEER_TMP_DIR'] || os.tmpdir(); -}; diff --git a/src/puppeteer.ts b/src/puppeteer.ts deleted file mode 100644 index 63317cbf7d63a..0000000000000 --- a/src/puppeteer.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright 2017 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {initializePuppeteer} from './initializePuppeteer.js'; - -export * from './common/NetworkConditions.js'; -export * from './common/QueryHandler.js'; -export * from './common/DeviceDescriptors.js'; -export * from './common/Errors.js'; - -export {Protocol} from 'devtools-protocol'; - -/** - * @public - */ -const puppeteer = initializePuppeteer('puppeteer'); - -export const { - connect, - createBrowserFetcher, - defaultArgs, - executablePath, - launch, -} = puppeteer; - -export default puppeteer; diff --git a/src/tsconfig.cjs.json b/src/tsconfig.cjs.json deleted file mode 100644 index ba409245e306f..0000000000000 --- a/src/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.base.json", - "compilerOptions": { - "composite": true, - "outDir": "../lib/cjs/puppeteer", - "module": "CommonJS" - }, - "references": [ - {"path": "../compat/cjs/tsconfig.json"}, - {"path": "../third_party/tsconfig.json"} - ] -} diff --git a/src/tsconfig.esm.json b/src/tsconfig.esm.json deleted file mode 100644 index 4478592376b68..0000000000000 --- a/src/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.base.json", - "compilerOptions": { - "composite": true, - "outDir": "../lib/esm/puppeteer", - "module": "esnext" - }, - "references": [ - {"path": "../compat/esm/tsconfig.json"}, - {"path": "../third_party/tsconfig.cjs.json"} - ] -} diff --git a/test-d/ElementHandle.test-d.ts b/test-d/ElementHandle.test-d.ts index 8f3090c45cd23..55b511abd0640 100644 --- a/test-d/ElementHandle.test-d.ts +++ b/test-d/ElementHandle.test-d.ts @@ -1,5 +1,5 @@ +import {ElementHandle} from 'puppeteer'; import {expectNotType, expectType} from 'tsd'; -import {ElementHandle} from '../lib/esm/puppeteer/common/ElementHandle.js'; declare const handle: ElementHandle; diff --git a/test-d/JSHandle.test-d.ts b/test-d/JSHandle.test-d.ts index c978c811870e3..289aa3d234966 100644 --- a/test-d/JSHandle.test-d.ts +++ b/test-d/JSHandle.test-d.ts @@ -1,6 +1,5 @@ +import {ElementHandle, JSHandle} from 'puppeteer'; import {expectNotAssignable, expectNotType, expectType} from 'tsd'; -import {ElementHandle} from '../lib/esm/puppeteer/common/ElementHandle.js'; -import {JSHandle} from '../lib/esm/puppeteer/common/JSHandle.js'; declare const handle: JSHandle; diff --git a/test-d/puppeteer.test-d.ts b/test-d/puppeteer.test-d.ts index 7b9b813bbefa0..2138990d65a83 100644 --- a/test-d/puppeteer.test-d.ts +++ b/test-d/puppeteer.test-d.ts @@ -1,12 +1,11 @@ -import {expectType} from 'tsd'; -import { +import puppeteer, { connect, createBrowserFetcher, defaultArgs, executablePath, launch, - default as puppeteer, -} from '..'; +} from 'puppeteer'; +import {expectType} from 'tsd'; expectType(puppeteer.launch); expectType(puppeteer.connect); diff --git a/test-d/tsconfig.json b/test-d/tsconfig.json deleted file mode 100644 index 259d60c123e85..0000000000000 --- a/test-d/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.base.json", - "compilerOptions": { - "noEmit": true, - "module": "ESNext" - }, - "references": [{"path": "../src/tsconfig.esm.json"}] -} diff --git a/test/README.md b/test/README.md index 608cfb0c69a29..a0d6c839a9000 100644 --- a/test/README.md +++ b/test/README.md @@ -46,7 +46,7 @@ npm test - **Important**: don't forget to first build the code if you're testing local changes: ```bash -npm run build:dev && npm test +npm run build:test && npm test ``` - To run a specific test, substitute the `it` with `it.only`: diff --git a/test/src/CDPSession.spec.ts b/test/src/CDPSession.spec.ts index 9f82f86234388..51d85b3ccacb4 100644 --- a/test/src/CDPSession.spec.ts +++ b/test/src/CDPSession.spec.ts @@ -21,7 +21,7 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {isErrorLike} from '../../lib/cjs/puppeteer/util/ErrorLike.js'; +import {isErrorLike} from 'puppeteer-core/internal/util/ErrorLike.js'; describe('Target.createCDPSession', function () { setupTestBrowserHooks(); diff --git a/test/src/EventEmitter.spec.ts b/test/src/EventEmitter.spec.ts index 67e1ca610d827..725094eb8c717 100644 --- a/test/src/EventEmitter.spec.ts +++ b/test/src/EventEmitter.spec.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import {EventEmitter} from '../../lib/cjs/puppeteer/common/EventEmitter.js'; +import {EventEmitter} from 'puppeteer-core/internal/common/EventEmitter.js'; import sinon from 'sinon'; import expect from 'expect'; diff --git a/test/src/NetworkManager.spec.ts b/test/src/NetworkManager.spec.ts index 96e3a5f3e9ac2..73318afd6401f 100644 --- a/test/src/NetworkManager.spec.ts +++ b/test/src/NetworkManager.spec.ts @@ -18,11 +18,11 @@ import expect from 'expect'; import { NetworkManager, NetworkManagerEmittedEvents, -} from '../../lib/cjs/puppeteer/common/NetworkManager.js'; -import {HTTPRequest} from '../../lib/cjs/puppeteer/common/HTTPRequest.js'; -import {EventEmitter} from '../../lib/cjs/puppeteer/common/EventEmitter.js'; -import {Frame} from '../../lib/cjs/puppeteer/common/Frame.js'; -import {HTTPResponse} from '../../lib/cjs/puppeteer/common/HTTPResponse.js'; +} from 'puppeteer-core/internal/common/NetworkManager.js'; +import {HTTPRequest} from 'puppeteer-core/internal/common/HTTPRequest.js'; +import {EventEmitter} from 'puppeteer-core/internal/common/EventEmitter.js'; +import {Frame} from 'puppeteer-core/internal/common/Frame.js'; +import {HTTPResponse} from 'puppeteer-core/internal/common/HTTPResponse.js'; class MockCDPSession extends EventEmitter { async send(): Promise {} diff --git a/test/src/TargetManager.spec.ts b/test/src/TargetManager.spec.ts index 76aedefaa891d..09b60416ae4ec 100644 --- a/test/src/TargetManager.spec.ts +++ b/test/src/TargetManager.spec.ts @@ -22,7 +22,7 @@ import expect from 'expect'; import { CDPBrowser, CDPBrowserContext, -} from '../../lib/cjs/puppeteer/common/Browser.js'; +} from 'puppeteer-core/internal/common/Browser.js'; describe('TargetManager', () => { /* We use a special browser for this test as we need the --site-per-process flag */ diff --git a/test/src/accessibility.spec.ts b/test/src/accessibility.spec.ts index c20b137b98ee6..088c33013b01a 100644 --- a/test/src/accessibility.spec.ts +++ b/test/src/accessibility.spec.ts @@ -16,7 +16,7 @@ import assert from 'assert'; import expect from 'expect'; -import {SerializedAXNode} from '../../lib/cjs/puppeteer/common/Accessibility.js'; +import {SerializedAXNode} from 'puppeteer-core/internal/common/Accessibility.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/ariaqueryhandler.spec.ts b/test/src/ariaqueryhandler.spec.ts index fabdf92175e60..6df4f1fe483d7 100644 --- a/test/src/ariaqueryhandler.spec.ts +++ b/test/src/ariaqueryhandler.spec.ts @@ -21,7 +21,7 @@ import { setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {ElementHandle} from '../../lib/cjs/puppeteer/common/ElementHandle.js'; +import {ElementHandle} from 'puppeteer-core/internal/common/ElementHandle.js'; import utils from './utils.js'; import assert from 'assert'; diff --git a/test/src/bidi/Connection.spec.ts b/test/src/bidi/Connection.spec.ts index 0bfa68fd411b7..1ce470bf19c52 100644 --- a/test/src/bidi/Connection.spec.ts +++ b/test/src/bidi/Connection.spec.ts @@ -15,8 +15,8 @@ */ import expect from 'expect'; -import {Connection} from '../../../lib/cjs/puppeteer/common/bidi/Connection.js'; -import {ConnectionTransport} from '../../../lib/cjs/puppeteer/common/ConnectionTransport.js'; +import {Connection} from 'puppeteer-core/internal/common/bidi/Connection.js'; +import {ConnectionTransport} from 'puppeteer-core/internal/common/ConnectionTransport.js'; describe('WebDriver BiDi', () => { describe('Connection', () => { diff --git a/test/src/elementhandle.spec.ts b/test/src/elementhandle.spec.ts index 928145f767985..b029f71de9683 100644 --- a/test/src/elementhandle.spec.ts +++ b/test/src/elementhandle.spec.ts @@ -16,7 +16,7 @@ import expect from 'expect'; import sinon from 'sinon'; -import {ElementHandle} from '../../lib/cjs/puppeteer/common/ElementHandle.js'; +import {ElementHandle} from 'puppeteer-core/internal/common/ElementHandle.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/emulation.spec.ts b/test/src/emulation.spec.ts index 45548a373af88..45e9311084eae 100644 --- a/test/src/emulation.spec.ts +++ b/test/src/emulation.spec.ts @@ -15,7 +15,7 @@ */ import expect from 'expect'; -import {Device} from '../../lib/cjs/puppeteer/common/DeviceDescriptors.js'; +import {Device} from 'puppeteer-core/internal/common/DeviceDescriptors.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/frame.spec.ts b/test/src/frame.spec.ts index d8769a74a8dbb..cf167bcc9c1c1 100644 --- a/test/src/frame.spec.ts +++ b/test/src/frame.spec.ts @@ -15,8 +15,8 @@ */ import expect from 'expect'; -import {CDPSession} from '../../lib/cjs/puppeteer/common/Connection.js'; -import {Frame} from '../../lib/cjs/puppeteer/common/Frame.js'; +import {CDPSession} from 'puppeteer-core/internal/common/Connection.js'; +import {Frame} from 'puppeteer-core/internal/common/Frame.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/headful.spec.ts b/test/src/headful.spec.ts index 9cd9c4fb026a0..3d2716a9f3ab6 100644 --- a/test/src/headful.spec.ts +++ b/test/src/headful.spec.ts @@ -23,7 +23,7 @@ import {promisify} from 'util'; import { PuppeteerLaunchOptions, PuppeteerNode, -} from '../../lib/cjs/puppeteer/node/Puppeteer.js'; +} from 'puppeteer/lib/cjs/puppeteer/node/PuppeteerNode.js'; import {getTestState} from './mocha-utils.js'; const rmAsync = promisify(rimraf); diff --git a/test/src/idle_override.spec.ts b/test/src/idle_override.spec.ts index 4402f934c5d21..83d7ca0970dd5 100644 --- a/test/src/idle_override.spec.ts +++ b/test/src/idle_override.spec.ts @@ -15,7 +15,7 @@ */ import expect from 'expect'; -import {ElementHandle} from '../../lib/cjs/puppeteer/common/ElementHandle.js'; +import {ElementHandle} from 'puppeteer-core/internal/common/ElementHandle.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/ignorehttpserrors.spec.ts b/test/src/ignorehttpserrors.spec.ts index a913d3cc5ecbf..0ca119aedb605 100644 --- a/test/src/ignorehttpserrors.spec.ts +++ b/test/src/ignorehttpserrors.spec.ts @@ -16,9 +16,9 @@ import expect from 'expect'; import {TLSSocket} from 'tls'; -import {Browser, BrowserContext} from '../../lib/cjs/puppeteer/api/Browser.js'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; -import {HTTPResponse} from '../../lib/cjs/puppeteer/common/HTTPResponse.js'; +import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; +import {HTTPResponse} from 'puppeteer-core/internal/common/HTTPResponse.js'; import {getTestState} from './mocha-utils.js'; describe('ignoreHTTPSErrors', function () { diff --git a/test/src/injected.spec.ts b/test/src/injected.spec.ts index a970fd38777fb..1650388009098 100644 --- a/test/src/injected.spec.ts +++ b/test/src/injected.spec.ts @@ -15,8 +15,7 @@ */ import expect from 'expect'; -import '../../lib/cjs/puppeteer/generated/injected.js'; -import {PUPPETEER_WORLD} from '../../lib/cjs/puppeteer/common/IsolatedWorld.js'; +import {PUPPETEER_WORLD} from 'puppeteer-core/internal/common/IsolatedWorld.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/keyboard.spec.ts b/test/src/keyboard.spec.ts index f6d0ce0a83b69..8627833f8b874 100644 --- a/test/src/keyboard.spec.ts +++ b/test/src/keyboard.spec.ts @@ -22,7 +22,7 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {KeyInput} from '../../lib/cjs/puppeteer/common/USKeyboardLayout.js'; +import {KeyInput} from 'puppeteer-core/internal/common/USKeyboardLayout.js'; describe('Keyboard', function () { setupTestBrowserHooks(); diff --git a/test/src/launcher.spec.ts b/test/src/launcher.spec.ts index 4dfbcb83ece79..718a471879462 100644 --- a/test/src/launcher.spec.ts +++ b/test/src/launcher.spec.ts @@ -22,8 +22,8 @@ import rimraf from 'rimraf'; import sinon from 'sinon'; import {TLSSocket} from 'tls'; import {promisify} from 'util'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; -import {Product} from '../../lib/cjs/puppeteer/common/Product.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; +import {Product} from 'puppeteer-core/internal/common/Product.js'; import {getTestState, itOnlyRegularInstall} from './mocha-utils.js'; import utils from './utils.js'; diff --git a/test/src/mocha-utils.ts b/test/src/mocha-utils.ts index 12f2ebbee5ce8..3fe4cb47ff9c5 100644 --- a/test/src/mocha-utils.ts +++ b/test/src/mocha-utils.ts @@ -20,14 +20,14 @@ import * as fs from 'fs'; import * as path from 'path'; import rimraf from 'rimraf'; import sinon from 'sinon'; -import {Browser, BrowserContext} from '../../lib/cjs/puppeteer/api/Browser.js'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; -import {isErrorLike} from '../../lib/cjs/puppeteer/util/ErrorLike.js'; +import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; +import {isErrorLike} from 'puppeteer-core/internal/util/ErrorLike.js'; import { PuppeteerLaunchOptions, PuppeteerNode, -} from '../../lib/cjs/puppeteer/node/Puppeteer.js'; -import puppeteer from '../../lib/cjs/puppeteer/puppeteer.js'; +} from 'puppeteer/lib/cjs/puppeteer/node/PuppeteerNode.js'; +import puppeteer from 'puppeteer/lib/cjs/puppeteer/puppeteer.js'; import {TestServer} from '@pptr/testserver'; import {extendExpectWithToBeGolden} from './utils.js'; import * as Mocha from 'mocha'; @@ -229,7 +229,9 @@ export const mochaHooks = { state.isChrome = isChrome; state.isHeadless = isHeadless; state.headless = headless; - state.puppeteerPath = path.resolve(path.join(__dirname, '../..')); + state.puppeteerPath = path.resolve( + path.join(__dirname, '..', '..', 'packages', 'puppeteer') + ); }, ], diff --git a/test/src/mouse.spec.ts b/test/src/mouse.spec.ts index 01ee49bfd3a11..8c1f8e6e33948 100644 --- a/test/src/mouse.spec.ts +++ b/test/src/mouse.spec.ts @@ -20,7 +20,7 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {KeyInput} from '../../lib/cjs/puppeteer/common/USKeyboardLayout.js'; +import {KeyInput} from 'puppeteer-core/internal/common/USKeyboardLayout.js'; interface Dimensions { x: number; diff --git a/test/src/navigation.spec.ts b/test/src/navigation.spec.ts index 02158ee717643..4e3792f7730ed 100644 --- a/test/src/navigation.spec.ts +++ b/test/src/navigation.spec.ts @@ -23,7 +23,7 @@ import { } from './mocha-utils.js'; import os from 'os'; import {ServerResponse} from 'http'; -import {HTTPRequest} from '../../lib/cjs/puppeteer/common/HTTPRequest.js'; +import {HTTPRequest} from 'puppeteer-core/internal/common/HTTPRequest.js'; describe('navigation', function () { setupTestBrowserHooks(); diff --git a/test/src/network.spec.ts b/test/src/network.spec.ts index 9cfbb35fda91e..21657e447e484 100644 --- a/test/src/network.spec.ts +++ b/test/src/network.spec.ts @@ -23,8 +23,8 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {HTTPRequest} from '../../lib/cjs/puppeteer/common/HTTPRequest.js'; -import {HTTPResponse} from '../../lib/cjs/puppeteer/common/HTTPResponse.js'; +import {HTTPRequest} from 'puppeteer-core/internal/common/HTTPRequest.js'; +import {HTTPResponse} from 'puppeteer-core/internal/common/HTTPResponse.js'; import {ServerResponse} from 'http'; describe('network', function () { diff --git a/test/src/oopif.spec.ts b/test/src/oopif.spec.ts index 7782fa0870dfb..5d9a6723c432d 100644 --- a/test/src/oopif.spec.ts +++ b/test/src/oopif.spec.ts @@ -17,8 +17,8 @@ import utils from './utils.js'; import expect from 'expect'; import {getTestState} from './mocha-utils.js'; -import {Browser, BrowserContext} from '../../lib/cjs/puppeteer/api/Browser.js'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; +import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; describe('OOPIF', function () { /* We use a special browser for this test as we need the --site-per-process flag */ diff --git a/test/src/page.spec.ts b/test/src/page.spec.ts index ccbfd440a666d..4d79c94a973fa 100644 --- a/test/src/page.spec.ts +++ b/test/src/page.spec.ts @@ -18,16 +18,16 @@ import fs from 'fs'; import {ServerResponse} from 'http'; import path from 'path'; import sinon from 'sinon'; -import {CDPSession} from '../../lib/cjs/puppeteer/common/Connection.js'; -import {ConsoleMessage} from '../../lib/cjs/puppeteer/common/ConsoleMessage.js'; -import {Metrics, Page} from '../../lib/cjs/puppeteer/api/Page.js'; +import {CDPSession} from 'puppeteer-core/internal/common/Connection.js'; +import {ConsoleMessage} from 'puppeteer-core/internal/common/ConsoleMessage.js'; +import {Metrics, Page} from 'puppeteer-core/internal/api/Page.js'; import { getTestState, setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; import utils, {attachFrame, waitEvent} from './utils.js'; -import {CDPPage} from '../../lib/cjs/puppeteer/common/Page.js'; +import {CDPPage} from 'puppeteer-core/internal/common/Page.js'; describe('Page', function () { setupTestBrowserHooks(); diff --git a/test/src/proxy.spec.ts b/test/src/proxy.spec.ts index 2e1114d241d47..0c576a3cd7752 100644 --- a/test/src/proxy.spec.ts +++ b/test/src/proxy.spec.ts @@ -19,7 +19,7 @@ import http from 'http'; import os from 'os'; import {getTestState} from './mocha-utils.js'; import type {Server, IncomingMessage, ServerResponse} from 'http'; -import type {Browser} from '../../lib/cjs/puppeteer/api/Browser.js'; +import type {Browser} from 'puppeteer-core/internal/api/Browser.js'; import type {AddressInfo} from 'net'; import {TestServer} from '@pptr/testserver'; diff --git a/test/src/queryhandler.spec.ts b/test/src/queryhandler.spec.ts index 1d1a0b97b37be..462b9414d2232 100644 --- a/test/src/queryhandler.spec.ts +++ b/test/src/queryhandler.spec.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import expect from 'expect'; -import {ElementHandle} from '../../lib/cjs/puppeteer/common/ElementHandle.js'; +import {ElementHandle} from 'puppeteer-core/internal/common/ElementHandle.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/queryselector.spec.ts b/test/src/queryselector.spec.ts index 7eeab8e44e7f6..80b5856de0746 100644 --- a/test/src/queryselector.spec.ts +++ b/test/src/queryselector.spec.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import expect from 'expect'; -import {CustomQueryHandler} from '../../lib/cjs/puppeteer/common/QueryHandler.js'; +import {CustomQueryHandler} from 'puppeteer-core/internal/common/QueryHandler.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/requestinterception-experimental.spec.ts b/test/src/requestinterception-experimental.spec.ts index a0c6da6fd6ab1..2a7dec574963d 100644 --- a/test/src/requestinterception-experimental.spec.ts +++ b/test/src/requestinterception-experimental.spec.ts @@ -23,12 +23,12 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {ConsoleMessage} from '../../lib/cjs/puppeteer/common/ConsoleMessage.js'; +import {ConsoleMessage} from 'puppeteer-core/internal/common/ConsoleMessage.js'; import { ActionResult, HTTPRequest, InterceptResolutionAction, -} from '../../lib/cjs/puppeteer/common/HTTPRequest.js'; +} from 'puppeteer-core/internal/common/HTTPRequest.js'; describe('request interception', function () { setupTestBrowserHooks(); diff --git a/test/src/requestinterception.spec.ts b/test/src/requestinterception.spec.ts index cfbe67e958907..c4ce02a8525e2 100644 --- a/test/src/requestinterception.spec.ts +++ b/test/src/requestinterception.spec.ts @@ -23,8 +23,8 @@ import { setupTestBrowserHooks, setupTestPageAndContextHooks, } from './mocha-utils.js'; -import {HTTPRequest} from '../../lib/cjs/puppeteer/common/HTTPRequest.js'; -import {ConsoleMessage} from '../../lib/cjs/puppeteer/common/ConsoleMessage.js'; +import {HTTPRequest} from 'puppeteer-core/internal/common/HTTPRequest.js'; +import {ConsoleMessage} from 'puppeteer-core/internal/common/ConsoleMessage.js'; describe('request interception', function () { setupTestBrowserHooks(); diff --git a/test/src/target.spec.ts b/test/src/target.spec.ts index ac9389753a156..db2ca1084799c 100644 --- a/test/src/target.spec.ts +++ b/test/src/target.spec.ts @@ -16,8 +16,8 @@ import expect from 'expect'; import {ServerResponse} from 'http'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; -import {Target} from '../../lib/cjs/puppeteer/common/Target.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; +import {Target} from 'puppeteer-core/internal/common/Target.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/src/tracing.spec.ts b/test/src/tracing.spec.ts index 6baf8202c6210..b0570ff40dd79 100644 --- a/test/src/tracing.spec.ts +++ b/test/src/tracing.spec.ts @@ -18,8 +18,8 @@ import fs from 'fs'; import path from 'path'; import expect from 'expect'; import {getTestState} from './mocha-utils.js'; -import {Browser} from '../../lib/cjs/puppeteer/api/Browser.js'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; +import {Browser} from 'puppeteer-core/internal/api/Browser.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; describe('Tracing', function () { let outputFile!: string; diff --git a/test/src/utils.ts b/test/src/utils.ts index 98e452d2c60a3..95c66bb3386ab 100644 --- a/test/src/utils.ts +++ b/test/src/utils.ts @@ -16,9 +16,9 @@ import expect from 'expect'; import path from 'path'; -import {Frame} from '../../lib/cjs/puppeteer/common/Frame.js'; -import {Page} from '../../lib/cjs/puppeteer/api/Page.js'; -import {EventEmitter} from '../../lib/cjs/puppeteer/common/EventEmitter.js'; +import {Frame} from 'puppeteer-core/internal/common/Frame.js'; +import {Page} from 'puppeteer-core/internal/api/Page.js'; +import {EventEmitter} from 'puppeteer-core/internal/common/EventEmitter.js'; import {compare} from './golden-utils.js'; const PROJECT_ROOT = path.join(__dirname, '..', '..'); diff --git a/test/src/waittask.spec.ts b/test/src/waittask.spec.ts index 28c4766982fed..468673e0f77c9 100644 --- a/test/src/waittask.spec.ts +++ b/test/src/waittask.spec.ts @@ -15,7 +15,7 @@ */ import expect from 'expect'; -import {isErrorLike} from '../../lib/cjs/puppeteer/util/ErrorLike.js'; +import {isErrorLike} from 'puppeteer-core/internal/util/ErrorLike.js'; import { createTimeout, getTestState, diff --git a/test/src/worker.spec.ts b/test/src/worker.spec.ts index c279f6efb99cb..fa76361f703a0 100644 --- a/test/src/worker.spec.ts +++ b/test/src/worker.spec.ts @@ -15,8 +15,8 @@ */ import expect from 'expect'; -import {ConsoleMessage} from '../../lib/cjs/puppeteer/common/ConsoleMessage.js'; -import {WebWorker} from '../../lib/cjs/puppeteer/common/WebWorker.js'; +import {ConsoleMessage} from 'puppeteer-core/internal/common/ConsoleMessage.js'; +import {WebWorker} from 'puppeteer-core/internal/common/WebWorker.js'; import { getTestState, setupTestBrowserHooks, diff --git a/test/tsconfig.json b/test/tsconfig.json index 1f7c26c5ad17b..00a1f8bb1355b 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,16 +1,11 @@ { "extends": "../tsconfig.base.json", "compilerOptions": { - "declaration": false, - "declarationMap": false, "module": "CommonJS", + "moduleResolution": "NodeNext", "outDir": "build", "rootDir": "src" }, "include": ["src"], - "references": [ - {"path": "../src/tsconfig.cjs.json"}, - {"path": "../packages/testserver/tsconfig.json"}, - {"path": "../utils/mochaRunner/tsconfig.json"} - ] + "references": [{"path": "../utils/mochaRunner/tsconfig.json"}] } diff --git a/tsconfig.base.json b/tsconfig.base.json index 3473213af7727..9c29d30d9a127 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -3,9 +3,12 @@ "allowJs": true, "alwaysStrict": true, "checkJs": true, + "composite": true, "declaration": true, "declarationMap": true, "esModuleInterop": true, + "incremental": true, + "module": "ESNext", "moduleResolution": "node", "noFallthroughCasesInSwitch": true, "noImplicitAny": true, diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 2e154c1f46bcc..0000000000000 --- a/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This configuration only exists for the API Extractor tool and for VSCode to use. It is NOT the tsconfig used for compilation. - * For CJS builds, `tsconfig.cjs.json` is used, and for ESM, it's `tsconfig.esm.json`. - * See the details in CONTRIBUTING.md that describes our TypeScript setup. - */ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "noEmit": true, - "module": "esnext" - }, - "include": ["src"] -} diff --git a/tsconfig.lib.json b/tsconfig.lib.json deleted file mode 100644 index 6f668b4e54b07..0000000000000 --- a/tsconfig.lib.json +++ /dev/null @@ -1,16 +0,0 @@ -/** - * This configuration only exists for the API Extractor tool and for VSCode to use. It is NOT the tsconfig used for compilation. - * For CJS builds, `tsconfig.cjs.json` is used, and for ESM, it's `tsconfig.esm.json`. - * See the details in CONTRIBUTING.md that describes our TypeScript setup. - */ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "composite": true - }, - "references": [ - {"path": "src/tsconfig.esm.json"}, - {"path": "src/tsconfig.cjs.json"} - ], - "exclude": ["**/*"] -} diff --git a/typescript-if-required.js b/typescript-if-required.js deleted file mode 100644 index e1a1e8bbdd9ca..0000000000000 --- a/typescript-if-required.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright 2020 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const child_process = require('child_process'); -const path = require('path'); -const fs = require('fs'); -const {promisify} = require('util'); - -const exec = promisify(child_process.exec); -const fsAccess = promisify(fs.access); - -const fileExists = async filePath => { - return fsAccess(filePath) - .then(() => { - return true; - }) - .catch(() => { - return false; - }); -}; -/* - - * Now Puppeteer is built with TypeScript, we need to ensure that - * locally we have the generated output before trying to install. - * - * For users installing puppeteer this is fine, they will have the - * generated lib/ directory as we ship it when we publish to npm. - * - * However, if you're cloning the repo to contribute, you won't have the - * generated lib/ directory so this script checks if we need to run - * TypeScript first to ensure the output exists and is in the right - * place. - */ -async function compileTypeScript() { - return exec('npm run build').catch(error => { - console.error('Error running TypeScript', error); - process.exit(1); - }); -} - -async function compileTypeScriptIfRequired() { - const libPath = path.join(__dirname, 'lib'); - const libExists = await fileExists(libPath); - if (libExists) { - return; - } - - console.log('Puppeteer:', 'Compiling TypeScript...'); - await compileTypeScript(); -} - -// It's being run as node typescript-if-required.js, not require('..') -if (require.main === module) { - compileTypeScriptIfRequired(); -} - -module.exports = compileTypeScriptIfRequired; diff --git a/utils/generate_artifacts.ts b/utils/generate_artifacts.ts deleted file mode 100644 index e150c45e2e52d..0000000000000 --- a/utils/generate_artifacts.ts +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -import {writeFile} from 'fs/promises'; -import {job} from './internal/job.js'; -import {spawnAndLog} from './internal/util.js'; - -(async () => { - job('', async ({outputs}) => { - await writeFile(outputs[0]!, '{"type": "module"}'); - }) - .outputs(['lib/esm/package.json']) - .build(); - - job('', async ({outputs}) => { - spawnAndLog('api-extractor', 'run', '--local'); - spawnAndLog( - 'eslint', - '--ext=ts', - '--no-ignore', - '--no-eslintrc', - '-c=.eslintrc.types.cjs', - '--fix', - outputs[0]! - ); - }) - .inputs(['lib/esm/puppeteer/types.d.ts']) - .outputs(['lib/types.d.ts', 'docs/puppeteer.api.json']) - .build(); -})(); diff --git a/utils/generate_docs.ts b/utils/generate_docs.ts index 35d2c8a57a085..3d2d03cd04dae 100644 --- a/utils/generate_docs.ts +++ b/utils/generate_docs.ts @@ -15,11 +15,15 @@ */ import {readFile, rm, writeFile} from 'fs/promises'; +import {join, resolve} from 'path'; +import {chdir} from 'process'; import semver from 'semver'; import {generateDocs} from './internal/custom_markdown_action.js'; import {job} from './internal/job.js'; import {spawnAndLog} from './internal/util.js'; +chdir(resolve(join(__dirname, '..'))); + function getOffsetAndLimit( sectionName: string, lines: string[] @@ -62,7 +66,8 @@ sidebar_position: 1 // Chrome Versions const job2 = job('', async ({inputs, outputs}) => { let content = await readFile(inputs[2]!, {encoding: 'utf8'}); - const {versionsPerRelease} = await import(inputs[0]!); + const versionModulePath = join('..', inputs[0]!); + const {versionsPerRelease} = await import(versionModulePath); const versionsArchived = JSON.parse(await readFile(inputs[1]!, 'utf8')); // Generate versions @@ -96,7 +101,7 @@ sidebar_position: 1 await writeFile(outputs[0]!, content); }) .inputs([ - 'versions.js', + 'packages/puppeteer/versions.js', 'website/versionsArchived.json', 'docs/chromium-support.md', ]) diff --git a/utils/internal/job.ts b/utils/internal/job.ts index 2e331a75523ce..39f5b214d21cd 100644 --- a/utils/internal/job.ts +++ b/utils/internal/job.ts @@ -3,11 +3,7 @@ import {existsSync, Stats} from 'fs'; import {mkdir, readFile, stat, writeFile} from 'fs/promises'; import {glob} from 'glob'; import {tmpdir} from 'os'; -import {dirname, join, resolve} from 'path'; -import {chdir} from 'process'; - -const packageRoot = resolve(join(__dirname, '..', '..')); -chdir(packageRoot); +import {dirname, join} from 'path'; interface JobContext { name: string; @@ -45,12 +41,9 @@ class JobBuilder { inputs(inputs: string[]): JobBuilder { this.#inputs = inputs.flatMap(value => { if (glob.hasMagic(value)) { - return glob.sync(value).map(value => { - // Glob doesn't support `\` on Windows, so we join here. - return join(packageRoot, value); - }); + return glob.sync(value); } - return join(packageRoot, value); + return value; }); return this; } @@ -60,9 +53,7 @@ class JobBuilder { this.#name = outputs.join(' and '); } - this.#outputs = outputs.map(value => { - return join(packageRoot, value); - }); + this.#outputs = outputs; return this; } diff --git a/utils/mochaRunner/README.md b/utils/mochaRunner/README.md index efbafbc3b5e12..bfe03d5793701 100644 --- a/utils/mochaRunner/README.md +++ b/utils/mochaRunner/README.md @@ -5,20 +5,20 @@ Mocha Runner is a test runner on top of mocha. It uses `/test/TestSuites.json` a ## Running tests for Mocha Runner itself. ``` -npm run build:dev && npx c8 node utils/mochaRunner/lib/test.js +npm run build:test && npx c8 node utils/mochaRunner/lib/test.js ``` ## Running tests using Mocha Runner ``` -npm run build:dev && npm run test +npm run build:test && npm run test ``` By default, the runner runs all test suites applicable to the current platform. To pick a test suite, provide the `--test-suite` arguments. For example, ``` -npm run build:dev && npm run test -- --test-suite chrome-headless +npm run build:test && npm run test -- --test-suite chrome-headless ``` ## TestSuites.json diff --git a/utils/prepare_puppeteer_core.js b/utils/prepare_puppeteer_core.js deleted file mode 100755 index fe7a0dfc734f8..0000000000000 --- a/utils/prepare_puppeteer_core.js +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env node -/** - * Copyright 2018 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const fs = require('fs'); -const path = require('path'); - -const packagePath = path.join(__dirname, '..', 'package.json'); -const json = require(packagePath); - -delete json.scripts.install; - -json.name = 'puppeteer-core'; -json.main = './lib/cjs/puppeteer/puppeteer-core.js'; -json.exports['.'].import = './lib/esm/puppeteer/puppeteer-core.js'; -json.exports['.'].require = './lib/cjs/puppeteer/puppeteer-core.js'; - -fs.writeFileSync(packagePath, JSON.stringify(json, null, ' ')); diff --git a/website/versioned_docs/version-18.0.5/contributing.md b/website/versioned_docs/version-18.0.5/contributing.md index 3c806b2370974..ec03209c2b169 100644 --- a/website/versioned_docs/version-18.0.5/contributing.md +++ b/website/versioned_docs/version-18.0.5/contributing.md @@ -42,7 +42,7 @@ Puppeteer has two configurations for building: - `npm run build` (or `npm run build:prod`) - Builds Puppeteer and artifacts used in production. -- `npm run build:dev` - Builds Puppeteer, tests, and artifacts used in +- `npm run build:test` - Builds Puppeteer, tests, and artifacts used in production. ## Testing Puppeteer @@ -50,7 +50,7 @@ Puppeteer has two configurations for building: For browser testing, you can run ```bash -npm run build:dev && npm run test +npm run build:test && npm run test ``` We also have other tests such as `test:types` that tests types and