Agent skill

east-node-std

Node.js platform functions for the East language. Use when writing East programs that need Console I/O, FileSystem operations, HTTP Fetch requests, Cryptography, Time operations, Path manipulation, Random number generation, or Testing. Triggers for: (1) Writing East programs with @elaraai/east-node-std, (2) Using platform functions like Console.log, FileSystem.readFile, Fetch.get, Crypto.uuid, Time.now, Path.join, Random.normal, (3) Testing East code with describeEast and Assert.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/east-node-std

SKILL.md

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

typescript
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)

typescript
const compiled = East.compile(myFunction.toIR(), NodePlatform);

Option 2: Use specific module implementations

typescript
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

typescript
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;

Didn't find tool you were looking for?

Be as detailed as possible for better results