Commit f5545ef

Anton Golub <antongolub@antongolub.com>
2024-05-26 20:46:12
build: update esbuild plugins, refactor build:js (#821)
1 parent 491678f
scripts/build-js.mjs
@@ -17,7 +17,7 @@
 import path from 'node:path'
 import fs from 'node:fs'
 import esbuild from 'esbuild'
-import { parseContentsLayout } from 'esbuild-plugin-utils'
+import { injectCode, injectFile } from 'esbuild-plugin-utils'
 import { nodeExternalsPlugin } from 'esbuild-node-externals'
 import { entryChunksPlugin } from 'esbuild-plugin-entry-chunks'
 import { hybridExportPlugin } from 'esbuild-plugin-hybrid-export'
@@ -97,33 +97,26 @@ plugins.push(
     hooks: [
       {
         on: 'end',
+        if: !hybrid,
         pattern: /\.js$/,
-        transform(contents, p) {
-          if (!hybrid) return contents
-
-          const { header, body } = parseContentsLayout(contents)
-          return [header, `import './deno.js'`, body].join('\n')
+        transform(contents) {
+          return injectCode(contents, `import './deno.js'`)
         },
       },
       {
         on: 'end',
         pattern: entryPointsToRegexp(entryPoints),
-        transform(contents, p) {
-          const { header, body } = parseContentsLayout(contents)
-          return [
-            header,
+        transform(contents) {
+          const extras = [
             // https://github.com/evanw/esbuild/issues/1633
-            body.includes('import_meta')
-              ? inject('./scripts/import-meta-url.polyfill.js')
+            contents.includes('import_meta')
+              ? './scripts/import-meta-url.polyfill.js'
               : '',
 
             //https://github.com/evanw/esbuild/issues/1921
-            // p.includes('vendor') ? inject('./scripts/require.polyfill.js') : '',
-
-            body,
-          ]
-            .filter(Boolean)
-            .join('\n')
+            // p.includes('vendor') ? './scripts/require.polyfill.js' : '',
+          ].filter(Boolean)
+          return injectFile(contents, ...extras)
         },
       },
       {
@@ -155,13 +148,6 @@ plugins.push(
   })
 )
 
-function inject(file) {
-  const extra = fs.readFileSync(file, 'utf8')
-  return `// ${file}
-${extra}
-`
-}
-
 function entryPointsToRegexp(entryPoints) {
   return new RegExp(
     '(' + entryPoints.map((e) => path.parse(e).name).join('|') + ')\\.cjs$'
scripts/require.polyfill.js
@@ -1,3 +0,0 @@
-const require = (await import('node:module')).createRequire(import.meta.url)
-const __filename = (await import('node:url')).fileURLToPath(import.meta.url)
-const __dirname = (await import('node:path')).dirname(__filename)
package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "zx",
-  "version": "8.1.0",
+  "version": "8.1.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "zx",
-      "version": "8.1.0",
+      "version": "8.1.1",
       "license": "Apache-2.0",
       "bin": {
         "zx": "build/cli.js"
@@ -23,13 +23,13 @@
         "create-require": "^1.1.1",
         "depseek": "^0.4.1",
         "dts-bundle-generator": "^9.5.1",
-        "esbuild": "^0.21.3",
+        "esbuild": "^0.21.4",
         "esbuild-node-externals": "^1.13.1",
-        "esbuild-plugin-entry-chunks": "^0.1.14",
-        "esbuild-plugin-extract-helpers": "^0.0.5",
-        "esbuild-plugin-hybrid-export": "^0.2.3",
-        "esbuild-plugin-transform-hook": "^0.1.0",
-        "esbuild-plugin-utils": "^0.0.1",
+        "esbuild-plugin-entry-chunks": "^0.1.15",
+        "esbuild-plugin-extract-helpers": "^0.0.6",
+        "esbuild-plugin-hybrid-export": "^0.2.4",
+        "esbuild-plugin-transform-hook": "^0.1.1",
+        "esbuild-plugin-utils": "^0.1.0",
         "fs-extra": "^11.2.0",
         "fx": "*",
         "globby": "^14.0.1",
@@ -40,7 +40,7 @@
         "prettier": "^3.2.5",
         "ts-node": "^10.9.2",
         "tsd": "^0.31.0",
-        "tsx": "^4.10.5",
+        "tsx": "^4.11.0",
         "typescript": "^5.4.5",
         "which": "^4.0.0",
         "yaml": "^2.4.2",
@@ -256,9 +256,9 @@
       }
     },
     "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.3.tgz",
-      "integrity": "sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.4.tgz",
+      "integrity": "sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==",
       "cpu": [
         "ppc64"
       ],
@@ -272,9 +272,9 @@
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.3.tgz",
-      "integrity": "sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.4.tgz",
+      "integrity": "sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==",
       "cpu": [
         "arm"
       ],
@@ -288,9 +288,9 @@
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.3.tgz",
-      "integrity": "sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.4.tgz",
+      "integrity": "sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==",
       "cpu": [
         "arm64"
       ],
@@ -304,9 +304,9 @@
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.3.tgz",
-      "integrity": "sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.4.tgz",
+      "integrity": "sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==",
       "cpu": [
         "x64"
       ],
@@ -320,9 +320,9 @@
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.3.tgz",
-      "integrity": "sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.4.tgz",
+      "integrity": "sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==",
       "cpu": [
         "arm64"
       ],
@@ -336,9 +336,9 @@
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.3.tgz",
-      "integrity": "sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.4.tgz",
+      "integrity": "sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==",
       "cpu": [
         "x64"
       ],
@@ -352,9 +352,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.3.tgz",
-      "integrity": "sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.4.tgz",
+      "integrity": "sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==",
       "cpu": [
         "arm64"
       ],
@@ -368,9 +368,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.3.tgz",
-      "integrity": "sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.4.tgz",
+      "integrity": "sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==",
       "cpu": [
         "x64"
       ],
@@ -384,9 +384,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.3.tgz",
-      "integrity": "sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.4.tgz",
+      "integrity": "sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==",
       "cpu": [
         "arm"
       ],
@@ -400,9 +400,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.3.tgz",
-      "integrity": "sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.4.tgz",
+      "integrity": "sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==",
       "cpu": [
         "arm64"
       ],
@@ -416,9 +416,9 @@
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.3.tgz",
-      "integrity": "sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.4.tgz",
+      "integrity": "sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==",
       "cpu": [
         "ia32"
       ],
@@ -432,9 +432,9 @@
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.3.tgz",
-      "integrity": "sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.4.tgz",
+      "integrity": "sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==",
       "cpu": [
         "loong64"
       ],
@@ -448,9 +448,9 @@
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.3.tgz",
-      "integrity": "sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.4.tgz",
+      "integrity": "sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==",
       "cpu": [
         "mips64el"
       ],
@@ -464,9 +464,9 @@
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.3.tgz",
-      "integrity": "sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.4.tgz",
+      "integrity": "sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==",
       "cpu": [
         "ppc64"
       ],
@@ -480,9 +480,9 @@
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.3.tgz",
-      "integrity": "sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.4.tgz",
+      "integrity": "sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==",
       "cpu": [
         "riscv64"
       ],
@@ -496,9 +496,9 @@
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.3.tgz",
-      "integrity": "sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.4.tgz",
+      "integrity": "sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==",
       "cpu": [
         "s390x"
       ],
@@ -512,9 +512,9 @@
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.3.tgz",
-      "integrity": "sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.4.tgz",
+      "integrity": "sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==",
       "cpu": [
         "x64"
       ],
@@ -528,9 +528,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.3.tgz",
-      "integrity": "sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.4.tgz",
+      "integrity": "sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==",
       "cpu": [
         "x64"
       ],
@@ -544,9 +544,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.3.tgz",
-      "integrity": "sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.4.tgz",
+      "integrity": "sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==",
       "cpu": [
         "x64"
       ],
@@ -560,9 +560,9 @@
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.3.tgz",
-      "integrity": "sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.4.tgz",
+      "integrity": "sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==",
       "cpu": [
         "x64"
       ],
@@ -576,9 +576,9 @@
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.3.tgz",
-      "integrity": "sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.4.tgz",
+      "integrity": "sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==",
       "cpu": [
         "arm64"
       ],
@@ -592,9 +592,9 @@
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.3.tgz",
-      "integrity": "sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.4.tgz",
+      "integrity": "sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==",
       "cpu": [
         "ia32"
       ],
@@ -608,9 +608,9 @@
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.3.tgz",
-      "integrity": "sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.4.tgz",
+      "integrity": "sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==",
       "cpu": [
         "x64"
       ],
@@ -1595,9 +1595,9 @@
       }
     },
     "node_modules/esbuild": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.3.tgz",
-      "integrity": "sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==",
+      "version": "0.21.4",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.4.tgz",
+      "integrity": "sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==",
       "dev": true,
       "hasInstallScript": true,
       "bin": {
@@ -1607,29 +1607,29 @@
         "node": ">=12"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.21.3",
-        "@esbuild/android-arm": "0.21.3",
-        "@esbuild/android-arm64": "0.21.3",
-        "@esbuild/android-x64": "0.21.3",
-        "@esbuild/darwin-arm64": "0.21.3",
-        "@esbuild/darwin-x64": "0.21.3",
-        "@esbuild/freebsd-arm64": "0.21.3",
-        "@esbuild/freebsd-x64": "0.21.3",
-        "@esbuild/linux-arm": "0.21.3",
-        "@esbuild/linux-arm64": "0.21.3",
-        "@esbuild/linux-ia32": "0.21.3",
-        "@esbuild/linux-loong64": "0.21.3",
-        "@esbuild/linux-mips64el": "0.21.3",
-        "@esbuild/linux-ppc64": "0.21.3",
-        "@esbuild/linux-riscv64": "0.21.3",
-        "@esbuild/linux-s390x": "0.21.3",
-        "@esbuild/linux-x64": "0.21.3",
-        "@esbuild/netbsd-x64": "0.21.3",
-        "@esbuild/openbsd-x64": "0.21.3",
-        "@esbuild/sunos-x64": "0.21.3",
-        "@esbuild/win32-arm64": "0.21.3",
-        "@esbuild/win32-ia32": "0.21.3",
-        "@esbuild/win32-x64": "0.21.3"
+        "@esbuild/aix-ppc64": "0.21.4",
+        "@esbuild/android-arm": "0.21.4",
+        "@esbuild/android-arm64": "0.21.4",
+        "@esbuild/android-x64": "0.21.4",
+        "@esbuild/darwin-arm64": "0.21.4",
+        "@esbuild/darwin-x64": "0.21.4",
+        "@esbuild/freebsd-arm64": "0.21.4",
+        "@esbuild/freebsd-x64": "0.21.4",
+        "@esbuild/linux-arm": "0.21.4",
+        "@esbuild/linux-arm64": "0.21.4",
+        "@esbuild/linux-ia32": "0.21.4",
+        "@esbuild/linux-loong64": "0.21.4",
+        "@esbuild/linux-mips64el": "0.21.4",
+        "@esbuild/linux-ppc64": "0.21.4",
+        "@esbuild/linux-riscv64": "0.21.4",
+        "@esbuild/linux-s390x": "0.21.4",
+        "@esbuild/linux-x64": "0.21.4",
+        "@esbuild/netbsd-x64": "0.21.4",
+        "@esbuild/openbsd-x64": "0.21.4",
+        "@esbuild/sunos-x64": "0.21.4",
+        "@esbuild/win32-arm64": "0.21.4",
+        "@esbuild/win32-ia32": "0.21.4",
+        "@esbuild/win32-x64": "0.21.4"
       }
     },
     "node_modules/esbuild-node-externals": {
@@ -1649,58 +1649,58 @@
       }
     },
     "node_modules/esbuild-plugin-entry-chunks": {
-      "version": "0.1.14",
-      "resolved": "https://registry.npmjs.org/esbuild-plugin-entry-chunks/-/esbuild-plugin-entry-chunks-0.1.14.tgz",
-      "integrity": "sha512-qKX5U0xZugLlU3wWQQRmbxYAWc+YUAGQnkVHjSeFcaK6WsZ/pTPAjcowdGs99JMOq5El6bupOSzm8v3dLFx4Hw==",
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/esbuild-plugin-entry-chunks/-/esbuild-plugin-entry-chunks-0.1.15.tgz",
+      "integrity": "sha512-ghhbmzYU+yc+8IfSFXu+S1OW1sZUlYkwqhM2rUGpC5Ugw/upNu0J0njx+hSm6xqCowvH5kRyv3ZYe3GMk3ebeQ==",
       "dev": true,
       "dependencies": {
         "depseek": "0.4.1",
-        "esbuild-plugin-utils": "0.0.1"
+        "esbuild-plugin-utils": "0.1.0"
       },
       "peerDependencies": {
         "esbuild": ">=0.19.0"
       }
     },
     "node_modules/esbuild-plugin-extract-helpers": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/esbuild-plugin-extract-helpers/-/esbuild-plugin-extract-helpers-0.0.5.tgz",
-      "integrity": "sha512-kzTvoEpd+P3fgJWS4TiVTWSirONwIYYk4iMp7UeBYJzD4ncGvlRmDTlwrbX5ZwP0uP/IxkjNJp8X7TJHK5dQvQ==",
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/esbuild-plugin-extract-helpers/-/esbuild-plugin-extract-helpers-0.0.6.tgz",
+      "integrity": "sha512-N3qPM3heSf6O5t5cPWfYCFnztzv/XYfxq6wbZtkjMEF2mcjRtbqRBsdTWadcvYrSgTfrz7YA7NyejStEZApcgg==",
       "dev": true,
       "dependencies": {
-        "esbuild-plugin-utils": "0.0.1"
+        "esbuild-plugin-utils": "0.1.0"
       },
       "peerDependencies": {
         "esbuild": ">=0.19.0"
       }
     },
     "node_modules/esbuild-plugin-hybrid-export": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/esbuild-plugin-hybrid-export/-/esbuild-plugin-hybrid-export-0.2.3.tgz",
