holosphere 2.0.0-alpha0 → 2.0.0-alpha10

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 (418) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -42
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cdn/holosphere.min.js +55 -0
  19. package/dist/cdn/holosphere.min.js.map +1 -0
  20. package/dist/cjs/holosphere.cjs +2 -0
  21. package/dist/cjs/holosphere.cjs.map +1 -0
  22. package/dist/esm/holosphere.js +53 -0
  23. package/dist/esm/holosphere.js.map +1 -0
  24. package/dist/index-DDGt_V9o.cjs +12 -0
  25. package/dist/index-DDGt_V9o.cjs.map +1 -0
  26. package/dist/index-DJXftyvB.js +39841 -0
  27. package/dist/index-DJXftyvB.js.map +1 -0
  28. package/dist/index-DMbdcMtK.cjs +18 -0
  29. package/dist/index-DMbdcMtK.cjs.map +1 -0
  30. package/dist/index-DeZ1xz_s.js +15104 -0
  31. package/dist/index-DeZ1xz_s.js.map +1 -0
  32. package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
  33. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  34. package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
  35. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  36. package/dist/memory-storage-C9HuoL2E.js +91 -0
  37. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  38. package/dist/memory-storage-Dao7jfYG.cjs +2 -0
  39. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  40. package/dist/secp256k1-BbKzbLtD.cjs +12 -0
  41. package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
  42. package/dist/secp256k1-CreY7Pcl.js +1890 -0
  43. package/dist/secp256k1-CreY7Pcl.js.map +1 -0
  44. package/docs/CONTRACTS.md +797 -0
  45. package/docs/FOSDEM_PROPOSAL.md +388 -0
  46. package/docs/LOCALFIRST.md +266 -0
  47. package/docs/api/ai_aggregation.js.html +333 -0
  48. package/docs/api/ai_breakdown.js.html +524 -0
  49. package/docs/api/ai_classifier.js.html +231 -0
  50. package/docs/api/ai_council.js.html +246 -0
  51. package/docs/api/ai_embeddings.js.html +304 -0
  52. package/docs/api/ai_federation-ai.js.html +338 -0
  53. package/docs/api/ai_h3-ai.js.html +970 -0
  54. package/docs/api/ai_index.js.html +124 -0
  55. package/docs/api/ai_json-ops.js.html +241 -0
  56. package/docs/api/ai_llm-service.js.html +239 -0
  57. package/docs/api/ai_nl-query.js.html +236 -0
  58. package/docs/api/ai_relationships.js.html +367 -0
  59. package/docs/api/ai_schema-extractor.js.html +235 -0
  60. package/docs/api/ai_spatial.js.html +307 -0
  61. package/docs/api/ai_tts.js.html +214 -0
  62. package/docs/api/content_social-protocols.js.html +180 -0
  63. package/docs/api/core_holosphere.js.html +757 -0
  64. package/docs/api/crypto_nostr-utils.js.html +306 -0
  65. package/docs/api/crypto_secp256k1.js.html +267 -0
  66. package/docs/api/data/search.json +1 -0
  67. package/docs/api/federation_discovery.js.html +337 -0
  68. package/docs/api/federation_handshake.js.html +478 -0
  69. package/docs/api/federation_hologram.js.html +1053 -0
  70. package/docs/api/federation_registry.js.html +389 -0
  71. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  72. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  73. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  74. package/docs/api/global.html +3 -0
  75. package/docs/api/hierarchical_upcast.js.html +128 -0
  76. package/docs/api/index.html +265 -0
  77. package/docs/api/index.js.html +1868 -0
  78. package/docs/api/lib_ai-methods.js.html +660 -0
  79. package/docs/api/lib_contract-methods.js.html +445 -0
  80. package/docs/api/lib_errors.js.html +56 -0
  81. package/docs/api/lib_federation-methods.js.html +348 -0
  82. package/docs/api/lib_index.js.html +33 -0
  83. package/docs/api/module-ai.html +5 -0
  84. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  85. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  86. package/docs/api/module-ai_aggregation.html +3 -0
  87. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  88. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  89. package/docs/api/module-ai_breakdown.html +3 -0
  90. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  91. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  92. package/docs/api/module-ai_classifier.html +3 -0
  93. package/docs/api/module-ai_council-Council.html +6 -0
  94. package/docs/api/module-ai_council.Council.html +3 -0
  95. package/docs/api/module-ai_council.html +3 -0
  96. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  97. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  98. package/docs/api/module-ai_embeddings.html +3 -0
  99. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  100. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  101. package/docs/api/module-ai_federation-ai.html +3 -0
  102. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  103. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  104. package/docs/api/module-ai_h3-ai.html +3 -0
  105. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  106. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  107. package/docs/api/module-ai_json-ops.html +3 -0
  108. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  109. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  110. package/docs/api/module-ai_llm-service.html +3 -0
  111. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  112. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  113. package/docs/api/module-ai_nl-query.html +3 -0
  114. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  115. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  116. package/docs/api/module-ai_relationships.html +3 -0
  117. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  118. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  119. package/docs/api/module-ai_schema-extractor.html +3 -0
  120. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  121. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  122. package/docs/api/module-ai_spatial.html +3 -0
  123. package/docs/api/module-ai_tts-TTS.html +5 -0
  124. package/docs/api/module-ai_tts.TTS.html +3 -0
  125. package/docs/api/module-ai_tts.html +3 -0
  126. package/docs/api/module-content_social-protocols.html +3 -0
  127. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  128. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  129. package/docs/api/module-core_holosphere.html +3 -0
  130. package/docs/api/module-crypto_nostr-utils.html +3 -0
  131. package/docs/api/module-crypto_secp256k1.html +3 -0
  132. package/docs/api/module-federation_hologram.html +3 -0
  133. package/docs/api/module-hierarchical_upcast.html +3 -0
  134. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  135. package/docs/api/module-holosphere.html +3 -0
  136. package/docs/api/module-lib_ai-methods.html +3 -0
  137. package/docs/api/module-lib_contract-methods.html +3 -0
  138. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  141. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  142. package/docs/api/module-lib_errors.html +3 -0
  143. package/docs/api/module-lib_federation-methods.html +3 -0
  144. package/docs/api/module-lib_index.html +3 -0
  145. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  146. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  147. package/docs/api/module-schema_validator.html +3 -0
  148. package/docs/api/module-spatial_h3-operations.html +4 -0
  149. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  150. package/docs/api/module-storage_backend-factory.html +3 -0
  151. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  152. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  153. package/docs/api/module-storage_backend-interface.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  155. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  156. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  158. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  159. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  161. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  162. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  164. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  165. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  167. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  170. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  171. package/docs/api/module-storage_filesystem-storage.html +3 -0
  172. package/docs/api/module-storage_global-tables.html +3 -0
  173. package/docs/api/module-storage_gun-async.html +3 -0
  174. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  175. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  176. package/docs/api/module-storage_gun-auth.html +3 -0
  177. package/docs/api/module-storage_gun-federation.html +3 -0
  178. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  179. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  180. package/docs/api/module-storage_gun-references.html +3 -0
  181. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  182. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  183. package/docs/api/module-storage_gun-schema.html +3 -0
  184. package/docs/api/module-storage_gun-wrapper.html +11 -0
  185. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  186. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  187. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  188. package/docs/api/module-storage_key-storage-simple.html +3 -0
  189. package/docs/api/module-storage_key-storage.html +4 -0
  190. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  191. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  192. package/docs/api/module-storage_memory-storage.html +3 -0
  193. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  194. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  195. package/docs/api/module-storage_migration.html +3 -0
  196. package/docs/api/module-storage_nostr-async.html +18 -0
  197. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  198. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  199. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  200. package/docs/api/module-storage_nostr-client.html +6 -0
  201. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  202. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  203. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  204. package/docs/api/module-storage_outbox-queue.html +3 -0
  205. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  206. package/docs/api/module-storage_persistent-storage.html +4 -0
  207. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  208. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  209. package/docs/api/module-storage_sync-service.html +3 -0
  210. package/docs/api/module-storage_unified-storage.html +3 -0
  211. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  212. package/docs/api/module-subscriptions_manager.html +3 -0
  213. package/docs/api/schema_validator.js.html +113 -0
  214. package/docs/api/scripts/core.js +726 -0
  215. package/docs/api/scripts/core.min.js +23 -0
  216. package/docs/api/scripts/resize.js +90 -0
  217. package/docs/api/scripts/search.js +265 -0
  218. package/docs/api/scripts/search.min.js +6 -0
  219. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  220. package/docs/api/scripts/third-party/fuse.js +9 -0
  221. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  222. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  223. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  224. package/docs/api/scripts/third-party/hljs.js +1 -0
  225. package/docs/api/scripts/third-party/popper.js +5 -0
  226. package/docs/api/scripts/third-party/tippy.js +1 -0
  227. package/docs/api/scripts/third-party/tocbot.js +672 -0
  228. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  229. package/docs/api/spatial_h3-operations.js.html +129 -0
  230. package/docs/api/storage_backend-factory.js.html +133 -0
  231. package/docs/api/storage_backend-interface.js.html +164 -0
  232. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  233. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  234. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  235. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  236. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  237. package/docs/api/storage_filesystem-storage.js.html +207 -0
  238. package/docs/api/storage_global-tables.js.html +116 -0
  239. package/docs/api/storage_gun-async.js.html +344 -0
  240. package/docs/api/storage_gun-auth.js.html +376 -0
  241. package/docs/api/storage_gun-federation.js.html +788 -0
  242. package/docs/api/storage_gun-references.js.html +212 -0
  243. package/docs/api/storage_gun-schema.js.html +309 -0
  244. package/docs/api/storage_gun-wrapper.js.html +645 -0
  245. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  246. package/docs/api/storage_key-storage-simple.js.html +102 -0
  247. package/docs/api/storage_key-storage.js.html +171 -0
  248. package/docs/api/storage_memory-storage.js.html +128 -0
  249. package/docs/api/storage_migration.js.html +354 -0
  250. package/docs/api/storage_nostr-async.js.html +1076 -0
  251. package/docs/api/storage_nostr-client.js.html +1598 -0
  252. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  253. package/docs/api/storage_outbox-queue.js.html +248 -0
  254. package/docs/api/storage_persistent-storage.js.html +160 -0
  255. package/docs/api/storage_sync-service.js.html +201 -0
  256. package/docs/api/storage_unified-storage.js.html +157 -0
  257. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  258. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  259. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  260. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  261. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  262. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  263. package/docs/api/subscriptions_manager.js.html +162 -0
  264. package/docs/contracts/api-interface.md +793 -0
  265. package/docs/data-model.md +476 -0
  266. package/docs/gun-async-usage.md +338 -0
  267. package/docs/plan.md +349 -0
  268. package/docs/quickstart.md +674 -0
  269. package/docs/research.md +362 -0
  270. package/docs/spec.md +244 -0
  271. package/docs/storage-backends.md +326 -0
  272. package/docs/tasks.md +947 -0
  273. package/examples/demo.html +47 -0
  274. package/examples/holosphere-widget.js +1242 -0
  275. package/examples/widget-demo.html +274 -0
  276. package/examples/widget.html +703 -0
  277. package/jsdoc.json +26 -0
  278. package/package.json +25 -7
  279. package/src/ai/aggregation.js +13 -2
  280. package/src/ai/breakdown.js +12 -2
  281. package/src/ai/classifier.js +14 -3
  282. package/src/ai/council.js +22 -7
  283. package/src/ai/embeddings.js +37 -15
  284. package/src/ai/federation-ai.js +13 -2
  285. package/src/ai/h3-ai.js +14 -2
  286. package/src/ai/index.js +16 -7
  287. package/src/ai/json-ops.js +18 -5
  288. package/src/ai/llm-service.js +62 -31
  289. package/src/ai/nl-query.js +12 -2
  290. package/src/ai/relationships.js +13 -2
  291. package/src/ai/schema-extractor.js +24 -10
  292. package/src/ai/spatial.js +13 -2
  293. package/src/ai/tts.js +25 -8
  294. package/src/cdn-entry.js +22 -0
  295. package/src/content/social-protocols.js +34 -25
  296. package/src/contracts/abis/Appreciative.json +1280 -0
  297. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  298. package/src/contracts/abis/Bundle.json +1438 -0
  299. package/src/contracts/abis/BundleFactory.json +106 -0
  300. package/src/contracts/abis/Holon.json +881 -0
  301. package/src/contracts/abis/Holons.json +330 -0
  302. package/src/contracts/abis/Managed.json +1262 -0
  303. package/src/contracts/abis/ManagedFactory.json +149 -0
  304. package/src/contracts/abis/Membrane.json +261 -0
  305. package/src/contracts/abis/Splitter.json +1624 -0
  306. package/src/contracts/abis/SplitterFactory.json +220 -0
  307. package/src/contracts/abis/TestToken.json +321 -0
  308. package/src/contracts/abis/Zoned.json +1461 -0
  309. package/src/contracts/abis/ZonedFactory.json +154 -0
  310. package/src/contracts/chain-manager.js +403 -0
  311. package/src/contracts/deployer.js +500 -0
  312. package/src/contracts/event-listener.js +539 -0
  313. package/src/contracts/holon-contracts.js +359 -0
  314. package/src/contracts/index.js +82 -0
  315. package/src/contracts/networks.js +229 -0
  316. package/src/contracts/operations.js +687 -0
  317. package/src/contracts/queries.js +638 -0
  318. package/src/core/holosphere.js +487 -6
  319. package/src/crypto/nostr-utils.js +303 -0
  320. package/src/crypto/secp256k1.js +7 -2
  321. package/src/federation/handshake.js +475 -0
  322. package/src/federation/hologram.js +117 -3
  323. package/src/hierarchical/upcast.js +40 -25
  324. package/src/index.js +1501 -1909
  325. package/src/lib/ai-methods.js +657 -0
  326. package/src/lib/contract-methods.js +442 -0
  327. package/src/lib/errors.js +53 -0
  328. package/src/lib/federation-methods.js +345 -0
  329. package/src/lib/index.js +30 -0
  330. package/src/schema/validator.js +22 -3
  331. package/src/spatial/h3-operations.js +19 -3
  332. package/src/storage/backend-factory.js +7 -2
  333. package/src/storage/backend-interface.js +21 -2
  334. package/src/storage/backends/activitypub/server.js +25 -3
  335. package/src/storage/backends/activitypub-backend.js +25 -2
  336. package/src/storage/backends/gundb-backend.js +692 -50
  337. package/src/storage/backends/nostr-backend.js +116 -1
  338. package/src/storage/filesystem-storage-browser.js +42 -2
  339. package/src/storage/filesystem-storage.js +72 -5
  340. package/src/storage/global-tables.js +35 -3
  341. package/src/storage/gun-async.js +75 -15
  342. package/src/storage/gun-auth.js +373 -0
  343. package/src/storage/gun-federation.js +785 -0
  344. package/src/storage/gun-references.js +209 -0
  345. package/src/storage/gun-schema.js +306 -0
  346. package/src/storage/gun-wrapper.js +475 -54
  347. package/src/storage/indexeddb-storage.js +112 -13
  348. package/src/storage/key-storage-simple.js +32 -9
  349. package/src/storage/key-storage.js +45 -13
  350. package/src/storage/memory-storage.js +68 -2
  351. package/src/storage/migration.js +20 -7
  352. package/src/storage/nostr-async.js +412 -122
  353. package/src/storage/nostr-client.js +749 -76
  354. package/src/storage/nostr-wrapper.js +6 -2
  355. package/src/storage/outbox-queue.js +55 -18
  356. package/src/storage/persistent-storage.js +62 -14
  357. package/src/storage/sync-service.js +51 -17
  358. package/src/storage/unified-storage.js +154 -0
  359. package/src/subscriptions/manager.js +34 -17
  360. package/types/index.d.ts +133 -0
  361. package/vite.config.cdn.js +60 -0
  362. package/tests/unit/ai/aggregation.test.js +0 -295
  363. package/tests/unit/ai/breakdown.test.js +0 -446
  364. package/tests/unit/ai/classifier.test.js +0 -294
  365. package/tests/unit/ai/council.test.js +0 -262
  366. package/tests/unit/ai/embeddings.test.js +0 -384
  367. package/tests/unit/ai/federation-ai.test.js +0 -344
  368. package/tests/unit/ai/h3-ai.test.js +0 -458
  369. package/tests/unit/ai/index.test.js +0 -304
  370. package/tests/unit/ai/json-ops.test.js +0 -307
  371. package/tests/unit/ai/llm-service.test.js +0 -390
  372. package/tests/unit/ai/nl-query.test.js +0 -383
  373. package/tests/unit/ai/relationships.test.js +0 -311
  374. package/tests/unit/ai/schema-extractor.test.js +0 -384
  375. package/tests/unit/ai/spatial.test.js +0 -279
  376. package/tests/unit/ai/tts.test.js +0 -279
  377. package/tests/unit/content.test.js +0 -332
  378. package/tests/unit/contract/core.test.js +0 -88
  379. package/tests/unit/contract/crypto.test.js +0 -198
  380. package/tests/unit/contract/data.test.js +0 -223
  381. package/tests/unit/contract/federation.test.js +0 -181
  382. package/tests/unit/contract/hierarchical.test.js +0 -113
  383. package/tests/unit/contract/schema.test.js +0 -114
  384. package/tests/unit/contract/social.test.js +0 -217
  385. package/tests/unit/contract/spatial.test.js +0 -110
  386. package/tests/unit/contract/subscriptions.test.js +0 -128
  387. package/tests/unit/contract/utils.test.js +0 -159
  388. package/tests/unit/core.test.js +0 -152
  389. package/tests/unit/crypto.test.js +0 -328
  390. package/tests/unit/federation.test.js +0 -234
  391. package/tests/unit/gun-async.test.js +0 -252
  392. package/tests/unit/hierarchical.test.js +0 -399
  393. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  394. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  395. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  396. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  397. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  398. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  399. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  400. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  401. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  402. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  403. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  404. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  405. package/tests/unit/performance/benchmark.test.js +0 -85
  406. package/tests/unit/schema.test.js +0 -213
  407. package/tests/unit/spatial.test.js +0 -158
  408. package/tests/unit/storage.test.js +0 -195
  409. package/tests/unit/subscriptions.test.js +0 -328
  410. package/tests/unit/test-data-permanence-debug.js +0 -197
  411. package/tests/unit/test-data-permanence.js +0 -340
  412. package/tests/unit/test-key-persistence-fixed.js +0 -148
  413. package/tests/unit/test-key-persistence.js +0 -172
  414. package/tests/unit/test-relay-permanence.js +0 -376
  415. package/tests/unit/test-second-node.js +0 -95
  416. package/tests/unit/test-simple-write.js +0 -89
  417. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  418. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -0,0 +1,726 @@
