From f9bae6761aa348ce8dcb9e9519edad2e75943682 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Fri, 20 Mar 2026 04:04:45 -0700 Subject: [PATCH 1/4] feat: add secure-exec custom provider benchmark --- .github/workflows/benchmarks.yml | 1 + package-lock.json | 1576 +++++++++++++++++++++++++-- package.json | 4 +- src/benchmark.ts | 2 +- src/concurrent.ts | 2 +- src/custom-providers/secure-exec.ts | 41 + src/providers.ts | 3 + src/staggered.ts | 2 +- 8 files changed, 1535 insertions(+), 96 deletions(-) create mode 100644 src/custom-providers/secure-exec.ts diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 9340b11..ac3a934 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -40,6 +40,7 @@ jobs: fail-fast: false matrix: provider: + - secure-exec - e2b - daytona - blaxel diff --git a/package-lock.json b/package-lock.json index b72af4f..dd29c82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,8 @@ "@computesdk/sprites": "^0.1.1", "@computesdk/vercel": "^1.7.13", "computesdk": "^2.2.1", - "dotenv": "^17.2.1" + "dotenv": "^17.2.1", + "secure-exec": "0.1.1-rc.3" }, "devDependencies": { "@types/node": "^20.0.0", @@ -1447,7 +1448,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1464,7 +1464,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1481,7 +1480,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1498,7 +1496,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1515,7 +1512,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1532,7 +1528,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1549,7 +1544,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1566,7 +1560,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1583,7 +1576,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1600,7 +1592,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1617,7 +1608,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1634,7 +1624,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1651,7 +1640,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1668,7 +1656,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1685,7 +1672,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1702,7 +1688,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1719,7 +1704,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1736,7 +1720,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1753,7 +1736,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1770,7 +1752,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1787,7 +1768,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1804,7 +1784,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1821,7 +1800,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1838,7 +1816,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1855,7 +1832,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1872,7 +1848,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2173,6 +2148,41 @@ "node": ">=18.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@js-sdsl/ordered-map": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", @@ -5263,6 +5273,205 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, + "node_modules/@secure-exec/browser": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/browser/-/browser-0.1.1-rc.3.tgz", + "integrity": "sha512-syjym68632Yzba6Uu9tfnd2KGHTHoiOMTg3hnYRxs4t2RrTfzKm3fWOBVmOZHaZT7ECMCItXerDfYmH05tbHDg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@secure-exec/core": "0.1.1-rc.3", + "sucrase": "^3.35.0" + } + }, + "node_modules/@secure-exec/core": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/core/-/core-0.1.1-rc.3.tgz", + "integrity": "sha512-YszbLCeTSgaouYJFW7q8PtctAVtG0Ry9+eQn+joqyB4fPhegtU6xYV1EXwYEYDBEHXscYaHEPJEp9mUw8fEr8A==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^6.0.3", + "esbuild": "^0.27.1", + "node-stdlib-browser": "^1.3.1", + "sucrase": "^3.35.0", + "text-encoding-utf-8": "^1.0.2", + "whatwg-url": "^15.1.0" + } + }, + "node_modules/@secure-exec/core/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@secure-exec/core/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@secure-exec/core/node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@secure-exec/core/node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/@secure-exec/core/node_modules/whatwg-url": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "license": "MIT", + "dependencies": { + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@secure-exec/node": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/node/-/node-0.1.1-rc.3.tgz", + "integrity": "sha512-wKv49YJLKCy5IInP2DsC4yOEF+ILyDx37wimHkH3dbxZitY59Nn3xhVVlEWCsZrB5+wxa2cAzJyCIurgZnX9BA==", + "license": "Apache-2.0", + "dependencies": { + "@secure-exec/core": "0.1.1-rc.3", + "@secure-exec/v8": "0.1.1-rc.3", + "esbuild": "^0.27.1", + "isolated-vm": "^6.0.0", + "node-stdlib-browser": "^1.3.1" + } + }, + "node_modules/@secure-exec/python": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/python/-/python-0.1.1-rc.3.tgz", + "integrity": "sha512-9w5IIETyQsOdGk7IrNKW+rs9H1BjAyvyKwpxMICixbePaepnHghVv7Wr2XTnVCZCAKDS23yNYyingJzbobcdUw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@secure-exec/core": "0.1.1-rc.3", + "pyodide": "^0.28.3" + } + }, + "node_modules/@secure-exec/v8": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8/-/v8-0.1.1-rc.3.tgz", + "integrity": "sha512-cOwrcHUFhGRyEHYFvZaowou73yOa76hdwka8GOsNUhP6BCD2fRBferFyILWJa/SiW/6qeYtdJ9oVzuNgQmRdKg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optionalDependencies": { + "@secure-exec/v8-darwin-arm64": "0.1.1-rc.3", + "@secure-exec/v8-darwin-x64": "0.1.1-rc.3", + "@secure-exec/v8-linux-arm64-gnu": "0.1.1-rc.3", + "@secure-exec/v8-linux-x64-gnu": "0.1.1-rc.3", + "@secure-exec/v8-win32-x64": "0.1.1-rc.3" + } + }, + "node_modules/@secure-exec/v8-darwin-arm64": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8-darwin-arm64/-/v8-darwin-arm64-0.1.1-rc.3.tgz", + "integrity": "sha512-k8dYMlnFq+dvTgpEuY4oOtHmMZX2UT6o/TaI+yeFjKyepdbdEhyr6g6pPeaYjUKQY1Ysf6sqMwg5Ah3I2f5f3A==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@secure-exec/v8-darwin-x64": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8-darwin-x64/-/v8-darwin-x64-0.1.1-rc.3.tgz", + "integrity": "sha512-MGRB9tLeQlvMppYd4CydTpYEaBQNxm+pnfyBhp+EKYaYskN9I3XtlPJLtCjdrQugnGaBRXjbV0V+GgcYHxbdzg==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@secure-exec/v8-linux-arm64-gnu": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8-linux-arm64-gnu/-/v8-linux-arm64-gnu-0.1.1-rc.3.tgz", + "integrity": "sha512-HGz59p6872sP0UL3XZxrATNA4Sm54146Y7Ngzus0h1xRkxlJ01UV3iAZ5dio/AnhsoSHbZtRkb79GRG9vaiNww==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@secure-exec/v8-linux-x64-gnu": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8-linux-x64-gnu/-/v8-linux-x64-gnu-0.1.1-rc.3.tgz", + "integrity": "sha512-V5VeZm6batxepB58JmYSu5ygGx71g3VrnISDrCzhgg2Lw3A2n71sxdE2TQ30pvGCM2q2Ev5Nqm9XT+GXm7c+2A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@secure-exec/v8-win32-x64": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/@secure-exec/v8-win32-x64/-/v8-win32-x64-0.1.1-rc.3.tgz", + "integrity": "sha512-UYs/FzmJrUdzIxVmZ7tlpxSttvflSflJteSaU0S8V4AzOpQIJ5D7IcWVJ52c1iwJQ3mjSOlP7MqNbyF7h05y3A==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sentry/core": { "version": "9.47.1", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.47.1.tgz", @@ -6646,6 +6855,12 @@ "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", "license": "MIT" }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -6786,6 +7001,36 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -7022,6 +7267,12 @@ "node": ">=0.8.0" } }, + "node_modules/bn.js": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", + "license": "MIT" + }, "node_modules/body-parser": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", @@ -7082,87 +7333,236 @@ "integrity": "sha512-wbMxoJJM1p3+6G7xEFXYNCJ30h2qkwmVxebkbwIl4OcnWtno5R3UT9VuYLfStlVNAQCmRjkGwjPFdfaPd4iNXw==", "license": "MIT" }, - "node_modules/buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "license": "MIT", "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "resolve": "^1.17.0" } }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "license": "MIT", - "engines": { - "node": ">=8.0.0" + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "engines": { - "node": ">=0.2.0" + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/bufferutil": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", - "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", - "hasInstallScript": true, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "license": "MIT", - "optional": true, "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "license": "MIT", "dependencies": { - "run-applescript": "^7.0.0" + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/browserify-sign": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "license": "ISC", "dependencies": { - "streamsearch": "^1.1.0" + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=10.16.0" + "node": ">= 0.10" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "node_modules/c12": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.3.tgz", - "integrity": "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==", - "license": "MIT", + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/bufferutil": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", + "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c12": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.3.tgz", + "integrity": "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==", + "license": "MIT", "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.2", @@ -7319,6 +7719,20 @@ "node": ">=18" } }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/citty": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", @@ -7710,6 +8124,17 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "license": "MIT" + }, "node_modules/content-disposition": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", @@ -7856,6 +8281,55 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -7870,6 +8344,32 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", @@ -7989,6 +8489,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", @@ -8013,6 +8530,16 @@ "node": ">= 0.8" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", @@ -8038,6 +8565,23 @@ "node": ">=0.3.1" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/dockerfile-ast": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.7.1.tgz", @@ -8051,6 +8595,18 @@ "node": "*" } }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/dotenv": { "version": "17.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", @@ -8217,6 +8773,27 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -8313,7 +8890,6 @@ "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -8468,6 +9044,16 @@ "node": ">=18.0.0" } }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -8701,6 +9287,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -9090,6 +9692,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -9108,6 +9733,17 @@ "integrity": "sha512-U7VYImCTcPoY27TSmzoiFsmWLEqQFaYNdpsPb9K0dXJhE6kufUqycaz51oR09CW85dDU9iWyy7At8M+p7hb3NQ==", "license": "MIT" }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -9150,6 +9786,12 @@ "url": "https://opencollective.com/express" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "license": "MIT" + }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -9383,7 +10025,6 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", - "optional": true, "dependencies": { "hasown": "^2.0.2" }, @@ -9521,6 +10162,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -9632,7 +10289,29 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, - "node_modules/isomorphic-ws": { + "node_modules/isolated-vm": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/isolated-vm/-/isolated-vm-6.1.2.tgz", + "integrity": "sha512-GGfsHqtlZiiurZaxB/3kY7LLAXR3sgzDul0fom4cSyBjx6ZbjpTrFWiH3z/nUfLJGJ8PIq9LQmQFiAxu24+I7A==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "node-gyp-build": "^4.8.4" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/isomorphic-ws": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", @@ -9806,6 +10485,27 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.23", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", @@ -9922,6 +10622,17 @@ "node": ">= 0.4" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", @@ -9982,6 +10693,25 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -10041,6 +10771,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, "node_modules/minimatch": { "version": "9.0.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", @@ -10129,6 +10871,17 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/napi-build-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", @@ -10248,7 +11001,6 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", - "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -10292,6 +11044,91 @@ "url": "https://github.com/sponsors/oorabona" } }, + "node_modules/node-stdlib-browser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.12.1", + "domain-browser": "4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.4", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/node-stdlib-browser/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-stdlib-browser/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/nopt": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", @@ -10357,6 +11194,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ohash": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", @@ -10574,6 +11456,12 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "license": "MIT" + }, "node_modules/os-paths": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/os-paths/-/os-paths-4.4.0.tgz", @@ -10583,18 +11471,70 @@ "node": ">= 6.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/papaparse": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz", "integrity": "sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==", "license": "MIT" }, + "node_modules/parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -10632,6 +11572,21 @@ "util": "^0.10.3" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -10645,8 +11600,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", @@ -10695,6 +11649,23 @@ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "license": "MIT" }, + "node_modules/pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/perfect-debounce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", @@ -10773,6 +11744,15 @@ "node": ">=0.4.0" } }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/pkce-challenge": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", @@ -10782,6 +11762,18 @@ "node": ">=16.20.0" } }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/pkg-types": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", @@ -10954,6 +11946,26 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/pump": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", @@ -10965,6 +11977,25 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, + "node_modules/pyodide": { + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/pyodide/-/pyodide-0.28.3.tgz", + "integrity": "sha512-rtCsyTU55oNGpLzSVuAd55ZvruJDEX8o6keSdWKN9jPeBVSNlynaKFG7eRqkiIgU7i2M6HEgYtm0atCEQX3u4A==", + "license": "MPL-2.0", + "optional": true, + "dependencies": { + "ws": "^8.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/qs": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", @@ -10980,6 +12011,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11000,6 +12039,25 @@ ], "license": "MIT" }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -11200,7 +12258,6 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "license": "MIT", - "optional": true, "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", @@ -11267,6 +12324,76 @@ "node": ">=0.10.0" } }, + "node_modules/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ripemd160/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ripemd160/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -11376,6 +12503,20 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/secure-exec": { + "version": "0.1.1-rc.3", + "resolved": "https://registry.npmjs.org/secure-exec/-/secure-exec-0.1.1-rc.3.tgz", + "integrity": "sha512-QaDWFr+7cNGYiAibGtZNW8H1EWIxRNCbU/qYqyxv0FHbaVYLrkII7/9vDfVpvfFLmBpSzAi31g7WEv7VquYiWw==", + "license": "Apache-2.0", + "dependencies": { + "@secure-exec/core": "0.1.1-rc.3", + "@secure-exec/node": "0.1.1-rc.3" + }, + "optionalDependencies": { + "@secure-exec/browser": "0.1.1-rc.3", + "@secure-exec/python": "0.1.1-rc.3" + } + }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -11450,12 +12591,38 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11748,6 +12915,41 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -11934,6 +13136,37 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11964,7 +13197,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" }, @@ -12099,6 +13331,44 @@ "b4a": "^1.6.4" } }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tinyexec": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", @@ -12108,6 +13378,72 @@ "node": ">=18" } }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12165,6 +13501,12 @@ "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==", "license": "MIT" }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -12191,6 +13533,12 @@ "fsevents": "~2.3.3" } }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "license": "MIT" + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -12242,6 +13590,20 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -12291,6 +13653,19 @@ "node": ">= 0.8" } }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/utf-8-validate": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.6.tgz", @@ -12355,6 +13730,12 @@ "node": ">= 0.8" } }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "license": "MIT" + }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", @@ -12720,7 +14101,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "license": "MIT", - "optional": true, "engines": { "node": ">=0.4" } @@ -12785,6 +14165,18 @@ "node": ">=12" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/yoga-layout": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz", diff --git a/package.json b/package.json index 4edb6de..70fcf27 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "bench:runloop": "tsx src/run.ts --provider runloop", "bench:vercel": "tsx src/run.ts --provider vercel", "bench:just-bash": "tsx src/run.ts --provider just-bash", + "bench:secure-exec": "tsx src/run.ts --provider secure-exec", "bench:sprites": "tsx src/run.ts --provider sprites", "update-readme": "tsx src/update-readme.ts", "generate-svg": "tsx src/generate-svg.ts", @@ -42,7 +43,8 @@ "@computesdk/sprites": "^0.1.1", "@computesdk/vercel": "^1.7.13", "computesdk": "^2.2.1", - "dotenv": "^17.2.1" + "dotenv": "^17.2.1", + "secure-exec": "0.1.1-rc.3" }, "devDependencies": { "@types/node": "^20.0.0", diff --git a/src/benchmark.ts b/src/benchmark.ts index 3418d01..3d9e9b7 100644 --- a/src/benchmark.ts +++ b/src/benchmark.ts @@ -43,7 +43,7 @@ export async function runBenchmark(config: ProviderConfig): Promise { + const runtime = new NodeRuntime({ + systemDriver, + runtimeDriverFactory, + }); + + return { + runCommand: async () => { + await runtime.run("export const x = 1;"); + return { exitCode: 0 }; + }, + destroy: async () => { + runtime.dispose(); + }, + }; + }, + }, + }; +} + +export const secureExecProvider: ProviderConfig = { + name: 'secure-exec', + requiredEnvVars: [], + createCompute: createSecureExecCompute, +}; diff --git a/src/providers.ts b/src/providers.ts index 21bb47b..800f5ac 100644 --- a/src/providers.ts +++ b/src/providers.ts @@ -11,6 +11,7 @@ import { namespace } from '@computesdk/namespace'; import { cloudflare } from '@computesdk/cloudflare'; import { sprites } from '@computesdk/sprites'; import { compute } from 'computesdk'; +import { secureExecProvider } from './custom-providers/secure-exec.js'; import type { ProviderConfig } from './types.js'; /** @@ -20,6 +21,8 @@ import type { ProviderConfig } from './types.js'; * Automatic mode providers route through the ComputeSDK gateway (requires COMPUTESDK_API_KEY). */ export const providers: ProviderConfig[] = [ + // --- Custom providers --- + secureExecProvider, // --- Direct mode (provider SDK packages) --- { name: 'e2b', diff --git a/src/staggered.ts b/src/staggered.ts index 0186aea..53142ce 100644 --- a/src/staggered.ts +++ b/src/staggered.ts @@ -27,7 +27,7 @@ export async function runStaggeredBenchmark(config: StaggeredConfig): Promise Date: Sat, 21 Mar 2026 02:43:02 -0700 Subject: [PATCH 2/4] feat: use singleton V8 runtime for secure-exec benchmarks Shared createNodeV8Runtime() across all sandbox creates. 100 iterations: median 0ms, p99 10ms, 100% success. --- results/sequential_tti/2026-03-21.json | 329 +++ results/sequential_tti/latest.json | 3461 +----------------------- src/custom-providers/secure-exec.ts | 21 +- 3 files changed, 455 insertions(+), 3356 deletions(-) create mode 100644 results/sequential_tti/2026-03-21.json diff --git a/results/sequential_tti/2026-03-21.json b/results/sequential_tti/2026-03-21.json new file mode 100644 index 0000000..3adc48d --- /dev/null +++ b/results/sequential_tti/2026-03-21.json @@ -0,0 +1,329 @@ +{ + "version": "1.1", + "timestamp": "2026-03-21T09:31:18.137Z", + "environment": { + "node": "v24.13.0", + "platform": "linux", + "arch": "x64" + }, + "config": { + "iterations": 100, + "timeoutMs": 120000 + }, + "results": [ + { + "provider": "secure-exec", + "iterations": [ + { + "ttiMs": 78.06 + }, + { + "ttiMs": 4.68 + }, + { + "ttiMs": 4.91 + }, + { + "ttiMs": 4.16 + }, + { + "ttiMs": 4.13 + }, + { + "ttiMs": 4.22 + }, + { + "ttiMs": 4.03 + }, + { + "ttiMs": 4.26 + }, + { + "ttiMs": 4.13 + }, + { + "ttiMs": 4.33 + }, + { + "ttiMs": 4.01 + }, + { + "ttiMs": 3.99 + }, + { + "ttiMs": 4.08 + }, + { + "ttiMs": 3.88 + }, + { + "ttiMs": 3.91 + }, + { + "ttiMs": 3.91 + }, + { + "ttiMs": 3.91 + }, + { + "ttiMs": 3.91 + }, + { + "ttiMs": 4.48 + }, + { + "ttiMs": 5.06 + }, + { + "ttiMs": 7.41 + }, + { + "ttiMs": 4.01 + }, + { + "ttiMs": 3.41 + }, + { + "ttiMs": 3.46 + }, + { + "ttiMs": 3.51 + }, + { + "ttiMs": 3.41 + }, + { + "ttiMs": 3.79 + }, + { + "ttiMs": 3.98 + }, + { + "ttiMs": 3.64 + }, + { + "ttiMs": 3.5 + }, + { + "ttiMs": 3.47 + }, + { + "ttiMs": 3.55 + }, + { + "ttiMs": 3.54 + }, + { + "ttiMs": 3.6 + }, + { + "ttiMs": 3.32 + }, + { + "ttiMs": 3.46 + }, + { + "ttiMs": 3.47 + }, + { + "ttiMs": 3.4 + }, + { + "ttiMs": 3.46 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.46 + }, + { + "ttiMs": 3.59 + }, + { + "ttiMs": 4.71 + }, + { + "ttiMs": 4.56 + }, + { + "ttiMs": 7.35 + }, + { + "ttiMs": 4.53 + }, + { + "ttiMs": 3.43 + }, + { + "ttiMs": 3.36 + }, + { + "ttiMs": 3.41 + }, + { + "ttiMs": 3.38 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.38 + }, + { + "ttiMs": 3.5 + }, + { + "ttiMs": 3.55 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.47 + }, + { + "ttiMs": 3.49 + }, + { + "ttiMs": 3.69 + }, + { + "ttiMs": 3.54 + }, + { + "ttiMs": 3.39 + }, + { + "ttiMs": 3.51 + }, + { + "ttiMs": 3.54 + }, + { + "ttiMs": 3.54 + }, + { + "ttiMs": 3.43 + }, + { + "ttiMs": 3.65 + }, + { + "ttiMs": 4.6 + }, + { + "ttiMs": 4.04 + }, + { + "ttiMs": 5.99 + }, + { + "ttiMs": 4.66 + }, + { + "ttiMs": 3.51 + }, + { + "ttiMs": 3.39 + }, + { + "ttiMs": 3.51 + }, + { + "ttiMs": 3.61 + }, + { + "ttiMs": 3.66 + }, + { + "ttiMs": 3.73 + }, + { + "ttiMs": 3.55 + }, + { + "ttiMs": 3.69 + }, + { + "ttiMs": 3.59 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.57 + }, + { + "ttiMs": 3.57 + }, + { + "ttiMs": 3.5 + }, + { + "ttiMs": 3.62 + }, + { + "ttiMs": 3.53 + }, + { + "ttiMs": 3.84 + }, + { + "ttiMs": 3.39 + }, + { + "ttiMs": 3.48 + }, + { + "ttiMs": 3.45 + }, + { + "ttiMs": 3.37 + }, + { + "ttiMs": 3.86 + }, + { + "ttiMs": 3.8 + }, + { + "ttiMs": 6.33 + }, + { + "ttiMs": 5.71 + }, + { + "ttiMs": 3.47 + }, + { + "ttiMs": 3.4 + }, + { + "ttiMs": 3.42 + }, + { + "ttiMs": 3.66 + }, + { + "ttiMs": 3.42 + }, + { + "ttiMs": 3.94 + } + ], + "summary": { + "ttiMs": { + "median": 3.58, + "p95": 4.68, + "p99": 5.71 + } + }, + "compositeScore": 99.96, + "successRate": 1 + } + ] +} \ No newline at end of file diff --git a/results/sequential_tti/latest.json b/results/sequential_tti/latest.json index f6c0c52..3adc48d 100644 --- a/results/sequential_tti/latest.json +++ b/results/sequential_tti/latest.json @@ -1,8 +1,8 @@ { "version": "1.1", - "timestamp": "2026-03-19T00:47:02.232Z", + "timestamp": "2026-03-21T09:31:18.137Z", "environment": { - "node": "v24.14.0", + "node": "v24.13.0", "platform": "linux", "arch": "x64" }, @@ -12,3565 +12,318 @@ }, "results": [ { - "provider": "blaxel", + "provider": "secure-exec", "iterations": [ { - "ttiMs": 1228.04 + "ttiMs": 78.06 }, { - "ttiMs": 1078.27 + "ttiMs": 4.68 }, { - "ttiMs": 1041.45 + "ttiMs": 4.91 }, { - "ttiMs": 993.32 + "ttiMs": 4.16 }, { - "ttiMs": 979.38 + "ttiMs": 4.13 }, { - "ttiMs": 1029.93 + "ttiMs": 4.22 }, { - "ttiMs": 985.59 + "ttiMs": 4.03 }, { - "ttiMs": 957.23 + "ttiMs": 4.26 }, { - "ttiMs": 1057.14 + "ttiMs": 4.13 }, { - "ttiMs": 976.7 + "ttiMs": 4.33 }, { - "ttiMs": 1022.06 + "ttiMs": 4.01 }, { - "ttiMs": 987.01 + "ttiMs": 3.99 }, { - "ttiMs": 995.53 + "ttiMs": 4.08 }, { - "ttiMs": 1218.91 + "ttiMs": 3.88 }, { - "ttiMs": 1056.61 + "ttiMs": 3.91 }, { - "ttiMs": 987.56 + "ttiMs": 3.91 }, { - "ttiMs": 967.46 + "ttiMs": 3.91 }, { - "ttiMs": 993.84 + "ttiMs": 3.91 }, { - "ttiMs": 1047.62 + "ttiMs": 4.48 }, { - "ttiMs": 1030.73 + "ttiMs": 5.06 }, { - "ttiMs": 1043.66 + "ttiMs": 7.41 }, { - "ttiMs": 1001.29 + "ttiMs": 4.01 }, { - "ttiMs": 985.38 + "ttiMs": 3.41 }, { - "ttiMs": 1102.26 + "ttiMs": 3.46 }, { - "ttiMs": 1312.58 + "ttiMs": 3.51 }, { - "ttiMs": 1011.76 + "ttiMs": 3.41 }, { - "ttiMs": 1033.61 + "ttiMs": 3.79 }, { - "ttiMs": 1034.32 + "ttiMs": 3.98 }, { - "ttiMs": 1085.7 + "ttiMs": 3.64 }, { - "ttiMs": 971.75 + "ttiMs": 3.5 }, { - "ttiMs": 1015.55 + "ttiMs": 3.47 }, { - "ttiMs": 1046.11 + "ttiMs": 3.55 }, { - "ttiMs": 944.26 + "ttiMs": 3.54 }, { - "ttiMs": 1050.51 + "ttiMs": 3.6 }, { - "ttiMs": 973.93 + "ttiMs": 3.32 }, { - "ttiMs": 952.07 + "ttiMs": 3.46 }, { - "ttiMs": 985.29 + "ttiMs": 3.47 }, { - "ttiMs": 963.87 + "ttiMs": 3.4 }, { - "ttiMs": 941.51 + "ttiMs": 3.46 }, { - "ttiMs": 970.08 + "ttiMs": 3.53 }, { - "ttiMs": 977.4 + "ttiMs": 3.46 }, { - "ttiMs": 1022.97 + "ttiMs": 3.59 }, { - "ttiMs": 994.75 + "ttiMs": 4.71 }, { - "ttiMs": 991.83 + "ttiMs": 4.56 }, { - "ttiMs": 960.54 + "ttiMs": 7.35 }, { - "ttiMs": 987.36 + "ttiMs": 4.53 }, { - "ttiMs": 1013.28 + "ttiMs": 3.43 }, { - "ttiMs": 1052.23 + "ttiMs": 3.36 }, { - "ttiMs": 990.06 + "ttiMs": 3.41 }, { - "ttiMs": 997.86 + "ttiMs": 3.38 }, { - "ttiMs": 999.42 + "ttiMs": 3.53 }, { - "ttiMs": 1023.24 + "ttiMs": 3.53 }, { - "ttiMs": 1001.8 + "ttiMs": 3.38 }, { - "ttiMs": 998.39 + "ttiMs": 3.5 }, { - "ttiMs": 953.9 + "ttiMs": 3.55 }, { - "ttiMs": 1061.41 + "ttiMs": 3.53 }, { - "ttiMs": 1015.73 + "ttiMs": 3.47 }, { - "ttiMs": 981.3 + "ttiMs": 3.49 }, { - "ttiMs": 1025.45 + "ttiMs": 3.69 }, { - "ttiMs": 1033.79 + "ttiMs": 3.54 }, { - "ttiMs": 987.96 + "ttiMs": 3.39 }, { - "ttiMs": 1000.98 + "ttiMs": 3.51 }, { - "ttiMs": 976.39 + "ttiMs": 3.54 }, { - "ttiMs": 963.1 + "ttiMs": 3.54 }, { - "ttiMs": 1027.81 + "ttiMs": 3.43 }, { - "ttiMs": 951.73 + "ttiMs": 3.65 }, { - "ttiMs": 979.65 + "ttiMs": 4.6 }, { - "ttiMs": 1138.29 + "ttiMs": 4.04 }, { - "ttiMs": 1024.7 + "ttiMs": 5.99 }, { - "ttiMs": 1055.82 + "ttiMs": 4.66 }, { - "ttiMs": 1065.16 + "ttiMs": 3.51 }, { - "ttiMs": 962.55 + "ttiMs": 3.39 }, { - "ttiMs": 1017.38 + "ttiMs": 3.51 }, { - "ttiMs": 982.46 + "ttiMs": 3.61 }, { - "ttiMs": 955.38 + "ttiMs": 3.66 }, { - "ttiMs": 971.4 + "ttiMs": 3.73 }, { - "ttiMs": 1028.64 + "ttiMs": 3.55 }, { - "ttiMs": 1012.42 + "ttiMs": 3.69 }, { - "ttiMs": 1118.9 + "ttiMs": 3.59 }, { - "ttiMs": 1001.34 + "ttiMs": 3.53 }, { - "ttiMs": 1034.59 + "ttiMs": 3.57 }, { - "ttiMs": 996.04 + "ttiMs": 3.57 }, { - "ttiMs": 995.98 + "ttiMs": 3.5 }, { - "ttiMs": 1017.11 + "ttiMs": 3.62 }, { - "ttiMs": 977.36 + "ttiMs": 3.53 }, { - "ttiMs": 1091.46 + "ttiMs": 3.84 }, { - "ttiMs": 1032.42 + "ttiMs": 3.39 }, { - "ttiMs": 978.43 + "ttiMs": 3.48 }, { - "ttiMs": 982.46 + "ttiMs": 3.45 }, { - "ttiMs": 1051.26 + "ttiMs": 3.37 }, { - "ttiMs": 1036.84 + "ttiMs": 3.86 }, { - "ttiMs": 1039.59 + "ttiMs": 3.8 }, { - "ttiMs": 1032.71 + "ttiMs": 6.33 }, { - "ttiMs": 1020.02 + "ttiMs": 5.71 }, { - "ttiMs": 1023.81 + "ttiMs": 3.47 }, { - "ttiMs": 1027.63 + "ttiMs": 3.4 }, { - "ttiMs": 1032.67 + "ttiMs": 3.42 }, { - "ttiMs": 1072.09 + "ttiMs": 3.66 }, { - "ttiMs": 1033.82 + "ttiMs": 3.42 }, { - "ttiMs": 1019.66 + "ttiMs": 3.94 } ], "summary": { "ttiMs": { - "median": 1012.85, - "p95": 1072.09, - "p99": 1102.26 + "median": 3.58, + "p95": 4.68, + "p99": 5.71 } }, - "compositeScore": 89.59, + "compositeScore": 99.96, "successRate": 1 - }, - { - "provider": "cloudflare", - "iterations": [ - { - "ttiMs": 3275.65 - }, - { - "ttiMs": 2134.48 - }, - { - "ttiMs": 2151.5 - }, - { - "ttiMs": 1986.91 - }, - { - "ttiMs": 1834.97 - }, - { - "ttiMs": 2172.06 - }, - { - "ttiMs": 2047.63 - }, - { - "ttiMs": 2090.78 - }, - { - "ttiMs": 2234.85 - }, - { - "ttiMs": 2066.23 - }, - { - "ttiMs": 2292.37 - }, - { - "ttiMs": 1982.85 - }, - { - "ttiMs": 2103.19 - }, - { - "ttiMs": 3418.94 - }, - { - "ttiMs": 1997.5 - }, - { - "ttiMs": 3097.53 - }, - { - "ttiMs": 2190.92 - }, - { - "ttiMs": 2372.29 - }, - { - "ttiMs": 2238.12 - }, - { - "ttiMs": 1962.9 - }, - { - "ttiMs": 1687.25 - }, - { - "ttiMs": 2062.76 - }, - { - "ttiMs": 2317.62 - }, - { - "ttiMs": 2087.42 - }, - { - "ttiMs": 1847.08 - }, - { - "ttiMs": 3706.42 - }, - { - "ttiMs": 2151.54 - }, - { - "ttiMs": 1806.85 - }, - { - "ttiMs": 1834.92 - }, - { - "ttiMs": 2049.51 - }, - { - "ttiMs": 2176.92 - }, - { - "ttiMs": 1946.92 - }, - { - "ttiMs": 2508.68 - }, - { - "ttiMs": 2255.56 - }, - { - "ttiMs": 3717.46 - }, - { - "ttiMs": 2001.53 - }, - { - "ttiMs": 1796.86 - }, - { - "ttiMs": 1727.99 - }, - { - "ttiMs": 2778.07 - }, - { - "ttiMs": 1950.96 - }, - { - "ttiMs": 2251 - }, - { - "ttiMs": 1770.69 - }, - { - "ttiMs": 1808.7 - }, - { - "ttiMs": 1942.74 - }, - { - "ttiMs": 2399.14 - }, - { - "ttiMs": 2025.46 - }, - { - "ttiMs": 1800.45 - }, - { - "ttiMs": 1714.75 - }, - { - "ttiMs": 1788.28 - }, - { - "ttiMs": 2035.2 - }, - { - "ttiMs": 2579.69 - }, - { - "ttiMs": 1943.92 - }, - { - "ttiMs": 1754.39 - }, - { - "ttiMs": 2200.25 - }, - { - "ttiMs": 2210.21 - }, - { - "ttiMs": 2035.77 - }, - { - "ttiMs": 1652.6 - }, - { - "ttiMs": 1798.28 - }, - { - "ttiMs": 1936.11 - }, - { - "ttiMs": 1955.25 - }, - { - "ttiMs": 1588.63 - }, - { - "ttiMs": 2275.06 - }, - { - "ttiMs": 1922.01 - }, - { - "ttiMs": 2318.48 - }, - { - "ttiMs": 2012.59 - }, - { - "ttiMs": 1965.57 - }, - { - "ttiMs": 1770.35 - }, - { - "ttiMs": 2203.46 - }, - { - "ttiMs": 1661.87 - }, - { - "ttiMs": 3695.07 - }, - { - "ttiMs": 1906.79 - }, - { - "ttiMs": 1817.19 - }, - { - "ttiMs": 2477.17 - }, - { - "ttiMs": 1927.45 - }, - { - "ttiMs": 1939.68 - }, - { - "ttiMs": 1871.11 - }, - { - "ttiMs": 2053.5 - }, - { - "ttiMs": 2271.36 - }, - { - "ttiMs": 2070.95 - }, - { - "ttiMs": 1942.58 - }, - { - "ttiMs": 2101.68 - }, - { - "ttiMs": 1603.81 - }, - { - "ttiMs": 1627.71 - }, - { - "ttiMs": 2172.48 - }, - { - "ttiMs": 1881.03 - }, - { - "ttiMs": 2232.56 - }, - { - "ttiMs": 2367.76 - }, - { - "ttiMs": 1774.8 - }, - { - "ttiMs": 2157.31 - }, - { - "ttiMs": 2031.36 - }, - { - "ttiMs": 2236.98 - }, - { - "ttiMs": 3550.3 - }, - { - "ttiMs": 1857.48 - }, - { - "ttiMs": 1849.35 - }, - { - "ttiMs": 1912.6 - }, - { - "ttiMs": 2223.58 - }, - { - "ttiMs": 2127.11 - }, - { - "ttiMs": 1992.35 - }, - { - "ttiMs": 1907.03 - }, - { - "ttiMs": 1964.53 - } - ], - "summary": { - "ttiMs": { - "median": 2033.28, - "p95": 2508.68, - "p99": 3275.65 - } - }, - "compositeScore": 76.62, - "successRate": 1 - }, - { - "provider": "codesandbox", - "iterations": [ - { - "ttiMs": 2346.17 - }, - { - "ttiMs": 2442.02 - }, - { - "ttiMs": 2287.09 - }, - { - "ttiMs": 2337.03 - }, - { - "ttiMs": 2381.05 - }, - { - "ttiMs": 2520.14 - }, - { - "ttiMs": 2532.16 - }, - { - "ttiMs": 2294.12 - }, - { - "ttiMs": 2192.59 - }, - { - "ttiMs": 2471.51 - }, - { - "ttiMs": 3144.61 - }, - { - "ttiMs": 2816.89 - }, - { - "ttiMs": 2409.43 - }, - { - "ttiMs": 2338.89 - }, - { - "ttiMs": 2990.75 - }, - { - "ttiMs": 2759.73 - }, - { - "ttiMs": 3619.87 - }, - { - "ttiMs": 2272.84 - }, - { - "ttiMs": 2057.45 - }, - { - "ttiMs": 2559.2 - }, - { - "ttiMs": 2134.59 - }, - { - "ttiMs": 2059.82 - }, - { - "ttiMs": 2051.6 - }, - { - "ttiMs": 2329.26 - }, - { - "ttiMs": 2908.31 - }, - { - "ttiMs": 2461.02 - }, - { - "ttiMs": 2139.32 - }, - { - "ttiMs": 1989.01 - }, - { - "ttiMs": 2000.06 - }, - { - "ttiMs": 2362.11 - }, - { - "ttiMs": 2343.91 - }, - { - "ttiMs": 2055.61 - }, - { - "ttiMs": 2149.17 - }, - { - "ttiMs": 2044.53 - }, - { - "ttiMs": 2401.36 - }, - { - "ttiMs": 2256.31 - }, - { - "ttiMs": 2211.2 - }, - { - "ttiMs": 2071.54 - }, - { - "ttiMs": 2557.31 - }, - { - "ttiMs": 2047.08 - }, - { - "ttiMs": 2024.71 - }, - { - "ttiMs": 2071.81 - }, - { - "ttiMs": 2439.74 - }, - { - "ttiMs": 2420.58 - }, - { - "ttiMs": 2074.91 - }, - { - "ttiMs": 2131.03 - }, - { - "ttiMs": 2121.25 - }, - { - "ttiMs": 2193.41 - }, - { - "ttiMs": 2385.09 - }, - { - "ttiMs": 2354.52 - }, - { - "ttiMs": 2388.49 - }, - { - "ttiMs": 2103.19 - }, - { - "ttiMs": 2258.91 - }, - { - "ttiMs": 2451.4 - }, - { - "ttiMs": 2093.05 - }, - { - "ttiMs": 2195.28 - }, - { - "ttiMs": 2260.83 - }, - { - "ttiMs": 2343.85 - }, - { - "ttiMs": 2092.97 - }, - { - "ttiMs": 2389.9 - }, - { - "ttiMs": 2028.8 - }, - { - "ttiMs": 2080.45 - }, - { - "ttiMs": 2084 - }, - { - "ttiMs": 2143.53 - }, - { - "ttiMs": 2345.64 - }, - { - "ttiMs": 2669.86 - }, - { - "ttiMs": 2317.12 - }, - { - "ttiMs": 2008.58 - }, - { - "ttiMs": 2085.34 - }, - { - "ttiMs": 2238.07 - }, - { - "ttiMs": 2301.98 - }, - { - "ttiMs": 2326.28 - }, - { - "ttiMs": 2702.82 - }, - { - "ttiMs": 2196.65 - }, - { - "ttiMs": 2071.51 - }, - { - "ttiMs": 2257.45 - }, - { - "ttiMs": 2209.73 - }, - { - "ttiMs": 2335.44 - }, - { - "ttiMs": 2566.42 - }, - { - "ttiMs": 2231.4 - }, - { - "ttiMs": 2249.21 - }, - { - "ttiMs": 2340.98 - }, - { - "ttiMs": 2364.13 - }, - { - "ttiMs": 2183.53 - }, - { - "ttiMs": 2662.59 - }, - { - "ttiMs": 2494.42 - }, - { - "ttiMs": 2371.53 - }, - { - "ttiMs": 2107.91 - }, - { - "ttiMs": 2330.27 - }, - { - "ttiMs": 2169.99 - }, - { - "ttiMs": 2235.77 - }, - { - "ttiMs": 2404.41 - }, - { - "ttiMs": 2223.5 - }, - { - "ttiMs": 2141.9 - }, - { - "ttiMs": 2338.23 - }, - { - "ttiMs": 2357.84 - }, - { - "ttiMs": 2591.07 - }, - { - "ttiMs": 2136.27 - }, - { - "ttiMs": 2266.9 - }, - { - "ttiMs": 2226.87 - } - ], - "summary": { - "ttiMs": { - "median": 2279.97, - "p95": 2591.07, - "p99": 2759.73 - } - }, - "compositeScore": 75.7, - "successRate": 1 - }, - { - "provider": "daytona", - "iterations": [ - { - "ttiMs": 351.03 - }, - { - "ttiMs": 134.04 - }, - { - "ttiMs": 442.66 - }, - { - "ttiMs": 193.72 - }, - { - "ttiMs": 136.7 - }, - { - "ttiMs": 126.07 - }, - { - "ttiMs": 150.96 - }, - { - "ttiMs": 138.48 - }, - { - "ttiMs": 166.09 - }, - { - "ttiMs": 105.57 - }, - { - "ttiMs": 159.94 - }, - { - "ttiMs": 157.98 - }, - { - "ttiMs": 136.52 - }, - { - "ttiMs": 155.96 - }, - { - "ttiMs": 275.87 - }, - { - "ttiMs": 158.8 - }, - { - "ttiMs": 110.25 - }, - { - "ttiMs": 74.67 - }, - { - "ttiMs": 107.36 - }, - { - "ttiMs": 153.55 - }, - { - "ttiMs": 195.74 - }, - { - "ttiMs": 204.8 - }, - { - "ttiMs": 174.66 - }, - { - "ttiMs": 201.94 - }, - { - "ttiMs": 77.57 - }, - { - "ttiMs": 167 - }, - { - "ttiMs": 415.73 - }, - { - "ttiMs": 423.73 - }, - { - "ttiMs": 327.38 - }, - { - "ttiMs": 150.11 - }, - { - "ttiMs": 172.73 - }, - { - "ttiMs": 77.73 - }, - { - "ttiMs": 88.5 - }, - { - "ttiMs": 75.19 - }, - { - "ttiMs": 141.09 - }, - { - "ttiMs": 69.39 - }, - { - "ttiMs": 316.58 - }, - { - "ttiMs": 182.82 - }, - { - "ttiMs": 131.76 - }, - { - "ttiMs": 297.89 - }, - { - "ttiMs": 162.33 - }, - { - "ttiMs": 165.13 - }, - { - "ttiMs": 171.99 - }, - { - "ttiMs": 276.8 - }, - { - "ttiMs": 284.37 - }, - { - "ttiMs": 470.34 - }, - { - "ttiMs": 165.12 - }, - { - "ttiMs": 217.09 - }, - { - "ttiMs": 80.27 - }, - { - "ttiMs": 367.03 - }, - { - "ttiMs": 308.48 - }, - { - "ttiMs": 86.65 - }, - { - "ttiMs": 271.5 - }, - { - "ttiMs": 118.03 - }, - { - "ttiMs": 375.26 - }, - { - "ttiMs": 233 - }, - { - "ttiMs": 147.98 - }, - { - "ttiMs": 411.84 - }, - { - "ttiMs": 144.47 - }, - { - "ttiMs": 242.2 - }, - { - "ttiMs": 76.87 - }, - { - "ttiMs": 284.76 - }, - { - "ttiMs": 318.96 - }, - { - "ttiMs": 209.59 - }, - { - "ttiMs": 236.24 - }, - { - "ttiMs": 106.57 - }, - { - "ttiMs": 160.68 - }, - { - "ttiMs": 171.02 - }, - { - "ttiMs": 120.2 - }, - { - "ttiMs": 78.42 - }, - { - "ttiMs": 79.85 - }, - { - "ttiMs": 215.1 - }, - { - "ttiMs": 206.3 - }, - { - "ttiMs": 96.83 - }, - { - "ttiMs": 403.08 - }, - { - "ttiMs": 74.13 - }, - { - "ttiMs": 224.91 - }, - { - "ttiMs": 300.62 - }, - { - "ttiMs": 279.4 - }, - { - "ttiMs": 72.28 - }, - { - "ttiMs": 251.75 - }, - { - "ttiMs": 238.25 - }, - { - "ttiMs": 309.12 - }, - { - "ttiMs": 136.4 - }, - { - "ttiMs": 128.66 - }, - { - "ttiMs": 83.18 - }, - { - "ttiMs": 153.29 - }, - { - "ttiMs": 79.81 - }, - { - "ttiMs": 186.66 - }, - { - "ttiMs": 142.05 - }, - { - "ttiMs": 141.92 - }, - { - "ttiMs": 340.64 - }, - { - "ttiMs": 86.28 - }, - { - "ttiMs": 119.24 - }, - { - "ttiMs": 318.07 - }, - { - "ttiMs": 109.6 - }, - { - "ttiMs": 219.96 - }, - { - "ttiMs": 190.22 - }, - { - "ttiMs": 167.03 - }, - { - "ttiMs": 305.18 - } - ], - "summary": { - "ttiMs": { - "median": 165.61, - "p95": 340.64, - "p99": 403.08 - } - }, - "compositeScore": 97.55, - "successRate": 1 - }, - { - "provider": "e2b", - "iterations": [ - { - "ttiMs": 611.36 - }, - { - "ttiMs": 330.93 - }, - { - "ttiMs": 512.03 - }, - { - "ttiMs": 355.99 - }, - { - "ttiMs": 599.48 - }, - { - "ttiMs": 603.1 - }, - { - "ttiMs": 378.73 - }, - { - "ttiMs": 333.25 - }, - { - "ttiMs": 440.19 - }, - { - "ttiMs": 367.93 - }, - { - "ttiMs": 350.7 - }, - { - "ttiMs": 407.05 - }, - { - "ttiMs": 324.27 - }, - { - "ttiMs": 727.54 - }, - { - "ttiMs": 1410.54 - }, - { - "ttiMs": 355.81 - }, - { - "ttiMs": 793.35 - }, - { - "ttiMs": 1011.46 - }, - { - "ttiMs": 360.07 - }, - { - "ttiMs": 554.59 - }, - { - "ttiMs": 327.38 - }, - { - "ttiMs": 453.36 - }, - { - "ttiMs": 499.08 - }, - { - "ttiMs": 343.22 - }, - { - "ttiMs": 351.14 - }, - { - "ttiMs": 309.19 - }, - { - "ttiMs": 329.97 - }, - { - "ttiMs": 360.68 - }, - { - "ttiMs": 350.71 - }, - { - "ttiMs": 435.87 - }, - { - "ttiMs": 331.81 - }, - { - "ttiMs": 325.94 - }, - { - "ttiMs": 339.35 - }, - { - "ttiMs": 538.74 - }, - { - "ttiMs": 689.47 - }, - { - "ttiMs": 1079.08 - }, - { - "ttiMs": 326.19 - }, - { - "ttiMs": 574.39 - }, - { - "ttiMs": 313.62 - }, - { - "ttiMs": 416.45 - }, - { - "ttiMs": 401.59 - }, - { - "ttiMs": 326.85 - }, - { - "ttiMs": 385.1 - }, - { - "ttiMs": 365.3 - }, - { - "ttiMs": 406.01 - }, - { - "ttiMs": 318.95 - }, - { - "ttiMs": 336.33 - }, - { - "ttiMs": 389.83 - }, - { - "ttiMs": 565.78 - }, - { - "ttiMs": 316.44 - }, - { - "ttiMs": 439.3 - }, - { - "ttiMs": 317.11 - }, - { - "ttiMs": 385.02 - }, - { - "ttiMs": 391.8 - }, - { - "ttiMs": 354.9 - }, - { - "ttiMs": 322.15 - }, - { - "ttiMs": 376.42 - }, - { - "ttiMs": 328.17 - }, - { - "ttiMs": 356.44 - }, - { - "ttiMs": 374.12 - }, - { - "ttiMs": 513.89 - }, - { - "ttiMs": 330.92 - }, - { - "ttiMs": 330.05 - }, - { - "ttiMs": 567.03 - }, - { - "ttiMs": 367.94 - }, - { - "ttiMs": 351.49 - }, - { - "ttiMs": 375.56 - }, - { - "ttiMs": 326.95 - }, - { - "ttiMs": 389.34 - }, - { - "ttiMs": 329.9 - }, - { - "ttiMs": 322.07 - }, - { - "ttiMs": 610.12 - }, - { - "ttiMs": 391.66 - }, - { - "ttiMs": 324.9 - }, - { - "ttiMs": 388.31 - }, - { - "ttiMs": 550.19 - }, - { - "ttiMs": 343.95 - }, - { - "ttiMs": 315.44 - }, - { - "ttiMs": 367.09 - }, - { - "ttiMs": 449.87 - }, - { - "ttiMs": 308.55 - }, - { - "ttiMs": 1006.57 - }, - { - "ttiMs": 427.85 - }, - { - "ttiMs": 385.79 - }, - { - "ttiMs": 550.24 - }, - { - "ttiMs": 343.85 - }, - { - "ttiMs": 315.24 - }, - { - "ttiMs": 316.81 - }, - { - "ttiMs": 328.54 - }, - { - "ttiMs": 410.77 - }, - { - "ttiMs": 333.28 - }, - { - "ttiMs": 618.78 - }, - { - "ttiMs": 401.73 - }, - { - "ttiMs": 524.49 - }, - { - "ttiMs": 540.87 - }, - { - "ttiMs": 606.12 - }, - { - "ttiMs": 326.9 - }, - { - "ttiMs": 341.88 - }, - { - "ttiMs": 332.51 - }, - { - "ttiMs": 310.6 - } - ], - "summary": { - "ttiMs": { - "median": 367.93, - "p95": 610.12, - "p99": 727.54 - } - }, - "compositeScore": 95.18, - "successRate": 1 - }, - { - "provider": "hopx", - "iterations": [ - { - "ttiMs": 1564.24 - }, - { - "ttiMs": 1267.4 - }, - { - "ttiMs": 1090.23 - }, - { - "ttiMs": 1022.26 - }, - { - "ttiMs": 979.36 - }, - { - "ttiMs": 1139.33 - }, - { - "ttiMs": 986.83 - }, - { - "ttiMs": 1039.91 - }, - { - "ttiMs": 1034.94 - }, - { - "ttiMs": 1013.01 - }, - { - "ttiMs": 1098.5 - }, - { - "ttiMs": 1062.18 - }, - { - "ttiMs": 987.26 - }, - { - "ttiMs": 964.65 - }, - { - "ttiMs": 1004.36 - }, - { - "ttiMs": 962.26 - }, - { - "ttiMs": 1011.93 - }, - { - "ttiMs": 1015.7 - }, - { - "ttiMs": 985.68 - }, - { - "ttiMs": 1415.73 - }, - { - "ttiMs": 1035.44 - }, - { - "ttiMs": 1005.66 - }, - { - "ttiMs": 1009.49 - }, - { - "ttiMs": 1011.13 - }, - { - "ttiMs": 998.89 - }, - { - "ttiMs": 1072.28 - }, - { - "ttiMs": 982.33 - }, - { - "ttiMs": 1023.69 - }, - { - "ttiMs": 1011.84 - }, - { - "ttiMs": 1056.76 - }, - { - "ttiMs": 1041.59 - }, - { - "ttiMs": 972.31 - }, - { - "ttiMs": 1070.89 - }, - { - "ttiMs": 1332.93 - }, - { - "ttiMs": 999.86 - }, - { - "ttiMs": 1080.59 - }, - { - "ttiMs": 1064.27 - }, - { - "ttiMs": 1077.17 - }, - { - "ttiMs": 1048.7 - }, - { - "ttiMs": 1374.29 - }, - { - "ttiMs": 1070.29 - }, - { - "ttiMs": 1071.46 - }, - { - "ttiMs": 1086.27 - }, - { - "ttiMs": 1075.18 - }, - { - "ttiMs": 998.73 - }, - { - "ttiMs": 1023.38 - }, - { - "ttiMs": 980.38 - }, - { - "ttiMs": 1324.28 - }, - { - "ttiMs": 1086.44 - }, - { - "ttiMs": 1064.72 - }, - { - "ttiMs": 1069.08 - }, - { - "ttiMs": 1097.59 - }, - { - "ttiMs": 1008.33 - }, - { - "ttiMs": 1005.24 - }, - { - "ttiMs": 1304.42 - }, - { - "ttiMs": 1040.26 - }, - { - "ttiMs": 1101.17 - }, - { - "ttiMs": 1038.52 - }, - { - "ttiMs": 1023.04 - }, - { - "ttiMs": 1143.44 - }, - { - "ttiMs": 969.9 - }, - { - "ttiMs": 1009.73 - }, - { - "ttiMs": 1058.07 - }, - { - "ttiMs": 1122.52 - }, - { - "ttiMs": 1007.73 - }, - { - "ttiMs": 1018.68 - }, - { - "ttiMs": 1004.24 - }, - { - "ttiMs": 1003.24 - }, - { - "ttiMs": 1092.92 - }, - { - "ttiMs": 1082.7 - }, - { - "ttiMs": 1066.77 - }, - { - "ttiMs": 1028.07 - }, - { - "ttiMs": 1346.72 - }, - { - "ttiMs": 1389.76 - }, - { - "ttiMs": 1366.4 - }, - { - "ttiMs": 1041.55 - }, - { - "ttiMs": 1026.55 - }, - { - "ttiMs": 1369.45 - }, - { - "ttiMs": 1356.8 - }, - { - "ttiMs": 1260.35 - }, - { - "ttiMs": 1004.83 - }, - { - "ttiMs": 1021.62 - }, - { - "ttiMs": 997.43 - }, - { - "ttiMs": 1026.99 - }, - { - "ttiMs": 1028.31 - }, - { - "ttiMs": 1021.64 - }, - { - "ttiMs": 995.02 - }, - { - "ttiMs": 1032.05 - }, - { - "ttiMs": 1057.64 - }, - { - "ttiMs": 1323.6 - }, - { - "ttiMs": 1059.89 - }, - { - "ttiMs": 1004.77 - }, - { - "ttiMs": 1107.83 - }, - { - "ttiMs": 1338.94 - }, - { - "ttiMs": 1294.22 - }, - { - "ttiMs": 1318.46 - }, - { - "ttiMs": 1020.99 - }, - { - "ttiMs": 1018.12 - }, - { - "ttiMs": 1059.76 - }, - { - "ttiMs": 1060.4 - } - ], - "summary": { - "ttiMs": { - "median": 1040.91, - "p95": 1332.93, - "p99": 1366.4 - } - }, - "compositeScore": 88.37, - "successRate": 1 - }, - { - "provider": "just-bash", - "iterations": [ - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - }, - { - "ttiMs": 0, - "error": "Command failed with exit code 127: bash: node: command not found\n" - } - ], - "summary": { - "ttiMs": { - "median": 0, - "p95": 0, - "p99": 0 - } - }, - "compositeScore": 0, - "successRate": 0, - "skipped": true, - "skipReason": "All iterations failed" - }, - { - "provider": "modal", - "iterations": [ - { - "ttiMs": 2202.9 - }, - { - "ttiMs": 2545.95 - }, - { - "ttiMs": 2257.81 - }, - { - "ttiMs": 3409.37 - }, - { - "ttiMs": 2380.39 - }, - { - "ttiMs": 2415.18 - }, - { - "ttiMs": 2360.26 - }, - { - "ttiMs": 3114.75 - }, - { - "ttiMs": 2192.44 - }, - { - "ttiMs": 2211.29 - }, - { - "ttiMs": 2401.58 - }, - { - "ttiMs": 2209.67 - }, - { - "ttiMs": 1831.88 - }, - { - "ttiMs": 3180.12 - }, - { - "ttiMs": 2393.74 - }, - { - "ttiMs": 2659.37 - }, - { - "ttiMs": 2255.54 - }, - { - "ttiMs": 2270.92 - }, - { - "ttiMs": 1900.49 - }, - { - "ttiMs": 2357.89 - }, - { - "ttiMs": 2342.29 - }, - { - "ttiMs": 2048.87 - }, - { - "ttiMs": 3218.77 - }, - { - "ttiMs": 2546 - }, - { - "ttiMs": 2681.02 - }, - { - "ttiMs": 2259.23 - }, - { - "ttiMs": 2428.56 - }, - { - "ttiMs": 2345.72 - }, - { - "ttiMs": 2329.86 - }, - { - "ttiMs": 2194.84 - }, - { - "ttiMs": 2755.97 - }, - { - "ttiMs": 2391.03 - }, - { - "ttiMs": 2835.34 - }, - { - "ttiMs": 1868.5 - }, - { - "ttiMs": 2682.43 - }, - { - "ttiMs": 2288.41 - }, - { - "ttiMs": 2327.87 - }, - { - "ttiMs": 2398.86 - }, - { - "ttiMs": 2480.98 - }, - { - "ttiMs": 2301.26 - }, - { - "ttiMs": 1937.18 - }, - { - "ttiMs": 2269.28 - }, - { - "ttiMs": 2391.46 - }, - { - "ttiMs": 3566.54 - }, - { - "ttiMs": 2343.96 - }, - { - "ttiMs": 2602.04 - }, - { - "ttiMs": 2365.66 - }, - { - "ttiMs": 2254.98 - }, - { - "ttiMs": 2576.38 - }, - { - "ttiMs": 24391.69 - }, - { - "ttiMs": 2195.37 - }, - { - "ttiMs": 2514.21 - }, - { - "ttiMs": 2568.42 - }, - { - "ttiMs": 2533.26 - }, - { - "ttiMs": 2327.9 - }, - { - "ttiMs": 2621.52 - }, - { - "ttiMs": 2113.13 - }, - { - "ttiMs": 2426.58 - }, - { - "ttiMs": 2286.93 - }, - { - "ttiMs": 2412.39 - }, - { - "ttiMs": 2263.41 - }, - { - "ttiMs": 2580.55 - }, - { - "ttiMs": 2228.18 - }, - { - "ttiMs": 2650.32 - }, - { - "ttiMs": 2464.54 - }, - { - "ttiMs": 2503.81 - }, - { - "ttiMs": 2766.32 - }, - { - "ttiMs": 2564.72 - }, - { - "ttiMs": 2449.31 - }, - { - "ttiMs": 2080.1 - }, - { - "ttiMs": 2463.12 - }, - { - "ttiMs": 2199.09 - }, - { - "ttiMs": 1985.17 - }, - { - "ttiMs": 2133.84 - }, - { - "ttiMs": 1844.24 - }, - { - "ttiMs": 2340.5 - }, - { - "ttiMs": 3343.8 - }, - { - "ttiMs": 2254.79 - }, - { - "ttiMs": 2567.96 - }, - { - "ttiMs": 2120.02 - }, - { - "ttiMs": 2276.34 - }, - { - "ttiMs": 2258.06 - }, - { - "ttiMs": 5549.62 - }, - { - "ttiMs": 2464.76 - }, - { - "ttiMs": 2195.76 - }, - { - "ttiMs": 2275.31 - }, - { - "ttiMs": 3959.82 - }, - { - "ttiMs": 2300.85 - }, - { - "ttiMs": 2129.4 - }, - { - "ttiMs": 2349.04 - }, - { - "ttiMs": 2669.67 - }, - { - "ttiMs": 2722.16 - }, - { - "ttiMs": 2562.17 - }, - { - "ttiMs": 2369.02 - }, - { - "ttiMs": 2410.21 - }, - { - "ttiMs": 2114.67 - }, - { - "ttiMs": 2427.01 - }, - { - "ttiMs": 1353.18 - }, - { - "ttiMs": 3201.14 - }, - { - "ttiMs": 1956.49 - } - ], - "summary": { - "ttiMs": { - "median": 2367.34, - "p95": 3114.75, - "p99": 3343.8 - } - }, - "compositeScore": 72.99, - "successRate": 1 - }, - { - "provider": "namespace", - "iterations": [ - { - "ttiMs": 3105.64 - }, - { - "ttiMs": 1806.35 - }, - { - "ttiMs": 1765.1 - }, - { - "ttiMs": 1818.77 - }, - { - "ttiMs": 1983.27 - }, - { - "ttiMs": 1984.51 - }, - { - "ttiMs": 1877.25 - }, - { - "ttiMs": 1732.14 - }, - { - "ttiMs": 1737.15 - }, - { - "ttiMs": 1865.16 - }, - { - "ttiMs": 1860.21 - }, - { - "ttiMs": 1848.09 - }, - { - "ttiMs": 2018.13 - }, - { - "ttiMs": 1857.65 - }, - { - "ttiMs": 1912.34 - }, - { - "ttiMs": 2374.58 - }, - { - "ttiMs": 1994.29 - }, - { - "ttiMs": 1797.49 - }, - { - "ttiMs": 1897.39 - }, - { - "ttiMs": 1828.88 - }, - { - "ttiMs": 1698.26 - }, - { - "ttiMs": 2201.67 - }, - { - "ttiMs": 1842.6 - }, - { - "ttiMs": 3113.82 - }, - { - "ttiMs": 1976.47 - }, - { - "ttiMs": 2052.28 - }, - { - "ttiMs": 1802.37 - }, - { - "ttiMs": 1735.2 - }, - { - "ttiMs": 1863.94 - }, - { - "ttiMs": 2072.01 - }, - { - "ttiMs": 1936.45 - }, - { - "ttiMs": 1960.34 - }, - { - "ttiMs": 1838.14 - }, - { - "ttiMs": 2210 - }, - { - "ttiMs": 1722.25 - }, - { - "ttiMs": 1758.71 - }, - { - "ttiMs": 2149.03 - }, - { - "ttiMs": 1772.9 - }, - { - "ttiMs": 1997.93 - }, - { - "ttiMs": 2002.09 - }, - { - "ttiMs": 2022.29 - }, - { - "ttiMs": 1961.88 - }, - { - "ttiMs": 1896.53 - }, - { - "ttiMs": 2112.78 - }, - { - "ttiMs": 3561.19 - }, - { - "ttiMs": 2025.5 - }, - { - "ttiMs": 2185.47 - }, - { - "ttiMs": 1984.09 - }, - { - "ttiMs": 2352.88 - }, - { - "ttiMs": 2190.4 - }, - { - "ttiMs": 2143.24 - }, - { - "ttiMs": 2168.24 - }, - { - "ttiMs": 2060.12 - }, - { - "ttiMs": 1958.21 - }, - { - "ttiMs": 2054.87 - }, - { - "ttiMs": 1897.35 - }, - { - "ttiMs": 1984.83 - }, - { - "ttiMs": 1761.7 - }, - { - "ttiMs": 1908.95 - }, - { - "ttiMs": 1865.18 - }, - { - "ttiMs": 2383.6 - }, - { - "ttiMs": 2012.75 - }, - { - "ttiMs": 3072.16 - }, - { - "ttiMs": 1712.98 - }, - { - "ttiMs": 1873.59 - }, - { - "ttiMs": 1955.27 - }, - { - "ttiMs": 2094.31 - }, - { - "ttiMs": 2065.04 - }, - { - "ttiMs": 1852.62 - }, - { - "ttiMs": 1853.21 - }, - { - "ttiMs": 1878.3 - }, - { - "ttiMs": 1860.92 - }, - { - "ttiMs": 1738.39 - }, - { - "ttiMs": 1817.87 - }, - { - "ttiMs": 1655.28 - }, - { - "ttiMs": 2034.73 - }, - { - "ttiMs": 2129.92 - }, - { - "ttiMs": 1907.14 - }, - { - "ttiMs": 2160.53 - }, - { - "ttiMs": 11055.17 - }, - { - "ttiMs": 1803.39 - }, - { - "ttiMs": 1737.88 - }, - { - "ttiMs": 1834.48 - }, - { - "ttiMs": 2383.18 - }, - { - "ttiMs": 1802.95 - }, - { - "ttiMs": 1703.74 - }, - { - "ttiMs": 3276.56 - }, - { - "ttiMs": 1741.48 - }, - { - "ttiMs": 1990.58 - }, - { - "ttiMs": 2695.97 - }, - { - "ttiMs": 1920.87 - }, - { - "ttiMs": 2143.58 - }, - { - "ttiMs": 1769.34 - }, - { - "ttiMs": 1919.22 - }, - { - "ttiMs": 1870.32 - }, - { - "ttiMs": 2038.44 - }, - { - "ttiMs": 1909.86 - }, - { - "ttiMs": 2091.84 - }, - { - "ttiMs": 1982.17 - }, - { - "ttiMs": 2041.52 - } - ], - "summary": { - "ttiMs": { - "median": 1945.86, - "p95": 2374.58, - "p99": 3072.16 - } - }, - "compositeScore": 77.78, - "successRate": 1 - }, - { - "provider": "runloop", - "iterations": [ - { - "ttiMs": 1987.06 - }, - { - "ttiMs": 1424.93 - }, - { - "ttiMs": 1460.87 - }, - { - "ttiMs": 1459.63 - }, - { - "ttiMs": 1694.45 - }, - { - "ttiMs": 1508.65 - }, - { - "ttiMs": 1621.44 - }, - { - "ttiMs": 1411.58 - }, - { - "ttiMs": 1632.45 - }, - { - "ttiMs": 1598.97 - }, - { - "ttiMs": 1724.09 - }, - { - "ttiMs": 1702.53 - }, - { - "ttiMs": 1651.38 - }, - { - "ttiMs": 1426.5 - }, - { - "ttiMs": 1458.72 - }, - { - "ttiMs": 1409.42 - }, - { - "ttiMs": 1390.24 - }, - { - "ttiMs": 1595.4 - }, - { - "ttiMs": 2115.36 - }, - { - "ttiMs": 2426.53 - }, - { - "ttiMs": 1593.76 - }, - { - "ttiMs": 1451.11 - }, - { - "ttiMs": 1699 - }, - { - "ttiMs": 1595.42 - }, - { - "ttiMs": 1444.25 - }, - { - "ttiMs": 1596.27 - }, - { - "ttiMs": 1482.83 - }, - { - "ttiMs": 1413.14 - }, - { - "ttiMs": 1593.44 - }, - { - "ttiMs": 1364.36 - }, - { - "ttiMs": 1428.64 - }, - { - "ttiMs": 1445.7 - }, - { - "ttiMs": 1482.73 - }, - { - "ttiMs": 1494.39 - }, - { - "ttiMs": 1491.71 - }, - { - "ttiMs": 1694.27 - }, - { - "ttiMs": 1869.77 - }, - { - "ttiMs": 1421.38 - }, - { - "ttiMs": 1595.85 - }, - { - "ttiMs": 1424.91 - }, - { - "ttiMs": 1414.86 - }, - { - "ttiMs": 1424.95 - }, - { - "ttiMs": 1491.01 - }, - { - "ttiMs": 1445.92 - }, - { - "ttiMs": 1435.92 - }, - { - "ttiMs": 1693.57 - }, - { - "ttiMs": 1444.89 - }, - { - "ttiMs": 1692.22 - }, - { - "ttiMs": 1695.6 - }, - { - "ttiMs": 1644.63 - }, - { - "ttiMs": 1596.09 - }, - { - "ttiMs": 1700.29 - }, - { - "ttiMs": 1398.08 - }, - { - "ttiMs": 1417.74 - }, - { - "ttiMs": 1700.94 - }, - { - "ttiMs": 1453.27 - }, - { - "ttiMs": 1410.43 - }, - { - "ttiMs": 1601.47 - }, - { - "ttiMs": 1562.89 - }, - { - "ttiMs": 1454.47 - }, - { - "ttiMs": 1541.9 - }, - { - "ttiMs": 1594.13 - }, - { - "ttiMs": 1419.02 - }, - { - "ttiMs": 1547.94 - }, - { - "ttiMs": 1555.68 - }, - { - "ttiMs": 1446.98 - }, - { - "ttiMs": 1592.85 - }, - { - "ttiMs": 1596.89 - }, - { - "ttiMs": 1435.27 - }, - { - "ttiMs": 1442.86 - }, - { - "ttiMs": 1693.4 - }, - { - "ttiMs": 1461.95 - }, - { - "ttiMs": 1452.42 - }, - { - "ttiMs": 1693.34 - }, - { - "ttiMs": 1354.53 - }, - { - "ttiMs": 1694.73 - }, - { - "ttiMs": 1798.7 - }, - { - "ttiMs": 1443.66 - }, - { - "ttiMs": 1442.13 - }, - { - "ttiMs": 1412.59 - }, - { - "ttiMs": 1410.75 - }, - { - "ttiMs": 1532 - }, - { - "ttiMs": 1469.58 - }, - { - "ttiMs": 1579.2 - }, - { - "ttiMs": 1692.35 - }, - { - "ttiMs": 1540.16 - }, - { - "ttiMs": 1428.55 - }, - { - "ttiMs": 1405.33 - }, - { - "ttiMs": 1594.66 - }, - { - "ttiMs": 1446.6 - }, - { - "ttiMs": 1691.39 - }, - { - "ttiMs": 1476.97 - }, - { - "ttiMs": 1691.07 - }, - { - "ttiMs": 1428.6 - }, - { - "ttiMs": 2099.48 - }, - { - "ttiMs": 1805.62 - }, - { - "ttiMs": 1476.06 - }, - { - "ttiMs": 1431.9 - }, - { - "ttiMs": 1596.28 - }, - { - "ttiMs": 1397.77 - } - ], - "summary": { - "ttiMs": { - "median": 1493.05, - "p95": 1700.94, - "p99": 1805.62 - } - }, - "compositeScore": 84.08, - "successRate": 1 - }, - { - "provider": "vercel", - "iterations": [ - { - "ttiMs": 1953.99 - }, - { - "ttiMs": 1802.77 - }, - { - "ttiMs": 2089.17 - }, - { - "ttiMs": 1823 - }, - { - "ttiMs": 1867.71 - }, - { - "ttiMs": 1959.49 - }, - { - "ttiMs": 1972.3 - }, - { - "ttiMs": 1757.5 - }, - { - "ttiMs": 1823.58 - }, - { - "ttiMs": 1851.31 - }, - { - "ttiMs": 2129.6 - }, - { - "ttiMs": 1736.35 - }, - { - "ttiMs": 1889.74 - }, - { - "ttiMs": 2097.48 - }, - { - "ttiMs": 1853.18 - }, - { - "ttiMs": 1966.63 - }, - { - "ttiMs": 1889.79 - }, - { - "ttiMs": 2186.72 - }, - { - "ttiMs": 1931.35 - }, - { - "ttiMs": 1760.82 - }, - { - "ttiMs": 1933.14 - }, - { - "ttiMs": 1740.37 - }, - { - "ttiMs": 1986.95 - }, - { - "ttiMs": 1776.26 - }, - { - "ttiMs": 1893.18 - }, - { - "ttiMs": 0, - "error": "Sandbox creation timed out" - }, - { - "ttiMs": 1788.58 - }, - { - "ttiMs": 1787.97 - }, - { - "ttiMs": 1711.12 - }, - { - "ttiMs": 1843.11 - }, - { - "ttiMs": 1916.62 - }, - { - "ttiMs": 1790.33 - }, - { - "ttiMs": 2140.15 - }, - { - "ttiMs": 1741.9 - }, - { - "ttiMs": 1930.92 - }, - { - "ttiMs": 0, - "error": "Sandbox creation timed out" - }, - { - "ttiMs": 1910.44 - }, - { - "ttiMs": 1880.6 - }, - { - "ttiMs": 1912.66 - }, - { - "ttiMs": 1825.38 - }, - { - "ttiMs": 1822.16 - }, - { - "ttiMs": 1893.94 - }, - { - "ttiMs": 1789.08 - }, - { - "ttiMs": 1834.41 - }, - { - "ttiMs": 2124.02 - }, - { - "ttiMs": 2043.16 - }, - { - "ttiMs": 1788.31 - }, - { - "ttiMs": 2699.15 - }, - { - "ttiMs": 2160.66 - }, - { - "ttiMs": 1762.84 - }, - { - "ttiMs": 2031.64 - }, - { - "ttiMs": 0, - "error": "Sandbox creation timed out" - }, - { - "ttiMs": 1829.17 - }, - { - "ttiMs": 1831.75 - }, - { - "ttiMs": 2228.21 - }, - { - "ttiMs": 1819.8 - }, - { - "ttiMs": 1835.19 - }, - { - "ttiMs": 2147.87 - }, - { - "ttiMs": 2036 - }, - { - "ttiMs": 1879.44 - }, - { - "ttiMs": 1854.13 - }, - { - "ttiMs": 1981.99 - }, - { - "ttiMs": 1914.01 - }, - { - "ttiMs": 2335.14 - }, - { - "ttiMs": 1912.55 - }, - { - "ttiMs": 2242.21 - }, - { - "ttiMs": 1975 - }, - { - "ttiMs": 0, - "error": "Sandbox creation timed out" - }, - { - "ttiMs": 2014.37 - }, - { - "ttiMs": 1949.49 - }, - { - "ttiMs": 1740.55 - }, - { - "ttiMs": 1827.5 - }, - { - "ttiMs": 1832.92 - }, - { - "ttiMs": 2080.96 - }, - { - "ttiMs": 1833.36 - }, - { - "ttiMs": 1969.99 - }, - { - "ttiMs": 1794.22 - }, - { - "ttiMs": 1899.16 - }, - { - "ttiMs": 1951.15 - }, - { - "ttiMs": 1928.63 - }, - { - "ttiMs": 1775.83 - }, - { - "ttiMs": 1890.06 - }, - { - "ttiMs": 1903.24 - }, - { - "ttiMs": 1920.88 - }, - { - "ttiMs": 1832.6 - }, - { - "ttiMs": 0, - "error": "Sandbox creation timed out" - }, - { - "ttiMs": 2026.23 - }, - { - "ttiMs": 1569.3 - }, - { - "ttiMs": 1963.28 - }, - { - "ttiMs": 1894.86 - }, - { - "ttiMs": 1773.94 - }, - { - "ttiMs": 2207.87 - }, - { - "ttiMs": 2284.73 - }, - { - "ttiMs": 1840.35 - }, - { - "ttiMs": 1945.14 - }, - { - "ttiMs": 1858.16 - }, - { - "ttiMs": 2025.09 - }, - { - "ttiMs": 2055.22 - }, - { - "ttiMs": 1994.32 - }, - { - "ttiMs": 1904.85 - } - ], - "summary": { - "ttiMs": { - "median": 1899.16, - "p95": 2147.87, - "p99": 2228.21 - } - }, - "compositeScore": 75.9, - "successRate": 0.95 } ] } \ No newline at end of file diff --git a/src/custom-providers/secure-exec.ts b/src/custom-providers/secure-exec.ts index 6bc4445..395a1ee 100644 --- a/src/custom-providers/secure-exec.ts +++ b/src/custom-providers/secure-exec.ts @@ -6,15 +6,32 @@ import { } from "secure-exec"; import type { ProviderConfig } from "../types.js"; -async function createSecureExecCompute() { - console.log("[secure-exec] createSecureExecCompute called"); +// Singleton promise — created once, shared across all sandbox creates +let sharedRuntimePromise: ReturnType | null = null; + +async function initSharedRuntime() { const systemDriver = createNodeDriver(); const v8Runtime = await createNodeV8Runtime(); const runtimeDriverFactory = createNodeRuntimeDriverFactory({ v8Runtime }); + return { systemDriver, runtimeDriverFactory }; +} + +function getSharedRuntime() { + if (!sharedRuntimePromise) { + sharedRuntimePromise = initSharedRuntime(); + } + return sharedRuntimePromise; +} + +async function createSecureExecCompute() { + // Kick off singleton init eagerly so first create is fast + const shared = getSharedRuntime(); return { sandbox: { create: async () => { + const { systemDriver, runtimeDriverFactory } = await shared; + const runtime = new NodeRuntime({ systemDriver, runtimeDriverFactory, From 125cfcbc01ed21485c758bb39ea348a15659933e Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Sat, 21 Mar 2026 03:20:51 -0700 Subject: [PATCH 3/4] feat: use @computesdk/secure-exec-nodejs, add probeCommand flag Replace custom provider with the computesdk package import. Add per-provider probeCommand to override the default 'node -v' TTI probe. --- package-lock.json | 24 + package.json | 1 + results/sequential_tti/2026-03-21.json | 329 --- results/sequential_tti/latest.json | 3461 +++++++++++++++++++++++- src/benchmark.ts | 8 +- src/concurrent.ts | 4 +- src/custom-providers/secure-exec.ts | 58 - src/providers.ts | 10 +- src/staggered.ts | 4 +- src/types.ts | 2 + 10 files changed, 3396 insertions(+), 505 deletions(-) delete mode 100644 results/sequential_tti/2026-03-21.json delete mode 100644 src/custom-providers/secure-exec.ts diff --git a/package-lock.json b/package-lock.json index dd29c82..6ac0a4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@computesdk/modal": "^1.8.29", "@computesdk/namespace": "^1.5.0", "@computesdk/runloop": "^1.3.36", + "@computesdk/secure-exec-nodejs": "file:../computesdk/packages/secure-exec-nodejs", "@computesdk/sprites": "^0.1.1", "@computesdk/vercel": "^1.7.13", "computesdk": "^2.2.1", @@ -30,6 +31,25 @@ "typescript": "^5.0.0" } }, + "../computesdk/packages/secure-exec-nodejs": { + "name": "@computesdk/secure-exec-nodejs", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@computesdk/provider": "workspace:*", + "computesdk": "workspace:*", + "secure-exec": "0.1.1-rc.3" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "@vitest/coverage-v8": "^1.0.0", + "eslint": "^8.37.0", + "rimraf": "^5.0.0", + "tsup": "^8.0.0", + "typescript": "^5.0.0", + "vitest": "^1.0.0" + } + }, "node_modules/@alcalzone/ansi-tokenize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.2.5.tgz", @@ -1331,6 +1351,10 @@ "computesdk": "2.3.0" } }, + "node_modules/@computesdk/secure-exec-nodejs": { + "resolved": "../computesdk/packages/secure-exec-nodejs", + "link": true + }, "node_modules/@computesdk/sprites": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@computesdk/sprites/-/sprites-0.1.1.tgz", diff --git a/package.json b/package.json index 70fcf27..43365ce 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@computesdk/runloop": "^1.3.36", "@computesdk/sprites": "^0.1.1", "@computesdk/vercel": "^1.7.13", + "@computesdk/secure-exec-nodejs": "file:../computesdk/packages/secure-exec-nodejs", "computesdk": "^2.2.1", "dotenv": "^17.2.1", "secure-exec": "0.1.1-rc.3" diff --git a/results/sequential_tti/2026-03-21.json b/results/sequential_tti/2026-03-21.json deleted file mode 100644 index 3adc48d..0000000 --- a/results/sequential_tti/2026-03-21.json +++ /dev/null @@ -1,329 +0,0 @@ -{ - "version": "1.1", - "timestamp": "2026-03-21T09:31:18.137Z", - "environment": { - "node": "v24.13.0", - "platform": "linux", - "arch": "x64" - }, - "config": { - "iterations": 100, - "timeoutMs": 120000 - }, - "results": [ - { - "provider": "secure-exec", - "iterations": [ - { - "ttiMs": 78.06 - }, - { - "ttiMs": 4.68 - }, - { - "ttiMs": 4.91 - }, - { - "ttiMs": 4.16 - }, - { - "ttiMs": 4.13 - }, - { - "ttiMs": 4.22 - }, - { - "ttiMs": 4.03 - }, - { - "ttiMs": 4.26 - }, - { - "ttiMs": 4.13 - }, - { - "ttiMs": 4.33 - }, - { - "ttiMs": 4.01 - }, - { - "ttiMs": 3.99 - }, - { - "ttiMs": 4.08 - }, - { - "ttiMs": 3.88 - }, - { - "ttiMs": 3.91 - }, - { - "ttiMs": 3.91 - }, - { - "ttiMs": 3.91 - }, - { - "ttiMs": 3.91 - }, - { - "ttiMs": 4.48 - }, - { - "ttiMs": 5.06 - }, - { - "ttiMs": 7.41 - }, - { - "ttiMs": 4.01 - }, - { - "ttiMs": 3.41 - }, - { - "ttiMs": 3.46 - }, - { - "ttiMs": 3.51 - }, - { - "ttiMs": 3.41 - }, - { - "ttiMs": 3.79 - }, - { - "ttiMs": 3.98 - }, - { - "ttiMs": 3.64 - }, - { - "ttiMs": 3.5 - }, - { - "ttiMs": 3.47 - }, - { - "ttiMs": 3.55 - }, - { - "ttiMs": 3.54 - }, - { - "ttiMs": 3.6 - }, - { - "ttiMs": 3.32 - }, - { - "ttiMs": 3.46 - }, - { - "ttiMs": 3.47 - }, - { - "ttiMs": 3.4 - }, - { - "ttiMs": 3.46 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.46 - }, - { - "ttiMs": 3.59 - }, - { - "ttiMs": 4.71 - }, - { - "ttiMs": 4.56 - }, - { - "ttiMs": 7.35 - }, - { - "ttiMs": 4.53 - }, - { - "ttiMs": 3.43 - }, - { - "ttiMs": 3.36 - }, - { - "ttiMs": 3.41 - }, - { - "ttiMs": 3.38 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.38 - }, - { - "ttiMs": 3.5 - }, - { - "ttiMs": 3.55 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.47 - }, - { - "ttiMs": 3.49 - }, - { - "ttiMs": 3.69 - }, - { - "ttiMs": 3.54 - }, - { - "ttiMs": 3.39 - }, - { - "ttiMs": 3.51 - }, - { - "ttiMs": 3.54 - }, - { - "ttiMs": 3.54 - }, - { - "ttiMs": 3.43 - }, - { - "ttiMs": 3.65 - }, - { - "ttiMs": 4.6 - }, - { - "ttiMs": 4.04 - }, - { - "ttiMs": 5.99 - }, - { - "ttiMs": 4.66 - }, - { - "ttiMs": 3.51 - }, - { - "ttiMs": 3.39 - }, - { - "ttiMs": 3.51 - }, - { - "ttiMs": 3.61 - }, - { - "ttiMs": 3.66 - }, - { - "ttiMs": 3.73 - }, - { - "ttiMs": 3.55 - }, - { - "ttiMs": 3.69 - }, - { - "ttiMs": 3.59 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.57 - }, - { - "ttiMs": 3.57 - }, - { - "ttiMs": 3.5 - }, - { - "ttiMs": 3.62 - }, - { - "ttiMs": 3.53 - }, - { - "ttiMs": 3.84 - }, - { - "ttiMs": 3.39 - }, - { - "ttiMs": 3.48 - }, - { - "ttiMs": 3.45 - }, - { - "ttiMs": 3.37 - }, - { - "ttiMs": 3.86 - }, - { - "ttiMs": 3.8 - }, - { - "ttiMs": 6.33 - }, - { - "ttiMs": 5.71 - }, - { - "ttiMs": 3.47 - }, - { - "ttiMs": 3.4 - }, - { - "ttiMs": 3.42 - }, - { - "ttiMs": 3.66 - }, - { - "ttiMs": 3.42 - }, - { - "ttiMs": 3.94 - } - ], - "summary": { - "ttiMs": { - "median": 3.58, - "p95": 4.68, - "p99": 5.71 - } - }, - "compositeScore": 99.96, - "successRate": 1 - } - ] -} \ No newline at end of file diff --git a/results/sequential_tti/latest.json b/results/sequential_tti/latest.json index 3adc48d..f6c0c52 100644 --- a/results/sequential_tti/latest.json +++ b/results/sequential_tti/latest.json @@ -1,8 +1,8 @@ { "version": "1.1", - "timestamp": "2026-03-21T09:31:18.137Z", + "timestamp": "2026-03-19T00:47:02.232Z", "environment": { - "node": "v24.13.0", + "node": "v24.14.0", "platform": "linux", "arch": "x64" }, @@ -12,318 +12,3565 @@ }, "results": [ { - "provider": "secure-exec", + "provider": "blaxel", "iterations": [ { - "ttiMs": 78.06 + "ttiMs": 1228.04 }, { - "ttiMs": 4.68 + "ttiMs": 1078.27 }, { - "ttiMs": 4.91 + "ttiMs": 1041.45 }, { - "ttiMs": 4.16 + "ttiMs": 993.32 }, { - "ttiMs": 4.13 + "ttiMs": 979.38 }, { - "ttiMs": 4.22 + "ttiMs": 1029.93 }, { - "ttiMs": 4.03 + "ttiMs": 985.59 }, { - "ttiMs": 4.26 + "ttiMs": 957.23 }, { - "ttiMs": 4.13 + "ttiMs": 1057.14 }, { - "ttiMs": 4.33 + "ttiMs": 976.7 }, { - "ttiMs": 4.01 + "ttiMs": 1022.06 }, { - "ttiMs": 3.99 + "ttiMs": 987.01 }, { - "ttiMs": 4.08 + "ttiMs": 995.53 }, { - "ttiMs": 3.88 + "ttiMs": 1218.91 }, { - "ttiMs": 3.91 + "ttiMs": 1056.61 }, { - "ttiMs": 3.91 + "ttiMs": 987.56 }, { - "ttiMs": 3.91 + "ttiMs": 967.46 }, { - "ttiMs": 3.91 + "ttiMs": 993.84 }, { - "ttiMs": 4.48 + "ttiMs": 1047.62 }, { - "ttiMs": 5.06 + "ttiMs": 1030.73 }, { - "ttiMs": 7.41 + "ttiMs": 1043.66 }, { - "ttiMs": 4.01 + "ttiMs": 1001.29 }, { - "ttiMs": 3.41 + "ttiMs": 985.38 }, { - "ttiMs": 3.46 + "ttiMs": 1102.26 }, { - "ttiMs": 3.51 + "ttiMs": 1312.58 }, { - "ttiMs": 3.41 + "ttiMs": 1011.76 }, { - "ttiMs": 3.79 + "ttiMs": 1033.61 }, { - "ttiMs": 3.98 + "ttiMs": 1034.32 }, { - "ttiMs": 3.64 + "ttiMs": 1085.7 }, { - "ttiMs": 3.5 + "ttiMs": 971.75 }, { - "ttiMs": 3.47 + "ttiMs": 1015.55 }, { - "ttiMs": 3.55 + "ttiMs": 1046.11 }, { - "ttiMs": 3.54 + "ttiMs": 944.26 }, { - "ttiMs": 3.6 + "ttiMs": 1050.51 }, { - "ttiMs": 3.32 + "ttiMs": 973.93 }, { - "ttiMs": 3.46 + "ttiMs": 952.07 }, { - "ttiMs": 3.47 + "ttiMs": 985.29 }, { - "ttiMs": 3.4 + "ttiMs": 963.87 }, { - "ttiMs": 3.46 + "ttiMs": 941.51 }, { - "ttiMs": 3.53 + "ttiMs": 970.08 }, { - "ttiMs": 3.46 + "ttiMs": 977.4 }, { - "ttiMs": 3.59 + "ttiMs": 1022.97 }, { - "ttiMs": 4.71 + "ttiMs": 994.75 }, { - "ttiMs": 4.56 + "ttiMs": 991.83 }, { - "ttiMs": 7.35 + "ttiMs": 960.54 }, { - "ttiMs": 4.53 + "ttiMs": 987.36 }, { - "ttiMs": 3.43 + "ttiMs": 1013.28 }, { - "ttiMs": 3.36 + "ttiMs": 1052.23 }, { - "ttiMs": 3.41 + "ttiMs": 990.06 }, { - "ttiMs": 3.38 + "ttiMs": 997.86 }, { - "ttiMs": 3.53 + "ttiMs": 999.42 }, { - "ttiMs": 3.53 + "ttiMs": 1023.24 }, { - "ttiMs": 3.38 + "ttiMs": 1001.8 }, { - "ttiMs": 3.5 + "ttiMs": 998.39 }, { - "ttiMs": 3.55 + "ttiMs": 953.9 }, { - "ttiMs": 3.53 + "ttiMs": 1061.41 }, { - "ttiMs": 3.47 + "ttiMs": 1015.73 }, { - "ttiMs": 3.49 + "ttiMs": 981.3 }, { - "ttiMs": 3.69 + "ttiMs": 1025.45 }, { - "ttiMs": 3.54 + "ttiMs": 1033.79 }, { - "ttiMs": 3.39 + "ttiMs": 987.96 }, { - "ttiMs": 3.51 + "ttiMs": 1000.98 }, { - "ttiMs": 3.54 + "ttiMs": 976.39 }, { - "ttiMs": 3.54 + "ttiMs": 963.1 }, { - "ttiMs": 3.43 + "ttiMs": 1027.81 }, { - "ttiMs": 3.65 + "ttiMs": 951.73 }, { - "ttiMs": 4.6 + "ttiMs": 979.65 }, { - "ttiMs": 4.04 + "ttiMs": 1138.29 }, { - "ttiMs": 5.99 + "ttiMs": 1024.7 }, { - "ttiMs": 4.66 + "ttiMs": 1055.82 }, { - "ttiMs": 3.51 + "ttiMs": 1065.16 }, { - "ttiMs": 3.39 + "ttiMs": 962.55 }, { - "ttiMs": 3.51 + "ttiMs": 1017.38 }, { - "ttiMs": 3.61 + "ttiMs": 982.46 }, { - "ttiMs": 3.66 + "ttiMs": 955.38 }, { - "ttiMs": 3.73 + "ttiMs": 971.4 }, { - "ttiMs": 3.55 + "ttiMs": 1028.64 }, { - "ttiMs": 3.69 + "ttiMs": 1012.42 }, { - "ttiMs": 3.59 + "ttiMs": 1118.9 }, { - "ttiMs": 3.53 + "ttiMs": 1001.34 }, { - "ttiMs": 3.57 + "ttiMs": 1034.59 }, { - "ttiMs": 3.57 + "ttiMs": 996.04 }, { - "ttiMs": 3.5 + "ttiMs": 995.98 }, { - "ttiMs": 3.62 + "ttiMs": 1017.11 }, { - "ttiMs": 3.53 + "ttiMs": 977.36 }, { - "ttiMs": 3.84 + "ttiMs": 1091.46 }, { - "ttiMs": 3.39 + "ttiMs": 1032.42 }, { - "ttiMs": 3.48 + "ttiMs": 978.43 }, { - "ttiMs": 3.45 + "ttiMs": 982.46 }, { - "ttiMs": 3.37 + "ttiMs": 1051.26 }, { - "ttiMs": 3.86 + "ttiMs": 1036.84 }, { - "ttiMs": 3.8 + "ttiMs": 1039.59 }, { - "ttiMs": 6.33 + "ttiMs": 1032.71 }, { - "ttiMs": 5.71 + "ttiMs": 1020.02 }, { - "ttiMs": 3.47 + "ttiMs": 1023.81 }, { - "ttiMs": 3.4 + "ttiMs": 1027.63 }, { - "ttiMs": 3.42 + "ttiMs": 1032.67 }, { - "ttiMs": 3.66 + "ttiMs": 1072.09 }, { - "ttiMs": 3.42 + "ttiMs": 1033.82 }, { - "ttiMs": 3.94 + "ttiMs": 1019.66 } ], "summary": { "ttiMs": { - "median": 3.58, - "p95": 4.68, - "p99": 5.71 + "median": 1012.85, + "p95": 1072.09, + "p99": 1102.26 } }, - "compositeScore": 99.96, + "compositeScore": 89.59, "successRate": 1 + }, + { + "provider": "cloudflare", + "iterations": [ + { + "ttiMs": 3275.65 + }, + { + "ttiMs": 2134.48 + }, + { + "ttiMs": 2151.5 + }, + { + "ttiMs": 1986.91 + }, + { + "ttiMs": 1834.97 + }, + { + "ttiMs": 2172.06 + }, + { + "ttiMs": 2047.63 + }, + { + "ttiMs": 2090.78 + }, + { + "ttiMs": 2234.85 + }, + { + "ttiMs": 2066.23 + }, + { + "ttiMs": 2292.37 + }, + { + "ttiMs": 1982.85 + }, + { + "ttiMs": 2103.19 + }, + { + "ttiMs": 3418.94 + }, + { + "ttiMs": 1997.5 + }, + { + "ttiMs": 3097.53 + }, + { + "ttiMs": 2190.92 + }, + { + "ttiMs": 2372.29 + }, + { + "ttiMs": 2238.12 + }, + { + "ttiMs": 1962.9 + }, + { + "ttiMs": 1687.25 + }, + { + "ttiMs": 2062.76 + }, + { + "ttiMs": 2317.62 + }, + { + "ttiMs": 2087.42 + }, + { + "ttiMs": 1847.08 + }, + { + "ttiMs": 3706.42 + }, + { + "ttiMs": 2151.54 + }, + { + "ttiMs": 1806.85 + }, + { + "ttiMs": 1834.92 + }, + { + "ttiMs": 2049.51 + }, + { + "ttiMs": 2176.92 + }, + { + "ttiMs": 1946.92 + }, + { + "ttiMs": 2508.68 + }, + { + "ttiMs": 2255.56 + }, + { + "ttiMs": 3717.46 + }, + { + "ttiMs": 2001.53 + }, + { + "ttiMs": 1796.86 + }, + { + "ttiMs": 1727.99 + }, + { + "ttiMs": 2778.07 + }, + { + "ttiMs": 1950.96 + }, + { + "ttiMs": 2251 + }, + { + "ttiMs": 1770.69 + }, + { + "ttiMs": 1808.7 + }, + { + "ttiMs": 1942.74 + }, + { + "ttiMs": 2399.14 + }, + { + "ttiMs": 2025.46 + }, + { + "ttiMs": 1800.45 + }, + { + "ttiMs": 1714.75 + }, + { + "ttiMs": 1788.28 + }, + { + "ttiMs": 2035.2 + }, + { + "ttiMs": 2579.69 + }, + { + "ttiMs": 1943.92 + }, + { + "ttiMs": 1754.39 + }, + { + "ttiMs": 2200.25 + }, + { + "ttiMs": 2210.21 + }, + { + "ttiMs": 2035.77 + }, + { + "ttiMs": 1652.6 + }, + { + "ttiMs": 1798.28 + }, + { + "ttiMs": 1936.11 + }, + { + "ttiMs": 1955.25 + }, + { + "ttiMs": 1588.63 + }, + { + "ttiMs": 2275.06 + }, + { + "ttiMs": 1922.01 + }, + { + "ttiMs": 2318.48 + }, + { + "ttiMs": 2012.59 + }, + { + "ttiMs": 1965.57 + }, + { + "ttiMs": 1770.35 + }, + { + "ttiMs": 2203.46 + }, + { + "ttiMs": 1661.87 + }, + { + "ttiMs": 3695.07 + }, + { + "ttiMs": 1906.79 + }, + { + "ttiMs": 1817.19 + }, + { + "ttiMs": 2477.17 + }, + { + "ttiMs": 1927.45 + }, + { + "ttiMs": 1939.68 + }, + { + "ttiMs": 1871.11 + }, + { + "ttiMs": 2053.5 + }, + { + "ttiMs": 2271.36 + }, + { + "ttiMs": 2070.95 + }, + { + "ttiMs": 1942.58 + }, + { + "ttiMs": 2101.68 + }, + { + "ttiMs": 1603.81 + }, + { + "ttiMs": 1627.71 + }, + { + "ttiMs": 2172.48 + }, + { + "ttiMs": 1881.03 + }, + { + "ttiMs": 2232.56 + }, + { + "ttiMs": 2367.76 + }, + { + "ttiMs": 1774.8 + }, + { + "ttiMs": 2157.31 + }, + { + "ttiMs": 2031.36 + }, + { + "ttiMs": 2236.98 + }, + { + "ttiMs": 3550.3 + }, + { + "ttiMs": 1857.48 + }, + { + "ttiMs": 1849.35 + }, + { + "ttiMs": 1912.6 + }, + { + "ttiMs": 2223.58 + }, + { + "ttiMs": 2127.11 + }, + { + "ttiMs": 1992.35 + }, + { + "ttiMs": 1907.03 + }, + { + "ttiMs": 1964.53 + } + ], + "summary": { + "ttiMs": { + "median": 2033.28, + "p95": 2508.68, + "p99": 3275.65 + } + }, + "compositeScore": 76.62, + "successRate": 1 + }, + { + "provider": "codesandbox", + "iterations": [ + { + "ttiMs": 2346.17 + }, + { + "ttiMs": 2442.02 + }, + { + "ttiMs": 2287.09 + }, + { + "ttiMs": 2337.03 + }, + { + "ttiMs": 2381.05 + }, + { + "ttiMs": 2520.14 + }, + { + "ttiMs": 2532.16 + }, + { + "ttiMs": 2294.12 + }, + { + "ttiMs": 2192.59 + }, + { + "ttiMs": 2471.51 + }, + { + "ttiMs": 3144.61 + }, + { + "ttiMs": 2816.89 + }, + { + "ttiMs": 2409.43 + }, + { + "ttiMs": 2338.89 + }, + { + "ttiMs": 2990.75 + }, + { + "ttiMs": 2759.73 + }, + { + "ttiMs": 3619.87 + }, + { + "ttiMs": 2272.84 + }, + { + "ttiMs": 2057.45 + }, + { + "ttiMs": 2559.2 + }, + { + "ttiMs": 2134.59 + }, + { + "ttiMs": 2059.82 + }, + { + "ttiMs": 2051.6 + }, + { + "ttiMs": 2329.26 + }, + { + "ttiMs": 2908.31 + }, + { + "ttiMs": 2461.02 + }, + { + "ttiMs": 2139.32 + }, + { + "ttiMs": 1989.01 + }, + { + "ttiMs": 2000.06 + }, + { + "ttiMs": 2362.11 + }, + { + "ttiMs": 2343.91 + }, + { + "ttiMs": 2055.61 + }, + { + "ttiMs": 2149.17 + }, + { + "ttiMs": 2044.53 + }, + { + "ttiMs": 2401.36 + }, + { + "ttiMs": 2256.31 + }, + { + "ttiMs": 2211.2 + }, + { + "ttiMs": 2071.54 + }, + { + "ttiMs": 2557.31 + }, + { + "ttiMs": 2047.08 + }, + { + "ttiMs": 2024.71 + }, + { + "ttiMs": 2071.81 + }, + { + "ttiMs": 2439.74 + }, + { + "ttiMs": 2420.58 + }, + { + "ttiMs": 2074.91 + }, + { + "ttiMs": 2131.03 + }, + { + "ttiMs": 2121.25 + }, + { + "ttiMs": 2193.41 + }, + { + "ttiMs": 2385.09 + }, + { + "ttiMs": 2354.52 + }, + { + "ttiMs": 2388.49 + }, + { + "ttiMs": 2103.19 + }, + { + "ttiMs": 2258.91 + }, + { + "ttiMs": 2451.4 + }, + { + "ttiMs": 2093.05 + }, + { + "ttiMs": 2195.28 + }, + { + "ttiMs": 2260.83 + }, + { + "ttiMs": 2343.85 + }, + { + "ttiMs": 2092.97 + }, + { + "ttiMs": 2389.9 + }, + { + "ttiMs": 2028.8 + }, + { + "ttiMs": 2080.45 + }, + { + "ttiMs": 2084 + }, + { + "ttiMs": 2143.53 + }, + { + "ttiMs": 2345.64 + }, + { + "ttiMs": 2669.86 + }, + { + "ttiMs": 2317.12 + }, + { + "ttiMs": 2008.58 + }, + { + "ttiMs": 2085.34 + }, + { + "ttiMs": 2238.07 + }, + { + "ttiMs": 2301.98 + }, + { + "ttiMs": 2326.28 + }, + { + "ttiMs": 2702.82 + }, + { + "ttiMs": 2196.65 + }, + { + "ttiMs": 2071.51 + }, + { + "ttiMs": 2257.45 + }, + { + "ttiMs": 2209.73 + }, + { + "ttiMs": 2335.44 + }, + { + "ttiMs": 2566.42 + }, + { + "ttiMs": 2231.4 + }, + { + "ttiMs": 2249.21 + }, + { + "ttiMs": 2340.98 + }, + { + "ttiMs": 2364.13 + }, + { + "ttiMs": 2183.53 + }, + { + "ttiMs": 2662.59 + }, + { + "ttiMs": 2494.42 + }, + { + "ttiMs": 2371.53 + }, + { + "ttiMs": 2107.91 + }, + { + "ttiMs": 2330.27 + }, + { + "ttiMs": 2169.99 + }, + { + "ttiMs": 2235.77 + }, + { + "ttiMs": 2404.41 + }, + { + "ttiMs": 2223.5 + }, + { + "ttiMs": 2141.9 + }, + { + "ttiMs": 2338.23 + }, + { + "ttiMs": 2357.84 + }, + { + "ttiMs": 2591.07 + }, + { + "ttiMs": 2136.27 + }, + { + "ttiMs": 2266.9 + }, + { + "ttiMs": 2226.87 + } + ], + "summary": { + "ttiMs": { + "median": 2279.97, + "p95": 2591.07, + "p99": 2759.73 + } + }, + "compositeScore": 75.7, + "successRate": 1 + }, + { + "provider": "daytona", + "iterations": [ + { + "ttiMs": 351.03 + }, + { + "ttiMs": 134.04 + }, + { + "ttiMs": 442.66 + }, + { + "ttiMs": 193.72 + }, + { + "ttiMs": 136.7 + }, + { + "ttiMs": 126.07 + }, + { + "ttiMs": 150.96 + }, + { + "ttiMs": 138.48 + }, + { + "ttiMs": 166.09 + }, + { + "ttiMs": 105.57 + }, + { + "ttiMs": 159.94 + }, + { + "ttiMs": 157.98 + }, + { + "ttiMs": 136.52 + }, + { + "ttiMs": 155.96 + }, + { + "ttiMs": 275.87 + }, + { + "ttiMs": 158.8 + }, + { + "ttiMs": 110.25 + }, + { + "ttiMs": 74.67 + }, + { + "ttiMs": 107.36 + }, + { + "ttiMs": 153.55 + }, + { + "ttiMs": 195.74 + }, + { + "ttiMs": 204.8 + }, + { + "ttiMs": 174.66 + }, + { + "ttiMs": 201.94 + }, + { + "ttiMs": 77.57 + }, + { + "ttiMs": 167 + }, + { + "ttiMs": 415.73 + }, + { + "ttiMs": 423.73 + }, + { + "ttiMs": 327.38 + }, + { + "ttiMs": 150.11 + }, + { + "ttiMs": 172.73 + }, + { + "ttiMs": 77.73 + }, + { + "ttiMs": 88.5 + }, + { + "ttiMs": 75.19 + }, + { + "ttiMs": 141.09 + }, + { + "ttiMs": 69.39 + }, + { + "ttiMs": 316.58 + }, + { + "ttiMs": 182.82 + }, + { + "ttiMs": 131.76 + }, + { + "ttiMs": 297.89 + }, + { + "ttiMs": 162.33 + }, + { + "ttiMs": 165.13 + }, + { + "ttiMs": 171.99 + }, + { + "ttiMs": 276.8 + }, + { + "ttiMs": 284.37 + }, + { + "ttiMs": 470.34 + }, + { + "ttiMs": 165.12 + }, + { + "ttiMs": 217.09 + }, + { + "ttiMs": 80.27 + }, + { + "ttiMs": 367.03 + }, + { + "ttiMs": 308.48 + }, + { + "ttiMs": 86.65 + }, + { + "ttiMs": 271.5 + }, + { + "ttiMs": 118.03 + }, + { + "ttiMs": 375.26 + }, + { + "ttiMs": 233 + }, + { + "ttiMs": 147.98 + }, + { + "ttiMs": 411.84 + }, + { + "ttiMs": 144.47 + }, + { + "ttiMs": 242.2 + }, + { + "ttiMs": 76.87 + }, + { + "ttiMs": 284.76 + }, + { + "ttiMs": 318.96 + }, + { + "ttiMs": 209.59 + }, + { + "ttiMs": 236.24 + }, + { + "ttiMs": 106.57 + }, + { + "ttiMs": 160.68 + }, + { + "ttiMs": 171.02 + }, + { + "ttiMs": 120.2 + }, + { + "ttiMs": 78.42 + }, + { + "ttiMs": 79.85 + }, + { + "ttiMs": 215.1 + }, + { + "ttiMs": 206.3 + }, + { + "ttiMs": 96.83 + }, + { + "ttiMs": 403.08 + }, + { + "ttiMs": 74.13 + }, + { + "ttiMs": 224.91 + }, + { + "ttiMs": 300.62 + }, + { + "ttiMs": 279.4 + }, + { + "ttiMs": 72.28 + }, + { + "ttiMs": 251.75 + }, + { + "ttiMs": 238.25 + }, + { + "ttiMs": 309.12 + }, + { + "ttiMs": 136.4 + }, + { + "ttiMs": 128.66 + }, + { + "ttiMs": 83.18 + }, + { + "ttiMs": 153.29 + }, + { + "ttiMs": 79.81 + }, + { + "ttiMs": 186.66 + }, + { + "ttiMs": 142.05 + }, + { + "ttiMs": 141.92 + }, + { + "ttiMs": 340.64 + }, + { + "ttiMs": 86.28 + }, + { + "ttiMs": 119.24 + }, + { + "ttiMs": 318.07 + }, + { + "ttiMs": 109.6 + }, + { + "ttiMs": 219.96 + }, + { + "ttiMs": 190.22 + }, + { + "ttiMs": 167.03 + }, + { + "ttiMs": 305.18 + } + ], + "summary": { + "ttiMs": { + "median": 165.61, + "p95": 340.64, + "p99": 403.08 + } + }, + "compositeScore": 97.55, + "successRate": 1 + }, + { + "provider": "e2b", + "iterations": [ + { + "ttiMs": 611.36 + }, + { + "ttiMs": 330.93 + }, + { + "ttiMs": 512.03 + }, + { + "ttiMs": 355.99 + }, + { + "ttiMs": 599.48 + }, + { + "ttiMs": 603.1 + }, + { + "ttiMs": 378.73 + }, + { + "ttiMs": 333.25 + }, + { + "ttiMs": 440.19 + }, + { + "ttiMs": 367.93 + }, + { + "ttiMs": 350.7 + }, + { + "ttiMs": 407.05 + }, + { + "ttiMs": 324.27 + }, + { + "ttiMs": 727.54 + }, + { + "ttiMs": 1410.54 + }, + { + "ttiMs": 355.81 + }, + { + "ttiMs": 793.35 + }, + { + "ttiMs": 1011.46 + }, + { + "ttiMs": 360.07 + }, + { + "ttiMs": 554.59 + }, + { + "ttiMs": 327.38 + }, + { + "ttiMs": 453.36 + }, + { + "ttiMs": 499.08 + }, + { + "ttiMs": 343.22 + }, + { + "ttiMs": 351.14 + }, + { + "ttiMs": 309.19 + }, + { + "ttiMs": 329.97 + }, + { + "ttiMs": 360.68 + }, + { + "ttiMs": 350.71 + }, + { + "ttiMs": 435.87 + }, + { + "ttiMs": 331.81 + }, + { + "ttiMs": 325.94 + }, + { + "ttiMs": 339.35 + }, + { + "ttiMs": 538.74 + }, + { + "ttiMs": 689.47 + }, + { + "ttiMs": 1079.08 + }, + { + "ttiMs": 326.19 + }, + { + "ttiMs": 574.39 + }, + { + "ttiMs": 313.62 + }, + { + "ttiMs": 416.45 + }, + { + "ttiMs": 401.59 + }, + { + "ttiMs": 326.85 + }, + { + "ttiMs": 385.1 + }, + { + "ttiMs": 365.3 + }, + { + "ttiMs": 406.01 + }, + { + "ttiMs": 318.95 + }, + { + "ttiMs": 336.33 + }, + { + "ttiMs": 389.83 + }, + { + "ttiMs": 565.78 + }, + { + "ttiMs": 316.44 + }, + { + "ttiMs": 439.3 + }, + { + "ttiMs": 317.11 + }, + { + "ttiMs": 385.02 + }, + { + "ttiMs": 391.8 + }, + { + "ttiMs": 354.9 + }, + { + "ttiMs": 322.15 + }, + { + "ttiMs": 376.42 + }, + { + "ttiMs": 328.17 + }, + { + "ttiMs": 356.44 + }, + { + "ttiMs": 374.12 + }, + { + "ttiMs": 513.89 + }, + { + "ttiMs": 330.92 + }, + { + "ttiMs": 330.05 + }, + { + "ttiMs": 567.03 + }, + { + "ttiMs": 367.94 + }, + { + "ttiMs": 351.49 + }, + { + "ttiMs": 375.56 + }, + { + "ttiMs": 326.95 + }, + { + "ttiMs": 389.34 + }, + { + "ttiMs": 329.9 + }, + { + "ttiMs": 322.07 + }, + { + "ttiMs": 610.12 + }, + { + "ttiMs": 391.66 + }, + { + "ttiMs": 324.9 + }, + { + "ttiMs": 388.31 + }, + { + "ttiMs": 550.19 + }, + { + "ttiMs": 343.95 + }, + { + "ttiMs": 315.44 + }, + { + "ttiMs": 367.09 + }, + { + "ttiMs": 449.87 + }, + { + "ttiMs": 308.55 + }, + { + "ttiMs": 1006.57 + }, + { + "ttiMs": 427.85 + }, + { + "ttiMs": 385.79 + }, + { + "ttiMs": 550.24 + }, + { + "ttiMs": 343.85 + }, + { + "ttiMs": 315.24 + }, + { + "ttiMs": 316.81 + }, + { + "ttiMs": 328.54 + }, + { + "ttiMs": 410.77 + }, + { + "ttiMs": 333.28 + }, + { + "ttiMs": 618.78 + }, + { + "ttiMs": 401.73 + }, + { + "ttiMs": 524.49 + }, + { + "ttiMs": 540.87 + }, + { + "ttiMs": 606.12 + }, + { + "ttiMs": 326.9 + }, + { + "ttiMs": 341.88 + }, + { + "ttiMs": 332.51 + }, + { + "ttiMs": 310.6 + } + ], + "summary": { + "ttiMs": { + "median": 367.93, + "p95": 610.12, + "p99": 727.54 + } + }, + "compositeScore": 95.18, + "successRate": 1 + }, + { + "provider": "hopx", + "iterations": [ + { + "ttiMs": 1564.24 + }, + { + "ttiMs": 1267.4 + }, + { + "ttiMs": 1090.23 + }, + { + "ttiMs": 1022.26 + }, + { + "ttiMs": 979.36 + }, + { + "ttiMs": 1139.33 + }, + { + "ttiMs": 986.83 + }, + { + "ttiMs": 1039.91 + }, + { + "ttiMs": 1034.94 + }, + { + "ttiMs": 1013.01 + }, + { + "ttiMs": 1098.5 + }, + { + "ttiMs": 1062.18 + }, + { + "ttiMs": 987.26 + }, + { + "ttiMs": 964.65 + }, + { + "ttiMs": 1004.36 + }, + { + "ttiMs": 962.26 + }, + { + "ttiMs": 1011.93 + }, + { + "ttiMs": 1015.7 + }, + { + "ttiMs": 985.68 + }, + { + "ttiMs": 1415.73 + }, + { + "ttiMs": 1035.44 + }, + { + "ttiMs": 1005.66 + }, + { + "ttiMs": 1009.49 + }, + { + "ttiMs": 1011.13 + }, + { + "ttiMs": 998.89 + }, + { + "ttiMs": 1072.28 + }, + { + "ttiMs": 982.33 + }, + { + "ttiMs": 1023.69 + }, + { + "ttiMs": 1011.84 + }, + { + "ttiMs": 1056.76 + }, + { + "ttiMs": 1041.59 + }, + { + "ttiMs": 972.31 + }, + { + "ttiMs": 1070.89 + }, + { + "ttiMs": 1332.93 + }, + { + "ttiMs": 999.86 + }, + { + "ttiMs": 1080.59 + }, + { + "ttiMs": 1064.27 + }, + { + "ttiMs": 1077.17 + }, + { + "ttiMs": 1048.7 + }, + { + "ttiMs": 1374.29 + }, + { + "ttiMs": 1070.29 + }, + { + "ttiMs": 1071.46 + }, + { + "ttiMs": 1086.27 + }, + { + "ttiMs": 1075.18 + }, + { + "ttiMs": 998.73 + }, + { + "ttiMs": 1023.38 + }, + { + "ttiMs": 980.38 + }, + { + "ttiMs": 1324.28 + }, + { + "ttiMs": 1086.44 + }, + { + "ttiMs": 1064.72 + }, + { + "ttiMs": 1069.08 + }, + { + "ttiMs": 1097.59 + }, + { + "ttiMs": 1008.33 + }, + { + "ttiMs": 1005.24 + }, + { + "ttiMs": 1304.42 + }, + { + "ttiMs": 1040.26 + }, + { + "ttiMs": 1101.17 + }, + { + "ttiMs": 1038.52 + }, + { + "ttiMs": 1023.04 + }, + { + "ttiMs": 1143.44 + }, + { + "ttiMs": 969.9 + }, + { + "ttiMs": 1009.73 + }, + { + "ttiMs": 1058.07 + }, + { + "ttiMs": 1122.52 + }, + { + "ttiMs": 1007.73 + }, + { + "ttiMs": 1018.68 + }, + { + "ttiMs": 1004.24 + }, + { + "ttiMs": 1003.24 + }, + { + "ttiMs": 1092.92 + }, + { + "ttiMs": 1082.7 + }, + { + "ttiMs": 1066.77 + }, + { + "ttiMs": 1028.07 + }, + { + "ttiMs": 1346.72 + }, + { + "ttiMs": 1389.76 + }, + { + "ttiMs": 1366.4 + }, + { + "ttiMs": 1041.55 + }, + { + "ttiMs": 1026.55 + }, + { + "ttiMs": 1369.45 + }, + { + "ttiMs": 1356.8 + }, + { + "ttiMs": 1260.35 + }, + { + "ttiMs": 1004.83 + }, + { + "ttiMs": 1021.62 + }, + { + "ttiMs": 997.43 + }, + { + "ttiMs": 1026.99 + }, + { + "ttiMs": 1028.31 + }, + { + "ttiMs": 1021.64 + }, + { + "ttiMs": 995.02 + }, + { + "ttiMs": 1032.05 + }, + { + "ttiMs": 1057.64 + }, + { + "ttiMs": 1323.6 + }, + { + "ttiMs": 1059.89 + }, + { + "ttiMs": 1004.77 + }, + { + "ttiMs": 1107.83 + }, + { + "ttiMs": 1338.94 + }, + { + "ttiMs": 1294.22 + }, + { + "ttiMs": 1318.46 + }, + { + "ttiMs": 1020.99 + }, + { + "ttiMs": 1018.12 + }, + { + "ttiMs": 1059.76 + }, + { + "ttiMs": 1060.4 + } + ], + "summary": { + "ttiMs": { + "median": 1040.91, + "p95": 1332.93, + "p99": 1366.4 + } + }, + "compositeScore": 88.37, + "successRate": 1 + }, + { + "provider": "just-bash", + "iterations": [ + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + }, + { + "ttiMs": 0, + "error": "Command failed with exit code 127: bash: node: command not found\n" + } + ], + "summary": { + "ttiMs": { + "median": 0, + "p95": 0, + "p99": 0 + } + }, + "compositeScore": 0, + "successRate": 0, + "skipped": true, + "skipReason": "All iterations failed" + }, + { + "provider": "modal", + "iterations": [ + { + "ttiMs": 2202.9 + }, + { + "ttiMs": 2545.95 + }, + { + "ttiMs": 2257.81 + }, + { + "ttiMs": 3409.37 + }, + { + "ttiMs": 2380.39 + }, + { + "ttiMs": 2415.18 + }, + { + "ttiMs": 2360.26 + }, + { + "ttiMs": 3114.75 + }, + { + "ttiMs": 2192.44 + }, + { + "ttiMs": 2211.29 + }, + { + "ttiMs": 2401.58 + }, + { + "ttiMs": 2209.67 + }, + { + "ttiMs": 1831.88 + }, + { + "ttiMs": 3180.12 + }, + { + "ttiMs": 2393.74 + }, + { + "ttiMs": 2659.37 + }, + { + "ttiMs": 2255.54 + }, + { + "ttiMs": 2270.92 + }, + { + "ttiMs": 1900.49 + }, + { + "ttiMs": 2357.89 + }, + { + "ttiMs": 2342.29 + }, + { + "ttiMs": 2048.87 + }, + { + "ttiMs": 3218.77 + }, + { + "ttiMs": 2546 + }, + { + "ttiMs": 2681.02 + }, + { + "ttiMs": 2259.23 + }, + { + "ttiMs": 2428.56 + }, + { + "ttiMs": 2345.72 + }, + { + "ttiMs": 2329.86 + }, + { + "ttiMs": 2194.84 + }, + { + "ttiMs": 2755.97 + }, + { + "ttiMs": 2391.03 + }, + { + "ttiMs": 2835.34 + }, + { + "ttiMs": 1868.5 + }, + { + "ttiMs": 2682.43 + }, + { + "ttiMs": 2288.41 + }, + { + "ttiMs": 2327.87 + }, + { + "ttiMs": 2398.86 + }, + { + "ttiMs": 2480.98 + }, + { + "ttiMs": 2301.26 + }, + { + "ttiMs": 1937.18 + }, + { + "ttiMs": 2269.28 + }, + { + "ttiMs": 2391.46 + }, + { + "ttiMs": 3566.54 + }, + { + "ttiMs": 2343.96 + }, + { + "ttiMs": 2602.04 + }, + { + "ttiMs": 2365.66 + }, + { + "ttiMs": 2254.98 + }, + { + "ttiMs": 2576.38 + }, + { + "ttiMs": 24391.69 + }, + { + "ttiMs": 2195.37 + }, + { + "ttiMs": 2514.21 + }, + { + "ttiMs": 2568.42 + }, + { + "ttiMs": 2533.26 + }, + { + "ttiMs": 2327.9 + }, + { + "ttiMs": 2621.52 + }, + { + "ttiMs": 2113.13 + }, + { + "ttiMs": 2426.58 + }, + { + "ttiMs": 2286.93 + }, + { + "ttiMs": 2412.39 + }, + { + "ttiMs": 2263.41 + }, + { + "ttiMs": 2580.55 + }, + { + "ttiMs": 2228.18 + }, + { + "ttiMs": 2650.32 + }, + { + "ttiMs": 2464.54 + }, + { + "ttiMs": 2503.81 + }, + { + "ttiMs": 2766.32 + }, + { + "ttiMs": 2564.72 + }, + { + "ttiMs": 2449.31 + }, + { + "ttiMs": 2080.1 + }, + { + "ttiMs": 2463.12 + }, + { + "ttiMs": 2199.09 + }, + { + "ttiMs": 1985.17 + }, + { + "ttiMs": 2133.84 + }, + { + "ttiMs": 1844.24 + }, + { + "ttiMs": 2340.5 + }, + { + "ttiMs": 3343.8 + }, + { + "ttiMs": 2254.79 + }, + { + "ttiMs": 2567.96 + }, + { + "ttiMs": 2120.02 + }, + { + "ttiMs": 2276.34 + }, + { + "ttiMs": 2258.06 + }, + { + "ttiMs": 5549.62 + }, + { + "ttiMs": 2464.76 + }, + { + "ttiMs": 2195.76 + }, + { + "ttiMs": 2275.31 + }, + { + "ttiMs": 3959.82 + }, + { + "ttiMs": 2300.85 + }, + { + "ttiMs": 2129.4 + }, + { + "ttiMs": 2349.04 + }, + { + "ttiMs": 2669.67 + }, + { + "ttiMs": 2722.16 + }, + { + "ttiMs": 2562.17 + }, + { + "ttiMs": 2369.02 + }, + { + "ttiMs": 2410.21 + }, + { + "ttiMs": 2114.67 + }, + { + "ttiMs": 2427.01 + }, + { + "ttiMs": 1353.18 + }, + { + "ttiMs": 3201.14 + }, + { + "ttiMs": 1956.49 + } + ], + "summary": { + "ttiMs": { + "median": 2367.34, + "p95": 3114.75, + "p99": 3343.8 + } + }, + "compositeScore": 72.99, + "successRate": 1 + }, + { + "provider": "namespace", + "iterations": [ + { + "ttiMs": 3105.64 + }, + { + "ttiMs": 1806.35 + }, + { + "ttiMs": 1765.1 + }, + { + "ttiMs": 1818.77 + }, + { + "ttiMs": 1983.27 + }, + { + "ttiMs": 1984.51 + }, + { + "ttiMs": 1877.25 + }, + { + "ttiMs": 1732.14 + }, + { + "ttiMs": 1737.15 + }, + { + "ttiMs": 1865.16 + }, + { + "ttiMs": 1860.21 + }, + { + "ttiMs": 1848.09 + }, + { + "ttiMs": 2018.13 + }, + { + "ttiMs": 1857.65 + }, + { + "ttiMs": 1912.34 + }, + { + "ttiMs": 2374.58 + }, + { + "ttiMs": 1994.29 + }, + { + "ttiMs": 1797.49 + }, + { + "ttiMs": 1897.39 + }, + { + "ttiMs": 1828.88 + }, + { + "ttiMs": 1698.26 + }, + { + "ttiMs": 2201.67 + }, + { + "ttiMs": 1842.6 + }, + { + "ttiMs": 3113.82 + }, + { + "ttiMs": 1976.47 + }, + { + "ttiMs": 2052.28 + }, + { + "ttiMs": 1802.37 + }, + { + "ttiMs": 1735.2 + }, + { + "ttiMs": 1863.94 + }, + { + "ttiMs": 2072.01 + }, + { + "ttiMs": 1936.45 + }, + { + "ttiMs": 1960.34 + }, + { + "ttiMs": 1838.14 + }, + { + "ttiMs": 2210 + }, + { + "ttiMs": 1722.25 + }, + { + "ttiMs": 1758.71 + }, + { + "ttiMs": 2149.03 + }, + { + "ttiMs": 1772.9 + }, + { + "ttiMs": 1997.93 + }, + { + "ttiMs": 2002.09 + }, + { + "ttiMs": 2022.29 + }, + { + "ttiMs": 1961.88 + }, + { + "ttiMs": 1896.53 + }, + { + "ttiMs": 2112.78 + }, + { + "ttiMs": 3561.19 + }, + { + "ttiMs": 2025.5 + }, + { + "ttiMs": 2185.47 + }, + { + "ttiMs": 1984.09 + }, + { + "ttiMs": 2352.88 + }, + { + "ttiMs": 2190.4 + }, + { + "ttiMs": 2143.24 + }, + { + "ttiMs": 2168.24 + }, + { + "ttiMs": 2060.12 + }, + { + "ttiMs": 1958.21 + }, + { + "ttiMs": 2054.87 + }, + { + "ttiMs": 1897.35 + }, + { + "ttiMs": 1984.83 + }, + { + "ttiMs": 1761.7 + }, + { + "ttiMs": 1908.95 + }, + { + "ttiMs": 1865.18 + }, + { + "ttiMs": 2383.6 + }, + { + "ttiMs": 2012.75 + }, + { + "ttiMs": 3072.16 + }, + { + "ttiMs": 1712.98 + }, + { + "ttiMs": 1873.59 + }, + { + "ttiMs": 1955.27 + }, + { + "ttiMs": 2094.31 + }, + { + "ttiMs": 2065.04 + }, + { + "ttiMs": 1852.62 + }, + { + "ttiMs": 1853.21 + }, + { + "ttiMs": 1878.3 + }, + { + "ttiMs": 1860.92 + }, + { + "ttiMs": 1738.39 + }, + { + "ttiMs": 1817.87 + }, + { + "ttiMs": 1655.28 + }, + { + "ttiMs": 2034.73 + }, + { + "ttiMs": 2129.92 + }, + { + "ttiMs": 1907.14 + }, + { + "ttiMs": 2160.53 + }, + { + "ttiMs": 11055.17 + }, + { + "ttiMs": 1803.39 + }, + { + "ttiMs": 1737.88 + }, + { + "ttiMs": 1834.48 + }, + { + "ttiMs": 2383.18 + }, + { + "ttiMs": 1802.95 + }, + { + "ttiMs": 1703.74 + }, + { + "ttiMs": 3276.56 + }, + { + "ttiMs": 1741.48 + }, + { + "ttiMs": 1990.58 + }, + { + "ttiMs": 2695.97 + }, + { + "ttiMs": 1920.87 + }, + { + "ttiMs": 2143.58 + }, + { + "ttiMs": 1769.34 + }, + { + "ttiMs": 1919.22 + }, + { + "ttiMs": 1870.32 + }, + { + "ttiMs": 2038.44 + }, + { + "ttiMs": 1909.86 + }, + { + "ttiMs": 2091.84 + }, + { + "ttiMs": 1982.17 + }, + { + "ttiMs": 2041.52 + } + ], + "summary": { + "ttiMs": { + "median": 1945.86, + "p95": 2374.58, + "p99": 3072.16 + } + }, + "compositeScore": 77.78, + "successRate": 1 + }, + { + "provider": "runloop", + "iterations": [ + { + "ttiMs": 1987.06 + }, + { + "ttiMs": 1424.93 + }, + { + "ttiMs": 1460.87 + }, + { + "ttiMs": 1459.63 + }, + { + "ttiMs": 1694.45 + }, + { + "ttiMs": 1508.65 + }, + { + "ttiMs": 1621.44 + }, + { + "ttiMs": 1411.58 + }, + { + "ttiMs": 1632.45 + }, + { + "ttiMs": 1598.97 + }, + { + "ttiMs": 1724.09 + }, + { + "ttiMs": 1702.53 + }, + { + "ttiMs": 1651.38 + }, + { + "ttiMs": 1426.5 + }, + { + "ttiMs": 1458.72 + }, + { + "ttiMs": 1409.42 + }, + { + "ttiMs": 1390.24 + }, + { + "ttiMs": 1595.4 + }, + { + "ttiMs": 2115.36 + }, + { + "ttiMs": 2426.53 + }, + { + "ttiMs": 1593.76 + }, + { + "ttiMs": 1451.11 + }, + { + "ttiMs": 1699 + }, + { + "ttiMs": 1595.42 + }, + { + "ttiMs": 1444.25 + }, + { + "ttiMs": 1596.27 + }, + { + "ttiMs": 1482.83 + }, + { + "ttiMs": 1413.14 + }, + { + "ttiMs": 1593.44 + }, + { + "ttiMs": 1364.36 + }, + { + "ttiMs": 1428.64 + }, + { + "ttiMs": 1445.7 + }, + { + "ttiMs": 1482.73 + }, + { + "ttiMs": 1494.39 + }, + { + "ttiMs": 1491.71 + }, + { + "ttiMs": 1694.27 + }, + { + "ttiMs": 1869.77 + }, + { + "ttiMs": 1421.38 + }, + { + "ttiMs": 1595.85 + }, + { + "ttiMs": 1424.91 + }, + { + "ttiMs": 1414.86 + }, + { + "ttiMs": 1424.95 + }, + { + "ttiMs": 1491.01 + }, + { + "ttiMs": 1445.92 + }, + { + "ttiMs": 1435.92 + }, + { + "ttiMs": 1693.57 + }, + { + "ttiMs": 1444.89 + }, + { + "ttiMs": 1692.22 + }, + { + "ttiMs": 1695.6 + }, + { + "ttiMs": 1644.63 + }, + { + "ttiMs": 1596.09 + }, + { + "ttiMs": 1700.29 + }, + { + "ttiMs": 1398.08 + }, + { + "ttiMs": 1417.74 + }, + { + "ttiMs": 1700.94 + }, + { + "ttiMs": 1453.27 + }, + { + "ttiMs": 1410.43 + }, + { + "ttiMs": 1601.47 + }, + { + "ttiMs": 1562.89 + }, + { + "ttiMs": 1454.47 + }, + { + "ttiMs": 1541.9 + }, + { + "ttiMs": 1594.13 + }, + { + "ttiMs": 1419.02 + }, + { + "ttiMs": 1547.94 + }, + { + "ttiMs": 1555.68 + }, + { + "ttiMs": 1446.98 + }, + { + "ttiMs": 1592.85 + }, + { + "ttiMs": 1596.89 + }, + { + "ttiMs": 1435.27 + }, + { + "ttiMs": 1442.86 + }, + { + "ttiMs": 1693.4 + }, + { + "ttiMs": 1461.95 + }, + { + "ttiMs": 1452.42 + }, + { + "ttiMs": 1693.34 + }, + { + "ttiMs": 1354.53 + }, + { + "ttiMs": 1694.73 + }, + { + "ttiMs": 1798.7 + }, + { + "ttiMs": 1443.66 + }, + { + "ttiMs": 1442.13 + }, + { + "ttiMs": 1412.59 + }, + { + "ttiMs": 1410.75 + }, + { + "ttiMs": 1532 + }, + { + "ttiMs": 1469.58 + }, + { + "ttiMs": 1579.2 + }, + { + "ttiMs": 1692.35 + }, + { + "ttiMs": 1540.16 + }, + { + "ttiMs": 1428.55 + }, + { + "ttiMs": 1405.33 + }, + { + "ttiMs": 1594.66 + }, + { + "ttiMs": 1446.6 + }, + { + "ttiMs": 1691.39 + }, + { + "ttiMs": 1476.97 + }, + { + "ttiMs": 1691.07 + }, + { + "ttiMs": 1428.6 + }, + { + "ttiMs": 2099.48 + }, + { + "ttiMs": 1805.62 + }, + { + "ttiMs": 1476.06 + }, + { + "ttiMs": 1431.9 + }, + { + "ttiMs": 1596.28 + }, + { + "ttiMs": 1397.77 + } + ], + "summary": { + "ttiMs": { + "median": 1493.05, + "p95": 1700.94, + "p99": 1805.62 + } + }, + "compositeScore": 84.08, + "successRate": 1 + }, + { + "provider": "vercel", + "iterations": [ + { + "ttiMs": 1953.99 + }, + { + "ttiMs": 1802.77 + }, + { + "ttiMs": 2089.17 + }, + { + "ttiMs": 1823 + }, + { + "ttiMs": 1867.71 + }, + { + "ttiMs": 1959.49 + }, + { + "ttiMs": 1972.3 + }, + { + "ttiMs": 1757.5 + }, + { + "ttiMs": 1823.58 + }, + { + "ttiMs": 1851.31 + }, + { + "ttiMs": 2129.6 + }, + { + "ttiMs": 1736.35 + }, + { + "ttiMs": 1889.74 + }, + { + "ttiMs": 2097.48 + }, + { + "ttiMs": 1853.18 + }, + { + "ttiMs": 1966.63 + }, + { + "ttiMs": 1889.79 + }, + { + "ttiMs": 2186.72 + }, + { + "ttiMs": 1931.35 + }, + { + "ttiMs": 1760.82 + }, + { + "ttiMs": 1933.14 + }, + { + "ttiMs": 1740.37 + }, + { + "ttiMs": 1986.95 + }, + { + "ttiMs": 1776.26 + }, + { + "ttiMs": 1893.18 + }, + { + "ttiMs": 0, + "error": "Sandbox creation timed out" + }, + { + "ttiMs": 1788.58 + }, + { + "ttiMs": 1787.97 + }, + { + "ttiMs": 1711.12 + }, + { + "ttiMs": 1843.11 + }, + { + "ttiMs": 1916.62 + }, + { + "ttiMs": 1790.33 + }, + { + "ttiMs": 2140.15 + }, + { + "ttiMs": 1741.9 + }, + { + "ttiMs": 1930.92 + }, + { + "ttiMs": 0, + "error": "Sandbox creation timed out" + }, + { + "ttiMs": 1910.44 + }, + { + "ttiMs": 1880.6 + }, + { + "ttiMs": 1912.66 + }, + { + "ttiMs": 1825.38 + }, + { + "ttiMs": 1822.16 + }, + { + "ttiMs": 1893.94 + }, + { + "ttiMs": 1789.08 + }, + { + "ttiMs": 1834.41 + }, + { + "ttiMs": 2124.02 + }, + { + "ttiMs": 2043.16 + }, + { + "ttiMs": 1788.31 + }, + { + "ttiMs": 2699.15 + }, + { + "ttiMs": 2160.66 + }, + { + "ttiMs": 1762.84 + }, + { + "ttiMs": 2031.64 + }, + { + "ttiMs": 0, + "error": "Sandbox creation timed out" + }, + { + "ttiMs": 1829.17 + }, + { + "ttiMs": 1831.75 + }, + { + "ttiMs": 2228.21 + }, + { + "ttiMs": 1819.8 + }, + { + "ttiMs": 1835.19 + }, + { + "ttiMs": 2147.87 + }, + { + "ttiMs": 2036 + }, + { + "ttiMs": 1879.44 + }, + { + "ttiMs": 1854.13 + }, + { + "ttiMs": 1981.99 + }, + { + "ttiMs": 1914.01 + }, + { + "ttiMs": 2335.14 + }, + { + "ttiMs": 1912.55 + }, + { + "ttiMs": 2242.21 + }, + { + "ttiMs": 1975 + }, + { + "ttiMs": 0, + "error": "Sandbox creation timed out" + }, + { + "ttiMs": 2014.37 + }, + { + "ttiMs": 1949.49 + }, + { + "ttiMs": 1740.55 + }, + { + "ttiMs": 1827.5 + }, + { + "ttiMs": 1832.92 + }, + { + "ttiMs": 2080.96 + }, + { + "ttiMs": 1833.36 + }, + { + "ttiMs": 1969.99 + }, + { + "ttiMs": 1794.22 + }, + { + "ttiMs": 1899.16 + }, + { + "ttiMs": 1951.15 + }, + { + "ttiMs": 1928.63 + }, + { + "ttiMs": 1775.83 + }, + { + "ttiMs": 1890.06 + }, + { + "ttiMs": 1903.24 + }, + { + "ttiMs": 1920.88 + }, + { + "ttiMs": 1832.6 + }, + { + "ttiMs": 0, + "error": "Sandbox creation timed out" + }, + { + "ttiMs": 2026.23 + }, + { + "ttiMs": 1569.3 + }, + { + "ttiMs": 1963.28 + }, + { + "ttiMs": 1894.86 + }, + { + "ttiMs": 1773.94 + }, + { + "ttiMs": 2207.87 + }, + { + "ttiMs": 2284.73 + }, + { + "ttiMs": 1840.35 + }, + { + "ttiMs": 1945.14 + }, + { + "ttiMs": 1858.16 + }, + { + "ttiMs": 2025.09 + }, + { + "ttiMs": 2055.22 + }, + { + "ttiMs": 1994.32 + }, + { + "ttiMs": 1904.85 + } + ], + "summary": { + "ttiMs": { + "median": 1899.16, + "p95": 2147.87, + "p99": 2228.21 + } + }, + "compositeScore": 75.9, + "successRate": 0.95 } ] } \ No newline at end of file diff --git a/src/benchmark.ts b/src/benchmark.ts index 3d9e9b7..c1f1286 100644 --- a/src/benchmark.ts +++ b/src/benchmark.ts @@ -29,7 +29,7 @@ export function computeStats(values: number[], trimPercent: number = 0.05): Stat } export async function runBenchmark(config: ProviderConfig): Promise { - const { name, iterations = 100, timeout = 120_000, requiredEnvVars, sandboxOptions } = config; + const { name, iterations = 100, timeout = 120_000, requiredEnvVars, sandboxOptions, probeCommand } = config; // Check if all required credentials are available const missingVars = requiredEnvVars.filter(v => !process.env[v]); @@ -52,7 +52,7 @@ export async function runBenchmark(config: ProviderConfig): Promise): Promise { +export async function runIteration(compute: any, timeout: number, sandboxOptions?: Record, probeCommand?: string): Promise { let sandbox: any = null; try { @@ -93,7 +93,7 @@ export async function runIteration(compute: any, timeout: number, sandboxOptions sandbox = await withTimeout(compute.sandbox.create(sandboxOptions), timeout, 'Sandbox creation timed out'); const result = await withTimeout( - sandbox.runCommand('node -v'), + sandbox.runCommand(probeCommand ?? 'node -v'), 30_000, 'First command execution timed out' ) as { exitCode: number; stderr?: string }; diff --git a/src/concurrent.ts b/src/concurrent.ts index 64a0df4..bafedd4 100644 --- a/src/concurrent.ts +++ b/src/concurrent.ts @@ -6,7 +6,7 @@ interface ConcurrentConfig extends ProviderConfig { } export async function runConcurrentBenchmark(config: ConcurrentConfig): Promise { - const { name, concurrency, timeout = 120_000, requiredEnvVars, sandboxOptions } = config; + const { name, concurrency, timeout = 120_000, requiredEnvVars, sandboxOptions, probeCommand } = config; // Check if all required credentials are available const missingVars = requiredEnvVars.filter(v => !process.env[v]); @@ -32,7 +32,7 @@ export async function runConcurrentBenchmark(config: ConcurrentConfig): Promise< // Fire all sandbox creations simultaneously — no awaiting between launches const promises = Array.from({ length: concurrency }, (_, i) => - runIteration(compute, timeout, sandboxOptions) + runIteration(compute, timeout, sandboxOptions, probeCommand) .then(result => { console.log(` Sandbox ${i + 1}/${concurrency}: TTI ${(result.ttiMs / 1000).toFixed(2)}s`); return result; diff --git a/src/custom-providers/secure-exec.ts b/src/custom-providers/secure-exec.ts deleted file mode 100644 index 395a1ee..0000000 --- a/src/custom-providers/secure-exec.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { - NodeRuntime, - createNodeDriver, - createNodeRuntimeDriverFactory, - createNodeV8Runtime, -} from "secure-exec"; -import type { ProviderConfig } from "../types.js"; - -// Singleton promise — created once, shared across all sandbox creates -let sharedRuntimePromise: ReturnType | null = null; - -async function initSharedRuntime() { - const systemDriver = createNodeDriver(); - const v8Runtime = await createNodeV8Runtime(); - const runtimeDriverFactory = createNodeRuntimeDriverFactory({ v8Runtime }); - return { systemDriver, runtimeDriverFactory }; -} - -function getSharedRuntime() { - if (!sharedRuntimePromise) { - sharedRuntimePromise = initSharedRuntime(); - } - return sharedRuntimePromise; -} - -async function createSecureExecCompute() { - // Kick off singleton init eagerly so first create is fast - const shared = getSharedRuntime(); - - return { - sandbox: { - create: async () => { - const { systemDriver, runtimeDriverFactory } = await shared; - - const runtime = new NodeRuntime({ - systemDriver, - runtimeDriverFactory, - }); - - return { - runCommand: async () => { - await runtime.run("export const x = 1;"); - return { exitCode: 0 }; - }, - destroy: async () => { - runtime.dispose(); - }, - }; - }, - }, - }; -} - -export const secureExecProvider: ProviderConfig = { - name: 'secure-exec', - requiredEnvVars: [], - createCompute: createSecureExecCompute, -}; diff --git a/src/providers.ts b/src/providers.ts index 800f5ac..2e179cb 100644 --- a/src/providers.ts +++ b/src/providers.ts @@ -11,7 +11,7 @@ import { namespace } from '@computesdk/namespace'; import { cloudflare } from '@computesdk/cloudflare'; import { sprites } from '@computesdk/sprites'; import { compute } from 'computesdk'; -import { secureExecProvider } from './custom-providers/secure-exec.js'; +import { secureExec } from '@computesdk/secure-exec-nodejs'; import type { ProviderConfig } from './types.js'; /** @@ -21,9 +21,13 @@ import type { ProviderConfig } from './types.js'; * Automatic mode providers route through the ComputeSDK gateway (requires COMPUTESDK_API_KEY). */ export const providers: ProviderConfig[] = [ - // --- Custom providers --- - secureExecProvider, // --- Direct mode (provider SDK packages) --- + { + name: 'secure-exec', + requiredEnvVars: [], + createCompute: () => secureExec(), + probeCommand: 'module.exports = process.version;', + }, { name: 'e2b', requiredEnvVars: ['E2B_API_KEY'], diff --git a/src/staggered.ts b/src/staggered.ts index 53142ce..82c407d 100644 --- a/src/staggered.ts +++ b/src/staggered.ts @@ -7,7 +7,7 @@ interface StaggeredConfig extends ProviderConfig { } export async function runStaggeredBenchmark(config: StaggeredConfig): Promise { - const { name, concurrency, staggerDelayMs, timeout = 120_000, requiredEnvVars, sandboxOptions } = config; + const { name, concurrency, staggerDelayMs, timeout = 120_000, requiredEnvVars, sandboxOptions, probeCommand } = config; // Check if all required credentials are available const missingVars = requiredEnvVars.filter(v => !process.env[v]); @@ -38,7 +38,7 @@ export async function runStaggeredBenchmark(config: StaggeredConfig): Promise { const readyAt = performance.now() - wallStart; rampProfile.push({ launchedAt, readyAt, ttiMs: result.ttiMs }); diff --git a/src/types.ts b/src/types.ts index 56e695b..9b89028 100644 --- a/src/types.ts +++ b/src/types.ts @@ -11,6 +11,8 @@ export interface ProviderConfig { createCompute: () => any; /** Options passed to sandbox.create() (e.g. { image: 'node:20' }) */ sandboxOptions?: Record; + /** Command to run as the TTI probe (default: 'node -v') */ + probeCommand?: string; } export interface TimingResult { From 771148c977e4f69251a0fd9a5ad58c12727a1d5c Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Sat, 21 Mar 2026 13:26:18 -0700 Subject: [PATCH 4/4] refactor: rename to @computesdk/secure-exec --- package.json | 5 ++--- src/providers.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 43365ce..fab700c 100644 --- a/package.json +++ b/package.json @@ -42,10 +42,9 @@ "@computesdk/runloop": "^1.3.36", "@computesdk/sprites": "^0.1.1", "@computesdk/vercel": "^1.7.13", - "@computesdk/secure-exec-nodejs": "file:../computesdk/packages/secure-exec-nodejs", + "@computesdk/secure-exec": "file:../computesdk/packages/secure-exec", "computesdk": "^2.2.1", - "dotenv": "^17.2.1", - "secure-exec": "0.1.1-rc.3" + "dotenv": "^17.2.1" }, "devDependencies": { "@types/node": "^20.0.0", diff --git a/src/providers.ts b/src/providers.ts index 2e179cb..fe50177 100644 --- a/src/providers.ts +++ b/src/providers.ts @@ -11,7 +11,7 @@ import { namespace } from '@computesdk/namespace'; import { cloudflare } from '@computesdk/cloudflare'; import { sprites } from '@computesdk/sprites'; import { compute } from 'computesdk'; -import { secureExec } from '@computesdk/secure-exec-nodejs'; +import { secureExec } from '@computesdk/secure-exec'; import type { ProviderConfig } from './types.js'; /**