-      "integrity": "sha512-cs1bTHqbgcdxoMM+66m7yd4USXnWClPFzq4HJN3vByLI5GJm7vmjuF7i/vV3D+KOUuYSCb6BxA8t7ltCTqR/QA==",
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/esbuild-plugin-hybrid-export/-/esbuild-plugin-hybrid-export-0.2.4.tgz",
+      "integrity": "sha512-yEoB3A7JgQWhR+xa8wy/LWhZxagL6oFnviUl+H7j2uMNHmZm9h4HmjPCTre4cRtSH30Cppb36ojy/WVpoZpqng==",
       "dev": true,
       "dependencies": {
-        "esbuild-plugin-utils": "0.0.1"
+        "esbuild-plugin-utils": "0.1.0"
       },
       "peerDependencies": {
         "esbuild": ">=0.19.0"
       }
     },
     "node_modules/esbuild-plugin-transform-hook": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/esbuild-plugin-transform-hook/-/esbuild-plugin-transform-hook-0.1.0.tgz",
-      "integrity": "sha512-n2WIDwHj9pg2fYK+Dnflj5EqDhRhp5tuM32uUmCQB/4lJRvz/GmXo7TTMg+KlxDUOmwJsnyk/P/RbIRj2CLPug==",
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/esbuild-plugin-transform-hook/-/esbuild-plugin-transform-hook-0.1.1.tgz",
+      "integrity": "sha512-kC8wGz4ry69Hzsh0h72jUpvC0iQiD269X9EvDp3gRY/dcu6AxTpGN2hjaxOYp0TEYNo7JeZcaEJ17Wnn53tzWA==",
       "dev": true,
       "dependencies": {
-        "esbuild-plugin-utils": "0.0.1"
+        "esbuild-plugin-utils": "0.1.0"
       },
       "peerDependencies": {
         "esbuild": ">=0.19.0"
       }
     },
     "node_modules/esbuild-plugin-utils": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/esbuild-plugin-utils/-/esbuild-plugin-utils-0.0.1.tgz",
