
Research
Malicious fezbox npm Package Steals Browser Passwords from Cookies via Innovative QR Code Steganographic Technique
A malicious package uses a QR code as steganography in an innovative technique.
@itgenio/edik-sync
Advanced tools
Обсуждение синхронизации состояния материала между пользователями.
Дополнительно, возможно, можно использовать для синхронизации состояния внутри сессии.
Пользователи запрашивают последнее состояние. Дальше применяют команды.
Команда - это действие, которое необходимо совершить над материалом.
На основе команд можно сделать:
Так как материал - сложное состояние с циклическими ссылками, логикой и т.д., сложно обновлять состояние дифами через запросы в бд:
Решение - запуск живую копию материала на сервере и менять ее через команды, параллельно синхронизируя ее между всеми сессиями.
Копия должна запускаться только на одном сервере, чтобы гарантировать целостность.
В базу можно сохранять команды, а не изменения.
При публикации обязательно мержить команды и состояние в конечное состояние.
Вариант решения: base + cmd1 + cmd2 + ...
createSlide
{
"id": String,
"index": Number
}
removeSlide
{
"id": String
}
moveSlide
{
"id": String,
"index": Number
}
createObject
{
"id": String,
"slideId": String,
"index": Number
//...otherFields
}
removeObject
{
"id": String
}
moveObject
{
"id": String,
"index": Number
}
changeParent
//TODO совместить с changeObjectField
?
{
"id": String,
"newParentId": Optional<String>,
"newIndex": Optional<Number>,
}
changeObjectField
type ValueType = 'string' | 'number' | 'objLink' | 'compLink';
{
"id": String,
"field": String,
"data": {
"type": ValueType,
"val": any
}
}
Примечание: data
может быть как примитив, так и ссылка на компонент/объект.
createComponent
{
"id": String,
"type": String
//...otherFields
}
removeComponent
{
"id": String
}
changeComponentField
{
"id": String,
"field": String,
"data": {
"type": ValueType,
"val": any
}
}
Надо отсылать сразу готовый объект вместе с компонентами, чтобы не спамить командами.
Аналогично пункту выше, сразу готовый объект
Влечёт за собой удаление всей внутренней структуры
Влечёт за собой удаление всей внутренней структуры.
При этом нужно очищать ссылки, что влечёт за собой изменение полей в каких-то компонентах.
Несколько вариантов решения:
шлём команду на удаление, локально изменяем модель
Каждая локальная копия сама очистит ссылки и удалит объекты.
шлём команду + список изменений, локально применяем
Каждая локальная копия применит только те изменения, которые просчитал инициатор.
Тут может возникнуть ситуация, когда мы что-то начали делать внутри удаляемого объекта и пришла команда Удалить, и наши изменения не будут в списке изменений инициатора.
Буфер действий = буфер команд?
Нет, так как буфер действий привязан к интерфейсу редактора, в то время как буфер команд отражает изменение модели материала.
Как будет работать компиляция и регистрация кастомных типов
TBD
FAQs
Sync for @itgenio/edik-core
We found that @itgenio/edik-sync demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.
Application Security
/Research
/Security News
Socket detected multiple compromised CrowdStrike npm packages, continuing the "Shai-Hulud" supply chain attack that has now impacted nearly 500 packages.