Полное описание API

Ниже приведено описание API, специфичного для Loginom и не являющегося частью стандарта языка (ECMA-262).

Глобальное пространство имён

Глобальное свойство globalThis содержит значение глобального this, который является глобальным объектом.

// Объект require применяется для импорта модулей CommonJS
const require: IRequire;

// Представление модуля
interface IModule {
    readonly id: string;               // идентификатор
    parent?: this;                     // вызывающий модуль
    filename?: string;                 // полный путь к модулю
    loaded: boolean;                   // загружен ли модуль полностью
    exports: any;                      // экспортируемый объект
}

// Функция require принимает идентификатор модуля и возвращает свойство модуля exports
interface IRequireFunction {
    (id: string): any;
}

interface IRequire extends IRequireFunction  {
    // функция resolve возвращает полный путь к модулю
    resolve: (id: string) => string;
    // кэш модулей
    cache: { [resolvedId: string]: IModule]; };
}

// Объект console
var console: Console;

interface Console {
     // Метод assert выводит в консоль сообщение, если первый аргумент false
    assert(condition?: boolean, ...data: any[]): void;
    // Метод error выводит сообщение об ошибке
    error(...data: any[]): void;
    // Методы warn выводит предупреждающее сообщение
    warn(...data: any[]): void;
    // Методы info и log выводят информационное сообщение
    info(...data: any[]): void;
    log(...data: any[]): void;
    // Метод clear очищает консоль вывода сообщений в окне предпросмотра
    clear(): void;
}  
// Функция позволяет отложить выполнение функции
function setTimeout(callback: Function, delay: number = 0, ...args: any[]): number;  

// Функция отменяет таймаут, установленный вызовом setTimeout 
function clearTimeout(timeoutID: number): void; 

// Функция кодирует в base-64 строку бинарных данных
function btoa(text: string, encoding?: "utf-8"): string;

// Функция декодирует строку, закодированную c использованием base-64
function atob(text: string, encoding?: "utf-8"): string;

Встроенный модуль "builtIn/Data"

Объекты модуля "builtIn/Data" предоставляют доступ к портам узла JavaScript. По умолчанию код узла содержит строку импорта этих объектов.

const InputTable: IDataSource;      // Источник данных с первого порта
const InputTables: IDataSource[];   // Массив входных источников данных
const OutputTable: IOutputTable;    // Выходной набор данных
const InputVariables: IVariables;   // Входные переменные

// Перечисления, описывающие метаданные полей и переменных
enum DataType {                                                          // Тип данных
     None = 0,
     Boolean = 1,
     DateTime = 2,
     Float = 3,
     Integer = 4,
     String = 5,
     Variant = 6
}

enum DataKind {                                                          // Вид данных
     Undefined = 0,
     Continuous = 1,
     Discrete = 2
}

enum UsageType {                                                         // Назначение полей
     Unspecified = 0,
     Excluded = 1,
     Useless = 2,
     Used = 3,
     Input = 3,
     Active = 3,
     Output = 4,
     Predicted = 4,
     Key = 5,
     Group = 6,
     Value = 7,
     Transaction = 8,
     Item = 9
}

// Информация о столбце
interface IColumnInfo {
    readonly Name: string;                                                  // Имя
    readonly DisplayName: string;                                           // Метка
    readonly DataType: DataType;                                            // Тип данных
    readonly DataKind: DataKind;                                            // Вид данных
    readonly DefaultUsageType: UsageType;                                   // Назначение поля
}

// Представление столбца набора данных
interface IColumn extends IColumnInfo, Iterable<boolean | number | string | Date | undefined> {
    readonly Index: number;                                                 // Индекс
    readonly RowCount: number;                                              // Количество значений
    // Метод Get возвращает значение столбца по индексу
    Get(row: number): boolean | number | string | Date | undefined;
    // Метод IsNull проверяет на Null значение столбца
    IsNull(row: number): boolean;
}

// Свойства столбца входного набора данных
interface IIntputColumn extends IColumn {
    readonly UsageType: UsageType;                                          // Назначение поля
}

// Свойства и методы столбца выходного набора данных
interface IOutputColumn extends IColumn {
    // Свойства столбца доступны на чтение и запись
    DisplayName: string;                                                    // Метка
    DataType: DataType;                                                     // Тип данных
    DataKind: DataKind;                                                     // Вид данных
    DefaultUsageType: UsageType;                                            // Назначение поля
    // Метод Set задает значение поля в записи, созданной методом Append
    Set(value: boolean | number | string | Date | null | undefined): void;
}

