
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@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
The npm package @itgenio/edik-sync receives a total of 0 weekly downloads. As such, @itgenio/edik-sync popularity was classified as not popular.
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
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
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.