From 722abda895ed5c629f7cf90e347a031ab47bd682 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Wed, 9 Oct 2024 12:42:20 +0200 Subject: [PATCH] Provide an xworker to PyEditors (#2216) --- core/package-lock.json | 164 +++++++++++------------ core/package.json | 6 +- core/src/plugins/py-editor.js | 13 ++ core/tests/manual/py-editor-failure.html | 2 +- core/tests/manual/py-editor.html | 2 +- core/types/core.d.ts | 2 +- 6 files changed, 101 insertions(+), 88 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 3ae72f7e..ce3f4e5c 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@pyscript/core", - "version": "0.6.2", + "version": "0.6.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pyscript/core", - "version": "0.6.2", + "version": "0.6.4", "license": "APACHE-2.0", "dependencies": { "@ungap/with-resolvers": "^0.1.0", @@ -31,7 +31,7 @@ "@webreflection/toml-j0.4": "^1.1.3", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-web-links": "^0.11.0", - "bun": "^1.1.29", + "bun": "^1.1.30", "chokidar": "^4.0.1", "codedent": "^0.1.2", "codemirror": "^6.0.1", @@ -42,7 +42,7 @@ "rollup-plugin-string": "^3.0.0", "static-handler": "^0.5.3", "string-width": "^7.2.0", - "typescript": "^5.6.2", + "typescript": "^5.6.3", "xterm": "^5.3.0", "xterm-readline": "^1.1.1" }, @@ -431,9 +431,9 @@ } }, "node_modules/@oven/bun-darwin-aarch64": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.1.29.tgz", - "integrity": "sha512-Z8WnrXoAXg6ENU6z+Mil94oipMBMliJIj4XWWqjNC33/ZGPqMdPT5MbFQjbdHjxe5bRBW/aHaMU3G35fGx9Seg==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.1.30.tgz", + "integrity": "sha512-D07QioP+QXlouvIqQIS+7r2zq4lTNd6he79rhKsRQRZGFf9i3NPu87zspUpCaFEu//DZ35DYTt+5anQpAzpoxA==", "cpu": [ "arm64" ], @@ -445,9 +445,9 @@ ] }, "node_modules/@oven/bun-darwin-x64": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.1.29.tgz", - "integrity": "sha512-tDHDR+OWLCKEP0xE8IGCWRxSsxO5tr3rvyrSzy6CXYkoWPz66kODbtbGfWl8HSwunrQxJKnE2L9LWX2Eiz3Cpw==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.1.30.tgz", + "integrity": "sha512-xZ4gTehS6QwN6bsJfDycCNneKoUMaFUQhQg24bJzXS4JPDxeKg1W7PS5AE+U9apz5Dx6//+D4RwVpAPG2LXt0w==", "cpu": [ "x64" ], @@ -459,9 +459,9 @@ ] }, "node_modules/@oven/bun-darwin-x64-baseline": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.1.29.tgz", - "integrity": "sha512-B+zKlJR+3ANPDU+vNjvXaqgB63hYcCk16/k45hiInvIsDXfSdDn4+LMHwZTFdfUWTCGbNMFg9u4bZCtK0nhMDw==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.1.30.tgz", + "integrity": "sha512-1kFUCxHx7WuEbLDmqm0m2UKBd3S4Ln6qKQ4gxU4umMLFkmvDJn6PszDruFInxGKFLoTAmbXNYNVWkkG/ekt/Lg==", "cpu": [ "x64" ], @@ -473,9 +473,9 @@ ] }, "node_modules/@oven/bun-linux-aarch64": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.1.29.tgz", - "integrity": "sha512-BuV2Gni+FaMo1r7+3vLjefQYtQcWE01zJJ4zCjyzikP1L4r6PUaLeJyKXbqF6sIR0cLjG6LWj66EGskakDyvWA==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.1.30.tgz", + "integrity": "sha512-SfHHLlph6fptDXyyChcUkeDbEZr2ww1p2BucV6OrvzwTOPi8pVmXA4360YT8ggR/3AHPp4GO36VaD+FU2Ocbxw==", "cpu": [ "arm64" ], @@ -487,9 +487,9 @@ ] }, "node_modules/@oven/bun-linux-x64": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.1.29.tgz", - "integrity": "sha512-JVLiTafybuOFIeC80mZEzHdkOCCzlOtOV5zCbvYAIb7D3SM64fNBwrR0dvDkJTQtsjbwt8YeVFN2YRSI/wlFkw==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.1.30.tgz", + "integrity": "sha512-1mC39jQSaECytEKAZdCZmv3ZreMsp7aoxnBwmJtVd2Z7urnw17PKi4dKkZd/R+AubsNYtXtW4jeM8SEa5sUJRw==", "cpu": [ "x64" ], @@ -501,9 +501,9 @@ ] }, "node_modules/@oven/bun-linux-x64-baseline": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.1.29.tgz", - "integrity": "sha512-tQhm1SDyymBvc2L3zIN7FI+sI3g9gxavDYuvL/Lz17nEk1oqP5DFE2lF9QWJMDdQL3XQKH/drI27yNpfPHgAPw==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.1.30.tgz", + "integrity": "sha512-/b/VuNOaAYmsVk9MvfwKcCYARJPUg78hebxNyD5DSajAf3dqtUSnf7QYcq/3mxWH++N+gM7uRTrGksGS63+ZUw==", "cpu": [ "x64" ], @@ -515,9 +515,9 @@ ] }, "node_modules/@oven/bun-windows-x64": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.1.29.tgz", - "integrity": "sha512-d930+pSkNVHPJJBryIh1gsAKk7lp1HzcktFe0bfxwmpHwjj4BiVfMjU1YaCnsdWKNs2Nv1Y1PLVDNyUCQVfo0Q==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.1.30.tgz", + "integrity": "sha512-mdRjNtD9NIA8CiH6N1zrIVE6oAtDko/c29H1s00UA+5O/WhXhg95G8IyInD8hN3vAEz8H2lGBgLG2EGfSFxnGg==", "cpu": [ "x64" ], @@ -529,9 +529,9 @@ ] }, "node_modules/@oven/bun-windows-x64-baseline": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.1.29.tgz", - "integrity": "sha512-+QWT8Kp+3Sl54QUa6uBsDzQlX11thMMVAw+yUwSRU4Y5FVSN8RPuxhN8ijJ1QGm1KOYA2sCI6V+3lyNMNmRvAA==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.1.30.tgz", + "integrity": "sha512-ERQ4/ogzbFvHjpyHcnruc8bnryvDvUoiWi6vczfQ4M/idJc+Kg5VSEJiF5k7946rIZGamG6QWgRxtpIglD4/Zw==", "cpu": [ "x64" ], @@ -1036,13 +1036,16 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -1140,9 +1143,9 @@ "license": "MIT" }, "node_modules/bun": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/bun/-/bun-1.1.29.tgz", - "integrity": "sha512-SKhpyKNZtgxrVel9ec9xon3LDv8mgpiuFhARgcJo1YIbggY2PBrKHRNiwQ6Qlb+x3ivmRurfuwWgwGexjpgBRg==", + "version": "1.1.30", + "resolved": "https://registry.npmjs.org/bun/-/bun-1.1.30.tgz", + "integrity": "sha512-ysRL1pq10Xba0jqVLPrKU3YIv0ohfp3cTajCPtpjCyppbn3lfiAVNpGoHfyaxS17OlPmWmR67UZRPw/EueQuug==", "cpu": [ "arm64", "x64" @@ -1160,14 +1163,14 @@ "bunx": "bin/bun.exe" }, "optionalDependencies": { - "@oven/bun-darwin-aarch64": "1.1.29", - "@oven/bun-darwin-x64": "1.1.29", - "@oven/bun-darwin-x64-baseline": "1.1.29", - "@oven/bun-linux-aarch64": "1.1.29", - "@oven/bun-linux-x64": "1.1.29", - "@oven/bun-linux-x64-baseline": "1.1.29", - "@oven/bun-windows-x64": "1.1.29", - "@oven/bun-windows-x64-baseline": "1.1.29" + "@oven/bun-darwin-aarch64": "1.1.30", + "@oven/bun-darwin-x64": "1.1.30", + "@oven/bun-darwin-x64-baseline": "1.1.30", + "@oven/bun-linux-aarch64": "1.1.30", + "@oven/bun-linux-x64": "1.1.30", + "@oven/bun-linux-x64-baseline": "1.1.30", + "@oven/bun-windows-x64": "1.1.30", + "@oven/bun-windows-x64-baseline": "1.1.30" } }, "node_modules/callsites": { @@ -1194,9 +1197,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001666", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz", - "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==", + "version": "1.0.30001667", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", + "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", "dev": true, "funding": [ { @@ -1623,9 +1626,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.31", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz", - "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==", + "version": "1.5.33", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz", + "integrity": "sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==", "dev": true, "license": "ISC" }, @@ -3301,9 +3304,9 @@ } }, "node_modules/readdirp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", - "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, "license": "MIT", "engines": { @@ -3594,20 +3597,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { + "node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", @@ -3623,19 +3613,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3787,9 +3764,9 @@ "license": "ISC" }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3902,6 +3879,16 @@ "xterm": "^5.0.0" } }, + "node_modules/xterm-readline/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/xterm-readline/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -3924,6 +3911,19 @@ "node": ">=8" } }, + "node_modules/xterm-readline/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", diff --git a/core/package.json b/core/package.json index 019ede64..16af9547 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@pyscript/core", - "version": "0.6.2", + "version": "0.6.4", "type": "module", "description": "PyScript", "module": "./index.js", @@ -80,7 +80,7 @@ "@webreflection/toml-j0.4": "^1.1.3", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-web-links": "^0.11.0", - "bun": "^1.1.29", + "bun": "^1.1.30", "chokidar": "^4.0.1", "codedent": "^0.1.2", "codemirror": "^6.0.1", @@ -91,7 +91,7 @@ "rollup-plugin-string": "^3.0.0", "static-handler": "^0.5.3", "string-width": "^7.2.0", - "typescript": "^5.6.2", + "typescript": "^5.6.3", "xterm": "^5.3.0", "xterm-readline": "^1.1.1" }, diff --git a/core/src/plugins/py-editor.js b/core/src/plugins/py-editor.js index 01293ae4..5b9b7eeb 100644 --- a/core/src/plugins/py-editor.js +++ b/core/src/plugins/py-editor.js @@ -77,6 +77,19 @@ async function execute({ currentTarget }) { const xworker = XWorker.call(new Hook(null, hooks), srcLink, details); + // expose xworker like in terminal or other workers to allow + // creation and destruction of editors on the fly + if (hasRunButton) { + for (const type of TYPES.keys()) { + const editor = currentTarget.closest(`.${type}-editor-box`); + const script = editor?.parentNode?.previousElementSibling; + if (script) { + defineProperties(script, { xworker: { value: xworker } }); + break; + } + } + } + const { sync } = xworker; const { promise, resolve } = Promise.withResolvers(); envs.set(env, promise); diff --git a/core/tests/manual/py-editor-failure.html b/core/tests/manual/py-editor-failure.html index 5e8b4e9f..6294d051 100644 --- a/core/tests/manual/py-editor-failure.html +++ b/core/tests/manual/py-editor-failure.html @@ -3,7 +3,7 @@ - PyTerminal + PyEditor Failure diff --git a/core/tests/manual/py-editor.html b/core/tests/manual/py-editor.html index dc402e42..000dda50 100644 --- a/core/tests/manual/py-editor.html +++ b/core/tests/manual/py-editor.html @@ -3,7 +3,7 @@ - PyTerminal + PyEditor diff --git a/core/types/core.d.ts b/core/types/core.d.ts index 6c2ac1c2..c7c72922 100644 --- a/core/types/core.d.ts +++ b/core/types/core.d.ts @@ -55,5 +55,5 @@ declare const exportedHooks: { }; }; declare const exportedConfig: {}; -declare const exportedWhenDefined: (type: string) => Promise; +declare const exportedWhenDefined: any; export { stdlib, optional, inputFailure, TYPES, relative_url, exportedPyWorker as PyWorker, exportedMPWorker as MPWorker, exportedHooks as hooks, exportedConfig as config, exportedWhenDefined as whenDefined };