East Node Standard Library
Node.js platform functions for the East language. Enables East programs to interact with the filesystem, network, console, and other I/O operations.
Quick Start
import { East, StringType, NullType } from "@elaraai/east";
import { NodePlatform, Console, FileSystem } from "@elaraai/east-node-std";
const processFile = East.function(
[StringType],
NullType,
($, path) => {
const content = $.let(FileSystem.readFile(path));
$(Console.log(content));
}
);
// Compile with NodePlatform (includes all platform functions)
const compiled = East.compile(processFile.toIR(), NodePlatform);
await compiled("input.txt");
Decision Tree: Which Module to Use
Task → What do you need?
│
├─ Console (stdout/stderr output)
│ └─ .log(), .error(), .write()
│
├─ FileSystem (read/write files and directories)
│ ├─ Text → .readFile(), .writeFile(), .appendFile()
│ ├─ Binary → .readFileBytes(), .writeFileBytes()
│ ├─ Query → .exists(), .isFile(), .isDirectory()
│ ├─ Directory → .createDirectory(), .readDirectory()
│ └─ Delete → .deleteFile()
│
├─ Fetch (HTTP requests)
│ └─ .get(), .getBytes(), .post(), .request()
│
├─ Crypto (hashing, UUIDs, random bytes)
│ └─ .uuid(), .randomBytes(), .hashSha256(), .hashSha256Bytes()
│
├─ Time (timestamps and delays)
│ └─ .now(), .sleep()
│
├─ Path (path manipulation)
│ └─ .join(), .resolve(), .dirname(), .basename(), .extname()
│
├─ Random (statistical distributions)
│ ├─ Basic → .uniform(), .normal(), .range()
│ ├─ Continuous → .exponential(), .weibull(), .pareto(), .logNormal()
│ ├─ Discrete → .bernoulli(), .binomial(), .geometric(), .poisson()
│ ├─ Composite → .irwinHall(), .bates()
│ └─ Control → .seed()
│
└─ Assert (testing with describeEast)
└─ .is(), .equal(), .notEqual(), .less(), .lessEqual(), .greater(), .greaterEqual(), .between(), .throws(), .fail()
Compiling East Programs
Option 1: Use NodePlatform (all modules)
const compiled = East.compile(myFunction.toIR(), NodePlatform);
Option 2: Use specific module implementations
const compiled = East.compile(myFunction.toIR(), [...Console.Implementation, ...FileSystem.Implementation]);
Reference Documentation
- API Reference - Complete function signatures, types, and arguments for all modules
- Examples - Working code examples by use case
Available Modules
| Module | Import | Purpose |
|--------|--------|---------|
| Console | import { Console } from "@elaraai/east-node-std" | stdout/stderr output |
| FileSystem | import { FileSystem } from "@elaraai/east-node-std" | Read/write files and directories |
| Fetch | import { Fetch } from "@elaraai/east-node-std" | HTTP requests |
| Crypto | import { Crypto } from "@elaraai/east-node-std" | Hashing, UUIDs, random bytes |
| Time | import { Time } from "@elaraai/east-node-std" | Timestamps and sleep |
| Path | import { Path } from "@elaraai/east-node-std" | Path manipulation |
| Random | import { Random } from "@elaraai/east-node-std" | 14 statistical distributions |
| Assert | import { Assert, describeEast } from "@elaraai/east-node-std" | Testing utilities |
Accessing Types
import { Fetch } from "@elaraai/east-node-std";
// Access types via Module.Types.TypeName
const method = Fetch.Types.Method;
const config = Fetch.Types.RequestConfig;
const response = Fetch.Types.Response;