🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis β†’
Socket
Book a DemoInstallSign in
Socket

@itgenio/edik-sync

Package Overview
Dependencies
Maintainers
4
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@itgenio/edik-sync

Sync for @itgenio/edik-core

latest
npmnpm
Version
0.0.3
Version published
Maintainers
4
Created
Source

Sync

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ синхронизации состояния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для синхронизации состояния Π²Π½ΡƒΡ‚Ρ€ΠΈ сСссии.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ послСднСС состояниС. Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

  • ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ рассинхрона.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

Команда - это дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π½Π°Π΄ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ.

На основС ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

  • ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • Π±ΡƒΡ„Π΅Ρ€ дСйствий(cmd+z)

ИдСя Server Side Model

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» - слоТноС состояниС с цикличСскими ссылками, Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΈ Ρ‚.Π΄., слоТно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ состояниС Π΄ΠΈΡ„Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· запросы Π² Π±Π΄:

  • ΠΊΠΎΠΌΠ°Π½Π΄Π° "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅"/"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚" ΠΈ ΠΏΡ€. ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ большоС число Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • Ρ‚.ΠΊ. Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ real-time ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ, число ΠΊΠΎΠΌΠ°Π½Π΄ Π² сСкунду ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большим.
  • Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ измСнСния Π² Π±Π΄ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ 1-2 сСк.

РСшСниС - запуск ΠΆΠΈΠ²ΡƒΡŽ копию ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° сСрвСрС ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ синхронизируя Π΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми сСссиями.

Копия Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

Π’ Π±Π°Π·Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π° Π½Π΅ измСнСния.

ΠŸΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ состояниС Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС.

БовмСстноС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°

  • Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² истории дСйствий с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ
  • ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: base + cmd1 + cmd2 + ...

БовмСстноС использованиС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°

  • нСльзя ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ(Π½Π΅Ρ‚ истории дСйствий)
  • ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π°ΠΆΠ½Ρ‹

Бписок команд

Slide

createSlide

{
  "id": String,
  "index": Number
}

removeSlide

{
  "id": String
}

moveSlide

{
  "id": String,
  "index": Number
}

SlideObject

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

Package last updated on 12 Apr 2023

Did you know?

Socket

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.

Install

Related posts