@itd-api/crypto / Cipher
Interface: Cipher
Defined in: packages/crypto/src/cipher.ts:62
Алгоритм преобразования текста.
Шифр не знает об операциях API, полях моделей и координатах разметки. Для фрагментного режима он получает только точный текст участка, а возвращённая нагрузка помещается плагином в общий контейнер с границами и id. Для whole-field режима любой шифр получает всё поле, а результат отправляется без контейнера.
decode() обязан строго отличать свой формат от постороннего текста и возвращать null, если вход ему не принадлежит. Выброшенная ошибка или значение другого типа считаются нарушением контракта.
Example
Фрагментный пользовательский шифр
const brackets: Cipher = {
name: 'brackets',
id: 5,
supportsFragments: true,
encode: (text) => `[${text}]`,
decode: (encoded) =>
encoded.startsWith('[') && encoded.endsWith(']')
? encoded.slice(1, -1)
: null,
};Properties
id
id: number;Defined in: packages/crypto/src/cipher.ts:72
Уникальный неотрицательный безопасный целочисленный идентификатор.
Он записывается в транспортный контейнер фрагмента и CryptoSpan.cipherId. После публикации формата идентификатор нельзя назначать другому алгоритму. Пользовательским алгоритмам следует назначать идентификаторы начиная с 2.
name
name: string;Defined in: packages/crypto/src/cipher.ts:64
Уникальное непустое имя, используемое в настройках и CryptoSpan.cipher.
requiresInvisibleAlphabet?
optional requiresInvisibleAlphabet?: boolean;Defined in: packages/crypto/src/cipher.ts:79
Требует ли алгоритм сохранности символов U+206A…U+206F.
Такой шифр нельзя использовать для displayName и bio: серверная сохранность невидимого алфавита для этих полей не подтверждена.
supportsFragments?
optional supportsFragments?: boolean;Defined in: packages/crypto/src/cipher.ts:86
Можно ли использовать результат encode() как нагрузку внутри общего контейнера.
При true шифр поддерживает отдельные фрагменты. Отсутствующее значение означает, что алгоритм применяется только к полю целиком.
Methods
decode()
decode(text): string | null;Defined in: packages/crypto/src/cipher.ts:98
Декодирует точную нагрузку либо целое поле.
Parameters
text
string
Returns
string | null
исходный текст или null, если вход не относится к этому шифру
encode()?
optional encode(text): string;Defined in: packages/crypto/src/cipher.ts:92
Кодирует переданный текст. Метод отсутствует у алгоритма, доступного только для чтения.
Результат фрагментного шифра не должен содержать маркеры начала или конца контейнера.
Parameters
text
string
Returns
string