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.
JavaScript Code Rules
Section titled âJavaScript Code RulesâQuick Reference
Section titled âQuick Referenceâ| Aspect | Guideline |
|---|---|
| Runtime | Node.js v22 |
| Main file (process) | index.js |
| Entry point | async function main() |
| Export (required) | module.exports = { main } |
| Parameters | yepcode.context.parameters |
| Variables | process.env.X or yepcode.env.X |
| Modules | yepcode.import("module-slug") |
Critical Rules
Section titled âCritical Rulesâ- â
Always export
mainwithmodule.exports = { main } - â Never call
main()directly - â
Always use
async/awaitfor async operations - â
Always add
try/catcharound 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
Process Template
Section titled âProcess Templateâasync function main() { // Access input parameters const { parameters } = yepcode.context;
// Your code here
// Return result return { message: "Success!" };}
module.exports = { main };Helpers Usage
Section titled âHelpers Usageâ- 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);
Logging
Section titled âLoggingâconsole.log("INFO message");console.debug("DEBUG message");console.info("INFO message");console.warn("WARNING message");console.error("ERROR message");Dependencies Management
Section titled âDependencies Managementâ- 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-packagecomment:
// @add-package axiosconst axios = require("axios");Local Disk
Section titled âLocal Diskâconst path = require("path");
// Calculate the path to the temporary fileconst filePath = path.join(process.env.TMP_DATA_DIR, "myfile.txt");
// Writing a fileconst fs = require("fs");fs.writeFileSync(filePath, "Hello from YepCode!");Datastore
Section titled âDatastoreâ// Setting a valueawait yepcode.datastore.set("key", "value");// Setting a object valueawait yepcode.datastore.set("key", JSON.stringify({ name: "John", age: 30 }));
// Getting a valueconst value = await yepcode.datastore.get("key");
// Deleting a valueawait yepcode.datastore.del("key");Storage
Section titled âStorageâconst fs = require("node:fs");const path = require("node:path");const localPath = path.join(process.env.TMP_DATA_DIR, "localfile.txt");
// Uploading a fileawait yepcode.storage.upload("path/myfile.txt", fs.createReadStream(localPath));
// Listing filesconst files = await yepcode.storage.list();
// Downloading a fileconst stream = await yepcode.storage.download("path/myfile.txt");stream.pipe(fs.createWriteStream(localPath));
// Deleting a fileawait yepcode.storage.delete("path/myfile.txt");Return Values
Section titled âReturn ValuesâStandard Return
Section titled âStandard Returnâreturn { message: "Success!" };Custom HTTP Status Codes
Section titled âCustom HTTP Status Codesâ- This is the format for custom HTTP status codes:
return { status: 404, body: { message: "Not found" }, headers: { "Content-Type": "application/json" }};Transient Results
Section titled âTransient Resultsâreturn { transient: true, data: sensitiveData,};Do & Donât
Section titled âDo & DonâtâDo
- Export
mainwithmodule.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; useyepcode.import("module-name").