jdoodle-client v1.0.2
JDoodle API Client
JavaScript JDoodle API client
Distribution
Unpkg - https://unpkg.com/jdoodle-client@latest/dist/
- Example .env file for configuring node side endpoints and credentials - https://unpkg.com/jdoodle-client@latest/dist/template.env
- Node module (CJS) - https://unpkg.com/jdoodle-client@latest/dist/jdoodle-client.node.js
- Browser bundle (UMD) - https://unpkg.com/jdoodle-client@latest/dist/jdoodle-client.browser.js
- Node ES module - https://unpkg.com/jdoodle-client@latest/dist/jdoodle-client.node.mjs
- Bundlers/browsers ES module - https://unpkg.com/jdoodle-client@latest/dist/jdoodle-client.browser.mjs
Install
Node
npm install jdoodle-clientAll distribution files are in node_modules/jdoodle-client/dist/
Browser
<script src="https://unpkg.com/jdoodle-client@latest/dist/jdoodle-client.browser.js"></script>Use
Node
const jdoodle = require('jdoodle-client');
// Load JDOODLE_XXX process.env values for configuring endpoints and
// credentials from .env file. This prevents putting personal key info
// into version control. Example template.env is available in the dist folder
require('dotenv').load();
// Use the jdoodle object, example server code (using Koa) might look like that:
httpRouter.post(jdoodle.defaultExecutePath, async ctx => {
ctx.body = await jdoodle.execute(ctx.request.body);
});
httpRouter.post(jdoodle.defaultCreditSpentPath, async ctx => {
ctx.body = await jdoodle.creditSpent();
});Browser
// Use the jdoodle (window.jdoodle) object, example browser code might look like that:
(() => { 'use strict';
const elem = id => document.getElementById(id);
const on = (t, e, h) => t.addEventListener(e, h);
const ready = h => on(document, 'DOMContentLoaded', h);
ready(() => {
on(elem('execute'), 'click', async () => {
// Gather language, versionIndex, stdin, script from UI elements
let json = await jdoodle.execute({
language,
versionIndex: Number(versionIndex) || 0,
stdin,
script
});
// Use returned json
});
on(elem('creditSpent'), 'click', async () => {
let json = await jdoodle.creditSpent();
// Use returned json
});
});
})();ES module
// Node
import jdoodle from 'jdoodle-client/dist/jdoodle-client.node';
// Bundlers
import jdoodle from 'jdoodle-client';
// Use the importsAPI
The following properties/functions are available through the jdoodle namespace object returned from require('jdoodle-client') on node or available as window.jdoodle in the browser (the ES module has the namespace object as default export):
version- library versionexecute([opts])- execute code, the opts are:endpoint- node: JDoodle API endpoint, browser: your server endpointclientId- (node only) JDoodle clientId, set via .envclientSecret- (node only) JDoodle clientSecret, set via .envlanguage- language codeversionIndex- language version code (details about language and versionIndex codes)stdin- standard inputscript- program source
creditSpent([opts])- check spent credit, the opts are:endpoint- node: JDoodle API endpoint, browser: your server endpointclientId- (node only) JDoodle clientId, set via .envclientSecret- (node only) JDoodle clientSecret, set via .envAll opts have defaults so just calling the functions is a quick test if things are properly set up, the return value is a promise resolving to JSON even in the presence of errors (containing limited information about the error), for more control use the
callExecuteAPIandcallCreditSpentAPIvariants with appropriate error handling either via promise then-catch chain or try-catch block with async/await
See the example repo for complete code example (the relevant code is in app.js, layout.pug and index.pug)