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 | Методы | Описание |
|---|---|---|
fs | readFile, writeFile, list, exists, search | Работа с файлами (относительно workspace) |
workspace | current, list, readFile, exists, writeFile | Логический объект проекта |
process | run | Запуск native-процессов (capability process.execute) |
network | fetch, connect | HTTP(S)-запросы и TCP-соединения |
storage | get, set, has, remove | Персистентное хранилище приложения |
secrets | get, set, remove | Защищённое хранение токенов и ключей |
window | open, close, setTitle | Управление окном приложения |
events | on, off, emit | События приложения |
ipc | call, provide | Вызов сервисов других приложений |
capabilities | has, check, list | Проверка прав |
permissions | resolve, status | Обработка запросов на разрешения |
system | info, platform, version, ping | Системная информация |
identity | identity | Идентичность приложения |
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