@vrtmrz/livesync-commonlib 0.1.0-rc.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 (516) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/API/DirectFileManipulator.d.ts +2 -0
  4. package/dist/API/DirectFileManipulator.js +4 -0
  5. package/dist/API/DirectFileManipulatorV2.d.ts +150 -0
  6. package/dist/API/DirectFileManipulatorV2.js +424 -0
  7. package/dist/API/processSetting.d.ts +41 -0
  8. package/dist/API/processSetting.js +140 -0
  9. package/dist/ContentSplitter/ContentSplitter.d.ts +28 -0
  10. package/dist/ContentSplitter/ContentSplitter.js +5 -0
  11. package/dist/ContentSplitter/ContentSplitterBase.d.ts +51 -0
  12. package/dist/ContentSplitter/ContentSplitterBase.js +83 -0
  13. package/dist/ContentSplitter/ContentSplitterRabinKarp.d.ts +9 -0
  14. package/dist/ContentSplitter/ContentSplitterRabinKarp.js +32 -0
  15. package/dist/ContentSplitter/ContentSplitterV1.d.ts +9 -0
  16. package/dist/ContentSplitter/ContentSplitterV1.js +34 -0
  17. package/dist/ContentSplitter/ContentSplitterV2.d.ts +9 -0
  18. package/dist/ContentSplitter/ContentSplitterV2.js +34 -0
  19. package/dist/ContentSplitter/ContentSplitters.d.ts +12 -0
  20. package/dist/ContentSplitter/ContentSplitters.js +29 -0
  21. package/dist/bureau/bureau.d.ts +7 -0
  22. package/dist/bureau/bureau.js +5 -0
  23. package/dist/common/ConnectionString.d.ts +30 -0
  24. package/dist/common/ConnectionString.js +179 -0
  25. package/dist/common/LSError.d.ts +48 -0
  26. package/dist/common/LSError.js +112 -0
  27. package/dist/common/configForDoc.d.ts +79 -0
  28. package/dist/common/configForDoc.js +312 -0
  29. package/dist/common/coreEnvFunctions.d.ts +21 -0
  30. package/dist/common/coreEnvFunctions.js +22 -0
  31. package/dist/common/coreEnvVars.d.ts +3 -0
  32. package/dist/common/coreEnvVars.js +6 -0
  33. package/dist/common/i18n.d.ts +18 -0
  34. package/dist/common/i18n.js +7193 -0
  35. package/dist/common/logger.d.ts +2 -0
  36. package/dist/common/logger.js +1 -0
  37. package/dist/common/messages/combinedMessages.dev.d.ts +7 -0
  38. package/dist/common/messages/combinedMessages.dev.js +44 -0
  39. package/dist/common/messages/combinedMessages.prod.d.ts +9264 -0
  40. package/dist/common/messages/combinedMessages.prod.js +9271 -0
  41. package/dist/common/messages/de.d.ts +297 -0
  42. package/dist/common/messages/de.js +7 -0
  43. package/dist/common/messages/def.d.ts +1119 -0
  44. package/dist/common/messages/def.js +7 -0
  45. package/dist/common/messages/es.d.ts +689 -0
  46. package/dist/common/messages/es.js +7 -0
  47. package/dist/common/messages/fr.d.ts +582 -0
  48. package/dist/common/messages/fr.js +7 -0
  49. package/dist/common/messages/he.d.ts +583 -0
  50. package/dist/common/messages/he.js +7 -0
  51. package/dist/common/messages/ja.d.ts +838 -0
  52. package/dist/common/messages/ja.js +7 -0
  53. package/dist/common/messages/ko.d.ts +800 -0
  54. package/dist/common/messages/ko.js +7 -0
  55. package/dist/common/messages/ru.d.ts +858 -0
  56. package/dist/common/messages/ru.js +7 -0
  57. package/dist/common/messages/zh-tw.d.ts +384 -0
  58. package/dist/common/messages/zh-tw.js +7 -0
  59. package/dist/common/messages/zh.d.ts +1093 -0
  60. package/dist/common/messages/zh.js +7 -0
  61. package/dist/common/messagesJson/de.json +295 -0
  62. package/dist/common/messagesJson/en.json +1117 -0
  63. package/dist/common/messagesJson/es.json +687 -0
  64. package/dist/common/messagesJson/fr.json +580 -0
  65. package/dist/common/messagesJson/he.json +581 -0
  66. package/dist/common/messagesJson/ja.json +836 -0
  67. package/dist/common/messagesJson/ko.json +798 -0
  68. package/dist/common/messagesJson/ru.json +856 -0
  69. package/dist/common/messagesJson/zh-tw.json +382 -0
  70. package/dist/common/messagesJson/zh.json +1091 -0
  71. package/dist/common/models/auth.type.d.ts +41 -0
  72. package/dist/common/models/auth.type.js +0 -0
  73. package/dist/common/models/db.const.d.ts +20 -0
  74. package/dist/common/models/db.const.js +28 -0
  75. package/dist/common/models/db.definition.d.ts +56 -0
  76. package/dist/common/models/db.definition.js +6 -0
  77. package/dist/common/models/db.type.d.ts +142 -0
  78. package/dist/common/models/db.type.js +0 -0
  79. package/dist/common/models/diff.definition.d.ts +16 -0
  80. package/dist/common/models/diff.definition.js +0 -0
  81. package/dist/common/models/fileaccess.const.d.ts +7 -0
  82. package/dist/common/models/fileaccess.const.js +16 -0
  83. package/dist/common/models/fileaccess.type.d.ts +72 -0
  84. package/dist/common/models/fileaccess.type.js +0 -0
  85. package/dist/common/models/redflag.const.d.ts +32 -0
  86. package/dist/common/models/redflag.const.js +27 -0
  87. package/dist/common/models/setting.const.d.ts +49 -0
  88. package/dist/common/models/setting.const.defaults.d.ts +3 -0
  89. package/dist/common/models/setting.const.defaults.js +185 -0
  90. package/dist/common/models/setting.const.js +68 -0
  91. package/dist/common/models/setting.const.preferred.d.ts +5 -0
  92. package/dist/common/models/setting.const.preferred.js +35 -0
  93. package/dist/common/models/setting.const.qr.d.ts +2 -0
  94. package/dist/common/models/setting.const.qr.js +174 -0
  95. package/dist/common/models/setting.type.d.ts +900 -0
  96. package/dist/common/models/setting.type.js +8 -0
  97. package/dist/common/models/shared.const.behabiour.d.ts +28 -0
  98. package/dist/common/models/shared.const.behabiour.js +36 -0
  99. package/dist/common/models/shared.const.d.ts +5 -0
  100. package/dist/common/models/shared.const.js +12 -0
  101. package/dist/common/models/shared.const.symbols.d.ts +9 -0
  102. package/dist/common/models/shared.const.symbols.js +20 -0
  103. package/dist/common/models/shared.definition.configNames.d.ts +36 -0
  104. package/dist/common/models/shared.definition.configNames.js +203 -0
  105. package/dist/common/models/shared.definition.d.ts +22 -0
  106. package/dist/common/models/shared.definition.js +24 -0
  107. package/dist/common/models/shared.type.util.d.ts +8 -0
  108. package/dist/common/models/shared.type.util.js +0 -0
  109. package/dist/common/models/sync.definition.d.ts +18 -0
  110. package/dist/common/models/sync.definition.js +20 -0
  111. package/dist/common/models/tweak.definition.d.ts +191 -0
  112. package/dist/common/models/tweak.definition.js +77 -0
  113. package/dist/common/rosetta.d.ts +42 -0
  114. package/dist/common/rosetta.js +57 -0
  115. package/dist/common/settingConstants.d.ts +216 -0
  116. package/dist/common/settingConstants.js +434 -0
  117. package/dist/common/typeUtils.d.ts +17 -0
  118. package/dist/common/typeUtils.js +51 -0
  119. package/dist/common/types.d.ts +107 -0
  120. package/dist/common/types.js +212 -0
  121. package/dist/common/utils.d.ts +129 -0
  122. package/dist/common/utils.doc.d.ts +11 -0
  123. package/dist/common/utils.doc.js +35 -0
  124. package/dist/common/utils.js +583 -0
  125. package/dist/common/utils.object.d.ts +2 -0
  126. package/dist/common/utils.object.js +14 -0
  127. package/dist/common/utils.patch.d.ts +8 -0
  128. package/dist/common/utils.patch.js +178 -0
  129. package/dist/common/utils.type.d.ts +1 -0
  130. package/dist/common/utils.type.js +0 -0
  131. package/dist/context.d.ts +8 -0
  132. package/dist/context.js +14 -0
  133. package/dist/databases/IndexedDBKeyValueDatabase.d.ts +26 -0
  134. package/dist/databases/IndexedDBKeyValueDatabase.js +130 -0
  135. package/dist/dataobject/StoredMap.d.ts +12 -0
  136. package/dist/dataobject/StoredMap.js +47 -0
  137. package/dist/dev/checks.d.ts +5 -0
  138. package/dist/dev/checks.js +38 -0
  139. package/dist/encryption/encryptHKDF.d.ts +3 -0
  140. package/dist/encryption/encryptHKDF.js +7 -0
  141. package/dist/encryption/stringEncryption.d.ts +27 -0
  142. package/dist/encryption/stringEncryption.js +59 -0
  143. package/dist/events/coreEvents.d.ts +54 -0
  144. package/dist/events/coreEvents.js +46 -0
  145. package/dist/hub/hub.d.ts +11 -0
  146. package/dist/hub/hub.js +7 -0
  147. package/dist/index.d.ts +1 -0
  148. package/dist/index.js +4 -0
  149. package/dist/interfaces/AsyncActivityRunner.d.ts +18 -0
  150. package/dist/interfaces/AsyncActivityRunner.js +7 -0
  151. package/dist/interfaces/Confirm.d.ts +17 -0
  152. package/dist/interfaces/Confirm.js +0 -0
  153. package/dist/interfaces/DatabaseFileAccess.d.ts +14 -0
  154. package/dist/interfaces/DatabaseFileAccess.js +0 -0
  155. package/dist/interfaces/DatabaseRebuilder.d.ts +13 -0
  156. package/dist/interfaces/DatabaseRebuilder.js +0 -0
  157. package/dist/interfaces/FileHandler.d.ts +13 -0
  158. package/dist/interfaces/FileHandler.js +0 -0
  159. package/dist/interfaces/KeyValueDatabase.d.ts +11 -0
  160. package/dist/interfaces/KeyValueDatabase.js +0 -0
  161. package/dist/interfaces/ServiceModule.d.ts +59 -0
  162. package/dist/interfaces/ServiceModule.js +19 -0
  163. package/dist/interfaces/StorageAccess.d.ts +44 -0
  164. package/dist/interfaces/StorageAccess.js +0 -0
  165. package/dist/interfaces/StorageEventManager.d.ts +16 -0
  166. package/dist/interfaces/StorageEventManager.js +5 -0
  167. package/dist/managers/ChangeManager.d.ts +61 -0
  168. package/dist/managers/ChangeManager.js +104 -0
  169. package/dist/managers/ChunkDeliveryCoordinator.d.ts +51 -0
  170. package/dist/managers/ChunkDeliveryCoordinator.js +136 -0
  171. package/dist/managers/ChunkFetcher.d.ts +44 -0
  172. package/dist/managers/ChunkFetcher.js +251 -0
  173. package/dist/managers/ChunkManager.d.ts +2 -0
  174. package/dist/managers/ChunkManager.js +4 -0
  175. package/dist/managers/ConflictManager.d.ts +37 -0
  176. package/dist/managers/ConflictManager.js +322 -0
  177. package/dist/managers/EntryManager/EntryManager.d.ts +37 -0
  178. package/dist/managers/EntryManager/EntryManager.js +73 -0
  179. package/dist/managers/EntryManager/EntryManagerImpls.d.ts +74 -0
  180. package/dist/managers/EntryManager/EntryManagerImpls.js +499 -0
  181. package/dist/managers/HashManager/HashManager.d.ts +60 -0
  182. package/dist/managers/HashManager/HashManager.js +97 -0
  183. package/dist/managers/HashManager/HashManagerCore.d.ts +114 -0
  184. package/dist/managers/HashManager/HashManagerCore.js +99 -0
  185. package/dist/managers/HashManager/PureJSHashManager.d.ts +77 -0
  186. package/dist/managers/HashManager/PureJSHashManager.js +84 -0
  187. package/dist/managers/HashManager/XXHashHashManager.d.ts +96 -0
  188. package/dist/managers/HashManager/XXHashHashManager.js +111 -0
  189. package/dist/managers/LayeredChunkManager/ArrivalWaitLayer.d.ts +30 -0
  190. package/dist/managers/LayeredChunkManager/ArrivalWaitLayer.js +115 -0
  191. package/dist/managers/LayeredChunkManager/CacheLayer.d.ts +59 -0
  192. package/dist/managers/LayeredChunkManager/CacheLayer.js +161 -0
  193. package/dist/managers/LayeredChunkManager/ChunkLayerInterfaces.d.ts +37 -0
  194. package/dist/managers/LayeredChunkManager/ChunkLayerInterfaces.js +0 -0
  195. package/dist/managers/LayeredChunkManager/DatabaseReadLayer.d.ts +14 -0
  196. package/dist/managers/LayeredChunkManager/DatabaseReadLayer.js +78 -0
  197. package/dist/managers/LayeredChunkManager/DatabaseWriteLayer.d.ts +11 -0
  198. package/dist/managers/LayeredChunkManager/DatabaseWriteLayer.js +43 -0
  199. package/dist/managers/LayeredChunkManager/HotPackLayer.d.ts +9 -0
  200. package/dist/managers/LayeredChunkManager/HotPackLayer.js +8 -0
  201. package/dist/managers/LayeredChunkManager/types.d.ts +39 -0
  202. package/dist/managers/LayeredChunkManager/types.js +0 -0
  203. package/dist/managers/LayeredChunkManager.d.ts +53 -0
  204. package/dist/managers/LayeredChunkManager.js +240 -0
  205. package/dist/managers/LiveSyncManagers.d.ts +48 -0
  206. package/dist/managers/LiveSyncManagers.js +136 -0
  207. package/dist/managers/StorageEventManager.d.ts +135 -0
  208. package/dist/managers/StorageEventManager.js +564 -0
  209. package/dist/managers/StorageProcessingManager.d.ts +14 -0
  210. package/dist/managers/StorageProcessingManager.js +48 -0
  211. package/dist/managers/adapters/IStorageEventConverterAdapter.d.ts +16 -0
  212. package/dist/managers/adapters/IStorageEventConverterAdapter.js +0 -0
  213. package/dist/managers/adapters/IStorageEventManagerAdapter.d.ts +18 -0
  214. package/dist/managers/adapters/IStorageEventManagerAdapter.js +0 -0
  215. package/dist/managers/adapters/IStorageEventPersistenceAdapter.d.ts +15 -0
  216. package/dist/managers/adapters/IStorageEventPersistenceAdapter.js +0 -0
  217. package/dist/managers/adapters/IStorageEventStatusAdapter.d.ts +13 -0
  218. package/dist/managers/adapters/IStorageEventStatusAdapter.js +0 -0
  219. package/dist/managers/adapters/IStorageEventTypeGuardAdapter.d.ts +16 -0
  220. package/dist/managers/adapters/IStorageEventTypeGuardAdapter.js +0 -0
  221. package/dist/managers/adapters/IStorageEventWatchAdapter.d.ts +21 -0
  222. package/dist/managers/adapters/IStorageEventWatchAdapter.js +0 -0
  223. package/dist/managers/adapters/index.d.ts +6 -0
  224. package/dist/managers/adapters/index.js +0 -0
  225. package/dist/mock_and_interop/stores.d.ts +21 -0
  226. package/dist/mock_and_interop/stores.js +15 -0
  227. package/dist/mock_and_interop/wrapper.d.ts +7 -0
  228. package/dist/mock_and_interop/wrapper.js +37 -0
  229. package/dist/mods.d.ts +1 -0
  230. package/dist/mods.js +18 -0
  231. package/dist/platform/browser/index.d.ts +1 -0
  232. package/dist/platform/browser/index.js +10 -0
  233. package/dist/platform/browser/storage.d.ts +35 -0
  234. package/dist/platform/browser/storage.js +139 -0
  235. package/dist/platform/node/index.d.ts +23 -0
  236. package/dist/platform/node/index.js +33 -0
  237. package/dist/platform/node/storage.d.ts +31 -0
  238. package/dist/platform/node/storage.js +104 -0
  239. package/dist/platform/storagePath.d.ts +7 -0
  240. package/dist/platform/storagePath.js +20 -0
  241. package/dist/pouchdb/LiveSyncDBFunctions.d.ts +14 -0
  242. package/dist/pouchdb/LiveSyncDBFunctions.js +129 -0
  243. package/dist/pouchdb/LiveSyncLocalDB.d.ts +196 -0
  244. package/dist/pouchdb/LiveSyncLocalDB.js +381 -0
  245. package/dist/pouchdb/PouchDBConstructor.d.ts +3 -0
  246. package/dist/pouchdb/PouchDBConstructor.js +0 -0
  247. package/dist/pouchdb/ReplicatorShim.d.ts +51 -0
  248. package/dist/pouchdb/ReplicatorShim.js +109 -0
  249. package/dist/pouchdb/StreamingFetch.d.ts +19 -0
  250. package/dist/pouchdb/StreamingFetch.js +263 -0
  251. package/dist/pouchdb/chunks.d.ts +38 -0
  252. package/dist/pouchdb/chunks.js +314 -0
  253. package/dist/pouchdb/compress.d.ts +11 -0
  254. package/dist/pouchdb/compress.js +99 -0
  255. package/dist/pouchdb/encryption.d.ts +20 -0
  256. package/dist/pouchdb/encryption.js +458 -0
  257. package/dist/pouchdb/negotiation.d.ts +9 -0
  258. package/dist/pouchdb/negotiation.js +109 -0
  259. package/dist/pouchdb/pouchdb-browser.d.ts +2 -0
  260. package/dist/pouchdb/pouchdb-browser.js +96 -0
  261. package/dist/pouchdb/pouchdb-http.d.ts +2 -0
  262. package/dist/pouchdb/pouchdb-http.js +94 -0
  263. package/dist/pouchdb/pouchdb-test.d.ts +2 -0
  264. package/dist/pouchdb/pouchdb-test.js +12 -0
  265. package/dist/pouchdb/utils_couchdb.d.ts +4 -0
  266. package/dist/pouchdb/utils_couchdb.js +38 -0
  267. package/dist/replication/LiveSyncAbstractReplicator.d.ts +69 -0
  268. package/dist/replication/LiveSyncAbstractReplicator.js +92 -0
  269. package/dist/replication/SyncParamsHandler.d.ts +35 -0
  270. package/dist/replication/SyncParamsHandler.js +118 -0
  271. package/dist/replication/couchdb/LiveSyncReplicator.d.ts +85 -0
  272. package/dist/replication/couchdb/LiveSyncReplicator.js +1132 -0
  273. package/dist/replication/httplib.d.ts +75 -0
  274. package/dist/replication/httplib.js +187 -0
  275. package/dist/replication/journal/JournalSyncCore.d.ts +70 -0
  276. package/dist/replication/journal/JournalSyncCore.js +737 -0
  277. package/dist/replication/journal/JournalSyncTypes.d.ts +9 -0
  278. package/dist/replication/journal/JournalSyncTypes.js +11 -0
  279. package/dist/replication/journal/LiveSyncJournalReplicator.d.ts +40 -0
  280. package/dist/replication/journal/LiveSyncJournalReplicator.js +294 -0
  281. package/dist/replication/journal/LiveSyncJournalReplicatorEnv.d.ts +3 -0
  282. package/dist/replication/journal/LiveSyncJournalReplicatorEnv.js +0 -0
  283. package/dist/replication/journal/objectstore/JournalStorageAdapter.d.ts +15 -0
  284. package/dist/replication/journal/objectstore/JournalStorageAdapter.js +0 -0
  285. package/dist/replication/journal/objectstore/MinioStorageAdapter.d.ts +21 -0
  286. package/dist/replication/journal/objectstore/MinioStorageAdapter.js +204 -0
  287. package/dist/replication/trystero/LiveSyncTrysteroReplicator.d.ts +90 -0
  288. package/dist/replication/trystero/LiveSyncTrysteroReplicator.js +380 -0
  289. package/dist/replication/trystero/P2PLogCollector.d.ts +8 -0
  290. package/dist/replication/trystero/P2PLogCollector.js +91 -0
  291. package/dist/replication/trystero/P2PReplicatorBase.d.ts +19 -0
  292. package/dist/replication/trystero/P2PReplicatorBase.js +0 -0
  293. package/dist/replication/trystero/P2PReplicatorCore.d.ts +12 -0
  294. package/dist/replication/trystero/P2PReplicatorCore.js +126 -0
  295. package/dist/replication/trystero/P2PReplicatorPaneCommon.d.ts +41 -0
  296. package/dist/replication/trystero/P2PReplicatorPaneCommon.js +20 -0
  297. package/dist/replication/trystero/ProxiedDB.d.ts +13 -0
  298. package/dist/replication/trystero/ProxiedDB.js +20 -0
  299. package/dist/replication/trystero/TrysteroReplicator.d.ts +152 -0
  300. package/dist/replication/trystero/TrysteroReplicator.js +683 -0
  301. package/dist/replication/trystero/TrysteroReplicatorP2PClient.d.ts +19 -0
  302. package/dist/replication/trystero/TrysteroReplicatorP2PClient.js +80 -0
  303. package/dist/replication/trystero/TrysteroReplicatorP2PConnection.d.ts +2 -0
  304. package/dist/replication/trystero/TrysteroReplicatorP2PConnection.js +4 -0
  305. package/dist/replication/trystero/TrysteroReplicatorP2PServer.d.ts +117 -0
  306. package/dist/replication/trystero/TrysteroReplicatorP2PServer.js +540 -0
  307. package/dist/replication/trystero/UseP2PReplicatorResult.d.ts +11 -0
  308. package/dist/replication/trystero/UseP2PReplicatorResult.js +0 -0
  309. package/dist/replication/trystero/addP2PEventHandlers.d.ts +35 -0
  310. package/dist/replication/trystero/addP2PEventHandlers.js +43 -0
  311. package/dist/replication/trystero/rpcCompat.d.ts +1 -0
  312. package/dist/replication/trystero/rpcCompat.js +9 -0
  313. package/dist/replication/trystero/types.d.ts +95 -0
  314. package/dist/replication/trystero/types.js +27 -0
  315. package/dist/replication/trystero/useP2PReplicatorCommands.d.ts +7 -0
  316. package/dist/replication/trystero/useP2PReplicatorCommands.js +25 -0
  317. package/dist/replication/trystero/useP2PReplicatorFeature.d.ts +17 -0
  318. package/dist/replication/trystero/useP2PReplicatorFeature.js +82 -0
  319. package/dist/rpc/RpcRoom.d.ts +24 -0
  320. package/dist/rpc/RpcRoom.js +300 -0
  321. package/dist/rpc/RpcSession.d.ts +9 -0
  322. package/dist/rpc/RpcSession.js +32 -0
  323. package/dist/rpc/chunking.d.ts +11 -0
  324. package/dist/rpc/chunking.js +58 -0
  325. package/dist/rpc/errors.d.ts +8 -0
  326. package/dist/rpc/errors.js +26 -0
  327. package/dist/rpc/index.d.ts +6 -0
  328. package/dist/rpc/index.js +12 -0
  329. package/dist/rpc/pouchdb/RpcPouchDBProxy.d.ts +75 -0
  330. package/dist/rpc/pouchdb/RpcPouchDBProxy.js +115 -0
  331. package/dist/rpc/pouchdb/RpcPouchDBServer.d.ts +16 -0
  332. package/dist/rpc/pouchdb/RpcPouchDBServer.js +55 -0
  333. package/dist/rpc/transports/DiagRTCPeerConnections.d.ts +24 -0
  334. package/dist/rpc/transports/DiagRTCPeerConnections.js +208 -0
  335. package/dist/rpc/transports/DiagRTCPeerConnections.types.d.ts +64 -0
  336. package/dist/rpc/transports/DiagRTCPeerConnections.types.js +12 -0
  337. package/dist/rpc/transports/DiagRTCPeerConnections.utils.d.ts +33 -0
  338. package/dist/rpc/transports/DiagRTCPeerConnections.utils.js +217 -0
  339. package/dist/rpc/transports/TrysteroTransport.d.ts +216 -0
  340. package/dist/rpc/transports/TrysteroTransport.js +134 -0
  341. package/dist/rpc/transports/trysteroUtils.d.ts +3 -0
  342. package/dist/rpc/transports/trysteroUtils.js +37 -0
  343. package/dist/rpc/types.d.ts +75 -0
  344. package/dist/rpc/types.js +6 -0
  345. package/dist/serviceFeatures/checkRemoteSize.d.ts +28 -0
  346. package/dist/serviceFeatures/checkRemoteSize.js +178 -0
  347. package/dist/serviceFeatures/offlineScanner.d.ts +128 -0
  348. package/dist/serviceFeatures/offlineScanner.js +553 -0
  349. package/dist/serviceFeatures/prepareDatabaseForUse.d.ts +20 -0
  350. package/dist/serviceFeatures/prepareDatabaseForUse.js +39 -0
  351. package/dist/serviceFeatures/remoteConfig.d.ts +46 -0
  352. package/dist/serviceFeatures/remoteConfig.js +247 -0
  353. package/dist/serviceFeatures/setupObsidian/qrCode.d.ts +4 -0
  354. package/dist/serviceFeatures/setupObsidian/qrCode.js +67 -0
  355. package/dist/serviceFeatures/setupObsidian/setupUri.d.ts +7 -0
  356. package/dist/serviceFeatures/setupObsidian/setupUri.js +70 -0
  357. package/dist/serviceFeatures/setupObsidian/types.d.ts +2 -0
  358. package/dist/serviceFeatures/setupObsidian/types.js +0 -0
  359. package/dist/serviceFeatures/targetFilter.d.ts +24 -0
  360. package/dist/serviceFeatures/targetFilter.js +178 -0
  361. package/dist/serviceModules/FileAccessBase.d.ts +93 -0
  362. package/dist/serviceModules/FileAccessBase.js +219 -0
  363. package/dist/serviceModules/Rebuilder.d.ts +92 -0
  364. package/dist/serviceModules/Rebuilder.js +449 -0
  365. package/dist/serviceModules/ServiceDatabaseFileAccessBase.d.ts +40 -0
  366. package/dist/serviceModules/ServiceDatabaseFileAccessBase.js +306 -0
  367. package/dist/serviceModules/ServiceFileAccessBase.d.ts +64 -0
  368. package/dist/serviceModules/ServiceFileAccessBase.js +312 -0
  369. package/dist/serviceModules/ServiceFileHandlerBase.d.ts +52 -0
  370. package/dist/serviceModules/ServiceFileHandlerBase.js +493 -0
  371. package/dist/serviceModules/ServiceModuleBase.d.ts +10 -0
  372. package/dist/serviceModules/ServiceModuleBase.js +13 -0
  373. package/dist/serviceModules/adapters/IConversionAdapter.d.ts +15 -0
  374. package/dist/serviceModules/adapters/IConversionAdapter.js +0 -0
  375. package/dist/serviceModules/adapters/IFileSystemAdapter.d.ts +47 -0
  376. package/dist/serviceModules/adapters/IFileSystemAdapter.js +0 -0
  377. package/dist/serviceModules/adapters/IPathAdapter.d.ts +15 -0
  378. package/dist/serviceModules/adapters/IPathAdapter.js +0 -0
  379. package/dist/serviceModules/adapters/IStorageAdapter.d.ts +56 -0
  380. package/dist/serviceModules/adapters/IStorageAdapter.js +0 -0
  381. package/dist/serviceModules/adapters/ITypeGuardAdapter.d.ts +14 -0
  382. package/dist/serviceModules/adapters/ITypeGuardAdapter.js +0 -0
  383. package/dist/serviceModules/adapters/IVaultAdapter.d.ts +51 -0
  384. package/dist/serviceModules/adapters/IVaultAdapter.js +0 -0
  385. package/dist/serviceModules/adapters/index.d.ts +6 -0
  386. package/dist/serviceModules/adapters/index.js +0 -0
  387. package/dist/services/BrowserServices.d.ts +36 -0
  388. package/dist/services/BrowserServices.js +123 -0
  389. package/dist/services/HeadlessServices.d.ts +14 -0
  390. package/dist/services/HeadlessServices.js +144 -0
  391. package/dist/services/InjectableServices.d.ts +1 -0
  392. package/dist/services/InjectableServices.js +4 -0
  393. package/dist/services/ServiceHub.d.ts +82 -0
  394. package/dist/services/ServiceHub.js +66 -0
  395. package/dist/services/base/APIService.d.ts +93 -0
  396. package/dist/services/base/APIService.js +44 -0
  397. package/dist/services/base/AppLifecycleService.d.ts +132 -0
  398. package/dist/services/base/AppLifecycleService.js +123 -0
  399. package/dist/services/base/ConfigService.d.ts +7 -0
  400. package/dist/services/base/ConfigService.js +6 -0
  401. package/dist/services/base/ConflictService.d.ts +54 -0
  402. package/dist/services/base/ConflictService.js +22 -0
  403. package/dist/services/base/ControlService.d.ts +54 -0
  404. package/dist/services/base/ControlService.js +103 -0
  405. package/dist/services/base/DatabaseEventService.d.ts +38 -0
  406. package/dist/services/base/DatabaseEventService.js +38 -0
  407. package/dist/services/base/DatabaseService.d.ts +40 -0
  408. package/dist/services/base/DatabaseService.js +79 -0
  409. package/dist/services/base/FileProcessingService.d.ts +25 -0
  410. package/dist/services/base/FileProcessingService.js +28 -0
  411. package/dist/services/base/IService.d.ts +284 -0
  412. package/dist/services/base/IService.js +1 -0
  413. package/dist/services/base/KeyValueDBService.d.ts +42 -0
  414. package/dist/services/base/KeyValueDBService.js +133 -0
  415. package/dist/services/base/MessageTranslator.d.ts +6 -0
  416. package/dist/services/base/MessageTranslator.js +4 -0
  417. package/dist/services/base/PathService.d.ts +38 -0
  418. package/dist/services/base/PathService.js +66 -0
  419. package/dist/services/base/RemoteService.d.ts +61 -0
  420. package/dist/services/base/RemoteService.js +212 -0
  421. package/dist/services/base/ReplicationService.d.ts +92 -0
  422. package/dist/services/base/ReplicationService.js +261 -0
  423. package/dist/services/base/ReplicatorService.d.ts +66 -0
  424. package/dist/services/base/ReplicatorService.js +164 -0
  425. package/dist/services/base/ServiceBase.d.ts +33 -0
  426. package/dist/services/base/ServiceBase.js +27 -0
  427. package/dist/services/base/SettingService.d.ts +112 -0
  428. package/dist/services/base/SettingService.js +543 -0
  429. package/dist/services/base/TestService.d.ts +28 -0
  430. package/dist/services/base/TestService.js +19 -0
  431. package/dist/services/base/TweakValueService.d.ts +40 -0
  432. package/dist/services/base/TweakValueService.js +6 -0
  433. package/dist/services/base/UnresolvedErrorManager.d.ts +15 -0
  434. package/dist/services/base/UnresolvedErrorManager.js +44 -0
  435. package/dist/services/base/VaultService.d.ts +69 -0
  436. package/dist/services/base/VaultService.js +70 -0
  437. package/dist/services/implements/base/SvelteDialog.d.ts +79 -0
  438. package/dist/services/implements/base/SvelteDialog.js +134 -0
  439. package/dist/services/implements/base/UIService.d.ts +24 -0
  440. package/dist/services/implements/base/UIService.js +37 -0
  441. package/dist/services/implements/browser/BrowserAPIService.d.ts +54 -0
  442. package/dist/services/implements/browser/BrowserAPIService.js +298 -0
  443. package/dist/services/implements/browser/BrowserDatabaseService.d.ts +7 -0
  444. package/dist/services/implements/browser/BrowserDatabaseService.js +10 -0
  445. package/dist/services/implements/browser/ConfigServiceBrowserCompat.d.ts +16 -0
  446. package/dist/services/implements/browser/ConfigServiceBrowserCompat.js +23 -0
  447. package/dist/services/implements/headless/HeadlessAPIService.d.ts +52 -0
  448. package/dist/services/implements/headless/HeadlessAPIService.js +127 -0
  449. package/dist/services/implements/headless/HeadlessDatabaseService.d.ts +7 -0
  450. package/dist/services/implements/headless/HeadlessDatabaseService.js +10 -0
  451. package/dist/services/implements/injectable/InjectableAPIService.d.ts +7 -0
  452. package/dist/services/implements/injectable/InjectableAPIService.js +18 -0
  453. package/dist/services/implements/injectable/InjectableAppLifecycleService.d.ts +11 -0
  454. package/dist/services/implements/injectable/InjectableAppLifecycleService.js +14 -0
  455. package/dist/services/implements/injectable/InjectableConflictService.d.ts +11 -0
  456. package/dist/services/implements/injectable/InjectableConflictService.js +14 -0
  457. package/dist/services/implements/injectable/InjectableDatabaseEventService.d.ts +4 -0
  458. package/dist/services/implements/injectable/InjectableDatabaseEventService.js +7 -0
  459. package/dist/services/implements/injectable/InjectableFileProcessingService.d.ts +4 -0
  460. package/dist/services/implements/injectable/InjectableFileProcessingService.js +6 -0
  461. package/dist/services/implements/injectable/InjectablePathService.d.ts +12 -0
  462. package/dist/services/implements/injectable/InjectablePathService.js +36 -0
  463. package/dist/services/implements/injectable/InjectableRemoteService.d.ts +4 -0
  464. package/dist/services/implements/injectable/InjectableRemoteService.js +7 -0
  465. package/dist/services/implements/injectable/InjectableReplicationService.d.ts +4 -0
  466. package/dist/services/implements/injectable/InjectableReplicationService.js +6 -0
  467. package/dist/services/implements/injectable/InjectableReplicatorService.d.ts +4 -0
  468. package/dist/services/implements/injectable/InjectableReplicatorService.js +7 -0
  469. package/dist/services/implements/injectable/InjectableServiceHub.d.ts +72 -0
  470. package/dist/services/implements/injectable/InjectableServiceHub.js +125 -0
  471. package/dist/services/implements/injectable/InjectableServices.d.ts +36 -0
  472. package/dist/services/implements/injectable/InjectableServices.js +1 -0
  473. package/dist/services/implements/injectable/InjectableSettingService.d.ts +11 -0
  474. package/dist/services/implements/injectable/InjectableSettingService.js +33 -0
  475. package/dist/services/implements/injectable/InjectableTestService.d.ts +5 -0
  476. package/dist/services/implements/injectable/InjectableTestService.js +8 -0
  477. package/dist/services/implements/injectable/InjectableTweakValueService.d.ts +15 -0
  478. package/dist/services/implements/injectable/InjectableTweakValueService.js +12 -0
  479. package/dist/services/implements/injectable/InjectableVaultService.d.ts +9 -0
  480. package/dist/services/implements/injectable/InjectableVaultService.js +20 -0
  481. package/dist/services/lib/HandlerUtils.d.ts +374 -0
  482. package/dist/services/lib/HandlerUtils.js +412 -0
  483. package/dist/services/lib/logUtils.d.ts +13 -0
  484. package/dist/services/lib/logUtils.js +28 -0
  485. package/dist/services/lib/remoteActivity.d.ts +13 -0
  486. package/dist/services/lib/remoteActivity.js +11 -0
  487. package/dist/string_and_binary/chunks.d.ts +10 -0
  488. package/dist/string_and_binary/chunks.js +561 -0
  489. package/dist/string_and_binary/convert.d.ts +8 -0
  490. package/dist/string_and_binary/convert.js +46 -0
  491. package/dist/string_and_binary/hash.d.ts +2 -0
  492. package/dist/string_and_binary/hash.js +1 -0
  493. package/dist/string_and_binary/path.d.ts +35 -0
  494. package/dist/string_and_binary/path.js +240 -0
  495. package/dist/worker/bg.common.d.ts +2 -0
  496. package/dist/worker/bg.common.js +6 -0
  497. package/dist/worker/bg.worker.d.ts +1 -0
  498. package/dist/worker/bg.worker.encryption.d.ts +7 -0
  499. package/dist/worker/bg.worker.encryption.js +30 -0
  500. package/dist/worker/bg.worker.js +14 -0
  501. package/dist/worker/bg.worker.splitting.d.ts +6 -0
  502. package/dist/worker/bg.worker.splitting.js +36 -0
  503. package/dist/worker/bgWorker.d.ts +25 -0
  504. package/dist/worker/bgWorker.direct.d.ts +40 -0
  505. package/dist/worker/bgWorker.direct.js +65 -0
  506. package/dist/worker/bgWorker.encryption.d.ts +22 -0
  507. package/dist/worker/bgWorker.encryption.js +40 -0
  508. package/dist/worker/bgWorker.js +348 -0
  509. package/dist/worker/bgWorker.splitting.d.ts +27 -0
  510. package/dist/worker/bgWorker.splitting.js +123 -0
  511. package/dist/worker/universalTypes.d.ts +63 -0
  512. package/dist/worker/universalTypes.js +4 -0
  513. package/docs/development.md +51 -0
  514. package/docs/platform-storage.md +60 -0
  515. package/docs/releasing.md +69 -0
  516. package/package.json +693 -0