1
+ /* global document */
2
+ var accordionLocalStorageKey = 'accordion-id';
3
+ var themeLocalStorageKey = 'theme';
4
+ var fontSizeLocalStorageKey = 'font-size';
5
+ var html = document.querySelector('html');
6
+
7
+ var MAX_FONT_SIZE = 30;
8
+ var MIN_FONT_SIZE = 10;
9
+
10
+ // eslint-disable-next-line no-undef
11
+ var localStorage = window.localStorage;
12
+
13
+ function getTheme() {
14
+ var theme = localStorage.getItem(themeLocalStorageKey);
15
+
16
+ if (theme) return theme;
17
+
18
+ theme = document.body.getAttribute('data-theme');
19
+
20
+ switch (theme) {
21
+ case 'dark':
22
+ case 'light':
23
+ return theme;
24
+ case 'fallback-dark':
25
+ if (
26
+ // eslint-disable-next-line no-undef
27
+ window.matchMedia('(prefers-color-scheme)').matches &&
28
+ // eslint-disable-next-line no-undef
29
+ window.matchMedia('(prefers-color-scheme: light)').matches
30
+ ) {
31
+ return 'light';
32
+ }
33
+
34
+ return 'dark';
35
+
36
+ case 'fallback-light':
37
+ if (
38
+ // eslint-disable-next-line no-undef
39
+ window.matchMedia('(prefers-color-scheme)').matches &&
40
+ // eslint-disable-next-line no-undef
41
+ window.matchMedia('(prefers-color-scheme: dark)').matches
42
+ ) {
43
+ return 'dark';
44
+ }
45
+
46
+ return 'light';
47
+
48
+ default:
49
+ return 'dark';
50
+ }
51
+ }
52
+
53
+ function localUpdateTheme(theme) {
54
+ var body = document.body;
55
+ var svgUse = document.querySelectorAll('.theme-svg-use');
56
+ var iconID = theme === 'dark' ? '#light-theme-icon' : '#dark-theme-icon';
57
+
58
+ body.setAttribute('data-theme', theme);
59
+ body.classList.remove('dark', 'light');
60
+ body.classList.add(theme);
61
+
62
+ svgUse.forEach(function (svg) {
63
+ svg.setAttribute('xlink:href', iconID);
64
+ });
65
+ }
66
+
67
+ function updateTheme(theme) {
68
+ localUpdateTheme(theme);
69
+ localStorage.setItem(themeLocalStorageKey, theme);
70
+ }
71
+
72
+ function toggleTheme() {
73
+ var body = document.body;
74
+ var theme = body.getAttribute('data-theme');
75
+
76
+ var newTheme = theme === 'dark' ? 'light' : 'dark';
77
+
78
+ updateTheme(newTheme);
79
+ }
80
+
81
+ (function () {
82
+ var theme = getTheme();
83
+
84
+ updateTheme(theme);
85
+ })();
86
+
87
+ /**
88
+ * Function to set accordion id to localStorage.
89
+ * @param {string} id Accordion id
90
+ */
91
+ function setAccordionIdToLocalStorage(id) {
92
+ /**
93
+ * @type {object}
94
+ */
95
+ var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
96
+
97
+ ids[id] = id;
98
+ localStorage.setItem(accordionLocalStorageKey, JSON.stringify(ids));
99
+ }
100
+
101
+ /**
102
+ * Function to remove accordion id from localStorage.
103
+ * @param {string} id Accordion id
104
+ */
105
+ function removeAccordionIdFromLocalStorage(id) {
106
+ /**
107
+ * @type {object}
108
+ */
109
+ var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
110
+
111
+ delete ids[id];
112
+ localStorage.setItem(accordionLocalStorageKey, JSON.stringify(ids));
113
+ }
114
+
115
+ /**
116
+ * Function to get all accordion ids from localStorage.
117
+ *
118
+ * @returns {object}
119
+ */
120
+ function getAccordionIdsFromLocalStorage() {
121
+ /**
122
+ * @type {object}
123
+ */
124
+ var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
125
+
126
+ return ids || {};
127
+ }
128
+
129
+ function toggleAccordion(element) {
130
+ var currentNode = element;
131
+ var isCollapsed = currentNode.getAttribute('data-isopen') === 'false';
132
+
133
+ if (isCollapsed) {
134
+ currentNode.setAttribute('data-isopen', 'true');
135
+ setAccordionIdToLocalStorage(currentNode.id);
136
+ } else {
137
+ currentNode.setAttribute('data-isopen', 'false');
138
+ removeAccordionIdFromLocalStorage(currentNode.id);
139
+ }
140
+ }
141
+
142
+ function initAccordion() {
143
+ if (
144
+ localStorage.getItem(accordionLocalStorageKey) === undefined ||
145
+ localStorage.getItem(accordionLocalStorageKey) === null
146
+ ) {
147
+ localStorage.setItem(accordionLocalStorageKey, '{}');
148
+ }
149
+ var allAccordion = document.querySelectorAll('.sidebar-section-title');
150
+ var ids = getAccordionIdsFromLocalStorage();
151
+
152
+ allAccordion.forEach(function (item) {
153
+ item.addEventListener('click', function () {
154
+ toggleAccordion(item);
155
+ });
156
+ if (item.id in ids) {
157
+ toggleAccordion(item);
158
+ }
159
+ });
160
+ }
161
+
162
+ function isSourcePage() {
163
+ return Boolean(document.querySelector('#source-page'));
164
+ }
165
+
166
+ function bringElementIntoView(element, updateHistory = true) {
167
+ // If element is null then we are not going further
168
+ if (!element) {
169
+ return;
170
+ }
171
+
172
+ /**
173
+ * tocbotInstance is defined in layout.tmpl
174
+ * It is defined when we are initializing tocbot.
175
+ *
176
+ */
177
+ // eslint-disable-next-line no-undef
178
+ if (tocbotInstance) {
179
+ setTimeout(
180
+ // eslint-disable-next-line no-undef
181
+ () => tocbotInstance.updateTocListActiveElement(element),
182
+ 60
183
+ );
184
+ }
185
+ var navbar = document.querySelector('.navbar-container');
186
+ var body = document.querySelector('.main-content');
187
+ var elementTop = element.getBoundingClientRect().top;
188
+
189
+ var offset = 16;
190
+
191
+ if (navbar) {
192
+ offset += navbar.scrollHeight;
193
+ }
194
+
195
+ if (body) {
196
+ body.scrollBy(0, elementTop - offset);
197
+ }
198
+
199
+ if (updateHistory) {
200
+ // eslint-disable-next-line no-undef
201
+ history.pushState(null, null, '#' + element.id);
202
+ }
203
+ }
204
+
205
+ // eslint-disable-next-line no-unused-vars
206
+ function bringLinkToView(event) {
207
+ event.preventDefault();
208
+ event.stopPropagation();
209
+ var id = event.currentTarget.getAttribute('href');
210
+
211
+ if (!id) {
212
+ return;
213
+ }
214
+
215
+ var element = document.getElementById(id.slice(1));
216
+
217
+ if (element) {
218
+ bringElementIntoView(element);
219
+ }
220
+ }
221
+
222
+ function bringIdToViewOnMount() {
223
+ if (isSourcePage()) {
224
+ return;
225
+ }
226
+
227
+ // eslint-disable-next-line no-undef
228
+ var id = window.location.hash;
229
+
230
+ if (id === '') {
231
+ return;
232
+ }
233
+
234
+ var element = document.getElementById(id.slice(1));
235
+
236
+ if (!element) {
237
+ id = decodeURI(id);
238
+ element = document.getElementById(id.slice(1));
239
+ }
240
+
241
+ if (element) {
242
+ bringElementIntoView(element, false);
243
+ }
244
+ }
245
+
246
+ function createAnchorElement(id) {
247
+ var anchor = document.createElement('a');
248
+
249
+ anchor.textContent = '#';
250
+ anchor.href = '#' + id;
251
+ anchor.classList.add('link-anchor');
252
+ anchor.onclick = bringLinkToView;
253
+
254
+ return anchor;
255
+ }
256
+
257
+ function addAnchor() {
258
+ var main = document.querySelector('.main-content').querySelector('section');
259
+
260
+ var h1 = main.querySelectorAll('h1');
261
+ var h2 = main.querySelectorAll('h2');
262
+ var h3 = main.querySelectorAll('h3');
263
+ var h4 = main.querySelectorAll('h4');
264
+
265
+ var targets = [h1, h2, h3, h4];
266
+
267
+ targets.forEach(function (target) {
268
+ target.forEach(function (heading) {
269
+ var anchor = createAnchorElement(heading.id);
270
+
271
+ heading.classList.add('has-anchor');
272
+ heading.append(anchor);
273
+ });
274
+ });
275
+ }
276
+
277
+ /**
278
+ *
279
+ * @param {string} value
280
+ */
281
+ function copy(value) {
282
+ const el = document.createElement('textarea');
283
+
284
+ el.value = value;
285
+ document.body.appendChild(el);
286
+ el.select();
287
+ document.execCommand('copy');
288
+ document.body.removeChild(el);
289
+ }
290
+
291
+ function showTooltip(id) {
292
+ var tooltip = document.getElementById(id);
293
+
294
+ tooltip.classList.add('show-tooltip');
295
+ setTimeout(function () {
296
+ tooltip.classList.remove('show-tooltip');
297
+ }, 3000);
298
+ }
299
+
300
+ /* eslint-disable-next-line */
301
+ function copyFunction(id) {
302
+ // selecting the pre element
303
+ var code = document.getElementById(id);
304
+
305
+ // selecting the ol.linenums
306
+ var element = code.querySelector('.linenums');
307
+
308
+ if (!element) {
309
+ // selecting the code block
310
+ element = code.querySelector('code');
311
+ }
312
+
313
+ // copy
314
+ copy(element.innerText.trim().replace(/(^\t)/gm, ''));
315
+
316
+ // show tooltip
317
+ showTooltip('tooltip-' + id);
318
+ }
319
+
320
+ function hideTocOnSourcePage() {
321
+ if (isSourcePage()) {
322
+ document.querySelector('.toc-container').style.display = 'none';
323
+ }
324
+ }
325
+
326
+ function getPreTopBar(id, lang = '') {
327
+ // tooltip
328
+ var tooltip = '<div class="tooltip" id="tooltip-' + id + '">Copied!</div>';
329
+
330
+ // template of copy to clipboard icon container
331
+ var copyToClipboard =
332
+ '<button aria-label="copy code" class="icon-button copy-code" onclick="copyFunction(\'' +
333
+ id +
334
+ '\')"><svg class="sm-icon" alt="click to copy"><use xlink:href="#copy-icon"></use></svg>' +
335
+ tooltip +
336
+ '</button>';
337
+
338
+ var langNameDiv =
339
+ '<div class="code-lang-name-container"><div class="code-lang-name">' +
340
+ lang.toLocaleUpperCase() +
341
+ '</div></div>';
342
+
343
+ var topBar =
344
+ '<div class="pre-top-bar-container">' +
345
+ langNameDiv +
346
+ copyToClipboard +
347
+ '</div>';
348
+
349
+ return topBar;
350
+ }
351
+
352
+ function getPreDiv() {
353
+ var divElement = document.createElement('div');
354
+
355
+ divElement.classList.add('pre-div');
356
+
357
+ return divElement;
358
+ }
359
+
360
+ function processAllPre() {
361
+ var targets = document.querySelectorAll('pre');
362
+ var footer = document.querySelector('#PeOAagUepe');
363
+ var navbar = document.querySelector('#VuAckcnZhf');
364
+
365
+ var navbarHeight = 0;
366
+ var footerHeight = 0;
367
+
368
+ if (footer) {
369
+ footerHeight = footer.getBoundingClientRect().height;
370
+ }
371
+
372
+ if (navbar) {
373
+ navbarHeight = navbar.getBoundingClientRect().height;
374
+ }
375
+
376
+ // eslint-disable-next-line no-undef
377
+ var preMaxHeight = window.innerHeight - navbarHeight - footerHeight - 250;
378
+
379
+ targets.forEach(function (pre, idx) {
380
+ var parent = pre.parentNode;
381
+
382
+ if (parent && parent.getAttribute('data-skip-pre-process') === 'true') {
383
+ return;
384
+ }
385
+
386
+ var div = getPreDiv();
387
+ var id = 'ScDloZOMdL' + idx;
388
+
389
+ var lang = pre.getAttribute('data-lang') || 'code';
390
+ var topBar = getPreTopBar(id, lang);
391
+
392
+ div.innerHTML = topBar;
393
+
394
+ pre.style.maxHeight = preMaxHeight + 'px';
395
+ pre.id = id;
396
+ pre.classList.add('prettyprint');
397
+ pre.parentNode.insertBefore(div, pre);
398
+ div.appendChild(pre);
399
+ });
400
+ }
401
+
402
+ function highlightAndBringLineIntoView() {
403
+ // eslint-disable-next-line no-undef
404
+ var lineNumber = window.location.hash.replace('#line', '');
405
+
406
+ try {
407
+ var selector = '[data-line-number="' + lineNumber + '"';
408
+
409
+ var element = document.querySelector(selector);
410
+
411
+ element.scrollIntoView();
412
+ element.parentNode.classList.add('selected');
413
+ } catch (error) {
414
+ console.error(error);
415
+ }
416
+ }
417
+
418
+ function getFontSize() {
419
+ var currentFontSize = 16;
420
+
421
+ try {
422
+ currentFontSize = Number.parseInt(
423
+ html.style.fontSize.split('px')[0],
424
+ 10
425
+ );
426
+ } catch (error) {
427
+ console.log(error);
428
+ }
429
+
430
+ return currentFontSize;
431
+ }
432
+
433
+ function localUpdateFontSize(fontSize) {
434
+ html.style.fontSize = fontSize + 'px';
435
+
436
+ var fontSizeText = document.querySelector(
437
+ '#b77a68a492f343baabea06fad81f651e'
438
+ );
439
+
440
+ if (fontSizeText) {
441
+ fontSizeText.innerHTML = fontSize;
442
+ }
443
+ }
444
+
445
+ function updateFontSize(fontSize) {
446
+ localUpdateFontSize(fontSize);
447
+ localStorage.setItem(fontSizeLocalStorageKey, fontSize);
448
+ }
449
+
450
+ (function () {
451
+ var fontSize = getFontSize();
452
+ var fontSizeInLocalStorage = localStorage.getItem(fontSizeLocalStorageKey);
453
+
454
+ if (fontSizeInLocalStorage) {
455
+ var n = Number.parseInt(fontSizeInLocalStorage, 10);
456
+
457
+ if (n === fontSize) {
458
+ return;
459
+ }
460
+ updateFontSize(n);
461
+ } else {
462
+ updateFontSize(fontSize);
463
+ }
464
+ })();
465
+
466
+ // eslint-disable-next-line no-unused-vars
467
+ function incrementFont(event) {
468
+ var n = getFontSize();
469
+
470
+ if (n < MAX_FONT_SIZE) {
471
+ updateFontSize(n + 1);
472
+ }
473
+ }
474
+
475
+ // eslint-disable-next-line no-unused-vars
476
+ function decrementFont(event) {
477
+ var n = getFontSize();
478
+
479
+ if (n > MIN_FONT_SIZE) {
480
+ updateFontSize(n - 1);
481
+ }
482
+ }
483
+
484
+ function fontSizeTooltip() {
485
+ var fontSize = getFontSize();
486
+
487
+ return `
488
+ <div class="font-size-tooltip">
489
+ <button aria-label="decrease-font-size" class="icon-button ${
490
+ fontSize >= MAX_FONT_SIZE ? 'disabled' : ''
491
+ }" onclick="decrementFont(event)">
492
+ <svg>
493
+ <use xlink:href="#minus-icon"></use>
494
+ </svg>
495
+ </button>
496
+ <div class="font-size-text" id="b77a68a492f343baabea06fad81f651e">
497
+ ${fontSize}
498
+ </div>
499
+ <button aria-label="increase-font-size" class="icon-button ${
500
+ fontSize <= MIN_FONT_SIZE ? 'disabled' : ''
501
+ }" onclick="incrementFont(event)">
502
+ <svg>
503
+ <use xlink:href="#add-icon"></use>
504
+ </svg>
505
+ </button>
506
+ <button class="icon-button" onclick="updateFontSize(16)">
507
+ <svg>
508
+ <use xlink:href="#reset-icon"></use>
509
+ </svg>
510
+ </button>
511
+ </div>
512
+
513
+ `;
514
+ }
515
+
516
+ function initTooltip() {
517
+ // add tooltip to navbar item
518
+ // eslint-disable-next-line no-undef
519
+ tippy('.theme-toggle', {
520
+ content: 'Toggle Theme',
521
+ delay: 500,
522
+ });
523
+
524
+ // eslint-disable-next-line no-undef
525
+ tippy('.search-button', {
526
+ content: 'Search',
527
+ delay: 500,
528
+ });
529
+
530
+ // eslint-disable-next-line no-undef
531
+ tippy('.font-size', {
532
+ content: 'Change font size',
533
+ delay: 500,
534
+ });
535
+
536
+ // eslint-disable-next-line no-undef
537
+ tippy('.codepen-button', {
538
+ content: 'Open code in CodePen',
539
+ placement: 'left',
540
+ });
541
+
542
+ // eslint-disable-next-line no-undef
543
+ tippy('.copy-code', {
544
+ content: 'Copy this code',
545
+ placement: 'left',
546
+ });
547
+
548
+ // eslint-disable-next-line no-undef
549
+ tippy('.font-size', {
550
+ content: fontSizeTooltip(),
551
+ trigger: 'click',
552
+ interactive: true,
553
+ allowHTML: true,
554
+ placement: 'left',
555
+ });
556
+ }
557
+
558
+ function fixTable() {
559
+ const tables = document.querySelectorAll('table');
560
+
561
+ for (const table of tables) {
562
+ if (table.classList.contains('hljs-ln')) {
563
+ // don't want to wrap code blocks.
564
+ return;
565
+ }
566
+
567
+ var div = document.createElement('div');
568
+
569
+ div.classList.add('table-div');
570
+ table.parentNode.insertBefore(div, table);
571
+ div.appendChild(table);
572
+ }
573
+ }
574
+
575
+ function hideMobileMenu() {
576
+ var mobileMenuContainer = document.querySelector('#mobile-sidebar');
577
+ var target = document.querySelector('#mobile-menu');
578
+ var svgUse = target.querySelector('use');
579
+
580
+ if (mobileMenuContainer) {
581
+ mobileMenuContainer.classList.remove('show');
582
+ }
583
+ if (target) {
584
+ target.setAttribute('data-isopen', 'false');
585
+ }
586
+ if (svgUse) {
587
+ svgUse.setAttribute('xlink:href', '#menu-icon');
588
+ }
589
+ }
590
+
591
+ function showMobileMenu() {
592
+ var mobileMenuContainer = document.querySelector('#mobile-sidebar');
593
+ var target = document.querySelector('#mobile-menu');
594
+ var svgUse = target.querySelector('use');
595
+
596
+ if (mobileMenuContainer) {
597
+ mobileMenuContainer.classList.add('show');
598
+ }
599
+ if (target) {
600
+ target.setAttribute('data-isopen', 'true');
601
+ }
602
+ if (svgUse) {
603
+ svgUse.setAttribute('xlink:href', '#close-icon');
604
+ }
605
+ }
606
+
607
+ function onMobileMenuClick() {
608
+ var target = document.querySelector('#mobile-menu');
609
+ var isOpen = target.getAttribute('data-isopen') === 'true';
610
+
611
+ if (isOpen) {
612
+ hideMobileMenu();
613
+ } else {
614
+ showMobileMenu();
615
+ }
616
+ }
617
+
618
+ function initMobileMenu() {
619
+ var menu = document.querySelector('#mobile-menu');
620
+
621
+ if (menu) {
622
+ menu.addEventListener('click', onMobileMenuClick);
623
+ }
624
+ }
625
+
626
+ function addHrefToSidebarTitle() {
627
+ var titles = document.querySelectorAll('.sidebar-title-anchor');
628
+
629
+ titles.forEach(function (title) {
630
+ // eslint-disable-next-line no-undef
631
+ title.setAttribute('href', baseURL);
632
+ });
633
+ }
634
+
635
+ function highlightActiveLinkInSidebar() {
636
+ const list = document.location.href.split('/');
637
+ const targetURL = decodeURI(list[list.length - 1]);
638
+ let element = document.querySelector(`.sidebar a[href*='${targetURL}']`);
639
+
640
+ if (!element) {
641
+ try {
642
+ element = document.querySelector(
643
+ `.sidebar a[href*='${targetURL.split('#')[0]}']`
644
+ );
645
+ } catch (e) {
646
+ console.error(e);
647
+
648
+ return;
649
+ }
650
+ }
651
+
652
+ if (!element) return;
653
+
654
+ element.parentElement.classList.add('active');
655
+ element.scrollIntoView();
656
+ }
657
+
658
+ function onDomContentLoaded() {
659
+ var themeButton = document.querySelectorAll('.theme-toggle');
660
+
661
+ initMobileMenu();
662
+
663
+ if (themeButton) {
664
+ themeButton.forEach(function (button) {
665
+ button.addEventListener('click', toggleTheme);
666
+ });
667
+ }
668
+
669
+ // Highlighting code
670
+
671
+ // eslint-disable-next-line no-undef
672
+ hljs.addPlugin({
673
+ 'after:highlightElement': function (obj) {
674
+ // Replace 'code' with result.language when
675
+ // we are able to cross-check the correctness of
676
+ // result.
677
+ obj.el.parentNode.setAttribute('data-lang', 'code');
678
+ },
679
+ });
680
+ // eslint-disable-next-line no-undef
681
+ hljs.highlightAll();
682
+ // eslint-disable-next-line no-undef
683
+ hljs.initLineNumbersOnLoad({
684
+ singleLine: true,
685
+ });
686
+
687
+ // Highlight complete
688
+
689
+ initAccordion();
690
+ addAnchor();
691
+ processAllPre();
692
+ hideTocOnSourcePage();
693
+ setTimeout(function () {
694
+ bringIdToViewOnMount();
695
+ if (isSourcePage()) {
696
+ highlightAndBringLineIntoView();
697
+ }
698
+ }, 1000);
699
+ initTooltip();
700
+ fixTable();
701
+ addHrefToSidebarTitle();
702
+ highlightActiveLinkInSidebar();
703
+ }
704
+
705
+ // eslint-disable-next-line no-undef
706
+ window.addEventListener('DOMContentLoaded', onDomContentLoaded);
707
+
708
+ // eslint-disable-next-line no-undef
709
+ window.addEventListener('hashchange', (event) => {
710
+ const url = new URL(event.newURL);
711
+
712
+ if (url.hash !== '') {
713
+ bringIdToViewOnMount(url.hash);
714
+ }
715
+ });
716
+
717
+ // eslint-disable-next-line no-undef
718
+ window.addEventListener('storage', (event) => {
719
+ if (event.newValue === 'undefined') return;
720
+
721
+ initTooltip();
722
+
723
+ if (event.key === themeLocalStorageKey) localUpdateTheme(event.newValue);
724
+ if (event.key === fontSizeLocalStorageKey)
725
+ localUpdateFontSize(event.newValue);
726
+ });