返回 Skill 列表
extension
分类: 开发与工程无需 API Key

east-node-std

Node.js平台功能用于East语言。在编写需要控制台输入/输出、文件系统操作、HTTP Fetch请求、加密、时间操作、路径操作、随机数生成或测试的East程序时使用。(1) 使用@elaraai/east-node-std编写East程序,(2) 使用如Console.log, FileSystem.readFile, Fetch.get, Crypto.uuid, Time.now, Path.join, Random.normal等平台函数,(3) 使用describeEast和Assert测试East代码。

person作者: jakexiaohubgithub

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;