diff --git a/packages/playwright-core/bundles/utils/build.js b/packages/playwright-core/bundles/utils/build.js new file mode 100644 index 0000000000..c76340ca6a --- /dev/null +++ b/packages/playwright-core/bundles/utils/build.js @@ -0,0 +1,50 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * 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. + */ + +// @ts-check +const path = require('path'); +const fs = require('fs'); +const esbuild = require('esbuild'); + +// Can be removed once https://github.com/JoshGlazebrook/socks/pull/85 is fixed. +/** @type{import('esbuild').Plugin} */ +let patchIpToHideBufferDeprecationWarning = { + name: 'patch-ip-deprecation', + setup(build) { + build.onResolve({ filter: /^ip$/ }, () => { + const originalPath = require.resolve('ip'); + const patchedPath = path.join(path.dirname(originalPath), path.basename(originalPath, '.js') + '.pw-patched.js'); + let sourceFileContent = fs.readFileSync(originalPath, 'utf8') + // all use-cases of new Buffer() pass the length as an arg + sourceFileContent = sourceFileContent.replace(/new Buffer\(/g, 'Buffer.alloc('); + fs.writeFileSync(patchedPath, sourceFileContent); + return { path: patchedPath } + }); + }, +} + +esbuild.build({ + entryPoints: [path.join(__dirname, 'src/utilsBundleImpl.ts')], + bundle: true, + outdir: path.join(__dirname, '../../lib'), + plugins: [patchIpToHideBufferDeprecationWarning], + format: 'cjs', + platform: 'node', + target: 'ES2019', + watch: process.argv.includes('--watch'), + sourcemap: process.argv.includes('--sourcemap'), + minify: process.argv.includes('--minify'), +}).catch(() => process.exit(1)); diff --git a/packages/playwright-core/bundles/utils/package.json b/packages/playwright-core/bundles/utils/package.json index 4ed3ba468c..21f6010cbd 100644 --- a/packages/playwright-core/bundles/utils/package.json +++ b/packages/playwright-core/bundles/utils/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "private": true, "scripts": { - "esbuild": "esbuild ./src/utilsBundleImpl.ts --bundle --outdir=../../lib --format=cjs --platform=node --target=ES2019", + "esbuild": "node build.js", "build": "npm ci && npm run esbuild -- --minify", "watch": "npm ci && npm run esbuild -- --watch --sourcemap", "generate-license": "node ../../../../utils/generate_third_party_notice.js" diff --git a/packages/playwright-core/bundles/zip/build.js b/packages/playwright-core/bundles/zip/build.js index 62fd998893..6ff564fffd 100644 --- a/packages/playwright-core/bundles/zip/build.js +++ b/packages/playwright-core/bundles/zip/build.js @@ -24,7 +24,7 @@ const esbuild = require('esbuild'); let patchFdSlicerToHideBufferDeprecationWarning = { name: 'patch-fd-slicer-deprecation', setup(build) { - build.onResolve({ filter: /fd-slicer/ }, () => { + build.onResolve({ filter: /^fd-slicer$/ }, () => { const originalPath = require.resolve('fd-slicer'); const patchedPath = path.join(path.dirname(originalPath), path.basename(originalPath, '.js') + '.pw-patched.js'); let sourceFileContent = fs.readFileSync(originalPath, 'utf8')