holosphere 2.0.0-alpha1 → 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.
- package/CHANGELOG.md +473 -0
- package/FEATURES.md +431 -0
- package/LICENSE +29 -166
- package/LICENSE-AGPL.md +180 -0
- package/README.md +97 -16
- package/dist/2019-D2OG2idw.js +6680 -0
- package/dist/2019-D2OG2idw.js.map +1 -0
- package/dist/2019-EION3wKo.cjs +8 -0
- package/dist/2019-EION3wKo.cjs.map +1 -0
- package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
- package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
- package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
- package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
- package/dist/browser-BSniCNqO.js +3058 -0
- package/dist/browser-BSniCNqO.js.map +1 -0
- package/dist/browser-Cq59Ij19.cjs +2 -0
- package/dist/browser-Cq59Ij19.cjs.map +1 -0
- package/dist/cdn/holosphere.min.js +55 -0
- package/dist/cdn/holosphere.min.js.map +1 -0
- package/dist/cjs/holosphere.cjs +2 -0
- package/dist/cjs/holosphere.cjs.map +1 -0
- package/dist/esm/holosphere.js +53 -0
- package/dist/esm/holosphere.js.map +1 -0
- package/dist/index-DDGt_V9o.cjs +12 -0
- package/dist/index-DDGt_V9o.cjs.map +1 -0
- package/dist/index-DJXftyvB.js +39841 -0
- package/dist/index-DJXftyvB.js.map +1 -0
- package/dist/index-DMbdcMtK.cjs +18 -0
- package/dist/index-DMbdcMtK.cjs.map +1 -0
- package/dist/index-DeZ1xz_s.js +15104 -0
- package/dist/index-DeZ1xz_s.js.map +1 -0
- package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
- package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
- package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
- package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
- package/dist/memory-storage-C9HuoL2E.js +91 -0
- package/dist/memory-storage-C9HuoL2E.js.map +1 -0
- package/dist/memory-storage-Dao7jfYG.cjs +2 -0
- package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
- package/dist/secp256k1-BbKzbLtD.cjs +12 -0
- package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
- package/dist/secp256k1-CreY7Pcl.js +1890 -0
- package/dist/secp256k1-CreY7Pcl.js.map +1 -0
- package/docs/CONTRACTS.md +797 -0
- package/docs/FOSDEM_PROPOSAL.md +388 -0
- package/docs/LOCALFIRST.md +266 -0
- package/docs/api/ai_aggregation.js.html +333 -0
- package/docs/api/ai_breakdown.js.html +524 -0
- package/docs/api/ai_classifier.js.html +231 -0
- package/docs/api/ai_council.js.html +246 -0
- package/docs/api/ai_embeddings.js.html +304 -0
- package/docs/api/ai_federation-ai.js.html +338 -0
- package/docs/api/ai_h3-ai.js.html +970 -0
- package/docs/api/ai_index.js.html +124 -0
- package/docs/api/ai_json-ops.js.html +241 -0
- package/docs/api/ai_llm-service.js.html +239 -0
- package/docs/api/ai_nl-query.js.html +236 -0
- package/docs/api/ai_relationships.js.html +367 -0
- package/docs/api/ai_schema-extractor.js.html +235 -0
- package/docs/api/ai_spatial.js.html +307 -0
- package/docs/api/ai_tts.js.html +214 -0
- package/docs/api/content_social-protocols.js.html +180 -0
- package/docs/api/core_holosphere.js.html +757 -0
- package/docs/api/crypto_nostr-utils.js.html +306 -0
- package/docs/api/crypto_secp256k1.js.html +267 -0
- package/docs/api/data/search.json +1 -0
- package/docs/api/federation_discovery.js.html +337 -0
- package/docs/api/federation_handshake.js.html +478 -0
- package/docs/api/federation_hologram.js.html +1053 -0
- package/docs/api/federation_registry.js.html +389 -0
- package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
- package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
- package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
- package/docs/api/global.html +3 -0
- package/docs/api/hierarchical_upcast.js.html +128 -0
- package/docs/api/index.html +265 -0
- package/docs/api/index.js.html +1868 -0
- package/docs/api/lib_ai-methods.js.html +660 -0
- package/docs/api/lib_contract-methods.js.html +445 -0
- package/docs/api/lib_errors.js.html +56 -0
- package/docs/api/lib_federation-methods.js.html +348 -0
- package/docs/api/lib_index.js.html +33 -0
- package/docs/api/module-ai.html +5 -0
- package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
- package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
- package/docs/api/module-ai_aggregation.html +3 -0
- package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
- package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
- package/docs/api/module-ai_breakdown.html +3 -0
- package/docs/api/module-ai_classifier-Classifier.html +6 -0
- package/docs/api/module-ai_classifier.Classifier.html +3 -0
- package/docs/api/module-ai_classifier.html +3 -0
- package/docs/api/module-ai_council-Council.html +6 -0
- package/docs/api/module-ai_council.Council.html +3 -0
- package/docs/api/module-ai_council.html +3 -0
- package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
- package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
- package/docs/api/module-ai_embeddings.html +3 -0
- package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
- package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
- package/docs/api/module-ai_federation-ai.html +3 -0
- package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
- package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
- package/docs/api/module-ai_h3-ai.html +3 -0
- package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
- package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
- package/docs/api/module-ai_json-ops.html +3 -0
- package/docs/api/module-ai_llm-service-LLMService.html +5 -0
- package/docs/api/module-ai_llm-service.LLMService.html +3 -0
- package/docs/api/module-ai_llm-service.html +3 -0
- package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
- package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
- package/docs/api/module-ai_nl-query.html +3 -0
- package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
- package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
- package/docs/api/module-ai_relationships.html +3 -0
- package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
- package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
- package/docs/api/module-ai_schema-extractor.html +3 -0
- package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
- package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
- package/docs/api/module-ai_spatial.html +3 -0
- package/docs/api/module-ai_tts-TTS.html +5 -0
- package/docs/api/module-ai_tts.TTS.html +3 -0
- package/docs/api/module-ai_tts.html +3 -0
- package/docs/api/module-content_social-protocols.html +3 -0
- package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
- package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
- package/docs/api/module-core_holosphere.html +3 -0
- package/docs/api/module-crypto_nostr-utils.html +3 -0
- package/docs/api/module-crypto_secp256k1.html +3 -0
- package/docs/api/module-federation_hologram.html +3 -0
- package/docs/api/module-hierarchical_upcast.html +3 -0
- package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
- package/docs/api/module-holosphere.html +3 -0
- package/docs/api/module-lib_ai-methods.html +3 -0
- package/docs/api/module-lib_contract-methods.html +3 -0
- package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
- package/docs/api/module-lib_errors-ValidationError.html +3 -0
- package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
- package/docs/api/module-lib_errors.ValidationError.html +3 -0
- package/docs/api/module-lib_errors.html +3 -0
- package/docs/api/module-lib_federation-methods.html +3 -0
- package/docs/api/module-lib_index.html +3 -0
- package/docs/api/module-schema_validator-ValidationError.html +3 -0
- package/docs/api/module-schema_validator.ValidationError.html +3 -0
- package/docs/api/module-schema_validator.html +3 -0
- package/docs/api/module-spatial_h3-operations.html +4 -0
- package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
- package/docs/api/module-storage_backend-factory.html +3 -0
- package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
- package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
- package/docs/api/module-storage_backend-interface.html +3 -0
- package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
- package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
- package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
- package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
- package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
- package/docs/api/module-storage_backends_activitypub_server.html +3 -0
- package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
- package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
- package/docs/api/module-storage_backends_gundb-backend.html +3 -0
- package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
- package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
- package/docs/api/module-storage_backends_nostr-backend.html +3 -0
- package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
- package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
- package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
- package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
- package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
- package/docs/api/module-storage_filesystem-storage.html +3 -0
- package/docs/api/module-storage_global-tables.html +3 -0
- package/docs/api/module-storage_gun-async.html +3 -0
- package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
- package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
- package/docs/api/module-storage_gun-auth.html +3 -0
- package/docs/api/module-storage_gun-federation.html +3 -0
- package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
- package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
- package/docs/api/module-storage_gun-references.html +3 -0
- package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
- package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
- package/docs/api/module-storage_gun-schema.html +3 -0
- package/docs/api/module-storage_gun-wrapper.html +11 -0
- package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
- package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
- package/docs/api/module-storage_indexeddb-storage.html +3 -0
- package/docs/api/module-storage_key-storage-simple.html +3 -0
- package/docs/api/module-storage_key-storage.html +4 -0
- package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
- package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
- package/docs/api/module-storage_memory-storage.html +3 -0
- package/docs/api/module-storage_migration-MigrationTool.html +6 -0
- package/docs/api/module-storage_migration.MigrationTool.html +3 -0
- package/docs/api/module-storage_migration.html +3 -0
- package/docs/api/module-storage_nostr-async.html +18 -0
- package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
- package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
- package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
- package/docs/api/module-storage_nostr-client.html +6 -0
- package/docs/api/module-storage_nostr-wrapper.html +3 -0
- package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
- package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
- package/docs/api/module-storage_outbox-queue.html +3 -0
- package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
- package/docs/api/module-storage_persistent-storage.html +4 -0
- package/docs/api/module-storage_sync-service-SyncService.html +5 -0
- package/docs/api/module-storage_sync-service.SyncService.html +3 -0
- package/docs/api/module-storage_sync-service.html +3 -0
- package/docs/api/module-storage_unified-storage.html +3 -0
- package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
- package/docs/api/module-subscriptions_manager.html +3 -0
- package/docs/api/schema_validator.js.html +113 -0
- package/docs/api/scripts/core.js +726 -0
- package/docs/api/scripts/core.min.js +23 -0
- package/docs/api/scripts/resize.js +90 -0
- package/docs/api/scripts/search.js +265 -0
- package/docs/api/scripts/search.min.js +6 -0
- package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
- package/docs/api/scripts/third-party/fuse.js +9 -0
- package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
- package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
- package/docs/api/scripts/third-party/hljs-original.js +5171 -0
- package/docs/api/scripts/third-party/hljs.js +1 -0
- package/docs/api/scripts/third-party/popper.js +5 -0
- package/docs/api/scripts/third-party/tippy.js +1 -0
- package/docs/api/scripts/third-party/tocbot.js +672 -0
- package/docs/api/scripts/third-party/tocbot.min.js +1 -0
- package/docs/api/spatial_h3-operations.js.html +129 -0
- package/docs/api/storage_backend-factory.js.html +133 -0
- package/docs/api/storage_backend-interface.js.html +164 -0
- package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
- package/docs/api/storage_backends_activitypub_server.js.html +678 -0
- package/docs/api/storage_backends_gundb-backend.js.html +878 -0
- package/docs/api/storage_backends_nostr-backend.js.html +254 -0
- package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
- package/docs/api/storage_filesystem-storage.js.html +207 -0
- package/docs/api/storage_global-tables.js.html +116 -0
- package/docs/api/storage_gun-async.js.html +344 -0
- package/docs/api/storage_gun-auth.js.html +376 -0
- package/docs/api/storage_gun-federation.js.html +788 -0
- package/docs/api/storage_gun-references.js.html +212 -0
- package/docs/api/storage_gun-schema.js.html +309 -0
- package/docs/api/storage_gun-wrapper.js.html +645 -0
- package/docs/api/storage_indexeddb-storage.js.html +224 -0
- package/docs/api/storage_key-storage-simple.js.html +102 -0
- package/docs/api/storage_key-storage.js.html +171 -0
- package/docs/api/storage_memory-storage.js.html +128 -0
- package/docs/api/storage_migration.js.html +354 -0
- package/docs/api/storage_nostr-async.js.html +1076 -0
- package/docs/api/storage_nostr-client.js.html +1598 -0
- package/docs/api/storage_nostr-wrapper.js.html +218 -0
- package/docs/api/storage_outbox-queue.js.html +248 -0
- package/docs/api/storage_persistent-storage.js.html +160 -0
- package/docs/api/storage_sync-service.js.html +201 -0
- package/docs/api/storage_unified-storage.js.html +157 -0
- package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
- package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
- package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
- package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
- package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
- package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
- package/docs/api/subscriptions_manager.js.html +162 -0
- package/docs/contracts/api-interface.md +793 -0
- package/docs/data-model.md +476 -0
- package/docs/gun-async-usage.md +338 -0
- package/docs/plan.md +349 -0
- package/docs/quickstart.md +674 -0
- package/docs/research.md +362 -0
- package/docs/spec.md +244 -0
- package/docs/storage-backends.md +326 -0
- package/docs/tasks.md +947 -0
- package/examples/demo.html +47 -0
- package/examples/holosphere-widget.js +1242 -0
- package/examples/widget-demo.html +274 -0
- package/examples/widget.html +703 -0
- package/jsdoc.json +26 -0
- package/package.json +25 -7
- package/src/ai/aggregation.js +13 -2
- package/src/ai/breakdown.js +12 -2
- package/src/ai/classifier.js +14 -3
- package/src/ai/council.js +22 -7
- package/src/ai/embeddings.js +37 -15
- package/src/ai/federation-ai.js +13 -2
- package/src/ai/h3-ai.js +14 -2
- package/src/ai/index.js +16 -7
- package/src/ai/json-ops.js +18 -5
- package/src/ai/llm-service.js +62 -31
- package/src/ai/nl-query.js +12 -2
- package/src/ai/relationships.js +13 -2
- package/src/ai/schema-extractor.js +24 -10
- package/src/ai/spatial.js +13 -2
- package/src/ai/tts.js +25 -8
- package/src/cdn-entry.js +22 -0
- package/src/content/social-protocols.js +34 -25
- package/src/contracts/abis/Appreciative.json +1280 -0
- package/src/contracts/abis/AppreciativeFactory.json +101 -0
- package/src/contracts/abis/Bundle.json +1438 -0
- package/src/contracts/abis/BundleFactory.json +106 -0
- package/src/contracts/abis/Holon.json +881 -0
- package/src/contracts/abis/Holons.json +330 -0
- package/src/contracts/abis/Managed.json +1262 -0
- package/src/contracts/abis/ManagedFactory.json +149 -0
- package/src/contracts/abis/Membrane.json +261 -0
- package/src/contracts/abis/Splitter.json +1624 -0
- package/src/contracts/abis/SplitterFactory.json +220 -0
- package/src/contracts/abis/TestToken.json +321 -0
- package/src/contracts/abis/Zoned.json +1461 -0
- package/src/contracts/abis/ZonedFactory.json +154 -0
- package/src/contracts/chain-manager.js +403 -0
- package/src/contracts/deployer.js +500 -0
- package/src/contracts/event-listener.js +539 -0
- package/src/contracts/holon-contracts.js +359 -0
- package/src/contracts/index.js +82 -0
- package/src/contracts/networks.js +229 -0
- package/src/contracts/operations.js +687 -0
- package/src/contracts/queries.js +638 -0
- package/src/core/holosphere.js +487 -6
- package/src/crypto/nostr-utils.js +303 -0
- package/src/crypto/secp256k1.js +7 -2
- package/src/federation/handshake.js +475 -0
- package/src/federation/hologram.js +117 -3
- package/src/hierarchical/upcast.js +40 -25
- package/src/index.js +1501 -1909
- package/src/lib/ai-methods.js +657 -0
- package/src/lib/contract-methods.js +442 -0
- package/src/lib/errors.js +53 -0
- package/src/lib/federation-methods.js +345 -0
- package/src/lib/index.js +30 -0
- package/src/schema/validator.js +22 -3
- package/src/spatial/h3-operations.js +19 -3
- package/src/storage/backend-factory.js +7 -2
- package/src/storage/backend-interface.js +21 -2
- package/src/storage/backends/activitypub/server.js +25 -3
- package/src/storage/backends/activitypub-backend.js +25 -2
- package/src/storage/backends/gundb-backend.js +692 -50
- package/src/storage/backends/nostr-backend.js +116 -1
- package/src/storage/filesystem-storage-browser.js +42 -2
- package/src/storage/filesystem-storage.js +72 -5
- package/src/storage/global-tables.js +35 -3
- package/src/storage/gun-async.js +75 -15
- package/src/storage/gun-auth.js +373 -0
- package/src/storage/gun-federation.js +785 -0
- package/src/storage/gun-references.js +209 -0
- package/src/storage/gun-schema.js +306 -0
- package/src/storage/gun-wrapper.js +475 -54
- package/src/storage/indexeddb-storage.js +112 -13
- package/src/storage/key-storage-simple.js +32 -9
- package/src/storage/key-storage.js +45 -13
- package/src/storage/memory-storage.js +68 -2
- package/src/storage/migration.js +20 -7
- package/src/storage/nostr-async.js +412 -122
- package/src/storage/nostr-client.js +749 -76
- package/src/storage/nostr-wrapper.js +6 -2
- package/src/storage/outbox-queue.js +55 -18
- package/src/storage/persistent-storage.js +62 -14
- package/src/storage/sync-service.js +51 -17
- package/src/storage/unified-storage.js +154 -0
- package/src/subscriptions/manager.js +34 -17
- package/types/index.d.ts +133 -0
- package/vite.config.cdn.js +60 -0
- package/tests/unit/ai/aggregation.test.js +0 -295
- package/tests/unit/ai/breakdown.test.js +0 -446
- package/tests/unit/ai/classifier.test.js +0 -294
- package/tests/unit/ai/council.test.js +0 -262
- package/tests/unit/ai/embeddings.test.js +0 -384
- package/tests/unit/ai/federation-ai.test.js +0 -344
- package/tests/unit/ai/h3-ai.test.js +0 -458
- package/tests/unit/ai/index.test.js +0 -304
- package/tests/unit/ai/json-ops.test.js +0 -307
- package/tests/unit/ai/llm-service.test.js +0 -390
- package/tests/unit/ai/nl-query.test.js +0 -383
- package/tests/unit/ai/relationships.test.js +0 -311
- package/tests/unit/ai/schema-extractor.test.js +0 -384
- package/tests/unit/ai/spatial.test.js +0 -279
- package/tests/unit/ai/tts.test.js +0 -279
- package/tests/unit/content.test.js +0 -332
- package/tests/unit/contract/core.test.js +0 -88
- package/tests/unit/contract/crypto.test.js +0 -198
- package/tests/unit/contract/data.test.js +0 -223
- package/tests/unit/contract/federation.test.js +0 -181
- package/tests/unit/contract/hierarchical.test.js +0 -113
- package/tests/unit/contract/schema.test.js +0 -114
- package/tests/unit/contract/social.test.js +0 -217
- package/tests/unit/contract/spatial.test.js +0 -110
- package/tests/unit/contract/subscriptions.test.js +0 -128
- package/tests/unit/contract/utils.test.js +0 -159
- package/tests/unit/core.test.js +0 -152
- package/tests/unit/crypto.test.js +0 -328
- package/tests/unit/federation.test.js +0 -234
- package/tests/unit/gun-async.test.js +0 -252
- package/tests/unit/hierarchical.test.js +0 -399
- package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
- package/tests/unit/integration/scenario-02-federation.test.js +0 -76
- package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
- package/tests/unit/integration/scenario-04-validation.test.js +0 -129
- package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
- package/tests/unit/integration/scenario-06-social.test.js +0 -135
- package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
- package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
- package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
- package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
- package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
- package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
- package/tests/unit/performance/benchmark.test.js +0 -85
- package/tests/unit/schema.test.js +0 -213
- package/tests/unit/spatial.test.js +0 -158
- package/tests/unit/storage.test.js +0 -195
- package/tests/unit/subscriptions.test.js +0 -328
- package/tests/unit/test-data-permanence-debug.js +0 -197
- package/tests/unit/test-data-permanence.js +0 -340
- package/tests/unit/test-key-persistence-fixed.js +0 -148
- package/tests/unit/test-key-persistence.js +0 -172
- package/tests/unit/test-relay-permanence.js +0 -376
- package/tests/unit/test-second-node.js +0 -95
- package/tests/unit/test-simple-write.js +0 -89
- /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
- /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Blockchain contract methods mixin for HoloSphere.
|
|
3
|
+
* Provides comprehensive smart contract operations including deployment, member management,
|
|
4
|
+
* fund distribution, and governance features across multiple contract types.
|
|
5
|
+
* @module lib/contract-methods
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { ChainManager } from '../contracts/chain-manager.js';
|
|
9
|
+
import { ContractDeployer } from '../contracts/deployer.js';
|
|
10
|
+
import { HolonContracts } from '../contracts/holon-contracts.js';
|
|
11
|
+
import * as networks from '../contracts/networks.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Mixin that adds blockchain contract methods to a HoloSphere class.
|
|
15
|
+
* Provides initialization, deployment, and interaction with Ethereum smart contracts
|
|
16
|
+
* including Splitter, Managed, Zoned, Appreciative, and Bundle contract types.
|
|
17
|
+
* @param {Class} Base - Base class to extend
|
|
18
|
+
* @returns {Class} Extended class with contract methods
|
|
19
|
+
*/
|
|
20
|
+
export function withContractMethods(Base) {
|
|
21
|
+
return class extends Base {
|
|
22
|
+
/**
|
|
23
|
+
* Check if contracts are initialized.
|
|
24
|
+
* @returns {boolean} True if contracts initialized
|
|
25
|
+
*/
|
|
26
|
+
hasContracts() {
|
|
27
|
+
return this._contracts !== null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Ensure contracts are initialized, throw if not.
|
|
32
|
+
* @private
|
|
33
|
+
* @returns {Object} Contracts object
|
|
34
|
+
* @throws {Error} If contracts not initialized
|
|
35
|
+
*/
|
|
36
|
+
_requireContracts() {
|
|
37
|
+
if (!this._contracts) {
|
|
38
|
+
throw new Error('Contracts not initialized. Call initContracts() first.');
|
|
39
|
+
}
|
|
40
|
+
return this._contracts;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Initialize contracts with server-side configuration (Node.js).
|
|
45
|
+
* @param {Object} config - Contract configuration
|
|
46
|
+
* @param {string} config.network - Network name (mainnet, sepolia, hardhat, etc.)
|
|
47
|
+
* @param {string} config.privateKey - Private key for signing transactions
|
|
48
|
+
* @param {string} [config.rpcUrl] - Optional custom RPC URL
|
|
49
|
+
* @returns {Promise<Object>} Connection info with network details and address
|
|
50
|
+
*/
|
|
51
|
+
async initContracts(config) {
|
|
52
|
+
const chainManager = new ChainManager(config);
|
|
53
|
+
const connectionInfo = await chainManager.connect(
|
|
54
|
+
config.network,
|
|
55
|
+
config.privateKey,
|
|
56
|
+
config.rpcUrl
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const deployer = new ContractDeployer(chainManager);
|
|
60
|
+
const holonContracts = new HolonContracts(chainManager, deployer);
|
|
61
|
+
|
|
62
|
+
this._contracts = {
|
|
63
|
+
chainManager,
|
|
64
|
+
deployer,
|
|
65
|
+
holonContracts,
|
|
66
|
+
network: config.network
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
...connectionInfo,
|
|
71
|
+
address: config.privateKey ? await chainManager.getAddress() : null
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Initialize contracts with browser wallet (MetaMask, etc.).
|
|
77
|
+
* @param {string} network - Network name to connect to
|
|
78
|
+
* @returns {Promise<Object>} Connection info with network details
|
|
79
|
+
*/
|
|
80
|
+
async initContractsBrowser(network) {
|
|
81
|
+
const chainManager = new ChainManager();
|
|
82
|
+
const connectionInfo = await chainManager.connectBrowser(network);
|
|
83
|
+
|
|
84
|
+
const deployer = new ContractDeployer(chainManager);
|
|
85
|
+
const holonContracts = new HolonContracts(chainManager, deployer);
|
|
86
|
+
|
|
87
|
+
this._contracts = {
|
|
88
|
+
chainManager,
|
|
89
|
+
deployer,
|
|
90
|
+
holonContracts,
|
|
91
|
+
network: chainManager.networkName
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
return connectionInfo;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Deploy all core contracts (factory, templates, etc.).
|
|
99
|
+
* @param {Object} [options={}] - Deployment options
|
|
100
|
+
* @returns {Promise<Object>} Deployment result with addresses
|
|
101
|
+
*/
|
|
102
|
+
async deployContracts(options = {}) {
|
|
103
|
+
const { deployer } = this._requireContracts();
|
|
104
|
+
return deployer.deployAll(options);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Load previously deployed contract addresses.
|
|
109
|
+
* @param {Object} addresses - Map of contract names to addresses
|
|
110
|
+
*/
|
|
111
|
+
loadDeployedContracts(addresses) {
|
|
112
|
+
const { deployer } = this._requireContracts();
|
|
113
|
+
deployer.loadDeployedAddresses(addresses);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Get all deployed contract addresses.
|
|
118
|
+
* @returns {Object} Map of contract names to addresses
|
|
119
|
+
*/
|
|
120
|
+
getDeployedContracts() {
|
|
121
|
+
const { deployer } = this._requireContracts();
|
|
122
|
+
return deployer.getDeployedAddresses();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Deploy a new contract for a holon.
|
|
127
|
+
* @param {string} holonId - Holon ID to deploy contract for
|
|
128
|
+
* @param {string} [type='Splitter'] - Contract type (Splitter, Managed, Zoned, Appreciative, Bundle)
|
|
129
|
+
* @param {Object} [options={}] - Deployment options
|
|
130
|
+
* @returns {Promise<Object>} Deployment result with contract address
|
|
131
|
+
*/
|
|
132
|
+
async deployHolonContract(holonId, type = 'Splitter', options = {}) {
|
|
133
|
+
const { holonContracts } = this._requireContracts();
|
|
134
|
+
return holonContracts.deploy(holonId, type, options);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Link an existing contract to a holon.
|
|
139
|
+
* @param {string} holonId - Holon ID to link
|
|
140
|
+
* @param {string} contractAddress - Contract address to link
|
|
141
|
+
* @param {string} [type='Splitter'] - Contract type
|
|
142
|
+
* @returns {Promise<void>}
|
|
143
|
+
*/
|
|
144
|
+
async linkHolonContract(holonId, contractAddress, type = 'Splitter') {
|
|
145
|
+
const { holonContracts } = this._requireContracts();
|
|
146
|
+
return holonContracts.link(holonId, contractAddress, type);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Unlink contract from a holon.
|
|
151
|
+
* @param {string} holonId - Holon ID to unlink
|
|
152
|
+
* @returns {Promise<void>}
|
|
153
|
+
*/
|
|
154
|
+
async unlinkHolonContract(holonId) {
|
|
155
|
+
const { holonContracts } = this._requireContracts();
|
|
156
|
+
return holonContracts.unlink(holonId);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get contract instance for a holon.
|
|
161
|
+
* @param {string} holonId - Holon ID
|
|
162
|
+
* @returns {Object|null} Contract instance or null if not found
|
|
163
|
+
*/
|
|
164
|
+
getHolonContract(holonId) {
|
|
165
|
+
if (!this._contracts) return null;
|
|
166
|
+
return this._contracts.holonContracts.getContract(holonId);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Get contract address for a holon.
|
|
171
|
+
* @param {string} holonId - Holon ID
|
|
172
|
+
* @returns {string|null} Contract address or null if not found
|
|
173
|
+
*/
|
|
174
|
+
getHolonContractAddress(holonId) {
|
|
175
|
+
if (!this._contracts) return null;
|
|
176
|
+
return this._contracts.holonContracts.getAddress(holonId);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Check if holon has a linked contract.
|
|
181
|
+
* @param {string} holonId - Holon ID to check
|
|
182
|
+
* @returns {boolean} True if contract exists
|
|
183
|
+
*/
|
|
184
|
+
hasHolonContract(holonId) {
|
|
185
|
+
if (!this._contracts) return false;
|
|
186
|
+
return this._contracts.holonContracts.hasContract(holonId);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* List all holon contracts.
|
|
191
|
+
* @returns {Array<{holonId: string, address: string, type: string}>} Array of holon contract info
|
|
192
|
+
*/
|
|
193
|
+
listHolonContracts() {
|
|
194
|
+
if (!this._contracts) return [];
|
|
195
|
+
return this._contracts.holonContracts.listAll();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Get operations interface for a holon contract.
|
|
200
|
+
* @param {string} holonId - Holon ID
|
|
201
|
+
* @returns {Object} Operations object with contract methods
|
|
202
|
+
* @throws {Error} If holon has no contract
|
|
203
|
+
*/
|
|
204
|
+
getHolonOperations(holonId) {
|
|
205
|
+
const { holonContracts } = this._requireContracts();
|
|
206
|
+
return holonContracts.requireOperations(holonId);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// ========== MEMBER MANAGEMENT ==========
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Add a member to holon contract.
|
|
213
|
+
* @param {string} holonId - Holon ID
|
|
214
|
+
* @param {string} userId - User ID to add
|
|
215
|
+
* @returns {Promise<Object>} Transaction result
|
|
216
|
+
*/
|
|
217
|
+
async contractAddMember(holonId, userId) {
|
|
218
|
+
return this.getHolonOperations(holonId).addMember(userId);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Add multiple members to holon contract.
|
|
223
|
+
* @param {string} holonId - Holon ID
|
|
224
|
+
* @param {string[]} userIds - Array of user IDs to add
|
|
225
|
+
* @returns {Promise<Object>} Transaction result
|
|
226
|
+
*/
|
|
227
|
+
async contractAddMembers(holonId, userIds) {
|
|
228
|
+
return this.getHolonOperations(holonId).addMembers(userIds);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Check if user is a member of holon contract.
|
|
233
|
+
* @param {string} holonId - Holon ID
|
|
234
|
+
* @param {string} userId - User ID to check
|
|
235
|
+
* @returns {Promise<boolean>} True if user is member
|
|
236
|
+
*/
|
|
237
|
+
async contractIsMember(holonId, userId) {
|
|
238
|
+
return this.getHolonOperations(holonId).isMember(userId);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// ========== FUND DISTRIBUTION ==========
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Distribute ERC20 token rewards to contract members.
|
|
245
|
+
* @param {string} holonId - Holon ID
|
|
246
|
+
* @param {string} tokenAddress - ERC20 token contract address
|
|
247
|
+
* @param {string|number} amount - Amount to distribute
|
|
248
|
+
* @returns {Promise<Object>} Transaction result
|
|
249
|
+
*/
|
|
250
|
+
async contractReward(holonId, tokenAddress, amount) {
|
|
251
|
+
return this.getHolonOperations(holonId).reward(tokenAddress, amount);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Distribute ETH rewards to contract members.
|
|
256
|
+
* @param {string} holonId - Holon ID
|
|
257
|
+
* @param {string|number} amount - Amount of ETH to distribute (in wei)
|
|
258
|
+
* @returns {Promise<Object>} Transaction result
|
|
259
|
+
*/
|
|
260
|
+
async contractRewardEth(holonId, amount) {
|
|
261
|
+
return this.getHolonOperations(holonId).rewardEth(amount);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Send ETH to holon contract.
|
|
266
|
+
* @param {string} holonId - Holon ID
|
|
267
|
+
* @param {string|number} amount - Amount of ETH to send (in wei)
|
|
268
|
+
* @returns {Promise<Object>} Transaction result
|
|
269
|
+
*/
|
|
270
|
+
async contractSendEth(holonId, amount) {
|
|
271
|
+
return this.getHolonOperations(holonId).sendEth(amount);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Claim user's share of distributed funds.
|
|
276
|
+
* @param {string} holonId - Holon ID
|
|
277
|
+
* @param {string} userId - User ID claiming funds
|
|
278
|
+
* @param {string} beneficiaryAddress - Address to send claimed funds to
|
|
279
|
+
* @returns {Promise<Object>} Transaction result
|
|
280
|
+
*/
|
|
281
|
+
async contractClaim(holonId, userId, beneficiaryAddress) {
|
|
282
|
+
return this.getHolonOperations(holonId).claim(userId, beneficiaryAddress);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Get user's claimable ETH balance.
|
|
287
|
+
* @param {string} holonId - Holon ID
|
|
288
|
+
* @param {string} userId - User ID to check
|
|
289
|
+
* @returns {Promise<string>} ETH balance in wei
|
|
290
|
+
*/
|
|
291
|
+
async contractGetEthBalance(holonId, userId) {
|
|
292
|
+
return this.getHolonOperations(holonId).getEthBalance(userId);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Get user's claimable token balance.
|
|
297
|
+
* @param {string} holonId - Holon ID
|
|
298
|
+
* @param {string} userId - User ID to check
|
|
299
|
+
* @param {string} tokenAddress - Token contract address
|
|
300
|
+
* @returns {Promise<string>} Token balance
|
|
301
|
+
*/
|
|
302
|
+
async contractGetTokenBalance(holonId, userId, tokenAddress) {
|
|
303
|
+
return this.getHolonOperations(holonId).getTokenBalance(userId, tokenAddress);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// ========== SPLITTER OPERATIONS ==========
|
|
307
|
+
|
|
308
|
+
async contractSetSplit(holonId, internalPct, externalPct) {
|
|
309
|
+
return this.getHolonOperations(holonId).setContractSplit(internalPct, externalPct);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
async contractGetSplit(holonId) {
|
|
313
|
+
return this.getHolonOperations(holonId).getContractSplit();
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
async contractCreateManaged(holonId, creatorUserId, name) {
|
|
317
|
+
return this.getHolonOperations(holonId).createManagedContract(creatorUserId, name);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
async contractCreateZoned(holonId, creatorUserId, name, nZones = 6) {
|
|
321
|
+
return this.getHolonOperations(holonId).createZonedContract(creatorUserId, name, nZones);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
async contractGetChildContracts(holonId) {
|
|
325
|
+
return this.getHolonOperations(holonId).getChildContracts();
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ========== MANAGED OPERATIONS ==========
|
|
329
|
+
|
|
330
|
+
async contractSetAppreciation(holonId, userIds, amounts) {
|
|
331
|
+
return this.getHolonOperations(holonId).setAppreciation(userIds, amounts);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
async contractGetAppreciation(holonId, userId) {
|
|
335
|
+
return this.getHolonOperations(holonId).getAppreciation(userId);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
async contractGetTotalAppreciation(holonId) {
|
|
339
|
+
return this.getHolonOperations(holonId).getTotalAppreciation();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// ========== ZONED OPERATIONS ==========
|
|
343
|
+
|
|
344
|
+
async contractAddToZone(holonId, senderUserId, userId, zone) {
|
|
345
|
+
return this.getHolonOperations(holonId).addToZone(senderUserId, userId, zone);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
async contractRemoveFromZone(holonId, senderUserId, userId) {
|
|
349
|
+
return this.getHolonOperations(holonId).removeFromZone(senderUserId, userId);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
async contractGetZone(holonId, userId) {
|
|
353
|
+
return this.getHolonOperations(holonId).getZone(userId);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
async contractSetZoneParams(holonId, senderUserId, a, b, c) {
|
|
357
|
+
return this.getHolonOperations(holonId).setZoneParameters(senderUserId, a, b, c);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// ========== APPRECIATIVE OPERATIONS ==========
|
|
361
|
+
|
|
362
|
+
async contractAppreciate(holonId, fromUserId, toUserId, amount) {
|
|
363
|
+
return this.getHolonOperations(holonId).appreciate(fromUserId, toUserId, amount);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
async contractGetAppreciationGiven(holonId, userId) {
|
|
367
|
+
return this.getHolonOperations(holonId).getAppreciationGiven(userId);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
async contractGetAppreciationReceived(holonId, userId) {
|
|
371
|
+
return this.getHolonOperations(holonId).getAppreciationReceived(userId);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// ========== BUNDLE OPERATIONS ==========
|
|
375
|
+
|
|
376
|
+
async contractSetSteepness(holonId, steepness) {
|
|
377
|
+
return this.getHolonOperations(holonId).setSteepness(steepness);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
async contractGetSteepness(holonId) {
|
|
381
|
+
return this.getHolonOperations(holonId).getSteepness();
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
async contractSetInteriorSplit(holonId, userIds, percentages) {
|
|
385
|
+
return this.getHolonOperations(holonId).setInteriorSplit(userIds, percentages);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// ========== GOVERNANCE ==========
|
|
389
|
+
|
|
390
|
+
async contractStartElection(holonId) {
|
|
391
|
+
return this.getHolonOperations(holonId).startElection();
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
async contractNominate(holonId) {
|
|
395
|
+
return this.getHolonOperations(holonId).nominateSelf();
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
async contractVote(holonId, nomineeAddress) {
|
|
399
|
+
return this.getHolonOperations(holonId).vote(nomineeAddress);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
async contractFinalizeElection(holonId) {
|
|
403
|
+
return this.getHolonOperations(holonId).finalizeElection();
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// ========== READ-ONLY QUERIES ==========
|
|
407
|
+
|
|
408
|
+
async contractGetName(holonId) {
|
|
409
|
+
return this.getHolonOperations(holonId).getName();
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
async contractGetOwner(holonId) {
|
|
413
|
+
return this.getHolonOperations(holonId).getOwner();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
async contractGetBotAddress(holonId) {
|
|
417
|
+
return this.getHolonOperations(holonId).getBotAddress();
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
async contractGetTotalDeposited(holonId, tokenAddress) {
|
|
421
|
+
return this.getHolonOperations(holonId).getTotalDeposited(tokenAddress);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Get network utility functions.
|
|
426
|
+
* @returns {Object} Network utilities module
|
|
427
|
+
*/
|
|
428
|
+
getNetworkUtils() {
|
|
429
|
+
return networks;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Get the chain manager instance.
|
|
434
|
+
* @returns {Object|null} ChainManager instance or null if not initialized
|
|
435
|
+
*/
|
|
436
|
+
getChainManager() {
|
|
437
|
+
return this._contracts?.chainManager || null;
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
export default withContractMethods;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HoloSphere Custom Error Classes.
|
|
3
|
+
*
|
|
4
|
+
* Provides specialized error types for authorization and validation failures.
|
|
5
|
+
*
|
|
6
|
+
* @module lib/errors
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when an operation fails due to insufficient permissions.
|
|
11
|
+
*
|
|
12
|
+
* @class AuthorizationError
|
|
13
|
+
* @extends Error
|
|
14
|
+
*/
|
|
15
|
+
export class AuthorizationError extends Error {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new AuthorizationError.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} message - Error message describing the authorization failure
|
|
20
|
+
* @param {string|null} [requiredPermission=null] - The permission that was required
|
|
21
|
+
*/
|
|
22
|
+
constructor(message, requiredPermission = null) {
|
|
23
|
+
super(message);
|
|
24
|
+
/** @type {string} */
|
|
25
|
+
this.name = 'AuthorizationError';
|
|
26
|
+
/** @type {string|null} */
|
|
27
|
+
this.requiredPermission = requiredPermission;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Error thrown when data validation fails.
|
|
33
|
+
*
|
|
34
|
+
* @class ValidationError
|
|
35
|
+
* @extends Error
|
|
36
|
+
*/
|
|
37
|
+
export class ValidationError extends Error {
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new ValidationError.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} message - Error message describing the validation failure
|
|
42
|
+
*/
|
|
43
|
+
constructor(message) {
|
|
44
|
+
super(message);
|
|
45
|
+
/** @type {string} */
|
|
46
|
+
this.name = 'ValidationError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default {
|
|
51
|
+
AuthorizationError,
|
|
52
|
+
ValidationError
|
|
53
|
+
};
|