Skip to content

YepCode JavaScript Code Rules

This file provides guidelines for LLMs to write JavaScript code compatible with YepCode platform and ready to use its specific helpers.

Download this file

AspectGuideline
RuntimeNode.js v22
Main file (process)index.js
Entry pointasync function main()
Export (required)module.exports = { main }
Parametersyepcode.context.parameters
Variablesprocess.env.X or yepcode.env.X
Modulesyepcode.import("module-slug")
  • Always export main with module.exports = { main }
  • Never call main() directly
  • Always use async/await for async operations
  • Always add try/catch around the main flow for actionable errors
  • Never use dynamic module names with yepcode.import()—module names must be hardcoded strings (e.g. yepcode.import("module-name")), not variables
  • ✅ Use const or let; avoid var
async function main() {
// Access input parameters
const { parameters } = yepcode.context;
// Your code here
// Return result
return { message: "Success!" };
}
module.exports = { main };
  • Access execution info: const { id, comment } = yepcode.execution;
  • Access process info: const { id: processId, name: processName } = yepcode.execution.process;
  • Access schedule info (if present): const { id: scheduleId, comment: scheduleComment } = yepcode.execution.schedule;
  • Access team timezone: const timezone = yepcode.execution.timezone;
  • Use environment variables: const apiKey = process.env.API_KEY; // or yepcode.env.API_KEY
  • Import YepCode modules: const { myFunc } = yepcode.import("module-name");
    • Caution: module names must be hardcoded strings (no variables)
  • Import with version: const { myFunc } = yepcode.import("module-name", "v1.0");
  • Run another process: await yepcode.processes.run("process-identifier", options);
console.log("INFO message");
console.debug("DEBUG message");
console.info("INFO message");
console.warn("WARNING message");
console.error("ERROR message");
  • You may use external npm packages
  • Just add the require statement to the code and the package will be installed automatically
  • If package import name is different than the package name, you must use the @add-package comment:
// @add-package axios
const axios = require("axios");
const path = require("path");
// Calculate the path to the temporary file
const filePath = path.join(process.env.TMP_DATA_DIR, "myfile.txt");
// Writing a file
const fs = require("fs");
fs.writeFileSync(filePath, "Hello from YepCode!");
// Setting a value
await yepcode.datastore.set("key", "value");
// Setting a object value
await yepcode.datastore.set("key", JSON.stringify({ name: "John", age: 30 }));
// Getting a value
const value = await yepcode.datastore.get("key");
// Deleting a value
await yepcode.datastore.del("key");
const fs = require("node:fs");
const path = require("node:path");
const localPath = path.join(process.env.TMP_DATA_DIR, "localfile.txt");
// Uploading a file
await yepcode.storage.upload("path/myfile.txt", fs.createReadStream(localPath));
// Listing files
const files = await yepcode.storage.list();
// Downloading a file
const stream = await yepcode.storage.download("path/myfile.txt");
stream.pipe(fs.createWriteStream(localPath));
// Deleting a file
await yepcode.storage.delete("path/myfile.txt");
return { message: "Success!" };
  • This is the format for custom HTTP status codes:
return {
status: 404,
body: { message: "Not found" },
headers: { "Content-Type": "application/json" }
};
return {
transient: true,
data: sensitiveData,
};

Do

  • Export main with module.exports = { main }.
  • Use async/await for asynchronous work.
  • Validate parameters at the start; throw clear errors for missing or invalid input.
  • Use environment variables (e.g. process.env.API_KEY) for secrets; never hardcode them.
  • Use try/catch around the main flow and log or re-throw with clear messages.
  • Log important steps; never log secrets.

Don’t

  • Never call main() in your code—YepCode invokes it.
  • Never hardcode API keys, passwords, or tokens.
  • Don’t forget to export: module.exports = { main }.
  • Don’t use var; use const or let.
  • Don’t ignore errors; wrap risky operations in try/catch.
  • Don’t use dynamic module names: yepcode.import(moduleName) is wrong; use yepcode.import("module-name").