@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,41 @@
1
+ import { type ObsidianLiveSyncSettings } from "../common/types.js";
2
+ /**
3
+ * Encode settings to a tiny array to encode in QRCode,
4
+ * Due to size limitation of QR code, we encode settings as an array instead of object.
5
+ * @param settings settings to encode
6
+ */
7
+ export declare function encodeSettingsToQRCodeData(settings: ObsidianLiveSyncSettings): string;
8
+ /**
9
+ * Decode settings from QR code data string
10
+ * @param qr data string from QR code
11
+ * @returns Decoded settings
12
+ */
13
+ export declare function decodeSettingsFromQRCodeData(qr: string): ObsidianLiveSyncSettings;
14
+ export declare enum OutputFormat {
15
+ SVG = 0,
16
+ ASCII = 1
17
+ }
18
+ export interface SplitQRCodeData {
19
+ total: number;
20
+ parts: string[];
21
+ }
22
+ /**
23
+ * Encode setting string to QR code in specified format
24
+ * @param settingString Setting string to encode
25
+ * @param format Output format
26
+ */
27
+ export declare function encodeQR(settingString: string, format: OutputFormat): string | SplitQRCodeData;
28
+ type ErasureProperties = keyof ObsidianLiveSyncSettings;
29
+ /**
30
+ * Generate setup URI with encrypted settings
31
+ * @param settingString Settings to encode
32
+ * @param passphrase Passphrase to encrypt the settings
33
+ * @param removeProperties Properties to remove from the settings
34
+ * Means these properties will not be included in the generated setup URI,
35
+ * See also necessaryErasureProperties for properties that will always be removed.
36
+ * @param skipDefaultValue Whether to skip default values
37
+ * @returns Generated setup URI
38
+ */
39
+ export declare function encodeSettingsToSetupURI(settingString: ObsidianLiveSyncSettings, passphrase: string, removeProperties?: ErasureProperties[], skipDefaultValue?: boolean): Promise<string>;
40
+ export declare function decodeSettingsFromSetupURI(uri: string, passphrase: string): Promise<false | ObsidianLiveSyncSettings>;
41
+ export {};
@@ -0,0 +1,140 @@
1
+ import qrcode from "qrcode-generator";
2
+ import { configURIBase, configURIBaseQR } from "../common/types.js";
3
+ import { decodeAnyArray, encodeAnyArray } from "octagonal-wheels/object";
4
+ import {
5
+ DEFAULT_SETTINGS,
6
+ KeyIndexOfSettings,
7
+ LOG_LEVEL_NOTICE
8
+ } from "../common/types.js";
9
+ import { decryptString, encryptString } from "../encryption/stringEncryption.js";
10
+ import { LOG_LEVEL_VERBOSE, Logger } from "octagonal-wheels/common/logger";
11
+ function encodeSettingsToQRCodeData(settings) {
12
+ const fullIndexes = Object.entries(KeyIndexOfSettings);
13
+ let maxIndex = 0;
14
+ for (const [, index] of fullIndexes) {
15
+ if (index >= 0 && index > maxIndex) {
16
+ maxIndex = index;
17
+ }
18
+ }
19
+ const settingArr = new Array(maxIndex + 1).fill(void 0);
20
+ for (const [settingKey, index] of fullIndexes) {
21
+ const settingValue = settings[settingKey];
22
+ if (index < 0) {
23
+ continue;
24
+ }
25
+ settingArr[index] = settingValue;
26
+ }
27
+ return encodeAnyArray(settingArr);
28
+ }
29
+ function decodeSettingsFromQRCodeData(qr) {
30
+ const settingArr = decodeAnyArray(qr);
31
+ const fullIndexes = Object.entries(KeyIndexOfSettings);
32
+ const newSettings = { ...DEFAULT_SETTINGS };
33
+ const skippedSettings = [];
34
+ for (const [settingKey, index] of fullIndexes) {
35
+ if (index < 0) {
36
+ continue;
37
+ }
38
+ if (index >= settingArr.length) {
39
+ skippedSettings.push(`${settingKey} (index ${index})`);
40
+ continue;
41
+ }
42
+ const settingValue = settingArr[index];
43
+ newSettings[settingKey] = settingValue;
44
+ }
45
+ if (skippedSettings.length > 0) {
46
+ Logger(
47
+ `Warning: ${skippedSettings.length} settings were skipped during QR decode (array length: ${settingArr.length}): ${skippedSettings.slice(0, 5).join(", ")}${skippedSettings.length > 5 ? "..." : ""}`,
48
+ LOG_LEVEL_VERBOSE
49
+ );
50
+ }
51
+ return newSettings;
52
+ }
53
+ var OutputFormat = /* @__PURE__ */ ((OutputFormat2) => {
54
+ OutputFormat2[OutputFormat2["SVG"] = 0] = "SVG";
55
+ OutputFormat2[OutputFormat2["ASCII"] = 1] = "ASCII";
56
+ return OutputFormat2;
57
+ })(OutputFormat || {});
58
+ const AGGREGATOR_URL = "https://vrtmrz.github.io/obsidian-livesync/aggregator.html";
59
+ function encodeQR(settingString, format) {
60
+ const tryEncode = (data) => {
61
+ const qr = qrcode(0, "L");
62
+ qr.addData(data);
63
+ qr.make();
64
+ if (format === 0 /* SVG */) {
65
+ return qr.createSvgTag(3);
66
+ } else if (format === 1 /* ASCII */) {
67
+ return qr.createASCII(3);
68
+ }
69
+ return "";
70
+ };
71
+ const uri = `${configURIBaseQR}${encodeURIComponent(settingString)}`;
72
+ try {
73
+ return tryEncode(uri);
74
+ } catch (ex) {
75
+ Logger(`QR Code size exceeded, switching to aggregator mode`, LOG_LEVEL_NOTICE);
76
+ Logger(ex, LOG_LEVEL_VERBOSE);
77
+ const id = Math.random().toString(36).substring(2, 10);
78
+ const data = encodeURIComponent(settingString);
79
+ const chunkSize = 2e3;
80
+ const total = Math.ceil(data.length / chunkSize);
81
+ const parts = [];
82
+ for (let i = 0; i < total; i++) {
83
+ const chunk = data.substring(i * chunkSize, (i + 1) * chunkSize);
84
+ const partUri = `${AGGREGATOR_URL}#id=${id}&n=${total}&i=${i}&d=${chunk}`;
85
+ try {
86
+ parts.push(tryEncode(partUri));
87
+ } catch (ex2) {
88
+ Logger(`Failed to encode split QR Code (${ex2?.message || String(ex2)})`, LOG_LEVEL_NOTICE);
89
+ return "";
90
+ }
91
+ }
92
+ return { total, parts };
93
+ }
94
+ }
95
+ const necessaryErasureProperties = [
96
+ "configPassphraseStore",
97
+ "encryptedCouchDBConnection",
98
+ "encryptedPassphrase"
99
+ ];
100
+ async function encodeSettingsToSetupURI(settingString, passphrase, removeProperties = ["pluginSyncExtendedSetting"], skipDefaultValue = false) {
101
+ const setting = {
102
+ ...settingString
103
+ };
104
+ if (skipDefaultValue) {
105
+ const keys = Object.keys(setting);
106
+ for (const k of keys) {
107
+ if (JSON.stringify(k in setting ? setting[k] : "") == JSON.stringify(k in DEFAULT_SETTINGS ? DEFAULT_SETTINGS[k] : "*")) {
108
+ delete setting[k];
109
+ }
110
+ }
111
+ }
112
+ for (const prop of [...removeProperties]) {
113
+ delete setting[prop];
114
+ }
115
+ for (const prop of necessaryErasureProperties) {
116
+ setting[prop] = "";
117
+ }
118
+ const encryptedSetting = encodeURIComponent(await encryptString(JSON.stringify(setting), passphrase));
119
+ const uri = `${configURIBase}${encryptedSetting} `;
120
+ return uri;
121
+ }
122
+ async function decodeSettingsFromSetupURI(uri, passphrase) {
123
+ const encryptedSetting = uri.substring(configURIBase.length);
124
+ const decrypted = await decryptString(decodeURIComponent(encryptedSetting), passphrase);
125
+ try {
126
+ return JSON.parse(decrypted);
127
+ } catch (e) {
128
+ Logger(`Failed to parse settings from decrypted data`, LOG_LEVEL_NOTICE);
129
+ Logger(e, LOG_LEVEL_VERBOSE);
130
+ return false;
131
+ }
132
+ }
133
+ export {
134
+ OutputFormat,
135
+ decodeSettingsFromQRCodeData,
136
+ decodeSettingsFromSetupURI,
137
+ encodeQR,
138
+ encodeSettingsToQRCodeData,
139
+ encodeSettingsToSetupURI
140
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Content-Splitter for Self-hosted LiveSync.
3
+ * Splits content into manageable chunks for efficient storage and synchronisation.
4
+ */
5
+ import { type FilePathWithPrefix } from "../common/types.js";
6
+ import type { ISettingService } from "../services/base/IService.js";
7
+ /**
8
+ * ContentSplitter interface for splitting content into chunks.
9
+ */
10
+ export type SplitOptions = {
11
+ blob: Blob;
12
+ path: FilePathWithPrefix;
13
+ pieceSize: number;
14
+ plainSplit: boolean;
15
+ minimumChunkSize: number;
16
+ useWorker: boolean;
17
+ useSegmenter: boolean;
18
+ };
19
+ /**
20
+ * The maximum size, in bytes, of a document to be processed by the content splitter in the foreground.
21
+ */
22
+ export declare const MAX_CHUNKS_SIZE_ON_UI = 1024;
23
+ /**
24
+ * Options for the content splitter.
25
+ */
26
+ export type ContentSplitterOptions = {
27
+ settingService: ISettingService;
28
+ };
@@ -0,0 +1,5 @@
1
+ import {} from "../common/types.js";
2
+ const MAX_CHUNKS_SIZE_ON_UI = 1024;
3
+ export {
4
+ MAX_CHUNKS_SIZE_ON_UI
5
+ };
@@ -0,0 +1,51 @@
1
+ import { type SavingEntry } from "../common/types.js";
2
+ import { type ContentSplitterOptions, type SplitOptions } from "./ContentSplitter.js";
3
+ export declare abstract class ContentSplitterCore {
4
+ /**
5
+ * Options for the content splitter.
6
+ * These settings include the chunk splitter version and other configurations.
7
+ */
8
+ options: ContentSplitterOptions;
9
+ /**
10
+ * Task for initialising the content splitter.
11
+ * This ensures that the splitter is initialised before any operations are performed.
12
+ */
13
+ initialised: Promise<boolean> | undefined;
14
+ /**
15
+ * Constructor for the content splitter core.
16
+ * @param params Content splitter options
17
+ */
18
+ constructor(params: ContentSplitterOptions);
19
+ /**
20
+ * Initialise the content splitter with the provided options.
21
+ * @param options Content splitter options
22
+ */
23
+ abstract initialise(options: ContentSplitterOptions): Promise<boolean>;
24
+ /**
25
+ * Split the content of the loaded entry into chunks.
26
+ * @param entry The loaded entry to be split into chunks
27
+ */
28
+ abstract splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
29
+ }
30
+ export declare abstract class ContentSplitterBase extends ContentSplitterCore {
31
+ initialise(_options: ContentSplitterOptions): Promise<boolean>;
32
+ /**
33
+ * Check whether the content splitter is available for the given settings.
34
+ * @param setting Content splitter options
35
+ * @returns True if the content splitter is available; false otherwise
36
+ */
37
+ static isAvailableFor(setting: ContentSplitterOptions): boolean;
38
+ /**
39
+ * Process the content and split it into chunks.
40
+ * @param options Blob content to be split into chunks
41
+ */
42
+ abstract processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
43
+ getParamsFor(entry: SavingEntry): SplitOptions;
44
+ /**
45
+ * Split the content of the loaded entry into chunks.
46
+ * This method waits for the initialisation task to complete before proceeding.
47
+ * @param entry The loaded entry to be split into chunks
48
+ * @returns A generator that yields the split chunks
49
+ */
50
+ splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
51
+ }
@@ -0,0 +1,83 @@
1
+ import { MAX_DOC_SIZE_BIN, ChunkAlgorithms } from "../common/types.js";
2
+ import { createTextBlob } from "../common/utils.js";
3
+ import { shouldSplitAsPlainText } from "../string_and_binary/path.js";
4
+ import { MAX_CHUNKS_SIZE_ON_UI } from "./ContentSplitter.js";
5
+ class ContentSplitterCore {
6
+ /**
7
+ * Options for the content splitter.
8
+ * These settings include the chunk splitter version and other configurations.
9
+ */
10
+ options;
11
+ /**
12
+ * Task for initialising the content splitter.
13
+ * This ensures that the splitter is initialised before any operations are performed.
14
+ */
15
+ initialised;
16
+ /**
17
+ * Constructor for the content splitter core.
18
+ * @param params Content splitter options
19
+ */
20
+ constructor(params) {
21
+ this.options = params;
22
+ this.initialised = this.initialise(params);
23
+ }
24
+ }
25
+ class ContentSplitterBase extends ContentSplitterCore {
26
+ initialise(_options) {
27
+ this.options = _options;
28
+ return Promise.resolve(true);
29
+ }
30
+ /**
31
+ * Check whether the content splitter is available for the given settings.
32
+ * @param setting Content splitter options
33
+ * @returns True if the content splitter is available; false otherwise
34
+ */
35
+ static isAvailableFor(setting) {
36
+ return false;
37
+ }
38
+ getParamsFor(entry) {
39
+ const settings = this.options.settingService.currentSettings();
40
+ const maxChunkSize = Math.floor(MAX_DOC_SIZE_BIN * ((settings.customChunkSize || 0) * 1 + 1));
41
+ const pieceSize = maxChunkSize;
42
+ const minimumChunkSize = settings.minimumChunkSize;
43
+ const path = entry.path;
44
+ const plainSplit = shouldSplitAsPlainText(path);
45
+ const maxSize = MAX_CHUNKS_SIZE_ON_UI;
46
+ const blob = entry.data instanceof Blob ? entry.data : createTextBlob(entry.data);
47
+ let useWorker = true;
48
+ if (settings.disableWorkerForGeneratingChunks) {
49
+ useWorker = false;
50
+ }
51
+ if (useWorker && settings.processSmallFilesInUIThread) {
52
+ if (blob.size <= maxSize) {
53
+ useWorker = false;
54
+ }
55
+ }
56
+ const useSegmenter = settings.chunkSplitterVersion === ChunkAlgorithms.V2Segmenter;
57
+ return {
58
+ blob,
59
+ path,
60
+ pieceSize,
61
+ plainSplit,
62
+ minimumChunkSize,
63
+ useWorker,
64
+ useSegmenter
65
+ };
66
+ }
67
+ /**
68
+ * Split the content of the loaded entry into chunks.
69
+ * This method waits for the initialisation task to complete before proceeding.
70
+ * @param entry The loaded entry to be split into chunks
71
+ * @returns A generator that yields the split chunks
72
+ */
73
+ async splitContent(entry) {
74
+ await this.initialised;
75
+ const options = this.getParamsFor(entry);
76
+ const generator = await this.processSplit(options);
77
+ return generator;
78
+ }
79
+ }
80
+ export {
81
+ ContentSplitterBase,
82
+ ContentSplitterCore
83
+ };
@@ -0,0 +1,9 @@
1
+ import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter.js";
2
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
3
+ /**
4
+ * Rabin-Karp content splitter for efficient chunking
5
+ */
6
+ export declare class ContentSplitterRabinKarp extends ContentSplitterBase {
7
+ static isAvailableFor(setting: ContentSplitterOptions): boolean;
8
+ processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
9
+ }
@@ -0,0 +1,32 @@
1
+ import { ChunkAlgorithms } from "../common/types.js";
2
+ import { splitPiecesRabinKarp } from "../string_and_binary/chunks.js";
3
+ import { splitPieces2WorkerRabinKarp } from "#worker";
4
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
5
+ class ContentSplitterRabinKarp extends ContentSplitterBase {
6
+ static isAvailableFor(setting) {
7
+ const settings = setting.settingService.currentSettings();
8
+ return settings.chunkSplitterVersion === ChunkAlgorithms.RabinKarp;
9
+ }
10
+ async processSplit(options) {
11
+ if (options.useWorker) {
12
+ return (await splitPieces2WorkerRabinKarp(
13
+ options.blob,
14
+ options.pieceSize,
15
+ options.plainSplit,
16
+ options.minimumChunkSize,
17
+ options.path
18
+ ))();
19
+ } else {
20
+ return (await splitPiecesRabinKarp(
21
+ options.blob,
22
+ options.pieceSize,
23
+ options.plainSplit,
24
+ options.minimumChunkSize,
25
+ options.path
26
+ ))();
27
+ }
28
+ }
29
+ }
30
+ export {
31
+ ContentSplitterRabinKarp
32
+ };
@@ -0,0 +1,9 @@
1
+ import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter.js";
2
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
3
+ /**
4
+ * Legacy content splitter for version 1.
5
+ */
6
+ export declare class ContentSplitterV1 extends ContentSplitterBase {
7
+ static isAvailableFor(setting: ContentSplitterOptions): boolean;
8
+ processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
9
+ }
@@ -0,0 +1,34 @@
1
+ import { ChunkAlgorithms } from "../common/types.js";
2
+ import { splitPieces2 } from "../string_and_binary/chunks.js";
3
+ import { splitPieces2Worker } from "#worker";
4
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
5
+ class ContentSplitterV1 extends ContentSplitterBase {
6
+ static isAvailableFor(setting) {
7
+ const settings = setting.settingService.currentSettings();
8
+ return settings.chunkSplitterVersion === ChunkAlgorithms.V1 || settings.chunkSplitterVersion === "" || settings.chunkSplitterVersion === void 0;
9
+ }
10
+ async processSplit(options) {
11
+ if (options.useWorker) {
12
+ return (await splitPieces2Worker(
13
+ options.blob,
14
+ options.pieceSize,
15
+ options.plainSplit,
16
+ options.minimumChunkSize,
17
+ options.path,
18
+ options.useSegmenter
19
+ ))();
20
+ } else {
21
+ return (await splitPieces2(
22
+ options.blob,
23
+ options.pieceSize,
24
+ options.plainSplit,
25
+ options.minimumChunkSize,
26
+ options.path,
27
+ options.useSegmenter
28
+ ))();
29
+ }
30
+ }
31
+ }
32
+ export {
33
+ ContentSplitterV1
34
+ };
@@ -0,0 +1,9 @@
1
+ import type { ContentSplitterOptions, SplitOptions } from "./ContentSplitter.js";
2
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
3
+ /**
4
+ * Content splitter for version 2, which supports segmenter-based splitting.
5
+ */
6
+ export declare class ContentSplitterV2 extends ContentSplitterBase {
7
+ static isAvailableFor(setting: ContentSplitterOptions): boolean;
8
+ processSplit(options: SplitOptions): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
9
+ }
@@ -0,0 +1,34 @@
1
+ import { ChunkAlgorithms } from "../common/types.js";
2
+ import { splitPieces2V2 } from "../string_and_binary/chunks.js";
3
+ import { splitPieces2WorkerV2 } from "#worker";
4
+ import { ContentSplitterBase } from "./ContentSplitterBase.js";
5
+ class ContentSplitterV2 extends ContentSplitterBase {
6
+ static isAvailableFor(setting) {
7
+ const settings = setting.settingService.currentSettings();
8
+ return settings.chunkSplitterVersion === ChunkAlgorithms.V2 || settings.chunkSplitterVersion === ChunkAlgorithms.V2Segmenter;
9
+ }
10
+ async processSplit(options) {
11
+ if (options.useWorker) {
12
+ return (await splitPieces2WorkerV2(
13
+ options.blob,
14
+ options.pieceSize,
15
+ options.plainSplit,
16
+ options.minimumChunkSize,
17
+ options.path,
18
+ options.useSegmenter
19
+ ))();
20
+ } else {
21
+ return (await splitPieces2V2(
22
+ options.blob,
23
+ options.pieceSize,
24
+ options.plainSplit,
25
+ options.minimumChunkSize,
26
+ options.path,
27
+ options.useSegmenter
28
+ ))();
29
+ }
30
+ }
31
+ }
32
+ export {
33
+ ContentSplitterV2
34
+ };
@@ -0,0 +1,12 @@
1
+ import type { SavingEntry } from "../common/types.js";
2
+ import type { ContentSplitterOptions } from "./ContentSplitter.js";
3
+ import { ContentSplitterCore, type ContentSplitterBase } from "./ContentSplitterBase.js";
4
+ /**
5
+ * ContentSplitter class that manages the active content splitter based on the provided settings.
6
+ */
7
+ export declare class ContentSplitter extends ContentSplitterCore {
8
+ _activeSplitter: ContentSplitterBase;
9
+ constructor(options: ContentSplitterOptions);
10
+ initialise(options: ContentSplitterOptions): Promise<boolean>;
11
+ splitContent(entry: SavingEntry): Promise<AsyncGenerator<string, void, unknown> | Generator<string, void, unknown>>;
12
+ }
@@ -0,0 +1,29 @@
1
+ import { ContentSplitterCore } from "./ContentSplitterBase.js";
2
+ import { ContentSplitterRabinKarp } from "./ContentSplitterRabinKarp.js";
3
+ import { ContentSplitterV1 } from "./ContentSplitterV1.js";
4
+ import { ContentSplitterV2 } from "./ContentSplitterV2.js";
5
+ const ContentSplitters = [ContentSplitterV1, ContentSplitterV2, ContentSplitterRabinKarp];
6
+ class ContentSplitter extends ContentSplitterCore {
7
+ constructor(options) {
8
+ super(options);
9
+ }
10
+ initialise(options) {
11
+ for (const Splitter of ContentSplitters) {
12
+ if (Splitter.isAvailableFor(options)) {
13
+ this._activeSplitter = new Splitter(options);
14
+ break;
15
+ }
16
+ }
17
+ if (!this._activeSplitter) {
18
+ throw new Error(`ContentSplitter: No available splitter for settings!!`);
19
+ }
20
+ return this._activeSplitter.initialise(options);
21
+ }
22
+ async splitContent(entry) {
23
+ await this.initialised;
24
+ return this._activeSplitter.splitContent(entry);
25
+ }
26
+ }
27
+ export {
28
+ ContentSplitter
29
+ };
@@ -0,0 +1,7 @@
1
+ import { type SlipBoard } from "octagonal-wheels/bureau/SlipBoard";
2
+ declare global {
3
+ interface Slips extends LSSlips {
4
+ _dummy: undefined;
5
+ }
6
+ }
7
+ export declare const globalSlipBoard: SlipBoard<Slips>;
@@ -0,0 +1,5 @@
1
+ import { globalSlipBoard as globalSlipBoard_ } from "octagonal-wheels/bureau/SlipBoard";
2
+ const globalSlipBoard = globalSlipBoard_;
3
+ export {
4
+ globalSlipBoard
5
+ };
@@ -0,0 +1,30 @@
1
+ import type { CouchDBConnection, BucketSyncSetting, P2PConnectionInfo } from "./models/setting.type.js";
2
+ export type RemoteConfigurationResult = {
3
+ type: "couchdb";
4
+ settings: CouchDBConnection;
5
+ } | {
6
+ type: "s3";
7
+ settings: BucketSyncSetting;
8
+ } | {
9
+ type: "p2p";
10
+ settings: P2PConnectionInfo;
11
+ } | {
12
+ type: "webdav";
13
+ settings: never;
14
+ };
15
+ export declare class ConnectionStringParser {
16
+ /**
17
+ * Restore settings from URI
18
+ */
19
+ static parse(uriString: string): RemoteConfigurationResult;
20
+ /**
21
+ * 設定からURIを生成する
22
+ */
23
+ static serialize(config: RemoteConfigurationResult): string;
24
+ private static parseCouchDB;
25
+ private static serializeCouchDB;
26
+ private static parseS3;
27
+ private static serializeS3;
28
+ private static parseP2P;
29
+ private static serializeP2P;
30
+ }