// Доступ к итерируемому списку столбцов по имени и индексу
interface IIntputColumns extends Iterable<IIntputColumn> {
    [name: string]: IIntputColumn;
    [index: number]: IIntputColumn;
}

// Свойства и методы набора данных
interface IDataSource {
    readonly Columns: IIntputColumns;                                       // Список столбцов
    readonly ColumnCount: number;                                           // Количество столбцов
    readonly RowCount: number;                                              // Количество строк

    // Метод Get возвращает значение заданной строки в заданном столбце
    Get(row: number, col: number | string): boolean | number | string | Date | undefined;
    // Метод IsNull проверяет на Null значение заданной строки в заданном столбце
    IsNull(row: number, col: number | string): boolean;
    // Метод GetColumn возвращает столбец источника данных
    GetColumn(col: number | string): IIntputColumn;
}

// Свойства и методы выходного набора
interface IOutputTable extends IDataSource {
    readonly Columns: IOutputColumns;                                       // Список столбцов
    // Метод AssignColumns создает столбцы из итерируемого источника
    AssignColumns(source: Iteratable<string | IColumnInfo>): void;
    // Метод GetColumn возвращает столбец выходного набора
    GetColumn(col: number | string): IOutputColumn;
    // Метод AddColumn добавляет столбец в конец списка столбцов
    AddColumn(source?: string | IColumnInfo): IOutputColumn;
    // Метод InsertColumn вставляет столбец по заданному индексу
    InsertColumn(col: number, source?: IColumnInfo): IOutputColumn;
    // Метод DeleteColumn удаляет столбец по индексу или имени
    DeleteColumn(col: number | string): void;
    // Метод ClearColumns удаляет все столбцы
    ClearColumns(): void;
    // Метод Append добавляет запись в набор
    Append(): void;
    // Метод Set задает значение заданного поля в записи, созданной методом Append
    Set(col: number | string, value: boolean | number | string | Date | null | undefined): void;
}

// Доступ к итерируемому списку столбцов выходного набора по имени и индексу
interface IOutputColumns extends Iterable<IOutputColumn> {
    [index: number]: IOutputColumn;
    [name: string]: IOutputColumn;
}

// Представление входной переменной
interface IVariable {
    readonly Index: number;                                                 // Индекс
    readonly Name: string;                                                  // Имя
    readonly DisplayName: string;                                           // Метка
    readonly DataType: DataType;                                            // Тип данных
    readonly Value: boolean | number | string | Date | undefined;           // Значение
    readonly IsNull: boolean;                                               // Проверка на Null
}

// Доступ к итерируемому списку входных переменных по имени и индексу
interface IVariableItems extends Iterable<IVariable> {
    [name: string]: IVariable;
    [index: number]: IVariable;
}

// Представление переменных входного порта
interface IVariables {
    readonly Items: IVariableItems;
    readonly Count: number;
}

Встроенный модуль "builtIn/Fetch"

Fetch API — интерфейс для работы с запросами и ответами HTTP, предоставляет возможность взаимодействия с ресурсами сети непосредственно из узла JavaScript.

// Представление заголовков запроса и ответа
interface Headers {
    append(name: string, value: string): void;
    delete(name: string): void;
    get(name: string): string | null;
    has(name: string): boolean;
    set(name: string, value: string): void;
    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;
    [Symbol.iterator](): IterableIterator<[string, string]>;
    entries(): IterableIterator<[string, string]>;
    keys(): IterableIterator<string>;
    values(): IterableIterator<string>;
}
type HeadersInit = Headers | IterableIterator<[string, string]> | Record<string, string>;
declare var Headers: {
    prototype: Headers;
    new(init?: HeadersInit): Headers;
}

// Представление тела запроса/ответа
interface Body {
    readonly bodyUsed: boolean;
    arrayBuffer(): Promise<ArrayBuffer>;
    json(): Promise<any>;
    text(): Promise<string>;
}

// Представление запроса
type RequestInfo = Request | string;
type RequestRedirect = "error" | "follow" | "manual";
interface Request extends Body {
    readonly headers: Headers;
    readonly method: string;
    readonly redirect: RequestRedirect;
    readonly url: string;
    clone(): Request;
}
type BodyInit = ArrayBufferView | ArrayBuffer | string;
interface RequestInit {
    body?: BodyInit | null;
    headers?: HeadersInit;
    method?: string;
    redirect?: RequestRedirect;
}
declare var Request: {
    prototype: Request;
    new(input: RequestInfo, init?: RequestInit): Request;
}

