synapse-storage 2.1.0 → 3.0.0

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.
Files changed (246) hide show
  1. package/README.md +32 -13
  2. package/dist/_utils/index.js +3 -3
  3. package/dist/api/api.module.js +3 -3
  4. package/dist/api/example.js +2 -2
  5. package/dist/api/index.js +5 -5
  6. package/dist/api/utils/endpoint-headers.js +1 -1
  7. package/dist/api/utils/fetch-base-query.js +1 -1
  8. package/dist/core/index.js +2 -2
  9. package/dist/core/selector/index.js +1 -1
  10. package/dist/core/storage/adapters/base-storage.service.js +1 -1
  11. package/dist/core/storage/adapters/indexed-DB.service.js +2 -2
  12. package/dist/core/storage/adapters/indexed-DB.service.old.js +2 -2
  13. package/dist/core/storage/adapters/local-storage.service.js +2 -2
  14. package/dist/core/storage/adapters/memory-storage.service.js +2 -2
  15. package/dist/core/storage/index.js +9 -9
  16. package/dist/core/storage/middlewares/index.js +1 -1
  17. package/dist/core/storage/utils/cache.util.js +1 -1
  18. package/dist/index.js +5 -9
  19. package/dist/index.js.map +1 -1
  20. package/dist/react/hooks/index.js +2 -2
  21. package/dist/react/index.js +2 -2
  22. package/dist/react/utils/createSynapseCtx.d.ts +23 -13
  23. package/dist/react/utils/createSynapseCtx.d.ts.map +1 -1
  24. package/dist/react/utils/createSynapseCtx.js +11 -10
  25. package/dist/react/utils/createSynapseCtx.js.map +1 -1
  26. package/dist/react/utils/index.js +1 -1
  27. package/dist/reactive/dispatcher/index.js +2 -2
  28. package/dist/reactive/dispatcher/middlewares/index.js +1 -1
  29. package/dist/reactive/effects/effects.module.d.ts +13 -3
  30. package/dist/reactive/effects/effects.module.d.ts.map +1 -1
  31. package/dist/reactive/effects/effects.module.js +22 -8
  32. package/dist/reactive/effects/effects.module.js.map +1 -1
  33. package/dist/reactive/effects/index.js +1 -1
  34. package/dist/reactive/effects/utils/index.js +2 -2
  35. package/dist/reactive/index.js +2 -2
  36. package/dist/utils/createSynapse.d.ts +58 -18
  37. package/dist/utils/createSynapse.d.ts.map +1 -1
  38. package/dist/utils/createSynapse.js +4 -12
  39. package/dist/utils/createSynapse.js.map +1 -1
  40. package/dist/utils/index.d.ts +1 -1
  41. package/dist/utils/index.d.ts.map +1 -1
  42. package/dist/utils/index.js +1 -1
  43. package/dist/utils/index.js.map +1 -1
  44. package/package.json +2 -2
  45. package/dist/_examples/_example5.d.ts +0 -1
  46. package/dist/_examples/_example5.d.ts.map +0 -1
  47. package/dist/_examples/_example5.js +0 -184
  48. package/dist/_examples/_example5.js.map +0 -1
  49. package/dist/_examples/_example6.d.ts +0 -1
  50. package/dist/_examples/_example6.d.ts.map +0 -1
  51. package/dist/_examples/_example6.js +0 -168
  52. package/dist/_examples/_example6.js.map +0 -1
  53. package/dist/_examples/example1.d.ts +0 -1
  54. package/dist/_examples/example1.d.ts.map +0 -1
  55. package/dist/_examples/example1.js +0 -240
  56. package/dist/_examples/example1.js.map +0 -1
  57. package/dist/_examples/example2.d.ts +0 -1
  58. package/dist/_examples/example2.d.ts.map +0 -1
  59. package/dist/_examples/example2.js +0 -81
  60. package/dist/_examples/example2.js.map +0 -1
  61. package/dist/_examples/example3.d.ts +0 -1
  62. package/dist/_examples/example3.d.ts.map +0 -1
  63. package/dist/_examples/example3.js +0 -99
  64. package/dist/_examples/example3.js.map +0 -1
  65. package/dist/_examples/example4.d.ts +0 -1
  66. package/dist/_examples/example4.d.ts.map +0 -1
  67. package/dist/_examples/example4.js +0 -172
  68. package/dist/_examples/example4.js.map +0 -1
  69. package/dist/_examples/example5.d.ts +0 -1
  70. package/dist/_examples/example5.d.ts.map +0 -1
  71. package/dist/_examples/example5.js +0 -184
  72. package/dist/_examples/example5.js.map +0 -1
  73. package/dist/_examples/example6.d.ts +0 -1
  74. package/dist/_examples/example6.d.ts.map +0 -1
  75. package/dist/_examples/example6.js +0 -168
  76. package/dist/_examples/example6.js.map +0 -1
  77. package/dist/_examples/plugins.d.ts +0 -1
  78. package/dist/_examples/plugins.d.ts.map +0 -1
  79. package/dist/_examples/plugins.js +0 -176
  80. package/dist/_examples/plugins.js.map +0 -1
  81. package/dist/_examples/pokemons/PokemonList.d.ts +0 -5
  82. package/dist/_examples/pokemons/PokemonList.d.ts.map +0 -1
  83. package/dist/_examples/pokemons/PokemonList.js +0 -166
  84. package/dist/_examples/pokemons/PokemonList.js.map +0 -1
  85. package/dist/_examples/pokemons/api.d.ts +0 -8
  86. package/dist/_examples/pokemons/api.d.ts.map +0 -1
  87. package/dist/_examples/pokemons/api.js +0 -45
  88. package/dist/_examples/pokemons/api.js.map +0 -1
  89. package/dist/_examples/pokemons/app.config.d.ts +0 -15
  90. package/dist/_examples/pokemons/app.config.d.ts.map +0 -1
  91. package/dist/_examples/pokemons/app.config.js +0 -15
  92. package/dist/_examples/pokemons/app.config.js.map +0 -1
  93. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts +0 -9
  94. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts.map +0 -1
  95. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js +0 -122
  96. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js.map +0 -1
  97. package/dist/_examples/pokemons/effects/pokemon.effects.d.ts +0 -16
  98. package/dist/_examples/pokemons/effects/pokemon.effects.d.ts.map +0 -1
  99. package/dist/_examples/pokemons/effects/pokemon.effects.js +0 -39
  100. package/dist/_examples/pokemons/effects/pokemon.effects.js.map +0 -1
  101. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts +0 -4
  102. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +0 -1
  103. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js +0 -27
  104. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js.map +0 -1
  105. package/dist/_examples/pokemons/pokemon.dispatcher.d.ts +0 -9
  106. package/dist/_examples/pokemons/pokemon.dispatcher.d.ts.map +0 -1
  107. package/dist/_examples/pokemons/pokemon.dispatcher.js +0 -122
  108. package/dist/_examples/pokemons/pokemon.dispatcher.js.map +0 -1
  109. package/dist/_examples/pokemons/pokemon.effects.d.ts +0 -5
  110. package/dist/_examples/pokemons/pokemon.effects.d.ts.map +0 -1
  111. package/dist/_examples/pokemons/pokemon.effects.js +0 -39
  112. package/dist/_examples/pokemons/pokemon.effects.js.map +0 -1
  113. package/dist/_examples/pokemons/pokemon.selectors.d.ts +0 -5
  114. package/dist/_examples/pokemons/pokemon.selectors.d.ts.map +0 -1
  115. package/dist/_examples/pokemons/pokemon.selectors.js +0 -10
  116. package/dist/_examples/pokemons/pokemon.selectors.js.map +0 -1
  117. package/dist/_examples/pokemons/pokemon.storage.d.ts +0 -3
  118. package/dist/_examples/pokemons/pokemon.storage.d.ts.map +0 -1
  119. package/dist/_examples/pokemons/pokemon.storage.js +0 -14
  120. package/dist/_examples/pokemons/pokemon.storage.js.map +0 -1
  121. package/dist/_examples/pokemons/pokemon1.selectors.d.ts +0 -5
  122. package/dist/_examples/pokemons/pokemon1.selectors.d.ts.map +0 -1
  123. package/dist/_examples/pokemons/pokemon1.selectors.js +0 -8
  124. package/dist/_examples/pokemons/pokemon1.selectors.js.map +0 -1
  125. package/dist/_examples/pokemons/pokenon.middlewares.d.ts +0 -4
  126. package/dist/_examples/pokemons/pokenon.middlewares.d.ts.map +0 -1
  127. package/dist/_examples/pokemons/pokenon.middlewares.js +0 -27
  128. package/dist/_examples/pokemons/pokenon.middlewares.js.map +0 -1
  129. package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts +0 -5
  130. package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts.map +0 -1
  131. package/dist/_examples/pokemons/selectors/pokemon.selectors.js +0 -10
  132. package/dist/_examples/pokemons/selectors/pokemon.selectors.js.map +0 -1
  133. package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts +0 -5
  134. package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts.map +0 -1
  135. package/dist/_examples/pokemons/selectors/pokemon1.selectors.js +0 -8
  136. package/dist/_examples/pokemons/selectors/pokemon1.selectors.js.map +0 -1
  137. package/dist/_examples/pokemons/storages/pokemon.storage.d.ts +0 -3
  138. package/dist/_examples/pokemons/storages/pokemon.storage.d.ts.map +0 -1
  139. package/dist/_examples/pokemons/storages/pokemon.storage.js +0 -14
  140. package/dist/_examples/pokemons/storages/pokemon.storage.js.map +0 -1
  141. package/dist/_examples/pokemons/store.d.ts +0 -1
  142. package/dist/_examples/pokemons/store.d.ts.map +0 -1
  143. package/dist/_examples/pokemons/store.js +0 -2
  144. package/dist/_examples/pokemons/store.js.map +0 -1
  145. package/dist/_examples/pokemons/store1.d.ts +0 -23
  146. package/dist/_examples/pokemons/store1.d.ts.map +0 -1
  147. package/dist/_examples/pokemons/store1.js +0 -35
  148. package/dist/_examples/pokemons/store1.js.map +0 -1
  149. package/dist/_examples/pokemons/store2.d.ts +0 -23
  150. package/dist/_examples/pokemons/store2.d.ts.map +0 -1
  151. package/dist/_examples/pokemons/store2.js +0 -34
  152. package/dist/_examples/pokemons/store2.js.map +0 -1
  153. package/dist/_examples/pokemons/types.d.ts +0 -26
  154. package/dist/_examples/pokemons/types.d.ts.map +0 -1
  155. package/dist/_examples/pokemons/types.js +0 -2
  156. package/dist/_examples/pokemons/types.js.map +0 -1
  157. package/dist/core/storage/adapters/idb.d.ts +0 -52
  158. package/dist/core/storage/adapters/idb.d.ts.map +0 -1
  159. package/dist/core/storage/adapters/idb.js +0 -528
  160. package/dist/core/storage/adapters/idb.js.map +0 -1
  161. package/dist/core/storage/adapters/indexed-DB.service1.d.ts +0 -38
  162. package/dist/core/storage/adapters/indexed-DB.service1.d.ts.map +0 -1
  163. package/dist/core/storage/adapters/indexed-DB.service1.js +0 -318
  164. package/dist/core/storage/adapters/indexed-DB.service1.js.map +0 -1
  165. package/dist/core/storage/adapters/indexed-DB.service2.d.ts +0 -61
  166. package/dist/core/storage/adapters/indexed-DB.service2.d.ts.map +0 -1
  167. package/dist/core/storage/adapters/indexed-DB.service2.js +0 -596
  168. package/dist/core/storage/adapters/indexed-DB.service2.js.map +0 -1
  169. package/dist/core/storage/factory/createSynapseStorage.factory.d.ts +0 -1
  170. package/dist/core/storage/factory/createSynapseStorage.factory.d.ts.map +0 -1
  171. package/dist/core/storage/factory/createSynapseStorage.factory.js +0 -2
  172. package/dist/core/storage/factory/createSynapseStorage.factory.js.map +0 -1
  173. package/dist/core/storage/factory/index.d.ts +0 -2
  174. package/dist/core/storage/factory/index.d.ts.map +0 -1
  175. package/dist/core/storage/factory/index.js +0 -2
  176. package/dist/core/storage/factory/index.js.map +0 -1
  177. package/dist/examples/_example5.d.ts +0 -1
  178. package/dist/examples/_example5.d.ts.map +0 -1
  179. package/dist/examples/_example5.js +0 -184
  180. package/dist/examples/_example5.js.map +0 -1
  181. package/dist/examples/_example6.d.ts +0 -1
  182. package/dist/examples/_example6.d.ts.map +0 -1
  183. package/dist/examples/_example6.js +0 -168
  184. package/dist/examples/_example6.js.map +0 -1
  185. package/dist/examples/plugins.d.ts +0 -1
  186. package/dist/examples/plugins.d.ts.map +0 -1
  187. package/dist/examples/plugins.js +0 -176
  188. package/dist/examples/plugins.js.map +0 -1
  189. package/dist/examples/pokemons/PokemonList.d.ts +0 -2
  190. package/dist/examples/pokemons/PokemonList.d.ts.map +0 -1
  191. package/dist/examples/pokemons/PokemonList.js +0 -110
  192. package/dist/examples/pokemons/PokemonList.js.map +0 -1
  193. package/dist/examples/pokemons/api.d.ts +0 -22
  194. package/dist/examples/pokemons/api.d.ts.map +0 -1
  195. package/dist/examples/pokemons/api.js +0 -43
  196. package/dist/examples/pokemons/api.js.map +0 -1
  197. package/dist/examples/pokemons/app.config.d.ts +0 -15
  198. package/dist/examples/pokemons/app.config.d.ts.map +0 -1
  199. package/dist/examples/pokemons/app.config.js +0 -15
  200. package/dist/examples/pokemons/app.config.js.map +0 -1
  201. package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js +0 -128
  202. package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js.map +0 -1
  203. package/dist/examples/pokemons/effects/pokemon.effects.d.ts +0 -16
  204. package/dist/examples/pokemons/effects/pokemon.effects.d.ts.map +0 -1
  205. package/dist/examples/pokemons/effects/pokemon.effects.js +0 -51
  206. package/dist/examples/pokemons/effects/pokemon.effects.js.map +0 -1
  207. package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts +0 -4
  208. package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +0 -1
  209. package/dist/examples/pokemons/middlewares/pokenon.middlewares.js +0 -28
  210. package/dist/examples/pokemons/middlewares/pokenon.middlewares.js.map +0 -1
  211. package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts +0 -13
  212. package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts.map +0 -1
  213. package/dist/examples/pokemons/selectors/pokemon.selectors.js +0 -7
  214. package/dist/examples/pokemons/selectors/pokemon.selectors.js.map +0 -1
  215. package/dist/examples/pokemons/storages/pokemon.storage.d.ts +0 -5
  216. package/dist/examples/pokemons/storages/pokemon.storage.d.ts.map +0 -1
  217. package/dist/examples/pokemons/storages/pokemon.storage.js +0 -13
  218. package/dist/examples/pokemons/storages/pokemon.storage.js.map +0 -1
  219. package/dist/examples/pokemons/store.d.ts +0 -35
  220. package/dist/examples/pokemons/store.d.ts.map +0 -1
  221. package/dist/examples/pokemons/store.js +0 -21
  222. package/dist/examples/pokemons/store.js.map +0 -1
  223. package/dist/examples/pokemons/types.d.ts +0 -26
  224. package/dist/examples/pokemons/types.d.ts.map +0 -1
  225. package/dist/examples/pokemons/types.js +0 -2
  226. package/dist/examples/pokemons/types.js.map +0 -1
  227. package/dist/react/utils/createSynapse.d.ts +0 -47
  228. package/dist/react/utils/createSynapse.d.ts.map +0 -1
  229. package/dist/react/utils/createSynapse.js +0 -83
  230. package/dist/react/utils/createSynapse.js.map +0 -1
  231. package/dist/react/utils/createSynapseContext.d.ts +0 -29
  232. package/dist/react/utils/createSynapseContext.d.ts.map +0 -1
  233. package/dist/react/utils/createSynapseContext.js +0 -112
  234. package/dist/react/utils/createSynapseContext.js.map +0 -1
  235. package/dist/utils/chunk.util.d.ts +0 -8
  236. package/dist/utils/chunk.util.d.ts.map +0 -1
  237. package/dist/utils/chunk.util.js +0 -21
  238. package/dist/utils/chunk.util.js.map +0 -1
  239. package/dist/utils/deepMerge.util.d.ts +0 -2
  240. package/dist/utils/deepMerge.util.d.ts.map +0 -1
  241. package/dist/utils/deepMerge.util.js +0 -16
  242. package/dist/utils/deepMerge.util.js.map +0 -1
  243. package/dist/utils/flatMap.util.d.ts +0 -10
  244. package/dist/utils/flatMap.util.d.ts.map +0 -1
  245. package/dist/utils/flatMap.util.js +0 -23
  246. package/dist/utils/flatMap.util.js.map +0 -1
