diff --git a/examples/worklet/index.html b/examples/worklet/index.html new file mode 100644 index 00000000000..7bac4f56868 --- /dev/null +++ b/examples/worklet/index.html @@ -0,0 +1,12 @@ + + + + + + + Document + + +
+ + diff --git a/examples/worklet/loader/worklet-loader.js b/examples/worklet/loader/worklet-loader.js new file mode 100644 index 00000000000..c2fe2613ae1 --- /dev/null +++ b/examples/worklet/loader/worklet-loader.js @@ -0,0 +1,10 @@ +const esbuild = require("esbuild"); +module.exports = function workletLoader(source) { + const result = esbuild.buildSync({ + entryPoints: [this.resource], + write: false, + bundle: true + }); + const content = result.outputFiles[0].text; + return content; +}; diff --git a/examples/worklet/package.json b/examples/worklet/package.json new file mode 100644 index 00000000000..481c77ac543 --- /dev/null +++ b/examples/worklet/package.json @@ -0,0 +1,19 @@ +{ + "name": "example-basic", + "version": "1.0.0", + "description": "", + "main": "index.js", + "private": true, + "scripts": { + "dev": "rspack serve", + "build": "rspack build" + }, + "devDependencies": { + "esbuild": "0.19.3", + "@rspack/cli": "workspace:*" + }, + "sideEffects": false, + "keywords": [], + "author": "", + "license": "MIT" +} \ No newline at end of file diff --git a/examples/worklet/rspack.config.js b/examples/worklet/rspack.config.js new file mode 100644 index 00000000000..a5b68d57e03 --- /dev/null +++ b/examples/worklet/rspack.config.js @@ -0,0 +1,41 @@ +/** @type {import('@rspack/cli').Configuration} */ +const config = { + context: __dirname, + mode: "development", + entry: { + main: "./src/index.js" + }, + devServer: { + devMiddleware: { + writeToDisk: true + } + }, + module: { + rules: [ + { + resourceQuery: /url/, + type: "asset" + }, + { + test: /complex\.worklet/, + use: [ + { + loader: "./loader/worklet-loader.js" + } + ], + type: "asset" + } + ] + }, + builtins: { + html: [ + { + template: "./index.html" + } + ], + react: { + refresh: false + } + } +}; +module.exports = config; diff --git a/examples/worklet/src/answer.js b/examples/worklet/src/answer.js new file mode 100644 index 00000000000..64a32fd291e --- /dev/null +++ b/examples/worklet/src/answer.js @@ -0,0 +1 @@ +export const answer = 42; diff --git a/examples/worklet/src/index.js b/examples/worklet/src/index.js new file mode 100644 index 00000000000..c1d7739a654 --- /dev/null +++ b/examples/worklet/src/index.js @@ -0,0 +1,23 @@ +import simpleWorklet from "./worklet/simple.worklet?url"; +import complexWorklet from "./worklet/complex.worklet"; +let context = new AudioContext(); + +context.audioWorklet.addModule(simpleWorklet).then(() => { + let node = new AudioWorkletNode(context, "port-processor"); + node.port.onmessage = event => { + // Handling data from the processor. + console.log(event.data); + }; + + node.port.postMessage("Hello!"); +}); + +context.audioWorklet.addModule(complexWorklet).then(() => { + let node = new AudioWorkletNode(context, "complex-processor"); + node.port.onmessage = event => { + // Handling data from the processor. + console.log(event.data); + }; + + node.port.postMessage("Hello!"); +}); diff --git a/examples/worklet/src/lib.js b/examples/worklet/src/lib.js new file mode 100644 index 00000000000..84c67edefbd --- /dev/null +++ b/examples/worklet/src/lib.js @@ -0,0 +1 @@ +export const a = 3; diff --git a/examples/worklet/src/worklet/answer.ts b/examples/worklet/src/worklet/answer.ts new file mode 100644 index 00000000000..64a32fd291e --- /dev/null +++ b/examples/worklet/src/worklet/answer.ts @@ -0,0 +1 @@ +export const answer = 42; diff --git a/examples/worklet/src/worklet/complex.worklet.js b/examples/worklet/src/worklet/complex.worklet.js new file mode 100644 index 00000000000..1d603f16aa3 --- /dev/null +++ b/examples/worklet/src/worklet/complex.worklet.js @@ -0,0 +1,19 @@ +import { answer } from "./answer"; +class PortProcessor extends AudioWorkletProcessor { + constructor() { + super(); + this.port.onmessage = event => { + // Handling data from the node. + console.log(event.data); + }; + + this.port.postMessage("Hi!" + answer); + } + + process(inputs, outputs, parameters) { + // Do nothing, producing silent output. + return true; + } +} + +registerProcessor("complex-processor", PortProcessor); diff --git a/examples/worklet/src/worklet/simple.worklet.js b/examples/worklet/src/worklet/simple.worklet.js new file mode 100644 index 00000000000..cfaa23d32fa --- /dev/null +++ b/examples/worklet/src/worklet/simple.worklet.js @@ -0,0 +1,18 @@ +class PortProcessor extends AudioWorkletProcessor { + constructor() { + super(); + this.port.onmessage = event => { + // Handling data from the node. + console.log(event.data); + }; + + this.port.postMessage("Hi!"); + } + + process(inputs, outputs, parameters) { + // Do nothing, producing silent output. + return true; + } +} + +registerProcessor("port-processor", PortProcessor); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6843f9ee8e..20e820e6c53 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -886,6 +886,14 @@ importers: dependencies: '@rspack/cli': link:../../packages/rspack-cli + examples/worklet: + specifiers: + '@rspack/cli': workspace:* + esbuild: 0.19.3 + devDependencies: + '@rspack/cli': link:../../packages/rspack-cli + esbuild: 0.19.3 + npm/darwin-arm64: specifiers: {} @@ -6674,6 +6682,15 @@ packages: dev: true optional: true + /@esbuild/android-arm/0.19.3: + resolution: {integrity: sha512-Lemgw4io4VZl9GHJmjiBGzQ7ONXRfRPHcUEerndjwiSkbxzrpq0Uggku5MxxrXdwJ+pTj1qyw4jwTu7hkPsgIA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64/0.16.3: resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} engines: {node: '>=12'} @@ -6692,6 +6709,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64/0.19.3: + resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64/0.16.3: resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} engines: {node: '>=12'} @@ -6710,6 +6736,15 @@ packages: dev: true optional: true + /@esbuild/android-x64/0.19.3: + resolution: {integrity: sha512-FKQJKkK5MXcBHoNZMDNUAg1+WcZlV/cuXrWCoGF/TvdRiYS4znA0m5Il5idUwfxrE20bG/vU1Cr5e1AD6IEIjQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64/0.16.3: resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} engines: {node: '>=12'} @@ -6728,6 +6763,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64/0.19.3: + resolution: {integrity: sha512-kw7e3FXU+VsJSSSl2nMKvACYlwtvZB8RUIeVShIEY6PVnuZ3c9+L9lWB2nWeeKWNNYDdtL19foCQ0ZyUL7nqGw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64/0.16.3: resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} engines: {node: '>=12'} @@ -6746,6 +6790,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64/0.19.3: + resolution: {integrity: sha512-tPfZiwF9rO0jW6Jh9ipi58N5ZLoSjdxXeSrAYypy4psA2Yl1dAMhM71KxVfmjZhJmxRjSnb29YlRXXhh3GqzYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64/0.16.3: resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} engines: {node: '>=12'} @@ -6764,6 +6817,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64/0.19.3: + resolution: {integrity: sha512-ERDyjOgYeKe0Vrlr1iLrqTByB026YLPzTytDTz1DRCYM+JI92Dw2dbpRHYmdqn6VBnQ9Bor6J8ZlNwdZdxjlSg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64/0.16.3: resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} engines: {node: '>=12'} @@ -6782,6 +6844,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64/0.19.3: + resolution: {integrity: sha512-nXesBZ2Ad1qL+Rm3crN7NmEVJ5uvfLFPLJev3x1j3feCQXfAhoYrojC681RhpdOph8NsvKBBwpYZHR7W0ifTTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm/0.16.3: resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} engines: {node: '>=12'} @@ -6800,6 +6871,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm/0.19.3: + resolution: {integrity: sha512-zr48Cg/8zkzZCzDHNxXO/89bf9e+r4HtzNUPoz4GmgAkF1gFAFmfgOdCbR8zMbzFDGb1FqBBhdXUpcTQRYS1cQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64/0.16.3: resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} engines: {node: '>=12'} @@ -6818,6 +6898,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64/0.19.3: + resolution: {integrity: sha512-qXvYKmXj8GcJgWq3aGvxL/JG1ZM3UR272SdPU4QSTzD0eymrM7leiZH77pvY3UetCy0k1xuXZ+VPvoJNdtrsWQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32/0.16.3: resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} engines: {node: '>=12'} @@ -6836,6 +6925,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32/0.19.3: + resolution: {integrity: sha512-7XlCKCA0nWcbvYpusARWkFjRQNWNGlt45S+Q18UeS///K6Aw8bB2FKYe9mhVWy/XLShvCweOLZPrnMswIaDXQA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64/0.16.3: resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} engines: {node: '>=12'} @@ -6854,6 +6952,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.19.3: + resolution: {integrity: sha512-qGTgjweER5xqweiWtUIDl9OKz338EQqCwbS9c2Bh5jgEH19xQ1yhgGPNesugmDFq+UUSDtWgZ264st26b3de8A==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el/0.16.3: resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} engines: {node: '>=12'} @@ -6872,6 +6979,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el/0.19.3: + resolution: {integrity: sha512-gy1bFskwEyxVMFRNYSvBauDIWNggD6pyxUksc0MV9UOBD138dKTzr8XnM2R4mBsHwVzeuIH8X5JhmNs2Pzrx+A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64/0.16.3: resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} engines: {node: '>=12'} @@ -6890,6 +7006,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64/0.19.3: + resolution: {integrity: sha512-UrYLFu62x1MmmIe85rpR3qou92wB9lEXluwMB/STDzPF9k8mi/9UvNsG07Tt9AqwPQXluMQ6bZbTzYt01+Ue5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64/0.16.3: resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} engines: {node: '>=12'} @@ -6908,6 +7033,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64/0.19.3: + resolution: {integrity: sha512-9E73TfyMCbE+1AwFOg3glnzZ5fBAFK4aawssvuMgCRqCYzE0ylVxxzjEfut8xjmKkR320BEoMui4o/t9KA96gA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x/0.16.3: resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} engines: {node: '>=12'} @@ -6926,6 +7060,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x/0.19.3: + resolution: {integrity: sha512-LlmsbuBdm1/D66TJ3HW6URY8wO6IlYHf+ChOUz8SUAjVTuaisfuwCOAgcxo3Zsu3BZGxmI7yt//yGOxV+lHcEA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64/0.16.3: resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} engines: {node: '>=12'} @@ -6944,6 +7087,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64/0.19.3: + resolution: {integrity: sha512-ogV0+GwEmvwg/8ZbsyfkYGaLACBQWDvO0Kkh8LKBGKj9Ru8VM39zssrnu9Sxn1wbapA2qNS6BiLdwJZGouyCwQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64/0.16.3: resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} engines: {node: '>=12'} @@ -6962,6 +7114,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64/0.19.3: + resolution: {integrity: sha512-o1jLNe4uzQv2DKXMlmEzf66Wd8MoIhLNO2nlQBHLtWyh2MitDG7sMpfCO3NTcoTMuqHjfufgUQDFRI5C+xsXQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64/0.16.3: resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} engines: {node: '>=12'} @@ -6980,6 +7141,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64/0.19.3: + resolution: {integrity: sha512-AZJCnr5CZgZOdhouLcfRdnk9Zv6HbaBxjcyhq0StNcvAdVZJSKIdOiPB9az2zc06ywl0ePYJz60CjdKsQacp5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64/0.16.3: resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} engines: {node: '>=12'} @@ -6998,6 +7168,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64/0.19.3: + resolution: {integrity: sha512-Acsujgeqg9InR4glTRvLKGZ+1HMtDm94ehTIHKhJjFpgVzZG9/pIcWW/HA/DoMfEyXmANLDuDZ2sNrWcjq1lxw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64/0.16.3: resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} engines: {node: '>=12'} @@ -7016,6 +7195,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64/0.19.3: + resolution: {integrity: sha512-FSrAfjVVy7TifFgYgliiJOyYynhQmqgPj15pzLyJk8BUsnlWNwP/IAy6GAiB1LqtoivowRgidZsfpoYLZH586A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32/0.16.3: resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} engines: {node: '>=12'} @@ -7034,6 +7222,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32/0.19.3: + resolution: {integrity: sha512-xTScXYi12xLOWZ/sc5RBmMN99BcXp/eEf7scUC0oeiRoiT5Vvo9AycuqCp+xdpDyAU+LkrCqEpUS9fCSZF8J3Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64/0.16.3: resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} engines: {node: '>=12'} @@ -7052,6 +7249,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64/0.19.3: + resolution: {integrity: sha512-FbUN+0ZRXsypPyWE2IwIkVjDkDnJoMJARWOcFZn4KPPli+QnKqF0z1anvfaYe3ev5HFCpRDLLBDHyOALLppWHw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -16422,6 +16628,36 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true + /esbuild/0.19.3: + resolution: {integrity: sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.3 + '@esbuild/android-arm64': 0.19.3 + '@esbuild/android-x64': 0.19.3 + '@esbuild/darwin-arm64': 0.19.3 + '@esbuild/darwin-x64': 0.19.3 + '@esbuild/freebsd-arm64': 0.19.3 + '@esbuild/freebsd-x64': 0.19.3 + '@esbuild/linux-arm': 0.19.3 + '@esbuild/linux-arm64': 0.19.3 + '@esbuild/linux-ia32': 0.19.3 + '@esbuild/linux-loong64': 0.19.3 + '@esbuild/linux-mips64el': 0.19.3 + '@esbuild/linux-ppc64': 0.19.3 + '@esbuild/linux-riscv64': 0.19.3 + '@esbuild/linux-s390x': 0.19.3 + '@esbuild/linux-x64': 0.19.3 + '@esbuild/netbsd-x64': 0.19.3 + '@esbuild/openbsd-x64': 0.19.3 + '@esbuild/sunos-x64': 0.19.3 + '@esbuild/win32-arm64': 0.19.3 + '@esbuild/win32-ia32': 0.19.3 + '@esbuild/win32-x64': 0.19.3 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'}