-      "integrity": "sha512-LKdHss3Sdc+yu3tYIKb67Xvrub3AwQu+qdvmEFJWeSbTd6ulbiQxZavSkiSwwYXmLyg6Sdgc2inoaG743R+0cQ==",
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/esbuild-plugin-utils/-/esbuild-plugin-utils-0.1.0.tgz",
+      "integrity": "sha512-WZ8jJ/T8HCs7EVoisKlFszikn8ucafm4q4mkXAgPh2wEk1d/5eGvCldOGQrTs2ti3SP6lRrnMqr3Hkz7iEgvcw==",
       "dev": true,
       "peerDependencies": {
         "esbuild": ">=0.19.0"
@@ -4185,9 +4185,9 @@
       "dev": true
     },
     "node_modules/tsx": {
-      "version": "4.10.5",
-      "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.10.5.tgz",
-      "integrity": "sha512-twDSbf7Gtea4I2copqovUiNTEDrT8XNFXsuHpfGbdpW/z9ZW4fTghzzhAG0WfrCuJmJiOEY1nLIjq4u3oujRWQ==",
+      "version": "4.11.0",
+      "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.11.0.tgz",
+      "integrity": "sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==",
       "dev": true,
       "dependencies": {
         "esbuild": "~0.20.2",
package.json
@@ -100,13 +100,13 @@
     "create-require": "^1.1.1",
     "depseek": "^0.4.1",
     "dts-bundle-generator": "^9.5.1",
-    "esbuild": "^0.21.3",
+    "esbuild": "^0.21.4",
     "esbuild-node-externals": "^1.13.1",
-    "esbuild-plugin-entry-chunks": "^0.1.14",
-    "esbuild-plugin-extract-helpers": "^0.0.5",
-    "esbuild-plugin-hybrid-export": "^0.2.3",
-    "esbuild-plugin-transform-hook": "^0.1.0",
-    "esbuild-plugin-utils": "^0.0.1",
+    "esbuild-plugin-entry-chunks": "^0.1.15",
+    "esbuild-plugin-extract-helpers": "^0.0.6",
+    "esbuild-plugin-hybrid-export": "^0.2.4",
+    "esbuild-plugin-transform-hook": "^0.1.1",
+    "esbuild-plugin-utils": "^0.1.0",
     "fs-extra": "^11.2.0",
     "fx": "*",
     "globby": "^14.0.1",
@@ -117,7 +117,7 @@
     "prettier": "^3.2.5",
     "ts-node": "^10.9.2",
     "tsd": "^0.31.0",
-    "tsx": "^4.10.5",
+    "tsx": "^4.11.0",
     "typescript": "^5.4.5",
     "which": "^4.0.0",
     "yaml": "^2.4.2",