@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,60 @@
1
+ import type { HashAlgorithm } from "../../common/models/setting.type.js";
2
+ import { HashManagerCore, type HashManagerCoreOptions } from "./HashManagerCore.js";
3
+ /**
4
+ * Class for managing hash managers and performing hash calculations.
5
+ * Selects an appropriate manager according to the available hash algorithm.
6
+ */
7
+ export declare class HashManager extends HashManagerCore {
8
+ /**
9
+ * Instance of the hash manager currently in use.
10
+ */
11
+ manager: HashManagerCore;
12
+ /**
13
+ * Checks whether the specified hash algorithm is available.
14
+ *
15
+ * @param hashAlg The hash algorithm to check
16
+ * @returns True if available
17
+ */
18
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
19
+ /**
20
+ * Selects and initialises an available hash manager.
21
+ *
22
+ * @returns True if initialisation is successful
23
+ * @throws Throws an error if no available manager exists
24
+ */
25
+ setManager(): Promise<boolean>;
26
+ /**
27
+ * Constructs a new HashManager.
28
+ *
29
+ * @param options Initialisation options
30
+ */
31
+ constructor(options: HashManagerCoreOptions);
32
+ /**
33
+ * Initialises the hash manager.
34
+ *
35
+ * @returns True if initialisation is successful
36
+ * @throws Throws an error if initialisation fails
37
+ */
38
+ processInitialise(): Promise<boolean>;
39
+ /**
40
+ * Computes the hash value for the specified string.
41
+ *
42
+ * @param piece The string to be hashed
43
+ * @returns The hash value (returned as a Promise)
44
+ */
45
+ computeHash(piece: string): Promise<string>;
46
+ /**
47
+ * Computes the hash value without encryption.
48
+ *
49
+ * @param piece The string to be hashed
50
+ * @returns The hash value (returned as a Promise)
51
+ */
52
+ computeHashWithoutEncryption(piece: string): Promise<string>;
53
+ /**
54
+ * Computes the hash value with encryption.
55
+ *
56
+ * @param piece The string to be hashed
57
+ * @returns The hash value (returned as a Promise)
58
+ */
59
+ computeHashWithEncryption(piece: string): Promise<string>;
60
+ }
@@ -0,0 +1,97 @@
1
+ import { FallbackWasmHashManager, XXHash32RawHashManager, XXHash64HashManager } from "./XXHashHashManager.js";
2
+ import { FallbackPureJSHashManager, PureJSHashManager, SHA1HashManager } from "./PureJSHashManager.js";
3
+ import { HashManagerCore } from "./HashManagerCore.js";
4
+ import { LOG_LEVEL_VERBOSE, Logger } from "../../common/logger.js";
5
+ const HashManagers = [
6
+ XXHash64HashManager,
7
+ XXHash32RawHashManager,
8
+ SHA1HashManager,
9
+ PureJSHashManager,
10
+ // Please retain these fallback managers, as they are essential for compatibility.
11
+ FallbackWasmHashManager,
12
+ FallbackPureJSHashManager
13
+ ];
14
+ class HashManager extends HashManagerCore {
15
+ /**
16
+ * Instance of the hash manager currently in use.
17
+ */
18
+ manager = void 0;
19
+ /**
20
+ * Checks whether the specified hash algorithm is available.
21
+ *
22
+ * @param hashAlg The hash algorithm to check
23
+ * @returns True if available
24
+ */
25
+ static isAvailableFor(hashAlg) {
26
+ return HashManagers.some((manager) => manager.isAvailableFor(hashAlg));
27
+ }
28
+ /**
29
+ * Selects and initialises an available hash manager.
30
+ *
31
+ * @returns True if initialisation is successful
32
+ * @throws Throws an error if no available manager exists
33
+ */
34
+ async setManager() {
35
+ const settings = this.options.settingService.currentSettings();
36
+ for (const Manager of HashManagers) {
37
+ if (Manager.isAvailableFor(settings.hashAlg)) {
38
+ this.manager = new Manager(this.options);
39
+ return await this.manager.initialise();
40
+ }
41
+ }
42
+ throw new Error(`HashManager for ${settings.hashAlg} is not available`);
43
+ }
44
+ /**
45
+ * Constructs a new HashManager.
46
+ *
47
+ * @param options Initialisation options
48
+ */
49
+ constructor(options) {
50
+ super(options);
51
+ }
52
+ /**
53
+ * Initialises the hash manager.
54
+ *
55
+ * @returns True if initialisation is successful
56
+ * @throws Throws an error if initialisation fails
57
+ */
58
+ async processInitialise() {
59
+ const settings = this.options.settingService.currentSettings();
60
+ if (await this.setManager()) {
61
+ Logger(`HashManager for ${settings.hashAlg} has been initialised`, LOG_LEVEL_VERBOSE);
62
+ return true;
63
+ }
64
+ Logger(`HashManager for ${settings.hashAlg} failed to initialise`);
65
+ throw new Error(`HashManager for ${settings.hashAlg} failed to initialise`);
66
+ }
67
+ /**
68
+ * Computes the hash value for the specified string.
69
+ *
70
+ * @param piece The string to be hashed
71
+ * @returns The hash value (returned as a Promise)
72
+ */
73
+ async computeHash(piece) {
74
+ return await this.manager.computeHash(piece);
75
+ }
76
+ /**
77
+ * Computes the hash value without encryption.
78
+ *
79
+ * @param piece The string to be hashed
80
+ * @returns The hash value (returned as a Promise)
81
+ */
82
+ computeHashWithoutEncryption(piece) {
83
+ return this.manager.computeHashWithoutEncryption(piece);
84
+ }
85
+ /**
86
+ * Computes the hash value with encryption.
87
+ *
88
+ * @param piece The string to be hashed
89
+ * @returns The hash value (returned as a Promise)
90
+ */
91
+ computeHashWithEncryption(piece) {
92
+ return this.manager.computeHashWithEncryption(piece);
93
+ }
94
+ }
95
+ export {
96
+ HashManager
97
+ };
@@ -0,0 +1,114 @@
1
+ import type { ISettingService } from "../../services/base/IService.js";
2
+ import type { HashAlgorithm } from "../../common/models/setting.type.js";
3
+ /**
4
+ * Prefix for encrypted hashes.
5
+ *
6
+ * This constant is prepended to hash strings when encryption is enabled.
7
+ */
8
+ export declare const HashEncryptedPrefix = "+";
9
+ /**
10
+ * Options for initialising {@link HashManagerCore}.
11
+ */
12
+ export type HashManagerCoreOptions = {
13
+ /**
14
+ * Remote database settings used for hash management.
15
+ */
16
+ settingService: ISettingService;
17
+ };
18
+ /**
19
+ * Abstract base class for hash management.
20
+ *
21
+ * Provides core logic for handling passphrase hashing, encryption toggling,
22
+ * and initialisation routines. Subclasses should implement encryption-specific
23
+ * hash computation methods.
24
+ */
25
+ export declare abstract class HashManagerCore {
26
+ protected settingService: ISettingService;
27
+ /**
28
+ * Indicates whether encryption is enabled for hash computation.
29
+ */
30
+ useEncryption: boolean;
31
+ /**
32
+ * Hashed passphrase as a string, used for hash operations.
33
+ */
34
+ hashedPassphrase: string;
35
+ /**
36
+ * Hashed passphrase as a 32-bit number, used for hash operations.
37
+ */
38
+ hashedPassphrase32: number;
39
+ /**
40
+ * Options used for initialisation and configuration.
41
+ */
42
+ options: HashManagerCoreOptions;
43
+ /**
44
+ * Constructs a new {@link HashManagerCore} instance.
45
+ *
46
+ * @param options - Configuration options for hash management.
47
+ */
48
+ constructor(options: HashManagerCoreOptions);
49
+ /**
50
+ * Applies the given options to the hash manager.
51
+ *
52
+ * Updates encryption settings and computes passphrase hashes.
53
+ *
54
+ * @param options - Optional configuration to apply.
55
+ */
56
+ applyOptions(options?: HashManagerCoreOptions): void;
57
+ /**
58
+ * Performs initialisation logic specific to the hash manager implementation.
59
+ *
60
+ * Subclasses must implement this method.
61
+ *
62
+ * @returns Promise resolving to true if initialisation succeeds.
63
+ */
64
+ abstract processInitialise(): Promise<boolean>;
65
+ /**
66
+ * Task representing the initialisation process.
67
+ */
68
+ initialiseTask?: Promise<boolean>;
69
+ /**
70
+ * Ensures the hash manager is initialised.
71
+ *
72
+ * Returns a promise that resolves when initialisation is complete.
73
+ *
74
+ * @returns Promise resolving to true if initialisation succeeds.
75
+ */
76
+ initialise(): Promise<boolean>;
77
+ /**
78
+ * Computes a hash for the given string.
79
+ *
80
+ * If encryption is enabled, the hash is computed with encryption and prefixed.
81
+ * Otherwise, a plain hash is computed.
82
+ *
83
+ * @param piece - The input string to hash.
84
+ * @returns Promise resolving to the computed hash string.
85
+ */
86
+ computeHash(piece: string): Promise<string>;
87
+ /**
88
+ * Computes a hash for the given string without encryption.
89
+ *
90
+ * Subclasses must implement this method.
91
+ *
92
+ * @param piece - The input string to hash.
93
+ * @returns Promise resolving to the computed hash string.
94
+ */
95
+ abstract computeHashWithoutEncryption(piece: string): Promise<string>;
96
+ /**
97
+ * Computes a hash for the given string with encryption.
98
+ *
99
+ * Subclasses must implement this method.
100
+ *
101
+ * @param piece - The input string to hash.
102
+ * @returns Promise resolving to the computed encrypted hash string.
103
+ */
104
+ abstract computeHashWithEncryption(piece: string): Promise<string>;
105
+ /**
106
+ * Determines whether the hash manager is available for the specified algorithm.
107
+ *
108
+ * Subclasses should override this method to indicate supported algorithms.
109
+ *
110
+ * @param hashAlg - The hash algorithm to check.
111
+ * @returns True if available, false otherwise.
112
+ */
113
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
114
+ }
@@ -0,0 +1,99 @@
1
+ import { fallbackMixedHashEach, mixedHash } from "octagonal-wheels/hash/purejs";
2
+ import { SALT_OF_ID, SEED_MURMURHASH } from "../../common/models/shared.const.behabiour.js";
3
+ const HashEncryptedPrefix = "+";
4
+ class HashManagerCore {
5
+ settingService;
6
+ /**
7
+ * Indicates whether encryption is enabled for hash computation.
8
+ */
9
+ useEncryption = false;
10
+ /**
11
+ * Hashed passphrase as a string, used for hash operations.
12
+ */
13
+ hashedPassphrase = "";
14
+ /**
15
+ * Hashed passphrase as a 32-bit number, used for hash operations.
16
+ */
17
+ hashedPassphrase32 = 0;
18
+ /**
19
+ * Options used for initialisation and configuration.
20
+ */
21
+ options;
22
+ /**
23
+ * Constructs a new {@link HashManagerCore} instance.
24
+ *
25
+ * @param options - Configuration options for hash management.
26
+ */
27
+ constructor(options) {
28
+ this.options = options;
29
+ this.settingService = options.settingService;
30
+ this.applyOptions(options);
31
+ }
32
+ /**
33
+ * Applies the given options to the hash manager.
34
+ *
35
+ * Updates encryption settings and computes passphrase hashes.
36
+ *
37
+ * @param options - Optional configuration to apply.
38
+ */
39
+ applyOptions(options) {
40
+ if (options) {
41
+ this.options = options;
42
+ }
43
+ const settings = this.options.settingService.currentSettings();
44
+ this.useEncryption = settings.encrypt ?? false;
45
+ const passphrase = settings.passphrase || "";
46
+ const usingLetters = ~~(passphrase.length / 4 * 3);
47
+ const passphraseForHash = SALT_OF_ID + passphrase.substring(0, usingLetters);
48
+ this.hashedPassphrase = fallbackMixedHashEach(passphraseForHash);
49
+ this.hashedPassphrase32 = mixedHash(passphraseForHash, SEED_MURMURHASH)[0];
50
+ }
51
+ /**
52
+ * Task representing the initialisation process.
53
+ */
54
+ initialiseTask;
55
+ /**
56
+ * Ensures the hash manager is initialised.
57
+ *
58
+ * Returns a promise that resolves when initialisation is complete.
59
+ *
60
+ * @returns Promise resolving to true if initialisation succeeds.
61
+ */
62
+ initialise() {
63
+ if (this.initialiseTask) {
64
+ return this.initialiseTask;
65
+ }
66
+ this.initialiseTask = this.processInitialise();
67
+ return this.initialiseTask;
68
+ }
69
+ /**
70
+ * Computes a hash for the given string.
71
+ *
72
+ * If encryption is enabled, the hash is computed with encryption and prefixed.
73
+ * Otherwise, a plain hash is computed.
74
+ *
75
+ * @param piece - The input string to hash.
76
+ * @returns Promise resolving to the computed hash string.
77
+ */
78
+ async computeHash(piece) {
79
+ if (this.useEncryption) {
80
+ return HashEncryptedPrefix + await this.computeHashWithEncryption(piece);
81
+ }
82
+ return await this.computeHashWithoutEncryption(piece);
83
+ }
84
+ /**
85
+ * Determines whether the hash manager is available for the specified algorithm.
86
+ *
87
+ * Subclasses should override this method to indicate supported algorithms.
88
+ *
89
+ * @param hashAlg - The hash algorithm to check.
90
+ * @returns True if available, false otherwise.
91
+ */
92
+ static isAvailableFor(hashAlg) {
93
+ return false;
94
+ }
95
+ }
96
+ export {
97
+ HashEncryptedPrefix,
98
+ HashManagerCore
99
+ };
@@ -0,0 +1,77 @@
1
+ import { HashManagerCore } from "./HashManagerCore.js";
2
+ import type { HashAlgorithm } from "../../common/models/setting.type.js";
3
+ /**
4
+ * Provides hash management using the "mixed-purejs" algorithm.
5
+ *
6
+ * This manager utilises a pure JavaScript implementation for hashing.
7
+ * It is available only when the hash algorithm is set to "mixed-purejs".
8
+ */
9
+ export declare class PureJSHashManager extends HashManagerCore {
10
+ /**
11
+ * Determines whether this manager is available for the specified algorithm.
12
+ * @param hashAlg The hash algorithm to check.
13
+ * @returns True if the algorithm is "mixed-purejs".
14
+ */
15
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
16
+ /**
17
+ * Initialises the hash manager.
18
+ * @returns Always resolves to true.
19
+ */
20
+ processInitialise(): Promise<boolean>;
21
+ /**
22
+ * Computes a hash for the given input, including encryption.
23
+ * @param input The input string to hash.
24
+ * @returns The computed hash as a promise.
25
+ */
26
+ computeHashWithEncryption(input: string): Promise<string>;
27
+ /**
28
+ * Computes a hash for the given input, without encryption.
29
+ * @param input The input string to hash.
30
+ * @returns The computed hash as a promise.
31
+ */
32
+ computeHashWithoutEncryption(input: string): Promise<string>;
33
+ }
34
+ /**
35
+ * Provides hash management using the "sha1" algorithm.
36
+ *
37
+ * This manager utilises a pure JavaScript SHA-1 implementation.
38
+ * It is available only when the hash algorithm is set to "sha1".
39
+ */
40
+ export declare class SHA1HashManager extends HashManagerCore {
41
+ /**
42
+ * Determines whether this manager is available for the specified algorithm.
43
+ * @param hashAlg The hash algorithm to check.
44
+ * @returns True if the algorithm is "sha1".
45
+ */
46
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
47
+ /**
48
+ * Initialises the hash manager.
49
+ * @returns Always resolves to true.
50
+ */
51
+ processInitialise(): Promise<boolean>;
52
+ /**
53
+ * Computes a SHA-1 hash for the given input, including encryption.
54
+ * @param input The input string to hash.
55
+ * @returns The computed SHA-1 hash as a promise.
56
+ */
57
+ computeHashWithEncryption(input: string): Promise<string>;
58
+ /**
59
+ * Computes a SHA-1 hash for the given input, without encryption.
60
+ * @param input The input string to hash.
61
+ * @returns The computed SHA-1 hash as a promise.
62
+ */
63
+ computeHashWithoutEncryption(input: string): Promise<string>;
64
+ }
65
+ /**
66
+ * Fallback hash manager using the pure JavaScript implementation.
67
+ *
68
+ * This manager is always available and acts as a fallback when no specific algorithm matches.
69
+ */
70
+ export declare class FallbackPureJSHashManager extends PureJSHashManager {
71
+ /**
72
+ * Always returns true, indicating this manager is available for any algorithm.
73
+ * @param _hashAlg The hash algorithm (ignored).
74
+ * @returns True.
75
+ */
76
+ static isAvailableFor(_hashAlg: HashAlgorithm): boolean;
77
+ }
@@ -0,0 +1,84 @@
1
+ import { HashManagerCore } from "./HashManagerCore.js";
2
+ import { fallbackMixedHashEach, sha1 } from "octagonal-wheels/hash/purejs";
3
+ import { HashAlgorithms } from "../../common/models/setting.const.js";
4
+ class PureJSHashManager extends HashManagerCore {
5
+ /**
6
+ * Determines whether this manager is available for the specified algorithm.
7
+ * @param hashAlg The hash algorithm to check.
8
+ * @returns True if the algorithm is "mixed-purejs".
9
+ */
10
+ static isAvailableFor(hashAlg) {
11
+ return hashAlg === HashAlgorithms.MIXED_PUREJS;
12
+ }
13
+ /**
14
+ * Initialises the hash manager.
15
+ * @returns Always resolves to true.
16
+ */
17
+ processInitialise() {
18
+ return Promise.resolve(true);
19
+ }
20
+ /**
21
+ * Computes a hash for the given input, including encryption.
22
+ * @param input The input string to hash.
23
+ * @returns The computed hash as a promise.
24
+ */
25
+ computeHashWithEncryption(input) {
26
+ return Promise.resolve(fallbackMixedHashEach(`${input}${this.hashedPassphrase}${input.length}`));
27
+ }
28
+ /**
29
+ * Computes a hash for the given input, without encryption.
30
+ * @param input The input string to hash.
31
+ * @returns The computed hash as a promise.
32
+ */
33
+ computeHashWithoutEncryption(input) {
34
+ return Promise.resolve(fallbackMixedHashEach(`${input}-${input.length}`));
35
+ }
36
+ }
37
+ class SHA1HashManager extends HashManagerCore {
38
+ /**
39
+ * Determines whether this manager is available for the specified algorithm.
40
+ * @param hashAlg The hash algorithm to check.
41
+ * @returns True if the algorithm is "sha1".
42
+ */
43
+ static isAvailableFor(hashAlg) {
44
+ return hashAlg === HashAlgorithms.SHA1;
45
+ }
46
+ /**
47
+ * Initialises the hash manager.
48
+ * @returns Always resolves to true.
49
+ */
50
+ processInitialise() {
51
+ return Promise.resolve(true);
52
+ }
53
+ /**
54
+ * Computes a SHA-1 hash for the given input, including encryption.
55
+ * @param input The input string to hash.
56
+ * @returns The computed SHA-1 hash as a promise.
57
+ */
58
+ computeHashWithEncryption(input) {
59
+ return sha1(`${input}-${this.hashedPassphrase}-${input.length}`);
60
+ }
61
+ /**
62
+ * Computes a SHA-1 hash for the given input, without encryption.
63
+ * @param input The input string to hash.
64
+ * @returns The computed SHA-1 hash as a promise.
65
+ */
66
+ computeHashWithoutEncryption(input) {
67
+ return sha1(`${input}-${input.length}`);
68
+ }
69
+ }
70
+ class FallbackPureJSHashManager extends PureJSHashManager {
71
+ /**
72
+ * Always returns true, indicating this manager is available for any algorithm.
73
+ * @param _hashAlg The hash algorithm (ignored).
74
+ * @returns True.
75
+ */
76
+ static isAvailableFor(_hashAlg) {
77
+ return true;
78
+ }
79
+ }
80
+ export {
81
+ FallbackPureJSHashManager,
82
+ PureJSHashManager,
83
+ SHA1HashManager
84
+ };
@@ -0,0 +1,96 @@
1
+ import { HashManagerCore, type HashManagerCoreOptions } from "./HashManagerCore.js";
2
+ import type { XXHashAPI } from "xxhash-wasm-102";
3
+ import type { HashAlgorithm } from "../../common/models/setting.type.js";
4
+ /**
5
+ * Abstract base class for hash managers using XXHash algorithms.
6
+ * Provides initialisation and common properties for XXHash-based managers.
7
+ */
8
+ export declare abstract class XXHashHashManager extends HashManagerCore {
9
+ /**
10
+ * Instance of XXHash API used for hashing operations.
11
+ */
12
+ xxhash: XXHashAPI;
13
+ /**
14
+ * Constructs a new XXHashHashManager.
15
+ * @param options - Options for the hash manager core.
16
+ */
17
+ constructor(options: HashManagerCoreOptions);
18
+ /**
19
+ * Initialises the XXHash API instance.
20
+ * @returns A promise resolving to true when initialisation is complete.
21
+ */
22
+ processInitialise(): Promise<boolean>;
23
+ }
24
+ /**
25
+ * Hash manager for the legacy hash algorithm (empty string).
26
+ * Utilises XXHash32 raw hashing.
27
+ */
28
+ export declare class XXHash32RawHashManager extends XXHashHashManager {
29
+ /**
30
+ * Determines whether this manager is available for the specified algorithm.
31
+ * @param hashAlg - The hash algorithm to check.
32
+ * @returns True if available, false otherwise.
33
+ */
34
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
35
+ /**
36
+ * Computes a hash for the given piece using encryption.
37
+ * @param piece - The input string to hash.
38
+ * @returns A promise resolving to the hash string.
39
+ */
40
+ computeHashWithEncryption(piece: string): Promise<string>;
41
+ /**
42
+ * Computes a hash for the given piece without encryption.
43
+ * @param piece - The input string to hash.
44
+ * @returns A promise resolving to the hash string.
45
+ */
46
+ computeHashWithoutEncryption(piece: string): Promise<string>;
47
+ }
48
+ /**
49
+ * Hash manager for the XXHash64 algorithm ("xxhash64").
50
+ */
51
+ export declare class XXHash64HashManager extends XXHashHashManager {
52
+ /**
53
+ * Determines whether this manager is available for the specified algorithm.
54
+ * @param hashAlg - The hash algorithm to check.
55
+ * @returns True if available, false otherwise.
56
+ */
57
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
58
+ /**
59
+ * Computes a hash for the given piece using encryption.
60
+ * @param piece - The input string to hash.
61
+ * @returns A promise resolving to the hash string.
62
+ */
63
+ computeHashWithEncryption(piece: string): Promise<string>;
64
+ /**
65
+ * Computes a hash for the given piece without encryption.
66
+ * @param piece - The input string to hash.
67
+ * @returns A promise resolving to the hash string.
68
+ */
69
+ computeHashWithoutEncryption(piece: string): Promise<string>;
70
+ }
71
+ /**
72
+ * Fallback hash manager utilising XXHash32.
73
+ * Used when no specific algorithm is matched.
74
+ * Please be careful with this manager, as it is different from XXHash32RawHashManager.
75
+ */
76
+ export declare class FallbackWasmHashManager extends XXHashHashManager {
77
+ /**
78
+ * Determines whether this manager is available for the specified algorithm.
79
+ * Always returns true as a fallback.
80
+ * @param hashAlg - The hash algorithm to check.
81
+ * @returns True.
82
+ */
83
+ static isAvailableFor(hashAlg: HashAlgorithm): boolean;
84
+ /**
85
+ * Computes a hash for the given piece using encryption.
86
+ * @param piece - The input string to hash.
87
+ * @returns A promise resolving to the hash string.
88
+ */
89
+ computeHashWithEncryption(piece: string): Promise<string>;
90
+ /**
91
+ * Computes a hash for the given piece without encryption.
92
+ * @param piece - The input string to hash.
93
+ * @returns A promise resolving to the hash string.
94
+ */
95
+ computeHashWithoutEncryption(piece: string): Promise<string>;
96
+ }