holosphere 2.0.0-alpha7 → 2.0.0-alpha9
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 +446 -0
- package/FEATURES.md +431 -0
- package/LICENSE +29 -166
- package/LICENSE-AGPL.md +180 -0
- package/dist/cdn/holosphere.min.js +55 -0
- package/dist/cdn/holosphere.min.js.map +1 -0
- package/dist/cjs/holosphere.cjs +1 -1
- package/dist/esm/holosphere.js +1 -1
- package/dist/{index-C-IlLYlk.cjs → index-DDGt_V9o.cjs} +2 -2
- package/dist/{index-C-IlLYlk.cjs.map → index-DDGt_V9o.cjs.map} +1 -1
- package/dist/{index-d6f4RJBM.js → index-DJXftyvB.js} +2253 -387
- 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-jmTHEbR2.js → index-DeZ1xz_s.js} +2 -2
- package/dist/{index-jmTHEbR2.js.map → index-DeZ1xz_s.js.map} +1 -1
- package/dist/{indexeddb-storage-D8kOl0oK.js → indexeddb-storage-BFt6hMeF.js} +48 -4
- package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
- package/dist/{indexeddb-storage-a8GipaDr.cjs → indexeddb-storage-BK5tv4Sh.cjs} +2 -2
- package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
- package/dist/{memory-storage-DBQK622V.js → memory-storage-C9HuoL2E.js} +44 -4
- package/dist/memory-storage-C9HuoL2E.js.map +1 -0
- package/dist/{memory-storage-gfRovk2O.cjs → memory-storage-Dao7jfYG.cjs} +2 -2
- package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
- package/dist/{secp256k1-BCAPF45D.cjs → secp256k1-BbKzbLtD.cjs} +2 -2
- package/dist/{secp256k1-BCAPF45D.cjs.map → secp256k1-BbKzbLtD.cjs.map} +1 -1
- package/dist/{secp256k1-DYm_CMqW.js → secp256k1-CreY7Pcl.js} +2 -2
- package/dist/{secp256k1-DYm_CMqW.js.map → secp256k1-CreY7Pcl.js.map} +1 -1
- 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/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 +16 -3
- 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/chain-manager.js +68 -40
- package/src/contracts/deployer.js +70 -42
- package/src/contracts/event-listener.js +61 -29
- package/src/contracts/holon-contracts.js +46 -31
- package/src/contracts/index.js +5 -6
- package/src/contracts/networks.js +19 -14
- package/src/contracts/operations.js +58 -41
- package/src/contracts/queries.js +70 -21
- package/src/core/holosphere.js +37 -8
- package/src/crypto/nostr-utils.js +105 -65
- package/src/crypto/secp256k1.js +7 -2
- package/src/federation/handshake.js +23 -11
- package/src/federation/hologram.js +9 -1
- package/src/hierarchical/upcast.js +34 -20
- package/src/index.js +671 -7
- package/src/lib/ai-methods.js +352 -3
- package/src/lib/contract-methods.js +152 -3
- package/src/lib/errors.js +31 -1
- package/src/lib/federation-methods.js +110 -3
- package/src/lib/index.js +9 -5
- package/src/schema/validator.js +22 -3
- package/src/spatial/h3-operations.js +17 -1
- 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 +322 -11
- 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 +7 -2
- package/src/storage/gun-async.js +20 -11
- package/src/storage/gun-auth.js +15 -4
- package/src/storage/gun-federation.js +14 -5
- package/src/storage/gun-references.js +16 -5
- package/src/storage/gun-schema.js +25 -10
- package/src/storage/gun-wrapper.js +160 -49
- package/src/storage/indexeddb-storage.js +65 -4
- package/src/storage/key-storage-simple.js +32 -9
- package/src/storage/key-storage.js +45 -13
- package/src/storage/memory-storage.js +65 -4
- package/src/storage/migration.js +20 -7
- package/src/storage/nostr-async.js +195 -90
- package/src/storage/nostr-client.js +173 -49
- package/src/storage/nostr-wrapper.js +6 -2
- package/src/storage/outbox-queue.js +55 -18
- package/src/storage/persistent-storage.js +56 -13
- package/src/storage/sync-service.js +51 -17
- package/src/storage/unified-storage.js +38 -3
- package/src/subscriptions/manager.js +33 -16
- package/vite.config.cdn.js +60 -0
- package/dist/index-Bvwyvd0T.cjs +0 -5
- package/dist/index-Bvwyvd0T.cjs.map +0 -1
- package/dist/index-d6f4RJBM.js.map +0 -1
- package/dist/indexeddb-storage-D8kOl0oK.js.map +0 -1
- package/dist/indexeddb-storage-a8GipaDr.cjs.map +0 -1
- package/dist/memory-storage-DBQK622V.js.map +0 -1
- package/dist/memory-storage-gfRovk2O.cjs.map +0 -1
- /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
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @fileoverview Extract structured data from unstructured text using JSON schemas.
|
|
3
|
+
* Provides schema-based data extraction, validation, and field completion.
|
|
4
|
+
* @module ai/schema-extractor
|
|
3
5
|
*/
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
|
-
*
|
|
8
|
+
* Service class for extracting structured data from text using JSON schemas.
|
|
9
|
+
* Leverages LLM to parse unstructured content and map it to defined schemas.
|
|
10
|
+
*
|
|
11
|
+
* @class SchemaExtractor
|
|
12
|
+
* @example
|
|
13
|
+
* const extractor = new SchemaExtractor(llmService);
|
|
14
|
+
* const schema = { properties: { name: { type: "string" }, age: { type: "number" } } };
|
|
15
|
+
* const data = await extractor.extractToSchema(text, schema);
|
|
7
16
|
*/
|
|
8
17
|
export class SchemaExtractor {
|
|
9
18
|
/**
|
|
@@ -14,10 +23,13 @@ export class SchemaExtractor {
|
|
|
14
23
|
}
|
|
15
24
|
|
|
16
25
|
/**
|
|
17
|
-
* Extract data from text
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* @param {
|
|
26
|
+
* Extract structured data from text according to a JSON schema.
|
|
27
|
+
* Uses LLM to intelligently parse unstructured text and map to schema fields.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} text - Unstructured text to extract from
|
|
30
|
+
* @param {Object} schema - JSON schema defining target structure
|
|
31
|
+
* @param {Object} [options={}] - Extraction options
|
|
32
|
+
* @param {number} [options.maxTokens=2000] - Maximum tokens for response
|
|
21
33
|
* @returns {Promise<Object>} Extracted data conforming to schema
|
|
22
34
|
*/
|
|
23
35
|
async extractToSchema(text, schema, options = {}) {
|
|
@@ -157,10 +169,12 @@ Return JSON with ONLY the missing fields that you can extract. Do not modify exi
|
|
|
157
169
|
}
|
|
158
170
|
|
|
159
171
|
/**
|
|
160
|
-
* Validate extracted data against schema
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
* @
|
|
172
|
+
* Validate extracted data against a JSON schema.
|
|
173
|
+
* Performs basic type checking and required field validation.
|
|
174
|
+
*
|
|
175
|
+
* @param {Object} data - Extracted data to validate
|
|
176
|
+
* @param {Object} schema - JSON schema to validate against
|
|
177
|
+
* @returns {{valid: boolean, errors: string[]}} Validation result with error list
|
|
164
178
|
*/
|
|
165
179
|
validateExtraction(data, schema) {
|
|
166
180
|
const errors = [];
|
package/src/ai/spatial.js
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @fileoverview AI-powered spatial analysis of data patterns across geographic regions.
|
|
3
|
+
* Provides region analysis, comparison, trend detection, hotspot identification, and reporting.
|
|
4
|
+
* @module ai/spatial
|
|
3
5
|
*/
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
|
-
*
|
|
8
|
+
* Service class for analyzing spatial data patterns across geographic regions.
|
|
9
|
+
* Identifies trends, compares regions, finds hotspots, and generates comprehensive
|
|
10
|
+
* spatial reports using AI-driven analysis.
|
|
11
|
+
*
|
|
12
|
+
* @class SpatialAnalysis
|
|
13
|
+
* @example
|
|
14
|
+
* const spatial = new SpatialAnalysis(llmService, holosphere);
|
|
15
|
+
* const analysis = await spatial.analyzeRegion(holonId, 'projects', 'activity');
|
|
16
|
+
* const comparison = await spatial.compareRegions(holon1, holon2, 'quests');
|
|
17
|
+
* const trends = await spatial.spatialTrends(holonId, 'events', { start: '2024-01-01' });
|
|
7
18
|
*/
|
|
8
19
|
export class SpatialAnalysis {
|
|
9
20
|
/**
|
package/src/ai/tts.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @fileoverview OpenAI text-to-speech integration for audio generation.
|
|
3
|
+
* Provides methods for converting text to speech with various voices and formats.
|
|
4
|
+
* @module ai/tts
|
|
3
5
|
*/
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
|
-
* Available
|
|
8
|
+
* Available voice options for text-to-speech.
|
|
9
|
+
* @enum {string}
|
|
7
10
|
*/
|
|
8
11
|
export const VOICES = {
|
|
9
12
|
ALLOY: 'alloy',
|
|
@@ -15,7 +18,8 @@ export const VOICES = {
|
|
|
15
18
|
};
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
|
-
* Available TTS
|
|
21
|
+
* Available TTS model options.
|
|
22
|
+
* @enum {string}
|
|
19
23
|
*/
|
|
20
24
|
export const MODELS = {
|
|
21
25
|
TTS_1: 'tts-1',
|
|
@@ -23,7 +27,14 @@ export const MODELS = {
|
|
|
23
27
|
};
|
|
24
28
|
|
|
25
29
|
/**
|
|
26
|
-
*
|
|
30
|
+
* Service class for converting text to speech using OpenAI's TTS API.
|
|
31
|
+
* Supports multiple voices, output formats, and handles long text with automatic chunking.
|
|
32
|
+
*
|
|
33
|
+
* @class TTS
|
|
34
|
+
* @example
|
|
35
|
+
* const tts = new TTS(openaiClient);
|
|
36
|
+
* const audioBuffer = await tts.speak("Hello world", { voice: VOICES.NOVA });
|
|
37
|
+
* const dataUrl = await tts.speakDataUrl("Hello", { voice: VOICES.ECHO });
|
|
27
38
|
*/
|
|
28
39
|
export class TTS {
|
|
29
40
|
/**
|
|
@@ -36,10 +47,16 @@ export class TTS {
|
|
|
36
47
|
}
|
|
37
48
|
|
|
38
49
|
/**
|
|
39
|
-
* Convert text to speech
|
|
40
|
-
*
|
|
41
|
-
* @param {
|
|
42
|
-
* @
|
|
50
|
+
* Convert text to speech audio.
|
|
51
|
+
*
|
|
52
|
+
* @param {string} text - Text to convert to speech
|
|
53
|
+
* @param {Object} [options={}] - TTS generation options
|
|
54
|
+
* @param {string} [options.voice] - Voice to use (from VOICES enum)
|
|
55
|
+
* @param {string} [options.model] - Model to use (from MODELS enum)
|
|
56
|
+
* @param {number} [options.speed=1.0] - Speech speed (0.25 to 4.0)
|
|
57
|
+
* @param {string} [options.responseFormat='mp3'] - Audio format (mp3, opus, aac, flac)
|
|
58
|
+
* @returns {Promise<Buffer>} Audio buffer
|
|
59
|
+
* @throws {Error} If TTS generation fails
|
|
43
60
|
*/
|
|
44
61
|
async speak(text, options = {}) {
|
|
45
62
|
const {
|
package/src/cdn-entry.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDN Entry Point for HoloSphere
|
|
3
|
+
*
|
|
4
|
+
* This file creates a clean global API for browser usage.
|
|
5
|
+
* After including the script, use: new HoloSphere({ appName: 'my-app' })
|
|
6
|
+
*
|
|
7
|
+
* Also exposes h3 library as window.h3 for hexagon visualization.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Import the main class
|
|
11
|
+
import { HoloSphere } from './index.js';
|
|
12
|
+
|
|
13
|
+
// Import h3-js for hexagon boundary visualization
|
|
14
|
+
import * as h3 from 'h3-js';
|
|
15
|
+
|
|
16
|
+
// Expose h3 globally for widget use
|
|
17
|
+
if (typeof window !== 'undefined') {
|
|
18
|
+
window.h3 = h3;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Export only the main class as default
|
|
22
|
+
export default HoloSphere;
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Social
|
|
2
|
+
* @fileoverview Social protocol adapters for Nostr (NIP-01) and ActivityPub formats.
|
|
3
|
+
* Provides validation, transformation, and filtering utilities for social content integration.
|
|
4
|
+
* @module content/social-protocols
|
|
3
5
|
*/
|
|
4
6
|
|
|
5
7
|
// Import ValidationError from the validator module
|
|
6
8
|
import { ValidationError } from '../schema/validator.js';
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
|
-
* Validate Nostr NIP-01 event format
|
|
10
|
-
*
|
|
11
|
-
* @param {
|
|
12
|
-
* @
|
|
13
|
-
* @
|
|
11
|
+
* Validate Nostr NIP-01 event format.
|
|
12
|
+
* Checks required fields (kind, tags, content, created_at) and optionally id, pubkey, sig.
|
|
13
|
+
* @param {Object} event - Nostr event object to validate
|
|
14
|
+
* @param {boolean} [partial=true] - Allow partial events (missing id, pubkey, sig for signing)
|
|
15
|
+
* @param {boolean} [throwOnError=false] - Throw ValidationError on failure instead of returning false
|
|
16
|
+
* @returns {boolean} True if valid, false otherwise (unless throwOnError is true)
|
|
17
|
+
* @throws {ValidationError} If validation fails and throwOnError is true
|
|
14
18
|
*/
|
|
15
19
|
export function validateNostrEvent(event, partial = true, throwOnError = false) {
|
|
16
20
|
if (!event || typeof event !== 'object') {
|
|
@@ -56,12 +60,13 @@ export function validateNostrEvent(event, partial = true, throwOnError = false)
|
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
/**
|
|
59
|
-
* Validate ActivityPub object format
|
|
60
|
-
* @
|
|
61
|
-
* @param {
|
|
62
|
-
* @param {boolean}
|
|
63
|
-
* @
|
|
64
|
-
* @
|
|
63
|
+
* Validate ActivityPub object format.
|
|
64
|
+
* Checks for required @context and type fields, optionally validates id field.
|
|
65
|
+
* @param {Object} object - ActivityPub object to validate
|
|
66
|
+
* @param {boolean} [throwOnError=false] - Throw ValidationError on failure instead of returning false
|
|
67
|
+
* @param {boolean} [requireId=false] - Require id field (default: false, will be auto-generated)
|
|
68
|
+
* @returns {boolean} True if valid, false otherwise (unless throwOnError is true)
|
|
69
|
+
* @throws {ValidationError} If validation fails and throwOnError is true
|
|
65
70
|
*/
|
|
66
71
|
export function validateActivityPubObject(object, throwOnError = false, requireId = false) {
|
|
67
72
|
if (!object || typeof object !== 'object') {
|
|
@@ -85,9 +90,10 @@ export function validateActivityPubObject(object, throwOnError = false, requireI
|
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
/**
|
|
88
|
-
* Transform Nostr event to HoloSphere format
|
|
89
|
-
*
|
|
90
|
-
* @
|
|
93
|
+
* Transform Nostr event to HoloSphere storage format.
|
|
94
|
+
* Normalizes Nostr events and adds metadata for HoloSphere compatibility.
|
|
95
|
+
* @param {Object} event - Nostr NIP-01 event object
|
|
96
|
+
* @returns {Object} HoloSphere data object with protocol metadata
|
|
91
97
|
*/
|
|
92
98
|
export function transformNostrEvent(event) {
|
|
93
99
|
// Generate missing fields if needed
|
|
@@ -115,9 +121,10 @@ export function transformNostrEvent(event) {
|
|
|
115
121
|
}
|
|
116
122
|
|
|
117
123
|
/**
|
|
118
|
-
* Transform ActivityPub object to HoloSphere format
|
|
124
|
+
* Transform ActivityPub object to HoloSphere storage format.
|
|
125
|
+
* Normalizes ActivityPub objects and adds metadata for HoloSphere compatibility.
|
|
119
126
|
* @param {Object} object - ActivityPub object
|
|
120
|
-
* @returns {Object} HoloSphere data object
|
|
127
|
+
* @returns {Object} HoloSphere data object with protocol metadata
|
|
121
128
|
*/
|
|
122
129
|
export function transformActivityPubObject(object) {
|
|
123
130
|
// Generate ID if not provided
|
|
@@ -139,10 +146,11 @@ export function transformActivityPubObject(object) {
|
|
|
139
146
|
}
|
|
140
147
|
|
|
141
148
|
/**
|
|
142
|
-
* Filter social content by access level
|
|
143
|
-
*
|
|
144
|
-
* @param {
|
|
145
|
-
* @
|
|
149
|
+
* Filter social content by access level.
|
|
150
|
+
* Returns items matching the specified access level or all items if no level specified.
|
|
151
|
+
* @param {Object[]} content - Array of social content items
|
|
152
|
+
* @param {string} accessLevel - Access level to filter by (e.g., 'public', 'private')
|
|
153
|
+
* @returns {Object[]} Filtered content array
|
|
146
154
|
*/
|
|
147
155
|
export function filterByAccessLevel(content, accessLevel) {
|
|
148
156
|
if (!accessLevel) return content;
|
|
@@ -153,10 +161,11 @@ export function filterByAccessLevel(content, accessLevel) {
|
|
|
153
161
|
}
|
|
154
162
|
|
|
155
163
|
/**
|
|
156
|
-
* Filter social content by protocol
|
|
157
|
-
*
|
|
158
|
-
* @param {
|
|
159
|
-
* @
|
|
164
|
+
* Filter social content by protocol type.
|
|
165
|
+
* Returns items matching the specified protocol or all items if 'all' is specified.
|
|
166
|
+
* @param {Object[]} content - Array of social content items
|
|
167
|
+
* @param {string} protocol - Protocol to filter by ('nostr', 'activitypub', or 'all')
|
|
168
|
+
* @returns {Object[]} Filtered content array
|
|
160
169
|
*/
|
|
161
170
|
export function filterByProtocol(content, protocol) {
|
|
162
171
|
if (!protocol || protocol === 'all') return content;
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Handles provider/signer setup, network switching, and wallet management
|
|
2
|
+
* @fileoverview Multi-chain connection manager for Holosphere smart contracts.
|
|
3
|
+
* Handles provider/signer setup, network switching, and wallet management across EVM chains.
|
|
4
|
+
* @module contracts/chain-manager
|
|
4
5
|
*/
|
|
5
6
|
|
|
6
7
|
import { NETWORKS, getNetwork, isNetworkSupported } from './networks.js';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Multi-chain connection manager for Holosphere contracts.
|
|
11
|
+
* Supports both RPC providers and browser wallets (MetaMask, etc.).
|
|
12
|
+
* @class
|
|
13
|
+
*/
|
|
8
14
|
export class ChainManager {
|
|
15
|
+
/**
|
|
16
|
+
* Create a new ChainManager instance.
|
|
17
|
+
* @param {Object} [config={}] - Configuration options
|
|
18
|
+
*/
|
|
9
19
|
constructor(config = {}) {
|
|
10
20
|
this.config = config;
|
|
11
21
|
this.provider = null;
|
|
@@ -17,8 +27,9 @@ export class ChainManager {
|
|
|
17
27
|
}
|
|
18
28
|
|
|
19
29
|
/**
|
|
20
|
-
* Initialize ethers.js (lazy load)
|
|
30
|
+
* Initialize ethers.js library (lazy load).
|
|
21
31
|
* @private
|
|
32
|
+
* @returns {Promise<Object>} Ethers.js module
|
|
22
33
|
*/
|
|
23
34
|
async _loadEthers() {
|
|
24
35
|
if (!this.ethers) {
|
|
@@ -30,11 +41,12 @@ export class ChainManager {
|
|
|
30
41
|
}
|
|
31
42
|
|
|
32
43
|
/**
|
|
33
|
-
* Connect to a network
|
|
44
|
+
* Connect to a network using RPC provider.
|
|
34
45
|
* @param {string} networkName - Network name (e.g., 'sepolia', 'polygon')
|
|
35
46
|
* @param {string} [privateKey] - Private key for signing transactions
|
|
36
47
|
* @param {string} [rpcUrl] - Custom RPC URL (overrides default)
|
|
37
|
-
* @returns {Promise<{provider, signer, network}>}
|
|
48
|
+
* @returns {Promise<{provider: Object, signer: Object|null, network: Object, networkName: string, config: Object}>} Connection details
|
|
49
|
+
* @throws {Error} If network is unsupported and no custom RPC URL provided
|
|
38
50
|
*/
|
|
39
51
|
async connect(networkName, privateKey, rpcUrl) {
|
|
40
52
|
const ethers = await this._loadEthers();
|
|
@@ -78,9 +90,10 @@ export class ChainManager {
|
|
|
78
90
|
}
|
|
79
91
|
|
|
80
92
|
/**
|
|
81
|
-
* Connect using browser wallet (MetaMask, etc.)
|
|
93
|
+
* Connect using browser wallet (MetaMask, etc.).
|
|
82
94
|
* @param {string} [networkName] - Optionally switch to this network
|
|
83
|
-
* @returns {Promise<{provider, signer, network, address}>}
|
|
95
|
+
* @returns {Promise<{provider: Object, signer: Object, network: Object, address: string}>} Connection details including user address
|
|
96
|
+
* @throws {Error} If no browser wallet is detected
|
|
84
97
|
*/
|
|
85
98
|
async connectBrowser(networkName) {
|
|
86
99
|
const ethers = await this._loadEthers();
|
|
@@ -117,8 +130,11 @@ export class ChainManager {
|
|
|
117
130
|
}
|
|
118
131
|
|
|
119
132
|
/**
|
|
120
|
-
* Switch to a different network (browser wallet only)
|
|
133
|
+
* Switch to a different network (browser wallet only).
|
|
134
|
+
* Adds the network to the wallet if it doesn't exist.
|
|
121
135
|
* @param {string} networkName - Target network name
|
|
136
|
+
* @returns {Promise<void>}
|
|
137
|
+
* @throws {Error} If not using a browser wallet or network is unknown
|
|
122
138
|
*/
|
|
123
139
|
async switchNetwork(networkName) {
|
|
124
140
|
if (typeof window === 'undefined' || !window.ethereum) {
|
|
@@ -165,8 +181,9 @@ export class ChainManager {
|
|
|
165
181
|
}
|
|
166
182
|
|
|
167
183
|
/**
|
|
168
|
-
* Get the current provider
|
|
169
|
-
* @returns {
|
|
184
|
+
* Get the current provider.
|
|
185
|
+
* @returns {Object} Ethers.js provider instance
|
|
186
|
+
* @throws {Error} If not initialized
|
|
170
187
|
*/
|
|
171
188
|
getProvider() {
|
|
172
189
|
this._requireInitialized();
|
|
@@ -174,8 +191,9 @@ export class ChainManager {
|
|
|
174
191
|
}
|
|
175
192
|
|
|
176
193
|
/**
|
|
177
|
-
* Get the current signer
|
|
178
|
-
* @returns {
|
|
194
|
+
* Get the current signer.
|
|
195
|
+
* @returns {Object} Ethers.js signer instance
|
|
196
|
+
* @throws {Error} If not initialized or no signer available
|
|
179
197
|
*/
|
|
180
198
|
getSigner() {
|
|
181
199
|
this._requireInitialized();
|
|
@@ -186,8 +204,9 @@ export class ChainManager {
|
|
|
186
204
|
}
|
|
187
205
|
|
|
188
206
|
/**
|
|
189
|
-
* Get the connected address
|
|
190
|
-
* @returns {Promise<string>}
|
|
207
|
+
* Get the connected wallet address.
|
|
208
|
+
* @returns {Promise<string>} Ethereum address
|
|
209
|
+
* @throws {Error} If no signer available
|
|
191
210
|
*/
|
|
192
211
|
async getAddress() {
|
|
193
212
|
const signer = this.getSigner();
|
|
@@ -195,9 +214,10 @@ export class ChainManager {
|
|
|
195
214
|
}
|
|
196
215
|
|
|
197
216
|
/**
|
|
198
|
-
* Get ETH balance of an address
|
|
217
|
+
* Get ETH balance of an address.
|
|
199
218
|
* @param {string} [address] - Address to check (defaults to signer)
|
|
200
|
-
* @returns {Promise<string>} Balance in ETH
|
|
219
|
+
* @returns {Promise<string>} Balance in ETH as decimal string
|
|
220
|
+
* @throws {Error} If not initialized or no address/signer available
|
|
201
221
|
*/
|
|
202
222
|
async getBalance(address) {
|
|
203
223
|
this._requireInitialized();
|
|
@@ -211,8 +231,9 @@ export class ChainManager {
|
|
|
211
231
|
}
|
|
212
232
|
|
|
213
233
|
/**
|
|
214
|
-
* Get current network configuration
|
|
215
|
-
* @returns {Object}
|
|
234
|
+
* Get current network configuration.
|
|
235
|
+
* @returns {Object} Network configuration object
|
|
236
|
+
* @throws {Error} If not initialized
|
|
216
237
|
*/
|
|
217
238
|
getNetworkConfig() {
|
|
218
239
|
this._requireInitialized();
|
|
@@ -220,8 +241,9 @@ export class ChainManager {
|
|
|
220
241
|
}
|
|
221
242
|
|
|
222
243
|
/**
|
|
223
|
-
* Get current chain ID
|
|
224
|
-
* @returns {number}
|
|
244
|
+
* Get current chain ID.
|
|
245
|
+
* @returns {number} Chain ID as number
|
|
246
|
+
* @throws {Error} If not initialized
|
|
225
247
|
*/
|
|
226
248
|
getChainId() {
|
|
227
249
|
this._requireInitialized();
|
|
@@ -229,9 +251,9 @@ export class ChainManager {
|
|
|
229
251
|
}
|
|
230
252
|
|
|
231
253
|
/**
|
|
232
|
-
* Check if connected to the expected network
|
|
254
|
+
* Check if connected to the expected network.
|
|
233
255
|
* @param {string} expectedNetwork - Expected network name
|
|
234
|
-
* @returns {boolean}
|
|
256
|
+
* @returns {boolean} True if on expected network
|
|
235
257
|
*/
|
|
236
258
|
isOnNetwork(expectedNetwork) {
|
|
237
259
|
if (!this._initialized) return false;
|
|
@@ -241,11 +263,12 @@ export class ChainManager {
|
|
|
241
263
|
}
|
|
242
264
|
|
|
243
265
|
/**
|
|
244
|
-
* Create a contract instance
|
|
266
|
+
* Create a contract instance.
|
|
245
267
|
* @param {string} address - Contract address
|
|
246
268
|
* @param {Array} abi - Contract ABI
|
|
247
269
|
* @param {boolean} [useSigner=true] - Use signer for write operations
|
|
248
|
-
* @returns {Contract
|
|
270
|
+
* @returns {Promise<Object>} Ethers.js Contract instance
|
|
271
|
+
* @throws {Error} If not initialized
|
|
249
272
|
*/
|
|
250
273
|
async getContract(address, abi, useSigner = true) {
|
|
251
274
|
this._requireInitialized();
|
|
@@ -255,11 +278,12 @@ export class ChainManager {
|
|
|
255
278
|
}
|
|
256
279
|
|
|
257
280
|
/**
|
|
258
|
-
* Deploy a contract
|
|
281
|
+
* Deploy a contract.
|
|
259
282
|
* @param {Array} abi - Contract ABI
|
|
260
283
|
* @param {string} bytecode - Contract bytecode
|
|
261
284
|
* @param {Array} [constructorArgs=[]] - Constructor arguments
|
|
262
|
-
* @returns {Promise<{contract, address, deployTx}>}
|
|
285
|
+
* @returns {Promise<{contract: Object, address: string, deployTx: Object, txHash: string}>} Deployment details
|
|
286
|
+
* @throws {Error} If not initialized or no signer available
|
|
263
287
|
*/
|
|
264
288
|
async deployContract(abi, bytecode, constructorArgs = []) {
|
|
265
289
|
this._requireInitialized();
|
|
@@ -285,10 +309,11 @@ export class ChainManager {
|
|
|
285
309
|
}
|
|
286
310
|
|
|
287
311
|
/**
|
|
288
|
-
* Wait for a transaction to be mined
|
|
312
|
+
* Wait for a transaction to be mined.
|
|
289
313
|
* @param {string} txHash - Transaction hash
|
|
290
314
|
* @param {number} [confirmations=1] - Number of confirmations to wait for
|
|
291
|
-
* @returns {Promise<
|
|
315
|
+
* @returns {Promise<Object>} Transaction receipt
|
|
316
|
+
* @throws {Error} If not initialized
|
|
292
317
|
*/
|
|
293
318
|
async waitForTransaction(txHash, confirmations = 1) {
|
|
294
319
|
this._requireInitialized();
|
|
@@ -296,9 +321,10 @@ export class ChainManager {
|
|
|
296
321
|
}
|
|
297
322
|
|
|
298
323
|
/**
|
|
299
|
-
* Estimate gas for a transaction
|
|
324
|
+
* Estimate gas for a transaction.
|
|
300
325
|
* @param {Object} tx - Transaction object
|
|
301
|
-
* @returns {Promise<bigint>}
|
|
326
|
+
* @returns {Promise<bigint>} Estimated gas amount
|
|
327
|
+
* @throws {Error} If not initialized
|
|
302
328
|
*/
|
|
303
329
|
async estimateGas(tx) {
|
|
304
330
|
this._requireInitialized();
|
|
@@ -306,8 +332,9 @@ export class ChainManager {
|
|
|
306
332
|
}
|
|
307
333
|
|
|
308
334
|
/**
|
|
309
|
-
* Get current gas price
|
|
310
|
-
* @returns {Promise<{gasPrice: string, maxFeePerGas: string, maxPriorityFeePerGas: string}>}
|
|
335
|
+
* Get current gas price and fee data.
|
|
336
|
+
* @returns {Promise<{gasPrice: string|null, maxFeePerGas: string|null, maxPriorityFeePerGas: string|null}>} Fee data in gwei
|
|
337
|
+
* @throws {Error} If not initialized
|
|
311
338
|
*/
|
|
312
339
|
async getGasPrice() {
|
|
313
340
|
this._requireInitialized();
|
|
@@ -321,10 +348,10 @@ export class ChainManager {
|
|
|
321
348
|
}
|
|
322
349
|
|
|
323
350
|
/**
|
|
324
|
-
* Parse units (e.g., ETH to wei)
|
|
351
|
+
* Parse units (e.g., ETH to wei).
|
|
325
352
|
* @param {string|number} value - Value to parse
|
|
326
353
|
* @param {string|number} [unit='ether'] - Unit name or decimals
|
|
327
|
-
* @returns {bigint}
|
|
354
|
+
* @returns {Promise<bigint>} Parsed value as bigint
|
|
328
355
|
*/
|
|
329
356
|
async parseUnits(value, unit = 'ether') {
|
|
330
357
|
const ethers = await this._loadEthers();
|
|
@@ -332,10 +359,10 @@ export class ChainManager {
|
|
|
332
359
|
}
|
|
333
360
|
|
|
334
361
|
/**
|
|
335
|
-
* Format units (e.g., wei to ETH)
|
|
362
|
+
* Format units (e.g., wei to ETH).
|
|
336
363
|
* @param {bigint|string} value - Value to format
|
|
337
364
|
* @param {string|number} [unit='ether'] - Unit name or decimals
|
|
338
|
-
* @returns {string}
|
|
365
|
+
* @returns {Promise<string>} Formatted value as decimal string
|
|
339
366
|
*/
|
|
340
367
|
async formatUnits(value, unit = 'ether') {
|
|
341
368
|
const ethers = await this._loadEthers();
|
|
@@ -343,8 +370,9 @@ export class ChainManager {
|
|
|
343
370
|
}
|
|
344
371
|
|
|
345
372
|
/**
|
|
346
|
-
* Check if manager is initialized
|
|
373
|
+
* Check if manager is initialized.
|
|
347
374
|
* @private
|
|
375
|
+
* @throws {Error} If not initialized
|
|
348
376
|
*/
|
|
349
377
|
_requireInitialized() {
|
|
350
378
|
if (!this._initialized) {
|
|
@@ -353,15 +381,15 @@ export class ChainManager {
|
|
|
353
381
|
}
|
|
354
382
|
|
|
355
383
|
/**
|
|
356
|
-
* Check if connected
|
|
357
|
-
* @returns {boolean}
|
|
384
|
+
* Check if connected to a network.
|
|
385
|
+
* @returns {boolean} True if connected
|
|
358
386
|
*/
|
|
359
387
|
isConnected() {
|
|
360
388
|
return this._initialized && this.provider !== null;
|
|
361
389
|
}
|
|
362
390
|
|
|
363
391
|
/**
|
|
364
|
-
* Disconnect and clean up
|
|
392
|
+
* Disconnect and clean up resources.
|
|
365
393
|
*/
|
|
366
394
|
disconnect() {
|
|
367
395
|
this.provider = null;
|