diff --git a/package.json b/package.json index 9c4b8eb..329a43d 100644 --- a/package.json +++ b/package.json @@ -40,5 +40,8 @@ "bugs": { "url": "https://github.com/source-academy/plugins/issues" }, - "homepage": "https://github.com/source-academy/plugins#readme" + "homepage": "https://github.com/source-academy/plugins#readme", + "resolutions": { + "@sourceacademy/conductor": "^0.5.0" + } } diff --git a/src/common/test/tsconfig.json b/src/common/test/tsconfig.json index c7482f9..2c2e7cc 100644 --- a/src/common/test/tsconfig.json +++ b/src/common/test/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "exclude": ["./dist"], - "include": ["./src"], + "include": ["./src", "../../runner/test/src/__tests__/runner.test.ts"], "compilerOptions": { "declaration": true, "outDir": "./dist", diff --git a/src/runner/cse-machine/src/__tests__/runner.test.ts b/src/runner/cse-machine/src/__tests__/runner.test.ts deleted file mode 100644 index 29e9ab6..0000000 --- a/src/runner/cse-machine/src/__tests__/runner.test.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { describe, test, expect, vi } from "vitest"; -import { CseMachinePlugin } from ".."; -import { - CSE_CHANNEL, - CSE_MESSAGE_TYPE_SNAPSHOTS, - RUNNER_ID, - type CseSnapshot, -} from "@sourceacademy/common-cse-machine"; -import type { IChannel, IConduit } from "@sourceacademy/conductor/conduit"; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const makeChannel = () => { - const send = vi.fn(); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return { send } as unknown as IChannel & { send: typeof send }; -}; -const makePlugin = (ch = makeChannel()) => new CseMachinePlugin({} as IConduit, [ch]); - -const minimalSnapshot = (): CseSnapshot => ({ - stepIndex: 0, - control: [], - stash: [], - environments: [{ id: "g", name: "global", parentId: null, bindings: [], isActive: true }], -}); - -// ── Identity / wiring ───────────────────────────────────────────────────────── - -describe("plugin identity", () => { - test("id is RUNNER_ID", () => { - expect(makePlugin().id).toBe(RUNNER_ID); - }); - - test("channelAttach declares the CSE channel", () => { - expect(CseMachinePlugin.channelAttach).toEqual([CSE_CHANNEL]); - }); - - test("channelAttach contains exactly one channel", () => { - expect(CseMachinePlugin.channelAttach).toHaveLength(1); - }); -}); - -// ── Constructor ─────────────────────────────────────────────────────────────── - -describe("constructor", () => { - test("throws when no channel is provided", () => { - expect(() => new CseMachinePlugin({} as IConduit, [])).toThrow( - "CSE channel is required but was not provided.", - ); - }); - - test("does not throw when a channel is provided", () => { - expect(() => makePlugin()).not.toThrow(); - }); -}); - -// ── sendSnapshots ───────────────────────────────────────────────────────────── - -describe("sendSnapshots", () => { - test("sends a message with the correct type discriminator", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - plugin.sendSnapshots([minimalSnapshot()]); - expect(channel.send.mock.calls[0][0].type).toBe(CSE_MESSAGE_TYPE_SNAPSHOTS); - }); - - test("sends snapshots unchanged", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - const snapshots = [minimalSnapshot()]; - plugin.sendSnapshots(snapshots); - expect(channel.send.mock.calls[0][0].snapshots).toEqual(snapshots); - }); - - test("sets totalSteps to the length of the snapshots array", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - const snapshots = [minimalSnapshot(), { ...minimalSnapshot(), stepIndex: 1 }]; - plugin.sendSnapshots(snapshots); - expect(channel.send.mock.calls[0][0].totalSteps).toBe(2); - }); - - test("calls channel.send exactly once per sendSnapshots call", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - plugin.sendSnapshots([minimalSnapshot()]); - expect(channel.send).toHaveBeenCalledTimes(1); - }); - - test("can be called multiple times, sending once each time", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - plugin.sendSnapshots([minimalSnapshot()]); - plugin.sendSnapshots([minimalSnapshot()]); - expect(channel.send).toHaveBeenCalledTimes(2); - }); - - test("handles an empty snapshots array", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - plugin.sendSnapshots([]); - expect(channel.send.mock.calls[0][0]).toEqual({ - type: CSE_MESSAGE_TYPE_SNAPSHOTS, - snapshots: [], - totalSteps: 0, - }); - }); - - test("handles a large batch of snapshots", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - const snapshots = Array.from({ length: 50 }, (_, i) => ({ - ...minimalSnapshot(), - stepIndex: i, - })); - plugin.sendSnapshots(snapshots); - expect(channel.send.mock.calls[0][0].totalSteps).toBe(50); - }); - - test("preserves snapshot fields including currentLine and metadata", () => { - const channel = makeChannel(); - const plugin = makePlugin(channel); - const snap: CseSnapshot = { - stepIndex: 3, - control: [{ displayText: "call f", metadata: { instrType: "Application" } }], - stash: [{ displayValue: "42", label: "number" }], - environments: [{ id: "g", name: "global", parentId: null, bindings: [], isActive: true }], - currentLine: 7, - }; - plugin.sendSnapshots([snap]); - expect(channel.send.mock.calls[0][0].snapshots[0]).toEqual(snap); - }); -}); diff --git a/src/runner/remoteExecution/index.ts b/src/runner/remoteExecution/index.ts index b57bc7e..8fad08d 100644 --- a/src/runner/remoteExecution/index.ts +++ b/src/runner/remoteExecution/index.ts @@ -1,24 +1,2 @@ -import { CHANNEL_ID, RUNNER_ID, type PySlangMessage } from "@sourceacademy/common-test"; -import type { IPlugin, IChannel, IConduit } from "@sourceacademy/conductor/conduit"; -import { EV3Engine } from "py-slang/src/engines/ev3/EV3Engine"; - -export class remoteRunnerPlugin implements IPlugin { - readonly id: string = RUNNER_ID; - static readonly channelAttach = [CHANNEL_ID]; - private readonly __channel: IChannel; - private readonly engine: EV3Engine; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - constructor(_conduit: IConduit, [channel]: IChannel[]) { - this.__channel = channel; - this.engine = new EV3Engine(); - - this.__channel.subscribe(async message => { - if (message.type === "run") { - const result = await this.engine.execute(message.code); - console.log("Engine response:", result); - this.__channel.send({ type: "result", output: JSON.stringify(result) }); - } - }); - } -} +export { RemoteExecutionPlugin } from "./src"; +export type { ConnectionStatus, ConnectionStatusMessage } from "./src"; diff --git a/src/runner/remoteExecution/package.json b/src/runner/remoteExecution/package.json index 4cabf6a..ac9c414 100644 --- a/src/runner/remoteExecution/package.json +++ b/src/runner/remoteExecution/package.json @@ -22,20 +22,20 @@ "build": "rollup -c", "prepack": "yarn build" }, - "dependencies": { - "py-slang": "github:proto-aiken-13/py-slang#branch-ev3-engine" - }, "peerDependencies": { "@sourceacademy/conductor": ">=0.3.0" }, "devDependencies": { + "@rollup/plugin-commonjs": "^29.0.3", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-terser": "^1.0.0", "@rollup/plugin-typescript": "^12.3.0", "@sourceacademy/common-test": "workspace:*", "@sourceacademy/conductor": ">=0.3.0", "@vitest/coverage-istanbul": "^4.1.9", - "rollup": "^4.60.2", + "esbuild": "^0.28.1", + "rollup": "^4.62.2", + "rollup-plugin-esbuild": "^6.2.1", "tslib": "^2.8.1", "typescript": "^6.0.3", "vitest": "^4.1.9" diff --git a/src/runner/remoteExecution/rollup.config.mjs b/src/runner/remoteExecution/rollup.config.mjs index 75b8ba5..85ef413 100644 --- a/src/runner/remoteExecution/rollup.config.mjs +++ b/src/runner/remoteExecution/rollup.config.mjs @@ -2,21 +2,13 @@ import nodeResolve from "@rollup/plugin-node-resolve"; import terser from "@rollup/plugin-terser"; import typescript from "@rollup/plugin-typescript"; -/** - * @type {import('rollup').RollupOptions} - */ -export default { - input: "src/index.ts", - external: id => id.includes("py-slang"), - output: [ - { - file: "dist/index.cjs", - format: "cjs", - }, - { - file: "dist/index.mjs", - format: "esm", - }, - ], - plugins: [nodeResolve(), typescript(), terser()], -}; +export default [ + { + input: "src/index.ts", + output: [ + { file: "dist/index.cjs", format: "cjs" }, + { file: "dist/index.mjs", format: "esm" }, + ], + plugins: [nodeResolve(), typescript(), terser()], + }, +]; diff --git a/src/runner/remoteExecution/src/index.ts b/src/runner/remoteExecution/src/index.ts index e337998..0ebd35c 100644 --- a/src/runner/remoteExecution/src/index.ts +++ b/src/runner/remoteExecution/src/index.ts @@ -1 +1,25 @@ -export { remoteRunnerPlugin } from "../index"; +import { + CHANNEL_ID, + RUNNER_ID, + MESSAGE_TYPE_CONNECTION_STATUS, + type ConnectionStatusMessage, + type ConnectionStatus, +} from "@sourceacademy/common-remote-execution"; +import type { IPlugin, IChannel, IConduit } from "@sourceacademy/conductor/conduit"; + +export class RemoteExecutionPlugin implements IPlugin { + readonly id: string = RUNNER_ID; + static readonly channelAttach = [CHANNEL_ID]; + private readonly __channel: IChannel; + + constructor(_conduit: IConduit, [channel]: IChannel[]) { + if (!channel) { + throw new Error("Remote execution channel is required but was not provided."); + } + this.__channel = channel; + } + + sendConnectionStatus(status: ConnectionStatus): void { + this.__channel.send({ type: MESSAGE_TYPE_CONNECTION_STATUS, status }); + } +} diff --git a/yarn.lock b/yarn.lock index 3613194..4a670ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1753,6 +1753,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.62.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-android-arm64@npm:4.60.4" @@ -1760,6 +1767,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-android-arm64@npm:4.62.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-darwin-arm64@npm:4.60.4" @@ -1767,6 +1781,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.62.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-darwin-x64@npm:4.60.4" @@ -1774,6 +1795,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.62.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.4" @@ -1781,6 +1809,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.62.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-freebsd-x64@npm:4.60.4" @@ -1788,6 +1823,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.62.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.4" @@ -1795,6 +1837,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.62.2" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.4" @@ -1802,6 +1851,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.62.2" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.4" @@ -1809,6 +1865,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.62.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.4" @@ -1816,6 +1879,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.62.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loong64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.4" @@ -1823,6 +1893,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loong64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.62.2" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-loong64-musl@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.4" @@ -1830,6 +1907,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loong64-musl@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-loong64-musl@npm:4.62.2" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-ppc64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.4" @@ -1837,6 +1921,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-ppc64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.62.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-ppc64-musl@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.4" @@ -1844,6 +1935,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-ppc64-musl@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.62.2" + conditions: os=linux & cpu=ppc64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.4" @@ -1851,6 +1949,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.62.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-musl@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.4" @@ -1858,6 +1963,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-musl@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.62.2" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.4" @@ -1865,6 +1977,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.62.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.4" @@ -1872,6 +1991,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.62.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.4" @@ -1879,6 +2005,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.62.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-openbsd-x64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-openbsd-x64@npm:4.60.4" @@ -1886,6 +2019,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-openbsd-x64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-openbsd-x64@npm:4.62.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-openharmony-arm64@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.4" @@ -1893,6 +2033,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-openharmony-arm64@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.62.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.4" @@ -1900,6 +2047,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.62.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.4" @@ -1907,6 +2061,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.62.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-gnu@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.4" @@ -1914,6 +2075,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-gnu@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.62.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.60.4": version: 4.60.4 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.4" @@ -1921,6 +2089,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.62.2": + version: 4.62.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.62.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.34.0": version: 0.34.49 resolution: "@sinclair/typebox@npm:0.34.49" @@ -2009,13 +2184,6 @@ __metadata: languageName: unknown linkType: soft -"@sourceacademy/conductor@npm:>=0.3.0, @sourceacademy/conductor@npm:^0.3.0": - version: 0.3.0 - resolution: "@sourceacademy/conductor@npm:0.3.0" - checksum: 10c0/e6d50cc0b9188fa5ec54c3bb2e6b9a0f9391ba37449e74a326c89c4e14deb00c4882700062427737e6f6fca556fd95d91fa9d7f6e125fe1d43938a65cc3c0c4d - languageName: node - linkType: hard - "@sourceacademy/conductor@npm:^0.5.0": version: 0.5.0 resolution: "@sourceacademy/conductor@npm:0.5.0" @@ -2054,14 +2222,16 @@ __metadata: version: 0.0.0-use.local resolution: "@sourceacademy/runner-remote-execution@workspace:src/runner/remoteExecution" dependencies: + "@rollup/plugin-commonjs": "npm:^29.0.3" "@rollup/plugin-node-resolve": "npm:^16.0.3" "@rollup/plugin-terser": "npm:^1.0.0" "@rollup/plugin-typescript": "npm:^12.3.0" "@sourceacademy/common-test": "workspace:*" "@sourceacademy/conductor": "npm:>=0.3.0" "@vitest/coverage-istanbul": "npm:^4.1.9" - py-slang: "github:proto-aiken-13/py-slang#branch-ev3-engine" - rollup: "npm:^4.60.2" + esbuild: "npm:^0.28.1" + rollup: "npm:^4.62.2" + rollup-plugin-esbuild: "npm:^6.2.1" tslib: "npm:^2.8.1" typescript: "npm:^6.0.3" vitest: "npm:^4.1.9" @@ -2271,7 +2441,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": +"@types/estree@npm:*, @types/estree@npm:1.0.9, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.9 resolution: "@types/estree@npm:1.0.9" checksum: 10c0/3ad3286ca2988cd550dafb8f2ad599c8474868e954fa601a36655bdfefd8039f7c714b8c1c7f2ae219ffbd58bd4660e66fa7479a0120fc02d4777057d4865387 @@ -3348,7 +3518,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.4.3": +"debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.4.0, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -3518,6 +3688,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.6.0": + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b + languageName: node + linkType: hard + "es-module-lexer@npm:^2.0.0": version: 2.1.0 resolution: "es-module-lexer@npm:2.1.0" @@ -3525,7 +3702,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:~0.28.0": +"esbuild@npm:^0.28.1, esbuild@npm:~0.28.0": version: 0.28.1 resolution: "esbuild@npm:0.28.1" dependencies: @@ -4087,6 +4264,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.10.0": + version: 4.14.0 + resolution: "get-tsconfig@npm:4.14.0" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/abc2b9275468eb589079a0b7a95eb5107c14fdd0ca6dda1bff116fe774ea1f79975421dcb22a0c86b4f820fcc69a7655dddf9b6d6a8a2c06fcb59e19794c0724 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -6022,6 +6208,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + "resolve@npm:^1.22.1": version: 1.22.12 resolution: "resolve@npm:1.22.12" @@ -6122,6 +6315,21 @@ __metadata: languageName: node linkType: hard +"rollup-plugin-esbuild@npm:^6.2.1": + version: 6.2.1 + resolution: "rollup-plugin-esbuild@npm:6.2.1" + dependencies: + debug: "npm:^4.4.0" + es-module-lexer: "npm:^1.6.0" + get-tsconfig: "npm:^4.10.0" + unplugin-utils: "npm:^0.2.4" + peerDependencies: + esbuild: ">=0.18.0" + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + checksum: 10c0/cbde8deb1926756b02ba6d5c4b400a54e8a7636669fb74f4350138091a31d58df8423cf7b2b16315a5118476d3789aca2942eab37c66adfeb7ec209bb61566cf + languageName: node + linkType: hard + "rollup@npm:^4.60.2": version: 4.60.4 resolution: "rollup@npm:4.60.4" @@ -6212,6 +6420,96 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.62.2": + version: 4.62.2 + resolution: "rollup@npm:4.62.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.62.2" + "@rollup/rollup-android-arm64": "npm:4.62.2" + "@rollup/rollup-darwin-arm64": "npm:4.62.2" + "@rollup/rollup-darwin-x64": "npm:4.62.2" + "@rollup/rollup-freebsd-arm64": "npm:4.62.2" + "@rollup/rollup-freebsd-x64": "npm:4.62.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.62.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.62.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.62.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.62.2" + "@rollup/rollup-linux-loong64-gnu": "npm:4.62.2" + "@rollup/rollup-linux-loong64-musl": "npm:4.62.2" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.62.2" + "@rollup/rollup-linux-ppc64-musl": "npm:4.62.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.62.2" + "@rollup/rollup-linux-riscv64-musl": "npm:4.62.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.62.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.62.2" + "@rollup/rollup-linux-x64-musl": "npm:4.62.2" + "@rollup/rollup-openbsd-x64": "npm:4.62.2" + "@rollup/rollup-openharmony-arm64": "npm:4.62.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.62.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.62.2" + "@rollup/rollup-win32-x64-gnu": "npm:4.62.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.62.2" + "@types/estree": "npm:1.0.9" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-loong64-musl": + optional: true + "@rollup/rollup-linux-ppc64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-musl": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-openbsd-x64": + optional: true + "@rollup/rollup-openharmony-arm64": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/83ff5f4a1fea3fa05db2ef56beceee8c33d4a72b818e19c562f1e85c41076fe5b12aadc44048bb73e60b83336df82154b017fa6bf0186f3141643e6f215fbdcb + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -6827,6 +7125,16 @@ __metadata: languageName: node linkType: hard +"unplugin-utils@npm:^0.2.4": + version: 0.2.5 + resolution: "unplugin-utils@npm:0.2.5" + dependencies: + pathe: "npm:^2.0.3" + picomatch: "npm:^4.0.3" + checksum: 10c0/51541892216a0505210866f956228ffe8c64792b0f7397d919e68aece7ac18cc4bed9cceaf0b59f777183701e4b1f2d95776b18e7d4a75ac64e2cfa4737bd9e5 + languageName: node + linkType: hard + "unrs-resolver@npm:^1.7.11": version: 1.12.2 resolution: "unrs-resolver@npm:1.12.2"