@@ -1,184 +0,0 @@
1
- "use strict";
2
- // import React, { useState } from 'react'
3
- // import { MemoryStorage, StoragePluginModule, ILogger } from 'synapse'
4
- // import { LoggingPlugin, ValidationPlugin } from './plugins'
5
- //
6
- // // Типы данных
7
- // interface User {
8
- // name: string;
9
- // age: number;
10
- // }
11
- //
12
- // // Создаем модуль плагинов
13
- // const plugins = new StoragePluginModule(undefined, console, 'demoStorage')
14
- //
15
- // // Создаем стейт для ошибок, чтобы компоненты могли получить к нему доступ
16
- // const validationErrors: { [key: string]: string } = {}
17
- //
18
- // // Добавляем логирующий плагин
19
- // await plugins.add(new LoggingPlugin({ logLevel: 'debug' }))
20
- //
21
- // // Добавляем плагин валидации с обработчиком ошибок
22
- // const validation = new ValidationPlugin({
23
- // throwOnInvalid: true, // Все равно генерировать ошибку
24
- // onValidationError: (key, value, message) => {
25
- // // Сохраняем ошибку в общем объекте
26
- // validationErrors[key] = message
27
- // console.error(`Validation error for ${key}: ${message}`, value)
28
- // },
29
- // })
30
- //
31
- // // Настраиваем правила валидации
32
- // validation.addValidator('user', (value) => {
33
- // // Сбрасываем ошибки при каждой валидации
34
- // validationErrors.user = ''
35
- //
36
- // if (!value || typeof value !== 'object') {
37
- // return { valid: false, message: 'User must be an object' }
38
- // }
39
- //
40
- // if (!value.name || value.name.trim() === '') {
41
- // return { valid: false, message: 'User must have a name' }
42
- // }
43
- //
44
- // if (typeof value.age !== 'number' || value.age < 10) {
45
- // return { valid: false, message: 'Возраст должен быть больше 10' }
46
- // }
47
- //
48
- // return { valid: true }
49
- // })
50
- //
51
- // await plugins.add(validation)
52
- //
53
- //
54
- // // Создаем хранилище с плагинами
55
- // const storage = await new MemoryStorage<{user?: User}>({
56
- // name: 'demoStorage',
57
- // initialState: { version: '1.0.0' },
58
- // }, plugins).initialize()
59
- //
60
- // // Компонент для демонстрации
61
- // export function Example5() {
62
- // const [user, setUser] = useState<User | null>(null)
63
- // const [name, setName] = useState('')
64
- // const [age, setAge] = useState('')
65
- // const [error, setError] = useState<string | null>(null)
66
- // const [fieldErrors, setFieldErrors] = useState<{name?: string, age?: string}>({})
67
- //
68
- // // Функция для сохранения пользователя
69
- // const saveUser = async () => {
70
- // try {
71
- // // Сбрасываем ошибки при каждой отправке
72
- // setError(null)
73
- // setFieldErrors({})
74
- //
75
- // const userData: User = {
76
- // name,
77
- // age: parseInt(age, 10) || 0, // Преобразуем в число или 0, если невалидно
78
- // }
79
- //
80
- // await storage.set('user', userData)
81
- // setUser(userData)
82
- // console.log('User saved successfully')
83
- // } catch (err) {
84
- // // Получаем сообщение ошибки
85
- // const errorMessage = err instanceof Error ? err.message : String(err)
86
- //
87
- // // Устанавливаем общую ошибку
88
- // setError(errorMessage)
89
- //
90
- // // Определяем, какое поле вызвало ошибку и устанавливаем ошибку для него
91
- // if (errorMessage.includes('name')) {
92
- // setFieldErrors((prev) => ({ ...prev, name: 'Имя обязательно' }))
93
- // }
94
- //
95
- // if (errorMessage.includes('возраст') || errorMessage.includes('больше 10')) {
96
- // setFieldErrors((prev) => ({ ...prev, age: 'Возраст должен быть больше 10' }))
97
- // }
98
- //
99
- // console.error('Error saving user:', errorMessage)
100
- // }
101
- // }
102
- //
103
- // return (
104
- // <div style={{ fontFamily: 'Arial', padding: '20px' }}>
105
- // <h2>Пример с валидацией</h2>
106
- //
107
- // {/* Если есть общая ошибка, показываем её */}
108
- // {error && (
109
- // <div style={{
110
- // padding: '10px',
111
- // backgroundColor: '#ffebee',
112
- // color: '#d32f2f',
113
- // borderRadius: '4px',
114
- // marginBottom: '15px',
115
- // }}
116
- // >
117
- // {error}
118
- // </div>
119
- // )}
120
- //
121
- // <div style={{ marginBottom: '20px' }}>
122
- // <div style={{ marginBottom: '10px' }}>
123
- // <label style={{ display: 'block', marginBottom: '5px' }}>Имя:</label>
124
- // <input
125
- // type="text"
126
- // value={name}
127
- // onChange={(e) => setName(e.target.value)}
128
- // style={{
129
- // padding: '8px',
130
- // width: '250px',
131
- // border: fieldErrors.name ? '1px solid #d32f2f' : '1px solid #ccc',
132
- // }}
133
- // />
134
- // {fieldErrors.name && (
135
- // <div style={{ color: '#d32f2f', fontSize: '14px', marginTop: '5px' }}>
136
- // {fieldErrors.name}
137
- // </div>
138
- // )}
139
- // </div>
140
- //
141
- // <div style={{ marginBottom: '15px' }}>
142
- // <label style={{ display: 'block', marginBottom: '5px' }}>Возраст:</label>
143
- // <input
144
- // type="number"
145
- // value={age}
146
- // onChange={(e) => setAge(e.target.value)}
147
- // style={{
148
- // padding: '8px',
149
- // width: '250px',
150
- // border: fieldErrors.age ? '1px solid #d32f2f' : '1px solid #ccc',
151
- // }}
152
- // />
153
- // {fieldErrors.age && (
154
- // <div style={{ color: '#d32f2f', fontSize: '14px', marginTop: '5px' }}>
155
- // {fieldErrors.age}
156
- // </div>
157
- // )}
158
- // </div>
159
- //
160
- // <button
161
- // onClick={saveUser}
162
- // style={{
163
- // padding: '10px 15px',
164
- // backgroundColor: '#4CAF50',
165
- // color: 'white',
166
- // border: 'none',
167
- // borderRadius: '4px',
168
- // cursor: 'pointer',
169
- // }}
170
- // >
171
- // Сохранить
172
- // </button>
173
- // </div>
174
- //
175
- // <div style={{ border: '1px solid #ddd', padding: '15px', borderRadius: '4px' }}>
176
- // <h3>Текущие данные:</h3>
177
- // <pre style={{ backgroundColor: '#f5f5f5', padding: '10px', borderRadius: '4px' }}>
178
- // {user ? JSON.stringify(user, null, 2) : 'Нет данных'}
179
- // </pre>
180
- // </div>
181
- // </div>
182
- // )
183
- // }
184
- //# sourceMappingURL=example5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example5.js","sourceRoot":"","sources":["../../src/_examples/example5.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=example6.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example6.d.ts","sourceRoot":"","sources":["../../src/_examples/example6.tsx"],"names":[],"mappings":""}
@@ -1,168 +0,0 @@
1
- "use strict";
2
- // import React, { useEffect, useState } from 'react'
3
- // import { IndexedDBStorage, LocalStorage, MemoryStorage, SelectorModule } from 'synapse'
4
- //
5
- // interface Counter {
6
- // value: number;
7
- // lastUpdated?: Date;
8
- // }
9
- //
10
- // // Создаем хранилища
11
- // const counter1 = await new MemoryStorage<Counter>({
12
- // name: 'counter1',
13
- // initialState: { value: 1 },
14
- // }).initialize()
15
- //
16
- // const counter2 = await new IndexedDBStorage<Counter>({
17
- // name: 'counter2',
18
- // options: {
19
- // dbVersion: 2,
20
- // storeName: 'counter23',
21
- // dbName: 'counter23',
22
- // },
23
- // initialState: { value: 2 },
24
- // }).initialize()
25
- //
26
- // const counter3 = await new LocalStorage<Counter>({
27
- // name: 'counter3',
28
- // initialState: { value: 3 },
29
- // }).initialize()
30
- //
31
- // const counter1Selector = new SelectorModule<Counter>(counter1, console)
32
- // const counter2Selector = new SelectorModule(counter2)
33
- // const counter3Selector = new SelectorModule(counter3)
34
- //
35
- // const counter1ValueSelector = counter1Selector.createSelector((s) => s.value)
36
- // const counter2ValueSelector = counter2Selector.createSelector((s) => s.value)
37
- // const counter3ValueSelector = counter3Selector.createSelector((s) => s.value)
38
- //
39
- // const sum = counter3Selector.createSelector(
40
- // [counter1ValueSelector, counter2ValueSelector, counter3ValueSelector],
41
- // (a, b, c) => a + b + c,
42
- // )
43
- //
44
- // sum.subscribe({
45
- // notify: (value) => {
46
- // console.log('sum-notify', value)
47
- // },
48
- // })
49
- //
50
- // counter1ValueSelector.subscribe({
51
- // notify: (value) => {
52
- // console.log('counter1ValueUnsubscribe', value)
53
- // },
54
- // })
55
- //
56
- // counter2ValueSelector.subscribe({
57
- // notify: async (value) => {
58
- // console.log('counter2ValueUnsubscribe', value)
59
- // },
60
- // })
61
- //
62
- // // Компонент для демонстрации работы middleware
63
- //
64
- // export const Example6 = React.memo(() => {
65
- // const [counter1Value, setCounter1Value] = useState(0)
66
- // const [counter2Value, setCounter2Value] = useState(0)
67
- // const [counter3Value, setCounter3Value] = useState(0)
68
- //
69
- // useEffect(() => {
70
- // sum.select().then((r) => {
71
- // console.log('result', r)
72
- // })
73
- // const a = sum.select().then((r) => r)
74
- // console.log('a', a)
75
- // }, [])
76
- //
77
- // useEffect(() => {
78
- // // Подписываемся на изменения counter1
79
- // const unsubscribe1 = counter1.subscribe((s) => s.value, setCounter1Value)
80
- // return () => {
81
- // unsubscribe1()
82
- // }
83
- // }, [])
84
- //
85
- // useEffect(() => {
86
- // // Подписываемся на изменения counter1
87
- // const unsubscribe2 = counter2.subscribe((s) => s.value, setCounter2Value)
88
- // return () => {
89
- // unsubscribe2()
90
- // }
91
- // }, [])
92
- // useEffect(() => {
93
- // // Подписываемся на изменения counter1
94
- // const unsubscribe3 = counter3.subscribe((s) => s.value, setCounter3Value)
95
- // return () => {
96
- // unsubscribe3()
97
- // }
98
- // }, [])
99
- //
100
- // // Функции для обновления счетчиков
101
- // const updateCounter1 = async () => {
102
- // await counter1.update((state) => {
103
- // state.value++
104
- // })
105
- // }
106
- //
107
- // const updateCounter2 = async () => {
108
- // await counter2.update((state) => {
109
- // state.value++
110
- // })
111
- // }
112
- //
113
- // const updateCounter3 = async () => {
114
- // await counter3.set('value', counter3Value + 1)
115
- // }
116
- //
117
- // return (
118
- // <div style={{ fontFamily: 'Arial', padding: '20px' }}>
119
- // <h2>Middleware Testing</h2>
120
- //
121
- // <div style={{ display: 'flex', gap: '20px', marginBottom: '20px' }}>
122
- // <div style={{ border: '1px solid #ccc', padding: '15px', borderRadius: '5px' }}>
123
- // <h3>Counter 1 (Both Middlewares)</h3>
124
- // <p>
125
- // Value:
126
- // {counter1Value}
127
- // </p>
128
- // <button
129
- // onClick={updateCounter1}
130
- // style={{ padding: '8px 15px', backgroundColor: '#4CAF50', color: 'white', border: 'none', borderRadius: '4px' }}
131
- // >
132
- // Increment
133
- // </button>
134
- // </div>
135
- //
136
- // <div style={{ border: '1px solid #ccc', padding: '15px', borderRadius: '5px' }}>
137
- // <h3>Counter 2 (ShallowCompare)</h3>
138
- // <p>
139
- // Value:
140
- // {counter2Value}
141
- // </p>
142
- // <button
143
- // onClick={updateCounter2}
144
- // style={{ padding: '8px 15px', backgroundColor: '#2196F3', color: 'white', border: 'none', borderRadius: '4px' }}
145
- // >
146
- // Update
147
- // </button>
148
- // <p><small>Every 3rd click tries to set the same value</small></p>
149
- // </div>
150
- //
151
- // <div style={{ border: '1px solid #ccc', padding: '15px', borderRadius: '5px' }}>
152
- // <h3>Counter 3 (Batching)</h3>
153
- // <p>
154
- // Value:
155
- // {counter3Value}
156
- // </p>
157
- // <button
158
- // onClick={updateCounter3}
159
- // style={{ padding: '8px 15px', backgroundColor: '#FF9800', color: 'white', border: 'none', borderRadius: '4px' }}
160
- // >
161
- // Batch Update
162
- // </button>
163
- // </div>
164
- // </div>
165
- // </div>
166
- // )
167
- // })
168
- //# sourceMappingURL=example6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example6.js","sourceRoot":"","sources":["../../src/_examples/example6.tsx"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,0FAA0F;AAC1F,EAAE;AACF,sBAAsB;AACtB,mBAAmB;AACnB,wBAAwB;AACxB,IAAI;AACJ,EAAE;AACF,uBAAuB;AACvB,sDAAsD;AACtD,sBAAsB;AACtB,gCAAgC;AAChC,kBAAkB;AAClB,EAAE;AACF,yDAAyD;AACzD,sBAAsB;AACtB,eAAe;AACf,oBAAoB;AACpB,8BAA8B;AAC9B,2BAA2B;AAC3B,OAAO;AACP,gCAAgC;AAChC,kBAAkB;AAClB,EAAE;AACF,qDAAqD;AACrD,sBAAsB;AACtB,gCAAgC;AAChC,kBAAkB;AAClB,EAAE;AACF,0EAA0E;AAC1E,wDAAwD;AACxD,wDAAwD;AACxD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,EAAE;AACF,+CAA+C;AAC/C,2EAA2E;AAC3E,4BAA4B;AAC5B,IAAI;AACJ,EAAE;AACF,kBAAkB;AAClB,yBAAyB;AACzB,uCAAuC;AACvC,OAAO;AACP,KAAK;AACL,EAAE;AACF,oCAAoC;AACpC,yBAAyB;AACzB,qDAAqD;AACrD,OAAO;AACP,KAAK;AACL,EAAE;AACF,oCAAoC;AACpC,+BAA+B;AAC/B,qDAAqD;AACrD,OAAO;AACP,KAAK;AACL,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,6CAA6C;AAC7C,0DAA0D;AAC1D,0DAA0D;AAC1D,0DAA0D;AAC1D,EAAE;AACF,sBAAsB;AACtB,iCAAiC;AACjC,iCAAiC;AACjC,SAAS;AACT,4CAA4C;AAC5C,0BAA0B;AAC1B,WAAW;AACX,EAAE;AACF,sBAAsB;AACtB,6CAA6C;AAC7C,gFAAgF;AAChF,qBAAqB;AACrB,uBAAuB;AACvB,QAAQ;AACR,WAAW;AACX,EAAE;AACF,sBAAsB;AACtB,6CAA6C;AAC7C,gFAAgF;AAChF,qBAAqB;AACrB,uBAAuB;AACvB,QAAQ;AACR,WAAW;AACX,sBAAsB;AACtB,6CAA6C;AAC7C,gFAAgF;AAChF,qBAAqB;AACrB,uBAAuB;AACvB,QAAQ;AACR,WAAW;AACX,EAAE;AACF,wCAAwC;AACxC,yCAAyC;AACzC,yCAAyC;AACzC,sBAAsB;AACtB,SAAS;AACT,MAAM;AACN,EAAE;AACF,yCAAyC;AACzC,yCAAyC;AACzC,sBAAsB;AACtB,SAAS;AACT,MAAM;AACN,EAAE;AACF,yCAAyC;AACzC,qDAAqD;AACrD,MAAM;AACN,EAAE;AACF,aAAa;AACb,6DAA6D;AAC7D,oCAAoC;AACpC,EAAE;AACF,6EAA6E;AAC7E,2FAA2F;AAC3F,kDAAkD;AAClD,gBAAgB;AAChB,qBAAqB;AACrB,8BAA8B;AAC9B,iBAAiB;AACjB,oBAAoB;AACpB,uCAAuC;AACvC,+HAA+H;AAC/H,cAAc;AACd,wBAAwB;AACxB,sBAAsB;AACtB,iBAAiB;AACjB,EAAE;AACF,2FAA2F;AAC3F,gDAAgD;AAChD,gBAAgB;AAChB,qBAAqB;AACrB,8BAA8B;AAC9B,iBAAiB;AACjB,oBAAoB;AACpB,uCAAuC;AACvC,+HAA+H;AAC/H,cAAc;AACd,qBAAqB;AACrB,sBAAsB;AACtB,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,2FAA2F;AAC3F,0CAA0C;AAC1C,gBAAgB;AAChB,qBAAqB;AACrB,8BAA8B;AAC9B,iBAAiB;AACjB,oBAAoB;AACpB,uCAAuC;AACvC,+HAA+H;AAC/H,cAAc;AACd,2BAA2B;AAC3B,sBAAsB;AACtB,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb,MAAM;AACN,KAAK"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/_examples/plugins.ts"],"names":[],"mappings":""}
@@ -1,176 +0,0 @@
1
- "use strict";
2
- // import { IStoragePlugin, PluginContext, StorageKeyType } from 'synapse'
3
- //
4
- // /**
5
- // * Пример 1: LoggingPlugin
6
- // *
7
- // * Плагин для логирования операций хранилища.
8
- // * Записывает информацию о всех операциях в консоль или пользовательский логгер.
9
- // */
10
- // export class LoggingPlugin implements IStoragePlugin {
11
- // name = 'logging'
12
- //
13
- // constructor(
14
- // private options: {
15
- // logLevel?: 'info' | 'debug' | 'verbose',
16
- // customLogger?: (message: string, data?: any) => void
17
- // } = {},
18
- // ) {}
19
- //
20
- // private log(message: string, data?: any): void {
21
- // const formattedMessage = `[LoggingPlugin] ${message}`
22
- //
23
- // if (this.options.customLogger) {
24
- // this.options.customLogger(formattedMessage, data)
25
- // } else if (this.options.logLevel === 'verbose') {
26
- // console.log(formattedMessage, data)
27
- // } else if (this.options.logLevel === 'debug' || !this.options.logLevel) {
28
- // console.log(formattedMessage)
29
- // } else {
30
- // console.log(formattedMessage)
31
- // }
32
- // }
33
- //
34
- // async initialize(): Promise<void> {
35
- // this.log('Плагин инициализирован')
36
- // }
37
- //
38
- // async destroy(): Promise<void> {
39
- // this.log('Плагин уничтожен')
40
- // }
41
- //
42
- // async onBeforeSet<T>(value: T, context: PluginContext): Promise<T> {
43
- // this.log(
44
- // `Сохранение значения в хранилище ${context.storageName}`,
45
- // this.options.logLevel === 'verbose' ? value : undefined,
46
- // )
47
- // return value
48
- // }
49
- //
50
- // async onAfterSet<T>(key: StorageKeyType, value: T, context: PluginContext): Promise<T> {
51
- // this.log(
52
- // `Значение сохранено по ключу ${String(key)}`,
53
- // this.options.logLevel === 'verbose' ? value : undefined,
54
- // )
55
- // return value
56
- // }
57
- //
58
- // async onBeforeGet(key: StorageKeyType, context: PluginContext): Promise<StorageKeyType> {
59
- // this.log(`Запрос значения по ключу ${String(key)}`)
60
- // return key
61
- // }
62
- //
63
- // async onAfterGet<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): Promise<T | undefined> {
64
- // if (value === undefined) {
65
- // this.log(`Значение не найдено по ключу ${String(key)}`)
66
- // } else {
67
- // this.log(
68
- // `Получено значение по ключу ${String(key)}`,
69
- // this.options.logLevel === 'verbose' ? value : undefined,
70
- // )
71
- // }
72
- // return value
73
- // }
74
- //
75
- // async onBeforeDelete(key: StorageKeyType, context: PluginContext): Promise<boolean> {
76
- // this.log(`Запрос на удаление значения по ключу ${String(key)}`)
77
- // return true
78
- // }
79
- //
80
- // async onAfterDelete(key: StorageKeyType, context: PluginContext): Promise<void> {
81
- // this.log(`Значение удалено по ключу ${String(key)}`)
82
- // }
83
- //
84
- // async onClear(context: PluginContext): Promise<void> {
85
- // this.log(`Хранилище ${context.storageName} очищено`)
86
- // }
87
- // }
88
- //
89
- // /**
90
- // * Пример 2: ValidationPlugin
91
- // *
92
- // * Плагин для валидации данных перед сохранением в хранилище.
93
- // * Позволяет устанавливать правила валидации для определенных ключей.
94
- // */
95
- // export class ValidationPlugin implements IStoragePlugin {
96
- // name = 'validation'
97
- //
98
- // private validators = new Map<string, (value: any) => { valid: boolean, message?: string }>()
99
- //
100
- // constructor(
101
- // private options: {
102
- // throwOnInvalid?: boolean;
103
- // onValidationError?: (key: string, value: any, message: string) => void;
104
- // } = { throwOnInvalid: true },
105
- // ) {}
106
- //
107
- // /**
108
- // * Добавляет правило валидации для определенного ключа
109
- // *
110
- // * @param key Ключ, для которого применяется валидация
111
- // * @param validator Функция валидации, возвращающая результат проверки
112
- // * @returns Экземпляр плагина для цепочки вызовов
113
- // */
114
- // addValidator(
115
- // key: string,
116
- // validator: (value: any) => { valid: boolean, message?: string },
117
- // ): this {
118
- // this.validators.set(key, validator)
119
- // return this
120
- // }
121
- //
122
- // /**
123
- // * Помощник для создания валидатора по JSON-схеме
124
- // *
125
- // * @param schema Объект описывающий схему данных
126
- // * @returns Функция-валидатор
127
- // */
128
- // static schemaValidator(schema: any): (value: any) => { valid: boolean, message?: string } {
129
- // return (value: any) => {
130
- // // Здесь должна быть реализация проверки по JSON-схеме
131
- // // Для примера используем упрощенную логику
132
- // if (schema.type === 'object' && typeof value !== 'object') {
133
- // return { valid: false, message: 'Value must be an object' }
134
- // }
135
- //
136
- // if (schema.type === 'array' && !Array.isArray(value)) {
137
- // return { valid: false, message: 'Value must be an array' }
138
- // }
139
- //
140
- // if (schema.required && Array.isArray(schema.required)) {
141
- // for (const prop of schema.required) {
142
- // if (value[prop] === undefined) {
143
- // return { valid: false, message: `Required property "${prop}" is missing` }
144
- // }
145
- // }
146
- // }
147
- //
148
- // return { valid: true }
149
- // }
150
- // }
151
- //
152
- // async onBeforeSet<T>(value: T, context: PluginContext): Promise<T> {
153
- // // Получаем ключ из метаданных (должен быть добавлен хранилищем)
154
- // const key = context.metadata?.key
155
- //
156
- // if (key && this.validators.has(key)) {
157
- // const validator = this.validators.get(key)!
158
- // const result = validator(value)
159
- //
160
- // if (!result.valid) {
161
- // const errorMessage = result.message || `Validation failed for key "${key}"`
162
- //
163
- // if (this.options.onValidationError) {
164
- // this.options.onValidationError(key, value, errorMessage)
165
- // }
166
- //
167
- // if (this.options.throwOnInvalid) {
168
- // throw new Error(errorMessage)
169
- // }
170
- // }
171
- // }
172
- //
173
- // return value
174
- // }
175
- // }
176
- //# sourceMappingURL=plugins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/_examples/plugins.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Упрощенный React-компонент для работы с одним покемоном
3
- */
4
- export declare function SimplePokemonViewer(): import("react/jsx-runtime").JSX.Element;
5
- //# sourceMappingURL=PokemonList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PokemonList.d.ts","sourceRoot":"","sources":["../../../src/_examples/pokemons/PokemonList.tsx"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,mBAAmB,4CAsQlC"}