README
Workshop JavaScript Client Library
The Workshop Client library is installed in Codecademy web clients and provides access from those clients to code execution services. Workshop manages a persistent websocket connection allowing clients to sync user code, execute that code in a variety of server environments, run terminal commands, and perform other code management and execution actions.
Testing changes locally
- Check out both this repo and the Codecademy repo
- Run
yarn link
in the workshop-client directory - In the Codecademy repo, run
yarn link @codecademy/workshop-client
- Run (or re-run)
yarn start
in the Codecademy repo - Verify that you can connect to the LE in your local branch
Starting a session
To start a workshop session, create a client instance and connect to workshop.
import WorkshopSession from '@codecademy/workshop-client';
let session = new WorkshopSession({
protocol: 'https',
host: 'workshop-04.codecademy.com', // for PropellerV2
apiBase: 'effective-lamp.cc-propeller.cloud', // for ContainerAPI
userId: 'some-user-id',
workspaceSlug: 'my-workspace',
encryptedKey: 'encrypted-key',
});
session
.initialize()
.then(() => {
// Ready to use
})
.catch(error => {
// Something went wrong
});
Calling services
services.workspace
upload
api/v1/workspace/upload/
session.services.workspace.upload(this.state.workspace)
.then(() => { ... })
.catch((error) => { ... })
download
api/v1/workspace/download/
session.services.workspace.download()
.then((workspace) => { ... })
.catch((error) => { ... })
services.eval
run
api/v1/eval/run/
session.services.eval.run('src/script.rb')
.then((result) => {
// result has stdout, stderr, and exitStatus props
})
.catch((error) => { ... })
Publishing the package
This package is automatically published when the version number changes
- merge your PR into main
- create a new PR that updates the version of the package in package.json. Base the version bump on all of the changes that will be added in this version.
- merge the version PR into main
- check the actions to see when the package is published