Private KeeperPrivate Keeper
Объект PK

Объект PK

Среда QuickJS, правила доступа к библиотекам и первый рабочий JavaScript-пример.

Что такое объект PK

PK — встроенный объект, через который JavaScript-код Скрипт-бокса получает данные текущего запуска Private Keeper и вызывает операции программы. Например, PK.login читает первое входное значение, PK.getPars(4) возвращает четвёртый результат обычного парсера, а PK.md5(text) вычисляет MD5 строки.

Объект создаёт сама программа и помещает его в глобальную область выполнения. Это не класс и не конструктор: обращайтесь к готовой переменной PK, не пишите new PK().

Объект PK и in-Line Kit работают с состоянием одного проекта. Запись PK.login в JavaScript соответствует значению |LOGIN| в выражении in-Line. Если достаточно короткой подстановки непосредственно в поле проекта, начните со справочника in-Line Kit.

Первый рабочий пример

Пример вычисляет MD5 строки test и сохраняет результат в динамическую переменную Digest.

1. Создайте переменную

Добавьте в проект динамическую переменную с точным именем Digest. Метод setDV изменяет существующую переменную; если имя не найдено, значение сохранить некуда.

2. Добавьте код в Скрипт-бокс

const digest = PK.md5("test");
PK.setDV("Digest", digest);

3. Проверьте результат

После выполнения |DV|[Digest] возвращает 098f6bcd4621d373cade4e832627b4f6.

Здесь PK.md5(...) возвращает строку, а PK.setDV(...) выполняет отдельное действие и ничего не возвращает. Поэтому результат сначала помещён в переменную digest, а затем явно записан в состояние проекта.

Правила среды QuickJS

JavaScript выполняется движком QuickJS в глобальном контексте Скрипт-бокса. Код из руководств для браузера или Node.js подходит только тогда, когда он не зависит от возможностей отсутствующей среды.

Глобальный сценарий

Сценарий не является модулем ES6, поэтому верхнеуровневые import и export в нём недоступны. Объект PK уже находится в глобальной области и не требует подключения.

Подключённые библиотеки

Глобальные библиотеки доступны всей среде выполнения. Если библиотека предоставляет глобальный объект, обращайтесь к нему через globalThis.ИМЯ. Изолированные модули не становятся обычными переменными соседнего модуля.

Без Node.js

QuickJS не предоставляет среду Node.js: require(...) и встроенные модули Node.js недоступны. Для файлов, кодирования, шифрования и других операций используйте публичные методы PK.

Например, эти записи решают разные задачи:

// Готовый объект Private Keeper: подключение не требуется.
const digest = PK.md5("test");

// Глобальный объект установленной библиотеки, если она его предоставляет.
const helper = globalThis.SomeLibrary;

Следующая запись для Скрипт-бокса неверна, потому что он выполняет глобальный сценарий, а не модуль ES6:

import helper from "some-library";

Порядок изучения