// Представление ответа
interface Response extends Body {
    readonly headers: Headers;
    readonly ok: boolean;
    readonly redirected: boolean;
    readonly status: number;
    readonly statusText: string;
    readonly url: string;
    clone(): Response;
}
interface ResponseInit {
    headers?: HeadersInit;
    status?: number;
    statusText?: string;
}
declare var Response: {
    prototype: Response;
    new(body?: BodyInit | null, init?: ResponseInit): Response;
    error(): Response;
    redirect(url: string, status?: number): Response;
}

// Функция запроса ресурса сети
function fetch(url: Request|string, init?: RequestInit): Promise<Response>;

Встроенный модуль "builtIn/FS"

File Storage API — интерфейс для работы с файловой системой. Представляет набор функций для выполнения различных операций с файлами и папками непосредственно из узла JavaScript.


namespace constants {
    COPYFILE_EXCL: number;
    COPYFILE_FICLONE: number;
    COPYFILE_FICLONE_FORCE: number;
    O_RDONLY: number;
    O_WRONLY: number;
    O_RDWR: number;
    O_CREAT: number;
    O_EXCL: number;
    O_TRUNC: number;
    O_APPEND: number;
    O_SYNC: number;
    S_IFMT: number;
    S_IFREG: number;
    S_IFDIR: number;
    S_IFLNK: number;
}

type Encoding = "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "latin1" | "binary"; 
// или явное указание номера кодовой страницы однобайтовой кодировки в формате cp<CodePageNumber>, например, cp1252
// или явное указание номера кодовой страницы iso-8859 в формате "iso-8859-<номер>", например, iso-8859-1
type OpenMode = number | string;
type Mode = number | string;

class Stats {
    isFile(): boolean;
    isDirectory(): boolean;
    isSymbolicLink(): boolean;

    mode: number;
    size: number;
    atime: Date;
    mtime: Date;
    ctime: Date;
    birthtime: Date;
}

class FileHandle {
    valueOf(): number;
}

class Dirent {
    isFile(): boolean;
    isDirectory(): boolean;
    isSymbolicLink(): boolean;
    name: string;
}

interface ReadSyncOptions {
   offset?: number;
   length?: number;
   position?: number | null;
}

interface WriteFileOptions {
  encoding?: string;
  flag?: string;
  writeBOM?: boolean; 
}

function appendFileSync(file: string | FileHandle, data: string | ArrayBuffer | ArrayBufferView, options?: WriteFileOptions): void;

function closeSync(fd: FileHandle): void;

function copyFileSync(src: string, dest: string, mode?: number): void;

function existsSync(path: string): boolean;

function fstatSync(fd: FileHandle): Stats;

function ftruncateSync(fd: FileHandle, len?: number | null): void;

function lstatSync(path: string, options?: { throwIfNoEntry?: boolean }): Stats;

function mkdirSync(path: string, options?: { recursive?: boolean; mode?: Mode } | Mode): void;

function openSync(path: string, flags: OpenMode; mode: Mode): FileHandle;

function readdirSync(path: string, options?: { withFileTypes?: false }): string[];
function readdirSync(path: string, options: { withFileTypes: true }): Dirent[];

function readFileSync(path: string | FileHandle, options?: { encoding?: null; flag?: string; } | null): ArrayBuffer;
function readFileSync(path: string | FileHandle, options: { encoding: Encoding; flag?: string; } | Encoding): string;

function readSync(fd: FileHandle, buffer: ArrayBuffer | ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number;
function readSync(fd: FileHandle, buffer: ArrayBuffer | ArrayBufferView, opts?: ReadSyncOptions): number;

function realpathSync(path: string): string;

function renameSync(oldPath: string, newPath: string): void;

function rmdirSync(path: string, options?: { recursive?: boolean }): void;

function rmSync(path: string, options?: { force?: boolean; recursive?: boolean }): void;

function statSync(path: string, options?: { throwIfNoEntry?: boolean }): Stats;

function truncateSync(path: string, len?: number | null): void;

function unlinkSync(path: string): void;

function writeFileSync(path: string | FileHandle, data: string | ArrayBuffer | ArrayBufferView, options?: WriteFileOptions): void;

function writeSync(fd: FileHandle, buffer: ArrayBuffer | ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number;
function writeSync(fd: FileHandle, string: string, position?: number | null, encoding?: Encoding): number;