Direct execution of CoffeeScript code in various contexts including Node.js main module and sandboxed VM environments.
Compiles and executes CoffeeScript code in the Node.js main module context, making it suitable for running complete programs.
/**
* Compiles and executes CoffeeScript code in Node.js main module context
* @param code - CoffeeScript source code to execute
* @param options - Execution options object
* @returns Return value from executed code
*/
function run(code, options);Parameters:
code (string): CoffeeScript source code to compile and executeoptions (object, optional): Execution configuration optionsReturns:
Usage Examples:
const CoffeeScript = require('coffee-script');
// Execute simple CoffeeScript
CoffeeScript.run(`
console.log "Hello from CoffeeScript!"
x = 42
console.log "The answer is #{x}"
`);
// Execute with filename for better error reporting
CoffeeScript.run(`
fs = require 'fs'
content = fs.readFileSync 'package.json', 'utf8'
data = JSON.parse content
console.log "Package name: #{data.name}"
`, {
filename: 'script.coffee'
});
// Execute and capture return value
const result = CoffeeScript.run(`
square = (x) -> x * x
result = square 7
result # This will be returned
`);
console.log(result); // 49Evaluates CoffeeScript code in a sandboxed VM context, providing isolation and custom environments.
/**
* Evaluates CoffeeScript code in a sandboxed VM context
* @param code - CoffeeScript source code to evaluate
* @param options - Evaluation options object
* @returns Return value from evaluated code
*/
function eval(code, options);Parameters:
code (string): CoffeeScript source code to evaluateoptions (object, optional): Evaluation configuration optionsReturns:
Access Pattern:
const CoffeeScript = require('coffee-script');
// Note: eval is a reserved word, so use bracket notation for direct access
const evalFunction = CoffeeScript["eval"];Usage Examples:
const CoffeeScript = require('coffee-script');
// Basic evaluation
const result = CoffeeScript.eval('6 * 7');
console.log(result); // 42
// Evaluation with custom sandbox
const customResult = CoffeeScript.eval(`
greeting = "Hello"
name = customName
"#{greeting}, #{name}!"
`, {
sandbox: {
customName: 'Alice'
}
});
console.log(customResult); // "Hello, Alice!"
// Evaluation with filename for debugging
const mathResult = CoffeeScript.eval(`
add = (a, b) -> a + b
multiply = (a, b) -> a * b
x = 10
y = 5
result = add(multiply(x, 2), y)
result
`, {
filename: 'math-operations.coffee'
});
console.log(mathResult); // 25Returns the registration module that enables Node.js to require CoffeeScript files directly.
/**
* Returns the register module for enabling .coffee file requires
* @returns Register module object
*/
function register();Usage Examples:
const CoffeeScript = require('coffee-script');
// Enable .coffee file requiring
CoffeeScript.register();
// Now you can require .coffee files directly
const myModule = require('./my-script.coffee');
// Alternative: Use the register entry point
require('coffee-script/register');
const anotherModule = require('./another-script.coffee');interface RunOptions {
/** Filename for error reporting and module resolution */
filename?: string;
}interface EvalOptions {
/** Custom sandbox object with variables available to evaluated code */
sandbox?: object;
/** Filename for error reporting and debugging */
filename?: string;
/** Module name for the evaluation context */
modulename?: string;
}The run function executes code in the main Node.js module context, which means:
require() works normally for loading dependenciesmodule.exports can be used to export valuesThe eval function runs code in a sandboxed VM context, which provides:
require implementation if neededSandbox Example:
const CoffeeScript = require('coffee-script');
const result = CoffeeScript.eval(`
# Access sandbox variables
total = 0
total += item for item in items
# Use provided utilities
message = utils.formatMessage "Total: #{total}"
{
total: total
message: message
}
`, {
sandbox: {
items: [1, 2, 3, 4, 5],
utils: {
formatMessage: (msg) => `[INFO] ${msg}`
}
}
});
console.log(result);
// { total: 15, message: '[INFO] Total: 15' }Both execution functions provide enhanced error reporting with CoffeeScript-specific context:
const CoffeeScript = require('coffee-script');
try {
CoffeeScript.run(`
undefinedFunction()
`, {
filename: 'test.coffee'
});
} catch (error) {
console.log(error.message);
console.log(error.location); // CoffeeScript source location
}