@@ -0,0 +1,178 @@
1
+ const MARK_OPERATOR = ``;
2
+ const MARK_DELETED = `${MARK_OPERATOR}__DELETED`;
3
+ const MARK_ISARRAY = `${MARK_OPERATOR}__ARRAY`;
4
+ const MARK_SWAPPED = `${MARK_OPERATOR}__SWAP`;
5
+ function unorderedArrayToObject(obj) {
6
+ return obj.map((e) => ({ [e.id]: e })).reduce((p, c) => ({ ...p, ...c }), {});
7
+ }
8
+ function objectToUnorderedArray(obj) {
9
+ const entries = Object.entries(obj);
10
+ if (entries.some((e) => e[0] != e[1]?.id)) throw new Error("Item looks like not unordered array");
11
+ return entries.map((e) => e[1]);
12
+ }
13
+ function generatePatchUnorderedArray(from, to) {
14
+ if (from.every((e) => typeof e == "object" && "id" in e) && to.every((e) => typeof e == "object" && "id" in e)) {
15
+ const fObj = unorderedArrayToObject(from);
16
+ const tObj = unorderedArrayToObject(to);
17
+ const diff = generatePatchObj(fObj, tObj);
18
+ if (Object.keys(diff).length > 0) {
19
+ return { [MARK_ISARRAY]: diff };
20
+ } else {
21
+ return {};
22
+ }
23
+ }
24
+ return { [MARK_SWAPPED]: to };
25
+ }
26
+ function generatePatchObj(from, to) {
27
+ const entries = Object.entries(from);
28
+ const tempMap = new Map(entries);
29
+ const ret = {};
30
+ const newEntries = Object.entries(to);
31
+ for (const [key, value] of newEntries) {
32
+ if (!tempMap.has(key)) {
33
+ ret[key] = value;
34
+ tempMap.delete(key);
35
+ } else {
36
+ const v = tempMap.get(key);
37
+ if (typeof v !== typeof value || Array.isArray(v) !== Array.isArray(value)) {
38
+ ret[key] = { [MARK_SWAPPED]: value };
39
+ } else {
40
+ if (v === null && value === null) {
41
+ } else if (v === null && value !== null) {
42
+ ret[key] = { [MARK_SWAPPED]: value };
43
+ } else if (v !== null && value === null) {
44
+ ret[key] = { [MARK_SWAPPED]: value };
45
+ } else if (typeof v == "object" && typeof value == "object" && !Array.isArray(v) && !Array.isArray(value)) {
46
+ const wk = generatePatchObj(
47
+ v,
48
+ value
49
+ );
50
+ if (Object.keys(wk).length > 0) ret[key] = wk;
51
+ } else if (typeof v == "object" && typeof value == "object" && Array.isArray(v) && Array.isArray(value)) {
52
+ const wk = generatePatchUnorderedArray(v, value);
53
+ if (Object.keys(wk).length > 0) ret[key] = wk;
54
+ } else if (typeof v != "object" && typeof value != "object") {
55
+ if (JSON.stringify(tempMap.get(key)) !== JSON.stringify(value)) {
56
+ ret[key] = value;
57
+ }
58
+ } else {
59
+ if (JSON.stringify(tempMap.get(key)) !== JSON.stringify(value)) {
60
+ ret[key] = { [MARK_SWAPPED]: value };
61
+ }
62
+ }
63
+ }
64
+ tempMap.delete(key);
65
+ }
66
+ }
67
+ for (const [key] of tempMap) {
68
+ ret[key] = MARK_DELETED;
69
+ }
70
+ return ret;
71
+ }
72
+ function applyPatch(from, patch) {
73
+ const ret = from;
74
+ const patches = Object.entries(patch);
75
+ for (const [key, value] of patches) {
76
+ if (value == MARK_DELETED) {
77
+ delete ret[key];
78
+ continue;
79
+ }
80
+ if (value === null) {
81
+ ret[key] = null;
82
+ continue;
83
+ }
84
+ if (typeof value == "object") {
85
+ if (MARK_SWAPPED in value) {
86
+ ret[key] = value[MARK_SWAPPED];
87
+ continue;
88
+ }
89
+ if (MARK_ISARRAY in value) {
90
+ if (!(key in ret)) ret[key] = [];
91
+ if (!Array.isArray(ret[key])) {
92
+ throw new Error("Patch target type is mismatched (array to something)");
93
+ }
94
+ const orgArrayObject = unorderedArrayToObject(ret[key]);
95
+ const appliedObject = applyPatch(
96
+ orgArrayObject,
97
+ value[MARK_ISARRAY]
98
+ );
99
+ const appliedArray = objectToUnorderedArray(appliedObject);
100
+ ret[key] = [...appliedArray];
101
+ } else {
102
+ if (!(key in ret)) {
103
+ ret[key] = value;
104
+ continue;
105
+ }
106
+ ret[key] = applyPatch(
107
+ ret[key],
108
+ value
109
+ );
110
+ }
111
+ } else {
112
+ ret[key] = value;
113
+ }
114
+ }
115
+ return ret;
116
+ }
117
+ function mergeObject(objA, objB) {
118
+ const newEntries = Object.entries(objB);
119
+ const ret = { ...objA };
120
+ if (typeof objA !== typeof objB || Array.isArray(objA) !== Array.isArray(objB)) {
121
+ return objB;
122
+ }
123
+ for (const [key, v] of newEntries) {
124
+ if (key in ret) {
125
+ const value = ret[key];
126
+ if (typeof v !== typeof value || Array.isArray(v) !== Array.isArray(value)) {
127
+ ret[key] = v;
128
+ } else {
129
+ if (typeof v == "object" && typeof value == "object" && !Array.isArray(v) && !Array.isArray(value)) {
130
+ ret[key] = mergeObject(
131
+ v,
132
+ value
133
+ );
134
+ } else if (typeof v == "object" && typeof value == "object" && Array.isArray(v) && Array.isArray(value)) {
135
+ ret[key] = [.../* @__PURE__ */ new Set([...v, ...value])];
136
+ } else {
137
+ ret[key] = v;
138
+ }
139
+ }
140
+ } else {
141
+ ret[key] = v;
142
+ }
143
+ }
144
+ const retSorted = Object.fromEntries(Object.entries(ret).sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0));
145
+ if (Array.isArray(objA) && Array.isArray(objB)) {
146
+ return Object.values(retSorted);
147
+ }
148
+ return retSorted;
149
+ }
150
+ function flattenObject(obj, path = []) {
151
+ if (typeof obj != "object") return [[path.join("."), obj]];
152
+ if (obj === null) return [[path.join("."), null]];
153
+ if (Array.isArray(obj)) return [[path.join("."), JSON.stringify(obj)]];
154
+ const e = Object.entries(obj);
155
+ const ret = [];
156
+ for (const [key, value] of e) {
157
+ const p = flattenObject(value, [...path, key]);
158
+ ret.push(...p);
159
+ }
160
+ return ret;
161
+ }
162
+ function isSensibleMargeApplicable(path) {
163
+ if (path.endsWith(".md")) return true;
164
+ return false;
165
+ }
166
+ function isObjectMargeApplicable(path) {
167
+ if (path.endsWith(".canvas")) return true;
168
+ if (path.endsWith(".json")) return true;
169
+ return false;
170
+ }
171
+ export {
172
+ applyPatch,
173
+ flattenObject,
174
+ generatePatchObj,
175
+ isObjectMargeApplicable,
176
+ isSensibleMargeApplicable,
177
+ mergeObject
178
+ };
@@ -0,0 +1 @@
1
+ export type Constructor<T> = new (...args: any[]) => T;
File without changes
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Instance-owned event and translation capabilities for Commonlib service composition.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { ServiceContext, createServiceContext, type ServiceContextContract, type ServiceContextOptions, } from "./services/base/ServiceBase.js";
7
+ export { createLiveSyncEventHub, type LiveSyncEventHub } from "./hub/hub.js";
8
+ export { passthroughMessageTranslator, type MessageTranslator, type TranslationParameters, } from "./services/base/MessageTranslator.js";
@@ -0,0 +1,14 @@
1
+ import {
2
+ ServiceContext,
3
+ createServiceContext
4
+ } from "./services/base/ServiceBase.js";
5
+ import { createLiveSyncEventHub } from "./hub/hub.js";
6
+ import {
7
+ passthroughMessageTranslator
8
+ } from "./services/base/MessageTranslator.js";
9
+ export {
10
+ ServiceContext,
11
+ createLiveSyncEventHub,
12
+ createServiceContext,
13
+ passthroughMessageTranslator
14
+ };
@@ -0,0 +1,26 @@
1
+ import { type IDBPDatabase } from "idb";
2
+ import type { KeyValueDatabase, KeyValueDatabaseFactory } from "../interfaces/KeyValueDatabase.js";
3
+ /** Creates an IndexedDB factory with a cache owned by the caller. */
4
+ export declare function createIndexedDBKeyValueDatabaseFactory(): KeyValueDatabaseFactory;
5
+ /** Key-value adapter backed by one IndexedDB object store. */
6
+ export declare class IndexedDBKeyValueDatabase implements KeyValueDatabase {
7
+ protected databasePromise: Promise<IDBPDatabase<unknown>> | null;
8
+ protected readonly databaseKey: string;
9
+ protected readonly storeKey: string;
10
+ protected destroyed: boolean;
11
+ protected destroyedPromise: Promise<void> | null;
12
+ constructor(databaseKey: string);
13
+ get isDestroyed(): boolean;
14
+ get ensuredDestroyed(): Promise<void>;
15
+ getIsReady(): Promise<boolean>;
16
+ protected ensureDatabase(): Promise<IDBPDatabase<unknown>>;
17
+ protected closeDatabase(setDestroyed?: boolean): Promise<void>;
18
+ protected get database(): Promise<IDBPDatabase<unknown>>;
19
+ get<T>(key: IDBValidKey): Promise<T>;
20
+ set<T>(key: IDBValidKey, value: T): Promise<IDBValidKey>;
21
+ del(key: IDBValidKey): Promise<void>;
22
+ clear(): Promise<void>;
23
+ keys(query?: IDBValidKey | IDBKeyRange, count?: number): Promise<IDBValidKey[]>;
24
+ close(): Promise<void>;
25
+ destroy(): Promise<void>;
26
+ }
@@ -0,0 +1,130 @@
1
+ import { deleteDB, openDB } from "idb";
2
+ import { serialized } from "octagonal-wheels/concurrency/lock";
3
+ import { LOG_LEVEL_VERBOSE, Logger } from "../common/logger.js";
4
+ function createIndexedDBKeyValueDatabaseFactory() {
5
+ const databaseCache = /* @__PURE__ */ new Map();
6
+ return async (databaseKey) => await serialized(`OpenKeyValueDatabase-${databaseKey}`, async () => {
7
+ const cachedDatabase = databaseCache.get(databaseKey);
8
+ if (cachedDatabase) {
9
+ if (!cachedDatabase.isDestroyed) return cachedDatabase;
10
+ await cachedDatabase.ensuredDestroyed;
11
+ databaseCache.delete(databaseKey);
12
+ }
13
+ const database = new IndexedDBKeyValueDatabase(databaseKey);
14
+ try {
15
+ await database.getIsReady();
16
+ databaseCache.set(databaseKey, database);
17
+ return database;
18
+ } catch (error) {
19
+ databaseCache.delete(databaseKey);
20
+ throw error;
21
+ }
22
+ });
23
+ }
24
+ class IndexedDBKeyValueDatabase {
25
+ databasePromise = null;
26
+ databaseKey;
27
+ storeKey;
28
+ destroyed = false;
29
+ destroyedPromise = null;
30
+ constructor(databaseKey) {
31
+ this.databaseKey = databaseKey;
32
+ this.storeKey = databaseKey;
33
+ }
34
+ get isDestroyed() {
35
+ return this.destroyed;
36
+ }
37
+ get ensuredDestroyed() {
38
+ return this.destroyedPromise ?? Promise.resolve();
39
+ }
40
+ async getIsReady() {
41
+ await this.ensureDatabase();
42
+ return !this.destroyed;
43
+ }
44
+ ensureDatabase() {
45
+ if (this.destroyed) throw new Error("Database is destroyed");
46
+ if (this.databasePromise) return this.databasePromise;
47
+ this.databasePromise = openDB(this.databaseKey, void 0, {
48
+ upgrade: (database) => {
49
+ if (!database.objectStoreNames.contains(this.storeKey)) {
50
+ return database.createObjectStore(this.storeKey);
51
+ }
52
+ },
53
+ blocking: (currentVersion, blockedVersion) => {
54
+ Logger(
55
+ `Blocking database open for ${this.databaseKey}: currentVersion=${currentVersion}, blockedVersion=${blockedVersion}`,
56
+ LOG_LEVEL_VERBOSE
57
+ );
58
+ void this.closeDatabase(true);
59
+ },
60
+ blocked: (currentVersion, blockedVersion) => {
61
+ Logger(
62
+ `Database open blocked for ${this.databaseKey}: currentVersion=${currentVersion}, blockedVersion=${blockedVersion}`,
63
+ LOG_LEVEL_VERBOSE
64
+ );
65
+ },
66
+ terminated: () => {
67
+ Logger(`Database connection terminated for ${this.databaseKey}`, LOG_LEVEL_VERBOSE);
68
+ this.databasePromise = null;
69
+ }
70
+ }).catch((error) => {
71
+ this.databasePromise = null;
72
+ throw error;
73
+ });
74
+ return this.databasePromise;
75
+ }
76
+ async closeDatabase(setDestroyed = false) {
77
+ if (this.databasePromise) {
78
+ const databasePromise = this.databasePromise;
79
+ this.databasePromise = null;
80
+ try {
81
+ const database = await databasePromise;
82
+ database.close();
83
+ } catch (error) {
84
+ Logger("Error closing database");
85
+ Logger(error, LOG_LEVEL_VERBOSE);
86
+ }
87
+ }
88
+ if (setDestroyed) {
89
+ this.destroyed = true;
90
+ this.destroyedPromise = Promise.resolve();
91
+ }
92
+ }
93
+ get database() {
94
+ if (this.destroyed) return Promise.reject(new Error("Database is destroyed"));
95
+ return this.ensureDatabase();
96
+ }
97
+ async get(key) {
98
+ return await (await this.database).get(this.storeKey, key);
99
+ }
100
+ async set(key, value) {
101
+ await (await this.database).put(this.storeKey, value, key);
102
+ return key;
103
+ }
104
+ async del(key) {
105
+ await (await this.database).delete(this.storeKey, key);
106
+ }
107
+ async clear() {
108
+ await (await this.database).clear(this.storeKey);
109
+ }
110
+ async keys(query, count) {
111
+ return await (await this.database).getAllKeys(this.storeKey, query, count);
112
+ }
113
+ async close() {
114
+ await this.closeDatabase();
115
+ }
116
+ async destroy() {
117
+ this.destroyed = true;
118
+ this.destroyedPromise = (async () => {
119
+ await this.closeDatabase();
120
+ await deleteDB(this.databaseKey, {
121
+ blocked: () => Logger(`Database delete blocked for ${this.databaseKey}`)
122
+ });
123
+ })();
124
+ await this.destroyedPromise;
125
+ }
126
+ }
127
+ export {
128
+ IndexedDBKeyValueDatabase,
129
+ createIndexedDBKeyValueDatabaseFactory
130
+ };
@@ -0,0 +1,12 @@
1
+ import type { SimpleStore } from "octagonal-wheels/databases/SimpleStoreBase";
2
+ export declare class StoredMapLike<U> {
3
+ _store: SimpleStore<U>;
4
+ _cache: Map<string, U>;
5
+ _prefix: string;
6
+ constructor(store: SimpleStore<Awaited<U>>, prefix?: string);
7
+ addPrefix(key: string): string;
8
+ get(key: string): Promise<U | undefined>;
9
+ set(key: string, value: U): Promise<void>;
10
+ delete(key: string): Promise<void>;
11
+ has(key: string): Promise<boolean>;
12
+ }
@@ -0,0 +1,47 @@
1
+ class StoredMapLike {
2
+ _store;
3
+ _cache = /* @__PURE__ */ new Map();
4
+ _prefix = "";
5
+ constructor(store, prefix = "") {
6
+ this._store = store;
7
+ }
8
+ addPrefix(key) {
9
+ return `${this._prefix}-${key}`;
10
+ }
11
+ async get(key) {
12
+ if (this._cache.has(key)) return this._cache.get(key);
13
+ const value = await this._store.get(this.addPrefix(key));
14
+ if (value !== void 0) {
15
+ this._cache.set(key, value);
16
+ }
17
+ return value;
18
+ }
19
+ async set(key, value) {
20
+ try {
21
+ const ret = await this._store.set(this.addPrefix(key), value);
22
+ this._cache.set(key, value);
23
+ return ret;
24
+ } catch (e) {
25
+ this._cache.delete(key);
26
+ throw e;
27
+ }
28
+ }
29
+ async delete(key) {
30
+ try {
31
+ const ret = await this._store.delete(this.addPrefix(key));
32
+ this._cache.delete(key);
33
+ return ret;
34
+ } catch (e) {
35
+ this._cache.delete(key);
36
+ throw e;
37
+ }
38
+ }
39
+ async has(key) {
40
+ if (this._cache.has(key)) return true;
41
+ const e = await this._store.keys(this.addPrefix(key), key);
42
+ return e.length > 0;
43
+ }
44
+ }
45
+ export {
46
+ StoredMapLike
47
+ };
@@ -0,0 +1,5 @@
1
+ interface InstanceHaveOnBindFunction<T> {
2
+ onBindFunction: (...params: T[]) => void;
3
+ }
4
+ export declare function __$checkInstanceBinding<T extends InstanceHaveOnBindFunction<any>>(instance: T): void;
5
+ export {};
@@ -0,0 +1,38 @@
1
+ import { LOG_LEVEL_DEBUG, Logger } from "octagonal-wheels/common/logger";
2
+ function __$checkInstanceBinding(instance) {
3
+ const thisName = instance.constructor.name;
4
+ const functions = [];
5
+ for (const key of Object.getOwnPropertyNames(Object.getPrototypeOf(instance))) {
6
+ if (key.startsWith("_") && !key.startsWith("__")) {
7
+ const method = instance[key];
8
+ if (typeof method === "function") {
9
+ functions.push(`${thisName}.${key}`);
10
+ }
11
+ }
12
+ }
13
+ const onBindFunctionStr = instance.onBindFunction.toString();
14
+ const functionsOnBindFunction = [];
15
+ const functionsOnBindFunctionMatch = onBindFunctionStr.match(/this\.(_[a-zA-Z0-9_]+)/g);
16
+ if (functionsOnBindFunctionMatch) {
17
+ functionsOnBindFunction.push(
18
+ ...functionsOnBindFunctionMatch.map((f) => `${thisName}.${f.replace(/this\./, "")}`)
19
+ );
20
+ }
21
+ const setOfThisFunctions = new Set(functions);
22
+ const setOfOnBindFunctions = new Set(functionsOnBindFunction);
23
+ const setAll = /* @__PURE__ */ new Set([...setOfThisFunctions, ...setOfOnBindFunctions]);
24
+ const missingInThis = [...setAll].filter((e) => !setOfThisFunctions.has(e));
25
+ const missingInOnBind = [...setAll].filter((e) => !setOfOnBindFunctions.has(e));
26
+ if (missingInThis.length > 0) {
27
+ Logger(`[${thisName}] \u26A0\uFE0F Missing functions in this: ${missingInThis.join(", ")}`);
28
+ }
29
+ if (missingInOnBind.length > 0) {
30
+ Logger(`[${thisName}] \u26A0\uFE0F Missing functions in onBindFunction: ${missingInOnBind.join(", ")}`);
31
+ }
32
+ if (missingInThis.length == 0 && missingInOnBind.length == 0) {
33
+ Logger(`[${thisName}] All functions are properly bound`, LOG_LEVEL_DEBUG);
34
+ }
35
+ }
36
+ export {
37
+ __$checkInstanceBinding
38
+ };
@@ -0,0 +1,3 @@
1
+ import { encryptHKDFWorker, decryptHKDFWorker } from "#worker";
2
+ export declare const encryptHKDF: typeof encryptHKDFWorker;
3
+ export declare const decryptHKDF: typeof decryptHKDFWorker;
@@ -0,0 +1,7 @@
1
+ import { encryptHKDFWorker, decryptHKDFWorker } from "#worker";
2
+ const encryptHKDF = encryptHKDFWorker;
3
+ const decryptHKDF = decryptHKDFWorker;
4
+ export {
5
+ decryptHKDF,
6
+ encryptHKDF
7
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Encrypts a string using a passphrase, unless the string is already encrypted.
3
+ *
4
+ * If the input string begins with `ENCRYPT_V2_PREFIX` or `HKDF_SALTED_ENCRYPTED_PREFIX`,
5
+ * we assume it is already encrypted and return it unchanged.
6
+ * Otherwise, we encrypt the string using an ephemeral salt and the provided passphrase.
7
+ *
8
+ * @param source - The plaintext string to encrypt, or an already encrypted string.
9
+ * @param passphrase - The passphrase used for encryption.
10
+ * @returns A promise resolving to the encrypted string, or the original string if it is already encrypted.
11
+ */
12
+ export declare function encryptString(source: string, passphrase: string): Promise<string>;
13
+ /**
14
+ * Decrypts an encrypted string using the provided passphrase.
15
+ *
16
+ * This function determines the encryption format by inspecting the string prefix, then applies
17
+ * the appropriate decryption method. It supports several encryption formats, including
18
+ * HKDF salted encryption and legacy formats (V1, V2, V3). If the format is not supported,
19
+ * an error is thrown.
20
+ *
21
+ * @param encrypted - The encrypted string to decrypt.
22
+ * @param passphrase - The passphrase used for decryption.
23
+ * @returns A promise resolving to the decrypted string.
24
+ * @throws {Error} If the encryption format is unsupported.
25
+ */
26
+ export declare function decryptString(encrypted: string, passphrase: string): Promise<string>;
27
+ export declare function tryDecryptString(encrypted: string, passphrase: string | false): Promise<string | false>;
@@ -0,0 +1,59 @@
1
+ import {
2
+ decrypt,
3
+ ENCRYPT_V2_PREFIX,
4
+ ENCRYPT_V3_PREFIX,
5
+ ENCRYPT_V1_PREFIX_PROBABLY
6
+ } from "octagonal-wheels/encryption/encryption";
7
+ import {
8
+ encryptWithEphemeralSalt,
9
+ decryptWithEphemeralSalt,
10
+ HKDF_SALTED_ENCRYPTED_PREFIX
11
+ } from "octagonal-wheels/encryption/hkdf";
12
+ import { LOG_LEVEL_VERBOSE, Logger } from "../common/logger.js";
13
+ async function encryptString(source, passphrase) {
14
+ if (source.startsWith(ENCRYPT_V2_PREFIX)) {
15
+ return source;
16
+ } else if (source.startsWith(HKDF_SALTED_ENCRYPTED_PREFIX)) {
17
+ return source;
18
+ } else {
19
+ return await encryptWithEphemeralSalt(source, passphrase);
20
+ }
21
+ }
22
+ async function tryDecryption(trials) {
23
+ for (const trial of trials) {
24
+ try {
25
+ return await trial();
26
+ } catch (error) {
27
+ Logger(`Decryption trial failed!`, LOG_LEVEL_VERBOSE);
28
+ Logger(error, LOG_LEVEL_VERBOSE);
29
+ }
30
+ }
31
+ throw new Error("All decryption trials failed");
32
+ }
33
+ async function decryptString(encrypted, passphrase) {
34
+ if (encrypted.startsWith(HKDF_SALTED_ENCRYPTED_PREFIX)) {
35
+ return decryptWithEphemeralSalt(encrypted, passphrase);
36
+ } else if (encrypted.startsWith(ENCRYPT_V2_PREFIX) || encrypted.startsWith(ENCRYPT_V3_PREFIX) || encrypted.startsWith(ENCRYPT_V1_PREFIX_PROBABLY)) {
37
+ return await tryDecryption([
38
+ async () => await decrypt(encrypted, passphrase, false),
39
+ async () => await decrypt(encrypted, passphrase, true)
40
+ // Try with legacy support
41
+ ]);
42
+ } else {
43
+ throw new Error("Unsupported encryption format");
44
+ }
45
+ }
46
+ async function tryDecryptString(encrypted, passphrase) {
47
+ try {
48
+ return await decryptString(encrypted, passphrase);
49
+ } catch (error) {
50
+ Logger(`Decryption failed!`, LOG_LEVEL_VERBOSE);
51
+ Logger(error, LOG_LEVEL_VERBOSE);
52
+ return false;
53
+ }
54
+ }
55
+ export {
56
+ decryptString,
57
+ encryptString,
58
+ tryDecryptString
59
+ };
@@ -0,0 +1,54 @@
1
+ import type { FilePathWithPrefix, ObsidianLiveSyncSettings } from "../common/types.js";
2
+ export declare const EVENT_LAYOUT_READY = "layout-ready";
3
+ export declare const EVENT_PLUGIN_LOADED = "plugin-loaded";
4
+ export declare const EVENT_PLUGIN_UNLOADED = "plugin-unloaded";
5
+ export declare const EVENT_SETTING_SAVED = "setting-saved";
6
+ export declare const EVENT_FILE_RENAMED = "file-renamed";
7
+ export declare const EVENT_FILE_SAVED = "file-saved";
8
+ export declare const EVENT_LEAF_ACTIVE_CHANGED = "leaf-active-changed";
9
+ export declare const EVENT_DATABASE_REBUILT = "database-rebuilt";
10
+ export declare const EVENT_LOG_ADDED = "log-added";
11
+ export declare const EVENT_REQUEST_OPEN_SETUP_URI = "request-open-setup-uri";
12
+ export declare const EVENT_REQUEST_COPY_SETUP_URI = "request-copy-setup-uri";
13
+ export declare const EVENT_REQUEST_SHOW_SETUP_QR = "request-show-setup-qr";
14
+ export declare const EVENT_REQUEST_RELOAD_SETTING_TAB = "reload-setting-tab";
15
+ export declare const EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG = "request-open-plugin-sync-dialog";
16
+ export declare const EVENT_FILE_CHANGED = "event-file-changed";
17
+ export declare const EVENT_REQUEST_OPEN_P2P_SETTINGS = "request-open-p2p-settings";
18
+ export declare const EVENT_REQUEST_OPEN_P2P = "request-open-p2p";
19
+ export declare const EVENT_REQUEST_CLOSE_P2P = "request-close-p2p";
20
+ export declare const EVENT_PLATFORM_UNLOADED = "platform-unloaded";
21
+ export declare const EVENT_ON_UNRESOLVED_ERROR = "on-unresolved-error";
22
+ export declare const EVENT_REQUEST_CHECK_REMOTE_SIZE = "request-check-remote-size";
23
+ export declare const EVENT_CONFLICT_CANCELLED = "conflict-cancelled";
24
+ declare global {
25
+ interface LSEvents {
26
+ [EVENT_PLUGIN_LOADED]: undefined;
27
+ [EVENT_PLUGIN_UNLOADED]: undefined;
28
+ [EVENT_FILE_SAVED]: undefined;
29
+ [EVENT_SETTING_SAVED]: ObsidianLiveSyncSettings;
30
+ [EVENT_LAYOUT_READY]: undefined;
31
+ [EVENT_FILE_CHANGED]: {
32
+ file: FilePathWithPrefix;
33
+ automated: boolean;
34
+ };
35
+ [EVENT_FILE_RENAMED]: {
36
+ newPath: FilePathWithPrefix;
37
+ old: FilePathWithPrefix;
38
+ };
39
+ [EVENT_DATABASE_REBUILT]: undefined;
40
+ [EVENT_REQUEST_OPEN_P2P_SETTINGS]: undefined;
41
+ [EVENT_LEAF_ACTIVE_CHANGED]: undefined;
42
+ [EVENT_REQUEST_OPEN_SETUP_URI]: undefined;
43
+ [EVENT_REQUEST_COPY_SETUP_URI]: undefined;
44
+ [EVENT_REQUEST_RELOAD_SETTING_TAB]: undefined;
45
+ [EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG]: undefined;
46
+ [EVENT_REQUEST_SHOW_SETUP_QR]: undefined;
47
+ [EVENT_REQUEST_OPEN_P2P]: undefined;
48
+ [EVENT_REQUEST_CLOSE_P2P]: undefined;
49
+ [EVENT_PLATFORM_UNLOADED]: undefined;
50
+ [EVENT_ON_UNRESOLVED_ERROR]: undefined;
51
+ [EVENT_REQUEST_CHECK_REMOTE_SIZE]: undefined;
52
+ [EVENT_CONFLICT_CANCELLED]: FilePathWithPrefix;
53
+ }
54
+ }
@@ -0,0 +1,46 @@
1
+ const EVENT_LAYOUT_READY = "layout-ready";
2
+ const EVENT_PLUGIN_LOADED = "plugin-loaded";
3
+ const EVENT_PLUGIN_UNLOADED = "plugin-unloaded";
4
+ const EVENT_SETTING_SAVED = "setting-saved";
5
+ const EVENT_FILE_RENAMED = "file-renamed";
6
+ const EVENT_FILE_SAVED = "file-saved";
7
+ const EVENT_LEAF_ACTIVE_CHANGED = "leaf-active-changed";
8
+ const EVENT_DATABASE_REBUILT = "database-rebuilt";
9
+ const EVENT_LOG_ADDED = "log-added";
10
+ const EVENT_REQUEST_OPEN_SETUP_URI = "request-open-setup-uri";
11
+ const EVENT_REQUEST_COPY_SETUP_URI = "request-copy-setup-uri";
12
+ const EVENT_REQUEST_SHOW_SETUP_QR = "request-show-setup-qr";
13
+ const EVENT_REQUEST_RELOAD_SETTING_TAB = "reload-setting-tab";
14
+ const EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG = "request-open-plugin-sync-dialog";
15
+ const EVENT_FILE_CHANGED = "event-file-changed";
16
+ const EVENT_REQUEST_OPEN_P2P_SETTINGS = "request-open-p2p-settings";
17
+ const EVENT_REQUEST_OPEN_P2P = "request-open-p2p";
18
+ const EVENT_REQUEST_CLOSE_P2P = "request-close-p2p";
19
+ const EVENT_PLATFORM_UNLOADED = "platform-unloaded";
20
+ const EVENT_ON_UNRESOLVED_ERROR = "on-unresolved-error";
21
+ const EVENT_REQUEST_CHECK_REMOTE_SIZE = "request-check-remote-size";
22
+ const EVENT_CONFLICT_CANCELLED = "conflict-cancelled";
23
+ export {
24
+ EVENT_CONFLICT_CANCELLED,
25
+ EVENT_DATABASE_REBUILT,
26
+ EVENT_FILE_CHANGED,
27
+ EVENT_FILE_RENAMED,
28
+ EVENT_FILE_SAVED,
29
+ EVENT_LAYOUT_READY,
30
+ EVENT_LEAF_ACTIVE_CHANGED,
31
+ EVENT_LOG_ADDED,
32
+ EVENT_ON_UNRESOLVED_ERROR,
33
+ EVENT_PLATFORM_UNLOADED,
34
+ EVENT_PLUGIN_LOADED,
35
+ EVENT_PLUGIN_UNLOADED,
36
+ EVENT_REQUEST_CHECK_REMOTE_SIZE,
37
+ EVENT_REQUEST_CLOSE_P2P,
38
+ EVENT_REQUEST_COPY_SETUP_URI,
39
+ EVENT_REQUEST_OPEN_P2P,
40
+ EVENT_REQUEST_OPEN_P2P_SETTINGS,
41
+ EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG,
42
+ EVENT_REQUEST_OPEN_SETUP_URI,
43
+ EVENT_REQUEST_RELOAD_SETTING_TAB,
44
+ EVENT_REQUEST_SHOW_SETUP_QR,
45
+ EVENT_SETTING_SAVED
46
+ };