Axion Платформа Скачать
Documentation · 05

window.axion API

Всё системное взаимодействие идёт через единое пространство имён window.axion.

05 window.axion API

5.1Обзор

Всё системное взаимодействие идёт через единое пространство имён window.axion:

await window.axion.fs.readFile("src/main.js");
await window.axion.process.run("git", ["status"]);
await window.axion.workspace.current();
await window.axion.storage.get("settings");

Вызовы — это запросы к Engine: JS → мост → capability-проверка → Permission Broker → нативная реализация. Прямого доступа к ОС у страницы нет.

NamespaceМетодыОписание
fsreadFile, writeFile, list, exists, searchРабота с файлами (относительно workspace)
workspacecurrent, list, readFile, exists, writeFileЛогический объект проекта
processrunЗапуск native-процессов (capability process.execute)
networkfetch, connectHTTP(S)-запросы и TCP-соединения
storageget, set, has, removeПерсистентное хранилище приложения
secretsget, set, removeЗащищённое хранение токенов и ключей
windowopen, close, setTitleУправление окном приложения
eventson, off, emitСобытия приложения
ipccall, provideВызов сервисов других приложений
capabilitieshas, check, listПроверка прав
permissionsresolve, statusОбработка запросов на разрешения
systeminfo, platform, version, pingСистемная информация
identityidentityИдентичность приложения

5.2Файлы и workspace

// текстовый файл
const text = await window.axion.fs.readFile("README.md");

// бинарный файл (основание: base64)
const bytes = await window.axion.fs.readFile("icon.png");

// запись (текст или base64-объект)
await window.axion.fs.writeFile("out.txt", "hello");
await window.axion.fs.writeFile("img.bin", { encoding: "base64", data: "aGVsbG8=" });

// поиск по glob: имя на любой глубине и путь от корня
await window.axion.fs.search("*.js");
await window.axion.fs.search("src/**/*.js");

// workspace
const current = await window.axion.workspace.current();
const list = await window.axion.workspace.list();

5.3Процессы и сеть

const result = await window.axion.process.run("git", ["status"]);
// { code: 0, stdout: "...", stderr: "" }

const resp = await window.axion.network.fetch("http://api.example.com/");
// { status, ok, headers, url, body }
Ограничение. Текущий движок поддерживает HTTP; для https используйте capability network.connect и планируйте реализацию TLS.

5.4Storage и secrets

await window.axion.storage.set("settings", { theme: "dark" });
const theme = await window.axion.storage.get("settings");
const hasTheme = await window.axion.storage.has("settings");
await window.axion.storage.remove("settings");

await window.axion.secrets.set("api_token", "secret-value");
const token = await window.axion.secrets.get("api_token");

Storage подходит для настроек и состояния, secrets — для данных, которые не должны попасть в файлы приложения (токены, ключи).

5.5События

const off = await window.axion.events.on("workspace.changed", (payload) => {
  console.log("workspace changed", payload);
});

await window.axion.events.emit("app.resumed");
off(); // отписаться

Встроенные события: app.resumed, app.suspended, workspace.changed, permission.resolved.

5.6IPC

Приложения предоставляют сервисы и вызывают методы других приложений через IPC Broker:

const resp = await window.axion.ipc.call("git.status");

// предоставление сервиса — регистрируется нативно (движком)
await window.axion.ipc.provide(
  "git",
  { status: async () => ({ ok: true, data: {...} }) }
);

Доступ к сервисам других приложений ограничен capability ipc.call и списком dependencies в manifest (см. 3.2).

5.7System и identity

const info = await window.axion.system.info();
const platform = await window.axion.system.platform(); // "windows" | "macos" | ...
const version = await window.axion.system.version();
await window.axion.system.ping(); // проверка живучести моста

const id = await window.axion.identity.identity();
// { id: "hello_world", name: "Hello World", version: "1.0.0" }

5.8Проверка прав

const hasProc = await window.axion.capabilities.has("process.execute");
const allowed = await window.axion.capabilities.check("network.connect", "api.example.com");
const all = await window.axion.capabilities.list();

// статус разрешения
const st = await window.axion.permissions.status("filesystem.read");
const ok = await window.axion.permissions.resolve(ticketId, "allow");
Готовы собрать свой первый .axn?Двадцать минут на настройку — и приложение на пяти платформах.
CLI