@mirta/globals 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/eslint/index.d.ts CHANGED
@@ -17,6 +17,7 @@ declare interface GlobalsMirta {
17
17
  readonly 'readConfig': false
18
18
  readonly 'trackMqtt': false
19
19
  readonly 'publish': false
20
+ readonly 'StorableObject': false
20
21
  readonly 'PersistentStorage': false
21
22
  readonly 'Notify': false
22
23
  }
package/eslint/index.js CHANGED
@@ -17,6 +17,7 @@ export default {
17
17
  'readConfig': 'readonly',
18
18
  'trackMqtt': 'readonly',
19
19
  'publish': 'readonly',
20
+ 'StorableObject': 'readonly',
20
21
  'PersistentStorage': 'readonly',
21
22
  'Notify': 'readonly',
22
23
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mirta/globals",
3
3
  "description": "Complete set of types for wb-rule development in TypeScript",
4
- "version": "0.2.5",
4
+ "version": "0.2.6",
5
5
  "license": "Unlicense",
6
6
  "keywords": [
7
7
  "mirta",
@@ -645,6 +645,52 @@ declare function publish(
645
645
  retain?: boolean
646
646
  ): void
647
647
 
648
+ /**
649
+ * Проксирует исходный объект, обеспечивая автоматическую синхронизацию
650
+ * изменений в его свойствах со связанным хранилищем {@link PersistentStorage}.
651
+ *
652
+ * Важно: отслеживание изменений поддерживается только для возвращаемого функцией объекта.
653
+ * Исходный объект не получит никакой дополнительной функциональности.
654
+ *
655
+ * @template TObject Тип исходного объекта. Обычно выводится автоматически (type inference), но при необходимости его можно задать явно.
656
+ *
657
+ * @param source Исходный объект, который будет проксирован.
658
+ *
659
+ * @example
660
+ *
661
+ * ```ts
662
+ * // Оборачивание объекта в прокси.
663
+ * const user = StorableObject({ id: 1, name: 'Alice' })
664
+ *
665
+ * // Подключение к энергонезависимому хранилищу.
666
+ * const storage = new PersistentStorage('users', { global: true })
667
+ * storage['user'] = user
668
+ *
669
+ * // Объект автоматически отслеживает изменения и передаёт их в хранилище.
670
+ * user.name = 'Bob'
671
+ *
672
+ * ```
673
+ * @example
674
+ *
675
+ * ```ts
676
+ * interface User {
677
+ * id: number,
678
+ * name: string
679
+ * }
680
+ *
681
+ * // Подключение к энергонезависимому хранилищу.
682
+ * const storage = new PersistentStorage('users', { global: true })
683
+ *
684
+ * // Извлечение объекта.
685
+ * const retrievedUser = storage['user'] as User
686
+ *
687
+ * // Изменения опять будут автоматически передаваться в хранилище.
688
+ * retrievedUser.name = 'Charlie'
689
+ *
690
+ * ```
691
+ */
692
+ declare function StorableObject<TObject>(source: TObject): TObject
693
+
648
694
  declare class PersistentStorage {
649
695
  constructor(name: string, options: WbRules.StorageOptions)
650
696
  }