@originals/sdk 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +33 -0
- package/.turbo/turbo-build.log +1 -0
- package/.turbo/turbo-test.log +68353 -0
- package/dist/adapters/FeeOracleMock.d.ts +6 -0
- package/dist/adapters/FeeOracleMock.js +8 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.js +4 -0
- package/dist/adapters/providers/OrdHttpProvider.d.ts +56 -0
- package/dist/adapters/providers/OrdHttpProvider.js +110 -0
- package/dist/adapters/providers/OrdMockProvider.d.ts +70 -0
- package/dist/adapters/providers/OrdMockProvider.js +75 -0
- package/dist/adapters/types.d.ts +71 -0
- package/dist/adapters/types.js +1 -0
- package/dist/bitcoin/BitcoinManager.d.ts +15 -0
- package/dist/bitcoin/BitcoinManager.js +262 -0
- package/dist/bitcoin/BroadcastClient.d.ts +30 -0
- package/dist/bitcoin/BroadcastClient.js +35 -0
- package/dist/bitcoin/OrdinalsClient.d.ts +21 -0
- package/dist/bitcoin/OrdinalsClient.js +105 -0
- package/dist/bitcoin/PSBTBuilder.d.ts +24 -0
- package/dist/bitcoin/PSBTBuilder.js +80 -0
- package/dist/bitcoin/fee-calculation.d.ts +14 -0
- package/dist/bitcoin/fee-calculation.js +31 -0
- package/dist/bitcoin/providers/OrdNodeProvider.d.ts +38 -0
- package/dist/bitcoin/providers/OrdNodeProvider.js +67 -0
- package/dist/bitcoin/providers/OrdinalsProvider.d.ts +33 -0
- package/dist/bitcoin/providers/OrdinalsProvider.js +50 -0
- package/dist/bitcoin/providers/types.d.ts +63 -0
- package/dist/bitcoin/providers/types.js +1 -0
- package/dist/bitcoin/transactions/commit.d.ts +89 -0
- package/dist/bitcoin/transactions/commit.js +311 -0
- package/dist/bitcoin/transactions/index.d.ts +7 -0
- package/dist/bitcoin/transactions/index.js +8 -0
- package/dist/bitcoin/transfer.d.ts +9 -0
- package/dist/bitcoin/transfer.js +26 -0
- package/dist/bitcoin/utxo-selection.d.ts +78 -0
- package/dist/bitcoin/utxo-selection.js +237 -0
- package/dist/bitcoin/utxo.d.ts +26 -0
- package/dist/bitcoin/utxo.js +78 -0
- package/dist/contexts/credentials-v1.json +195 -0
- package/dist/contexts/credentials-v2-examples.json +5 -0
- package/dist/contexts/credentials-v2.json +301 -0
- package/dist/contexts/credentials.json +195 -0
- package/dist/contexts/data-integrity-v2.json +81 -0
- package/dist/contexts/dids.json +57 -0
- package/dist/contexts/ed255192020.json +93 -0
- package/dist/contexts/ordinals-plus.json +23 -0
- package/dist/contexts/originals.json +22 -0
- package/dist/core/OriginalsSDK.d.ts +158 -0
- package/dist/core/OriginalsSDK.js +274 -0
- package/dist/crypto/Multikey.d.ts +30 -0
- package/dist/crypto/Multikey.js +149 -0
- package/dist/crypto/Signer.d.ts +21 -0
- package/dist/crypto/Signer.js +196 -0
- package/dist/crypto/noble-init.d.ts +18 -0
- package/dist/crypto/noble-init.js +106 -0
- package/dist/did/BtcoDidResolver.d.ts +57 -0
- package/dist/did/BtcoDidResolver.js +166 -0
- package/dist/did/DIDManager.d.ts +101 -0
- package/dist/did/DIDManager.js +493 -0
- package/dist/did/Ed25519Verifier.d.ts +30 -0
- package/dist/did/Ed25519Verifier.js +59 -0
- package/dist/did/KeyManager.d.ts +17 -0
- package/dist/did/KeyManager.js +207 -0
- package/dist/did/WebVHManager.d.ts +100 -0
- package/dist/did/WebVHManager.js +304 -0
- package/dist/did/createBtcoDidDocument.d.ts +10 -0
- package/dist/did/createBtcoDidDocument.js +42 -0
- package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +23 -0
- package/dist/did/providers/OrdinalsClientProviderAdapter.js +51 -0
- package/dist/events/EventEmitter.d.ts +115 -0
- package/dist/events/EventEmitter.js +198 -0
- package/dist/events/index.d.ts +7 -0
- package/dist/events/index.js +6 -0
- package/dist/events/types.d.ts +286 -0
- package/dist/events/types.js +9 -0
- package/dist/examples/basic-usage.d.ts +3 -0
- package/dist/examples/basic-usage.js +62 -0
- package/dist/examples/run.d.ts +1 -0
- package/dist/examples/run.js +4 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +47 -0
- package/dist/lifecycle/BatchOperations.d.ts +147 -0
- package/dist/lifecycle/BatchOperations.js +251 -0
- package/dist/lifecycle/LifecycleManager.d.ts +116 -0
- package/dist/lifecycle/LifecycleManager.js +971 -0
- package/dist/lifecycle/OriginalsAsset.d.ts +164 -0
- package/dist/lifecycle/OriginalsAsset.js +380 -0
- package/dist/lifecycle/ProvenanceQuery.d.ts +126 -0
- package/dist/lifecycle/ProvenanceQuery.js +220 -0
- package/dist/lifecycle/ResourceVersioning.d.ts +73 -0
- package/dist/lifecycle/ResourceVersioning.js +127 -0
- package/dist/migration/MigrationManager.d.ts +86 -0
- package/dist/migration/MigrationManager.js +412 -0
- package/dist/migration/audit/AuditLogger.d.ts +51 -0
- package/dist/migration/audit/AuditLogger.js +156 -0
- package/dist/migration/checkpoint/CheckpointManager.d.ts +31 -0
- package/dist/migration/checkpoint/CheckpointManager.js +96 -0
- package/dist/migration/checkpoint/CheckpointStorage.d.ts +26 -0
- package/dist/migration/checkpoint/CheckpointStorage.js +89 -0
- package/dist/migration/index.d.ts +22 -0
- package/dist/migration/index.js +27 -0
- package/dist/migration/operations/BaseMigration.d.ts +48 -0
- package/dist/migration/operations/BaseMigration.js +83 -0
- package/dist/migration/operations/PeerToBtcoMigration.d.ts +25 -0
- package/dist/migration/operations/PeerToBtcoMigration.js +67 -0
- package/dist/migration/operations/PeerToWebvhMigration.d.ts +19 -0
- package/dist/migration/operations/PeerToWebvhMigration.js +46 -0
- package/dist/migration/operations/WebvhToBtcoMigration.d.ts +25 -0
- package/dist/migration/operations/WebvhToBtcoMigration.js +67 -0
- package/dist/migration/rollback/RollbackManager.d.ts +29 -0
- package/dist/migration/rollback/RollbackManager.js +146 -0
- package/dist/migration/state/StateMachine.d.ts +25 -0
- package/dist/migration/state/StateMachine.js +76 -0
- package/dist/migration/state/StateTracker.d.ts +36 -0
- package/dist/migration/state/StateTracker.js +123 -0
- package/dist/migration/types.d.ts +306 -0
- package/dist/migration/types.js +33 -0
- package/dist/migration/validation/BitcoinValidator.d.ts +13 -0
- package/dist/migration/validation/BitcoinValidator.js +83 -0
- package/dist/migration/validation/CredentialValidator.d.ts +13 -0
- package/dist/migration/validation/CredentialValidator.js +46 -0
- package/dist/migration/validation/DIDCompatibilityValidator.d.ts +16 -0
- package/dist/migration/validation/DIDCompatibilityValidator.js +127 -0
- package/dist/migration/validation/LifecycleValidator.d.ts +10 -0
- package/dist/migration/validation/LifecycleValidator.js +52 -0
- package/dist/migration/validation/StorageValidator.d.ts +10 -0
- package/dist/migration/validation/StorageValidator.js +65 -0
- package/dist/migration/validation/ValidationPipeline.d.ts +29 -0
- package/dist/migration/validation/ValidationPipeline.js +180 -0
- package/dist/storage/LocalStorageAdapter.d.ts +11 -0
- package/dist/storage/LocalStorageAdapter.js +53 -0
- package/dist/storage/MemoryStorageAdapter.d.ts +6 -0
- package/dist/storage/MemoryStorageAdapter.js +21 -0
- package/dist/storage/StorageAdapter.d.ts +16 -0
- package/dist/storage/StorageAdapter.js +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +2 -0
- package/dist/types/bitcoin.d.ts +84 -0
- package/dist/types/bitcoin.js +1 -0
- package/dist/types/common.d.ts +82 -0
- package/dist/types/common.js +1 -0
- package/dist/types/credentials.d.ts +75 -0
- package/dist/types/credentials.js +1 -0
- package/dist/types/did.d.ts +26 -0
- package/dist/types/did.js +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/network.d.ts +78 -0
- package/dist/types/network.js +145 -0
- package/dist/utils/EventLogger.d.ts +71 -0
- package/dist/utils/EventLogger.js +232 -0
- package/dist/utils/Logger.d.ts +106 -0
- package/dist/utils/Logger.js +257 -0
- package/dist/utils/MetricsCollector.d.ts +110 -0
- package/dist/utils/MetricsCollector.js +264 -0
- package/dist/utils/bitcoin-address.d.ts +38 -0
- package/dist/utils/bitcoin-address.js +113 -0
- package/dist/utils/cbor.d.ts +2 -0
- package/dist/utils/cbor.js +9 -0
- package/dist/utils/encoding.d.ts +37 -0
- package/dist/utils/encoding.js +120 -0
- package/dist/utils/hash.d.ts +1 -0
- package/dist/utils/hash.js +5 -0
- package/dist/utils/retry.d.ts +10 -0
- package/dist/utils/retry.js +35 -0
- package/dist/utils/satoshi-validation.d.ts +60 -0
- package/dist/utils/satoshi-validation.js +156 -0
- package/dist/utils/serialization.d.ts +14 -0
- package/dist/utils/serialization.js +76 -0
- package/dist/utils/telemetry.d.ts +17 -0
- package/dist/utils/telemetry.js +24 -0
- package/dist/utils/validation.d.ts +5 -0
- package/dist/utils/validation.js +98 -0
- package/dist/vc/CredentialManager.d.ts +22 -0
- package/dist/vc/CredentialManager.js +227 -0
- package/dist/vc/Issuer.d.ts +27 -0
- package/dist/vc/Issuer.js +70 -0
- package/dist/vc/Verifier.d.ts +16 -0
- package/dist/vc/Verifier.js +50 -0
- package/dist/vc/cryptosuites/bbs.d.ts +44 -0
- package/dist/vc/cryptosuites/bbs.js +213 -0
- package/dist/vc/cryptosuites/bbsSimple.d.ts +9 -0
- package/dist/vc/cryptosuites/bbsSimple.js +12 -0
- package/dist/vc/cryptosuites/eddsa.d.ts +30 -0
- package/dist/vc/cryptosuites/eddsa.js +81 -0
- package/dist/vc/documentLoader.d.ts +16 -0
- package/dist/vc/documentLoader.js +59 -0
- package/dist/vc/proofs/data-integrity.d.ts +21 -0
- package/dist/vc/proofs/data-integrity.js +15 -0
- package/dist/vc/utils/jsonld.d.ts +2 -0
- package/dist/vc/utils/jsonld.js +15 -0
- package/package.json +79 -0
- package/src/adapters/FeeOracleMock.ts +9 -0
- package/src/adapters/index.ts +5 -0
- package/src/adapters/providers/OrdHttpProvider.ts +126 -0
- package/src/adapters/providers/OrdMockProvider.ts +101 -0
- package/src/adapters/types.ts +66 -0
- package/src/bitcoin/BitcoinManager.ts +330 -0
- package/src/bitcoin/BroadcastClient.ts +54 -0
- package/src/bitcoin/OrdinalsClient.ts +119 -0
- package/src/bitcoin/PSBTBuilder.ts +106 -0
- package/src/bitcoin/fee-calculation.ts +38 -0
- package/src/bitcoin/providers/OrdNodeProvider.ts +92 -0
- package/src/bitcoin/providers/OrdinalsProvider.ts +56 -0
- package/src/bitcoin/providers/types.ts +59 -0
- package/src/bitcoin/transactions/commit.ts +465 -0
- package/src/bitcoin/transactions/index.ts +13 -0
- package/src/bitcoin/transfer.ts +43 -0
- package/src/bitcoin/utxo-selection.ts +322 -0
- package/src/bitcoin/utxo.ts +113 -0
- package/src/contexts/credentials-v1.json +237 -0
- package/src/contexts/credentials-v2-examples.json +5 -0
- package/src/contexts/credentials-v2.json +340 -0
- package/src/contexts/credentials.json +237 -0
- package/src/contexts/data-integrity-v2.json +81 -0
- package/src/contexts/dids.json +58 -0
- package/src/contexts/ed255192020.json +93 -0
- package/src/contexts/ordinals-plus.json +23 -0
- package/src/contexts/originals.json +22 -0
- package/src/core/OriginalsSDK.ts +416 -0
- package/src/crypto/Multikey.ts +194 -0
- package/src/crypto/Signer.ts +254 -0
- package/src/crypto/noble-init.ts +121 -0
- package/src/did/BtcoDidResolver.ts +227 -0
- package/src/did/DIDManager.ts +694 -0
- package/src/did/Ed25519Verifier.ts +68 -0
- package/src/did/KeyManager.ts +236 -0
- package/src/did/WebVHManager.ts +489 -0
- package/src/did/createBtcoDidDocument.ts +59 -0
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +68 -0
- package/src/events/EventEmitter.ts +222 -0
- package/src/events/index.ts +19 -0
- package/src/events/types.ts +331 -0
- package/src/examples/basic-usage.ts +78 -0
- package/src/examples/run.ts +5 -0
- package/src/index.ts +84 -0
- package/src/lifecycle/BatchOperations.ts +373 -0
- package/src/lifecycle/LifecycleManager.ts +1218 -0
- package/src/lifecycle/OriginalsAsset.ts +524 -0
- package/src/lifecycle/ProvenanceQuery.ts +280 -0
- package/src/lifecycle/ResourceVersioning.ts +163 -0
- package/src/migration/MigrationManager.ts +527 -0
- package/src/migration/audit/AuditLogger.ts +176 -0
- package/src/migration/checkpoint/CheckpointManager.ts +112 -0
- package/src/migration/checkpoint/CheckpointStorage.ts +101 -0
- package/src/migration/index.ts +33 -0
- package/src/migration/operations/BaseMigration.ts +126 -0
- package/src/migration/operations/PeerToBtcoMigration.ts +105 -0
- package/src/migration/operations/PeerToWebvhMigration.ts +62 -0
- package/src/migration/operations/WebvhToBtcoMigration.ts +105 -0
- package/src/migration/rollback/RollbackManager.ts +170 -0
- package/src/migration/state/StateMachine.ts +92 -0
- package/src/migration/state/StateTracker.ts +156 -0
- package/src/migration/types.ts +344 -0
- package/src/migration/validation/BitcoinValidator.ts +107 -0
- package/src/migration/validation/CredentialValidator.ts +62 -0
- package/src/migration/validation/DIDCompatibilityValidator.ts +151 -0
- package/src/migration/validation/LifecycleValidator.ts +64 -0
- package/src/migration/validation/StorageValidator.ts +79 -0
- package/src/migration/validation/ValidationPipeline.ts +213 -0
- package/src/storage/LocalStorageAdapter.ts +61 -0
- package/src/storage/MemoryStorageAdapter.ts +29 -0
- package/src/storage/StorageAdapter.ts +25 -0
- package/src/storage/index.ts +3 -0
- package/src/types/bitcoin.ts +98 -0
- package/src/types/common.ts +92 -0
- package/src/types/credentials.ts +88 -0
- package/src/types/did.ts +31 -0
- package/src/types/external-shims.d.ts +53 -0
- package/src/types/index.ts +7 -0
- package/src/types/network.ts +175 -0
- package/src/utils/EventLogger.ts +298 -0
- package/src/utils/Logger.ts +322 -0
- package/src/utils/MetricsCollector.ts +358 -0
- package/src/utils/bitcoin-address.ts +130 -0
- package/src/utils/cbor.ts +12 -0
- package/src/utils/encoding.ts +127 -0
- package/src/utils/hash.ts +6 -0
- package/src/utils/retry.ts +46 -0
- package/src/utils/satoshi-validation.ts +196 -0
- package/src/utils/serialization.ts +96 -0
- package/src/utils/telemetry.ts +40 -0
- package/src/utils/validation.ts +119 -0
- package/src/vc/CredentialManager.ts +273 -0
- package/src/vc/Issuer.ts +100 -0
- package/src/vc/Verifier.ts +47 -0
- package/src/vc/cryptosuites/bbs.ts +253 -0
- package/src/vc/cryptosuites/bbsSimple.ts +21 -0
- package/src/vc/cryptosuites/eddsa.ts +99 -0
- package/src/vc/documentLoader.ts +67 -0
- package/src/vc/proofs/data-integrity.ts +33 -0
- package/src/vc/utils/jsonld.ts +18 -0
- package/test/logs/did_webvh_QmQsRNhXxPSCSeLjpbKYcNMZj8b1kBQAoC6cZmkFAgmpHt_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmSQkpD58qxcqMWHYcEmDUn3wk7hHvJwzYTrZmhh6zjPQ8_example_com_users_alice123_profile.jsonl +1 -0
- package/test/logs/did_webvh_QmTMda6VW3cUPdKk5Yc3onnv1vdgEumvWWdP2noAYFSjeG_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmTkb8KnCYcsnKKDCY4eUQuKQdKJLrCinvhw13v3zETxpE_example_com_users_etc_passwd.jsonl +1 -0
- package/test/logs/did_webvh_QmTn9FdCfpXFDrxHH52pwB4iNrDFVvNDjJ5FQTcDbmM3Fg_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmUCQUi1xjtJjnSQ1XJZgKqcWgErx1v7E2dz4DAPraAyJP_example_com_etc_passwd.jsonl +1 -0
- package/test/logs/did_webvh_QmUENQJCDKBJVRS5BkL6zjaUvcRjkb9xHmy7foCgRjmv3W_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmUPdGyjYBEnQ3aQUkmqyyBKTyjvCP5RZQGiaEDeTtf6dc_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmUoHTuHMWzQM29ZFrE9VLtMxkZ5u869yqee8LwcCLN39M_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmUrnms8G65ggVKsr9oQeWrLUBuGChwQPPb2LCFvaoNxaw_example_com_users_alice.jsonl +1 -0
- package/test/logs/did_webvh_QmUwiw3eSXdHG1hPvoAGu3cuK5jF4aXRYDLBAjPXfv1qzb_example_com_level1_level2.jsonl +1 -0
- package/test/logs/did_webvh_QmW7bzKh6yFEKNAtmVsrPGvvsMHTUQdzJSNsTZkbuGFpbj_example_com_secret.jsonl +1 -0
- package/test/logs/did_webvh_QmXbFTFBBJ8zpjdz9WE1DNN44A2wprFmdvAubjSffeyoAG_example_com.jsonl +1 -0
- package/test/logs/did_webvh_QmXyVXFPCTffGb2mTUFDeMCsScjnpLWkyUkVkB6q6QoeBf_example_com_C_Windows_System32.jsonl +1 -0
- package/test/logs/did_webvh_QmZK9B81gxZtvo5fYHYKDtKt8zZfZZPhmCMhbujBJuRRzE_example_com_etc_passwd.jsonl +1 -0
- package/test/logs/did_webvh_QmbNLCVSdXSVLrwFBvCBQPAabjtRb1SGHjkGVyw3QUbfBL_example_com_users_etc_passwd.jsonl +1 -0
- package/test/logs/did_webvh_QmbeaicmGW3Q7Yzbqmftc8a9jLBngokveb5A2KVKfVGZRb_example_com_my_org_user_name_test_123.jsonl +1 -0
- package/test/logs/did_webvh_Qmdv7c7AjUreUfoKyvkN2UpAWTozxKsv99srQetPJMJEnp_example_com_users_etc_passwd.jsonl +1 -0
- package/test/logs/did_webvh_QmeioWY3uypYLkYpCXe9eCYnn4xBVruP9C1d79azMrTEHG_example_com.jsonl +1 -0
- package/test/logs/did_webvh_Qmf4QH5dsA6Ecr5HJ6KaJL9uJRyY8RxrQdqoRCM25DzvPi_example_com_users_alice.jsonl +1 -0
- package/tests/__mocks__/bbs-signatures.js +17 -0
- package/tests/__mocks__/mf-base58.js +24 -0
- package/tests/e2e/README.md +97 -0
- package/tests/e2e/example.spec.ts +78 -0
- package/tests/fixtures/did-documents.ts +247 -0
- package/tests/index.test.ts +21 -0
- package/tests/integration/BatchOperations.test.ts +531 -0
- package/tests/integration/CompleteLifecycle.e2e.test.ts +735 -0
- package/tests/integration/CredentialManager.test.ts +42 -0
- package/tests/integration/DIDManager.test.ts +41 -0
- package/tests/integration/DidPeerToWebVhFlow.test.ts +351 -0
- package/tests/integration/Events.test.ts +435 -0
- package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +25 -0
- package/tests/integration/LifecycleManager.test.ts +21 -0
- package/tests/integration/MultikeyFlow.test.ts +52 -0
- package/tests/integration/TelemetryIntegration.test.ts +395 -0
- package/tests/integration/WebVhPublish.test.ts +48 -0
- package/tests/integration/migration/peer-to-webvh.test.ts +172 -0
- package/tests/manual/test-commit-creation.ts +323 -0
- package/tests/mocks/MockKeyStore.ts +38 -0
- package/tests/mocks/adapters/MemoryStorageAdapter.ts +24 -0
- package/tests/mocks/adapters/MockFeeOracle.ts +11 -0
- package/tests/mocks/adapters/MockOrdinalsProvider.ts +76 -0
- package/tests/mocks/adapters/OrdMockProvider.test.ts +176 -0
- package/tests/mocks/adapters/index.ts +6 -0
- package/tests/performance/BatchOperations.perf.test.ts +403 -0
- package/tests/performance/logging.perf.test.ts +336 -0
- package/tests/sdk.test.ts +43 -0
- package/tests/security/bitcoin-penetration-tests.test.ts +622 -0
- package/tests/setup.bun.ts +69 -0
- package/tests/setup.jest.ts +23 -0
- package/tests/stress/batch-operations-stress.test.ts +571 -0
- package/tests/unit/adapters/FeeOracleMock.test.ts +40 -0
- package/tests/unit/bitcoin/BitcoinManager.test.ts +293 -0
- package/tests/unit/bitcoin/BroadcastClient.test.ts +52 -0
- package/tests/unit/bitcoin/OrdNodeProvider.test.ts +53 -0
- package/tests/unit/bitcoin/OrdinalsClient.test.ts +381 -0
- package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +102 -0
- package/tests/unit/bitcoin/PSBTBuilder.test.ts +84 -0
- package/tests/unit/bitcoin/fee-calculation.test.ts +261 -0
- package/tests/unit/bitcoin/transactions/commit.test.ts +649 -0
- package/tests/unit/bitcoin/transfer.test.ts +31 -0
- package/tests/unit/bitcoin/utxo-selection-new.test.ts +502 -0
- package/tests/unit/bitcoin/utxo.more.test.ts +39 -0
- package/tests/unit/bitcoin/utxo.selection.test.ts +38 -0
- package/tests/unit/core/OriginalsSDK.test.ts +152 -0
- package/tests/unit/crypto/Multikey.test.ts +206 -0
- package/tests/unit/crypto/Signer.test.ts +408 -0
- package/tests/unit/did/BtcoDidResolver.test.ts +611 -0
- package/tests/unit/did/DIDManager.more.test.ts +43 -0
- package/tests/unit/did/DIDManager.test.ts +185 -0
- package/tests/unit/did/Ed25519Verifier.test.ts +160 -0
- package/tests/unit/did/KeyManager.test.ts +452 -0
- package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +45 -0
- package/tests/unit/did/WebVHManager.test.ts +435 -0
- package/tests/unit/did/createBtcoDidDocument.test.ts +67 -0
- package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +159 -0
- package/tests/unit/events/EventEmitter.test.ts +407 -0
- package/tests/unit/lifecycle/BatchOperations.test.ts +527 -0
- package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +312 -0
- package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +18 -0
- package/tests/unit/lifecycle/LifecycleManager.test.ts +213 -0
- package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +30 -0
- package/tests/unit/lifecycle/OriginalsAsset.test.ts +176 -0
- package/tests/unit/lifecycle/ProvenanceQuery.test.ts +577 -0
- package/tests/unit/lifecycle/ResourceVersioning.test.ts +651 -0
- package/tests/unit/storage/MemoryStorageAdapter.test.ts +93 -0
- package/tests/unit/types/network.test.ts +255 -0
- package/tests/unit/utils/EventIntegration.test.ts +384 -0
- package/tests/unit/utils/Logger.test.ts +473 -0
- package/tests/unit/utils/MetricsCollector.test.ts +358 -0
- package/tests/unit/utils/bitcoin-address.test.ts +250 -0
- package/tests/unit/utils/cbor.test.ts +35 -0
- package/tests/unit/utils/encoding.test.ts +318 -0
- package/tests/unit/utils/hash.test.ts +12 -0
- package/tests/unit/utils/retry.test.ts +100 -0
- package/tests/unit/utils/satoshi-validation.test.ts +354 -0
- package/tests/unit/utils/serialization.test.ts +124 -0
- package/tests/unit/utils/telemetry.test.ts +52 -0
- package/tests/unit/utils/validation.test.ts +141 -0
- package/tests/unit/vc/CredentialManager.test.ts +487 -0
- package/tests/unit/vc/Issuer.test.ts +107 -0
- package/tests/unit/vc/Verifier.test.ts +525 -0
- package/tests/unit/vc/bbs.test.ts +282 -0
- package/tests/unit/vc/cryptosuites/eddsa.test.ts +398 -0
- package/tests/unit/vc/documentLoader.test.ts +121 -0
- package/tests/unit/vc/proofs/data-integrity.test.ts +24 -0
- package/tsconfig.json +32 -0
- package/tsconfig.test.json +15 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration system types and interfaces
|
|
3
|
+
* Defines all types used across the migration infrastructure
|
|
4
|
+
*/
|
|
5
|
+
import { DIDDocument, VerifiableCredential } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* DID layer types
|
|
8
|
+
*/
|
|
9
|
+
export type DIDLayer = 'peer' | 'webvh' | 'btco';
|
|
10
|
+
/**
|
|
11
|
+
* Migration state enum
|
|
12
|
+
*/
|
|
13
|
+
export declare enum MigrationStateEnum {
|
|
14
|
+
PENDING = "pending",// Migration queued
|
|
15
|
+
VALIDATING = "validating",// Running validation pipeline
|
|
16
|
+
CHECKPOINTED = "checkpointed",// Checkpoint created
|
|
17
|
+
IN_PROGRESS = "in_progress",// Active migration
|
|
18
|
+
ANCHORING = "anchoring",// Bitcoin anchoring (btco only)
|
|
19
|
+
COMPLETED = "completed",// Successfully completed
|
|
20
|
+
FAILED = "failed",// Failed, rollback initiated
|
|
21
|
+
ROLLED_BACK = "rolled_back",// Rolled back successfully
|
|
22
|
+
QUARANTINED = "quarantined"
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Migration error types
|
|
26
|
+
*/
|
|
27
|
+
export declare enum MigrationErrorType {
|
|
28
|
+
VALIDATION_ERROR = "validation_error",// Pre-migration validation failed
|
|
29
|
+
STORAGE_ERROR = "storage_error",// Storage adapter failure
|
|
30
|
+
BITCOIN_ERROR = "bitcoin_error",// Bitcoin anchoring failed
|
|
31
|
+
CREDENTIAL_ERROR = "credential_error",// Credential re-issuance failed
|
|
32
|
+
NETWORK_ERROR = "network_error",// Network/connectivity failure
|
|
33
|
+
ROLLBACK_ERROR = "rollback_error",// Rollback failed (critical)
|
|
34
|
+
TIMEOUT_ERROR = "timeout_error",// Operation timeout
|
|
35
|
+
UNKNOWN_ERROR = "unknown_error"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Migration options for initiating a migration
|
|
39
|
+
*/
|
|
40
|
+
export interface MigrationOptions {
|
|
41
|
+
sourceDid: string;
|
|
42
|
+
targetLayer: DIDLayer;
|
|
43
|
+
credentialIssuance?: boolean;
|
|
44
|
+
batchMode?: boolean;
|
|
45
|
+
partialMode?: {
|
|
46
|
+
chunkSize: number;
|
|
47
|
+
resumable: boolean;
|
|
48
|
+
};
|
|
49
|
+
estimateCostOnly?: boolean;
|
|
50
|
+
metadata?: Record<string, any>;
|
|
51
|
+
domain?: string;
|
|
52
|
+
satoshi?: string;
|
|
53
|
+
feeRate?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Batch migration options
|
|
57
|
+
*/
|
|
58
|
+
export interface BatchMigrationOptions extends MigrationOptions {
|
|
59
|
+
maxConcurrent?: number;
|
|
60
|
+
continueOnError?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Cost estimate for a migration
|
|
64
|
+
*/
|
|
65
|
+
export interface CostEstimate {
|
|
66
|
+
storageCost: number;
|
|
67
|
+
networkFees: number;
|
|
68
|
+
totalCost: number;
|
|
69
|
+
currency: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Validation error
|
|
73
|
+
*/
|
|
74
|
+
export interface ValidationError {
|
|
75
|
+
code: string;
|
|
76
|
+
message: string;
|
|
77
|
+
field?: string;
|
|
78
|
+
details?: any;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validation warning
|
|
82
|
+
*/
|
|
83
|
+
export interface ValidationWarning {
|
|
84
|
+
code: string;
|
|
85
|
+
message: string;
|
|
86
|
+
field?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Migration validation result
|
|
90
|
+
*/
|
|
91
|
+
export interface MigrationValidationResult {
|
|
92
|
+
valid: boolean;
|
|
93
|
+
errors: ValidationError[];
|
|
94
|
+
warnings: ValidationWarning[];
|
|
95
|
+
estimatedCost: CostEstimate;
|
|
96
|
+
estimatedDuration: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Migration checkpoint data
|
|
100
|
+
*/
|
|
101
|
+
export interface MigrationCheckpoint {
|
|
102
|
+
checkpointId?: string;
|
|
103
|
+
migrationId: string;
|
|
104
|
+
timestamp: number;
|
|
105
|
+
sourceDid: string;
|
|
106
|
+
sourceLayer: DIDLayer;
|
|
107
|
+
didDocument: DIDDocument;
|
|
108
|
+
credentials: VerifiableCredential[];
|
|
109
|
+
storageReferences: Record<string, any>;
|
|
110
|
+
lifecycleState: any;
|
|
111
|
+
ownershipProofs: any[];
|
|
112
|
+
metadata: Record<string, any>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Rollback result
|
|
116
|
+
*/
|
|
117
|
+
export interface RollbackResult {
|
|
118
|
+
success: boolean;
|
|
119
|
+
migrationId: string;
|
|
120
|
+
checkpointId?: string;
|
|
121
|
+
restoredState: MigrationStateEnum;
|
|
122
|
+
duration: number;
|
|
123
|
+
errors?: MigrationError[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Migration state tracking
|
|
127
|
+
*/
|
|
128
|
+
export interface MigrationState {
|
|
129
|
+
migrationId: string;
|
|
130
|
+
state: MigrationStateEnum;
|
|
131
|
+
sourceDid: string;
|
|
132
|
+
sourceLayer: DIDLayer;
|
|
133
|
+
targetDid?: string;
|
|
134
|
+
targetLayer: DIDLayer;
|
|
135
|
+
progress: number;
|
|
136
|
+
currentOperation: string;
|
|
137
|
+
startTime: number;
|
|
138
|
+
endTime?: number;
|
|
139
|
+
error?: MigrationError;
|
|
140
|
+
checkpointId?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Migration error details
|
|
144
|
+
*/
|
|
145
|
+
export interface MigrationError {
|
|
146
|
+
type: MigrationErrorType;
|
|
147
|
+
code: string;
|
|
148
|
+
message: string;
|
|
149
|
+
technicalDetails?: string;
|
|
150
|
+
suggestedRecovery?: string;
|
|
151
|
+
migrationId?: string;
|
|
152
|
+
sourceDid?: string;
|
|
153
|
+
targetDid?: string;
|
|
154
|
+
timestamp: number;
|
|
155
|
+
stack?: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Migration audit record
|
|
159
|
+
*/
|
|
160
|
+
export interface MigrationAuditRecord {
|
|
161
|
+
migrationId: string;
|
|
162
|
+
timestamp: number;
|
|
163
|
+
initiator: string;
|
|
164
|
+
sourceDid: string;
|
|
165
|
+
sourceLayer: DIDLayer;
|
|
166
|
+
targetDid: string | null;
|
|
167
|
+
targetLayer: DIDLayer;
|
|
168
|
+
finalState: MigrationStateEnum;
|
|
169
|
+
validationResults: MigrationValidationResult;
|
|
170
|
+
costActual: CostEstimate;
|
|
171
|
+
duration: number;
|
|
172
|
+
checkpointId?: string;
|
|
173
|
+
errors: MigrationError[];
|
|
174
|
+
metadata: Record<string, any>;
|
|
175
|
+
signature?: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Migration result
|
|
179
|
+
*/
|
|
180
|
+
export interface MigrationResult {
|
|
181
|
+
migrationId: string;
|
|
182
|
+
success: boolean;
|
|
183
|
+
sourceDid: string;
|
|
184
|
+
targetDid?: string;
|
|
185
|
+
sourceLayer: DIDLayer;
|
|
186
|
+
targetLayer: DIDLayer;
|
|
187
|
+
state: MigrationStateEnum;
|
|
188
|
+
duration: number;
|
|
189
|
+
cost: CostEstimate;
|
|
190
|
+
auditRecord?: MigrationAuditRecord;
|
|
191
|
+
error?: MigrationError;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Batch migration result
|
|
195
|
+
*/
|
|
196
|
+
export interface BatchMigrationResult {
|
|
197
|
+
batchId: string;
|
|
198
|
+
total: number;
|
|
199
|
+
completed: number;
|
|
200
|
+
failed: number;
|
|
201
|
+
inProgress: number;
|
|
202
|
+
results: Map<string, MigrationResult>;
|
|
203
|
+
overallProgress: number;
|
|
204
|
+
startTime: number;
|
|
205
|
+
endTime?: number;
|
|
206
|
+
errors: MigrationError[];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Partial migration progress
|
|
210
|
+
*/
|
|
211
|
+
export interface PartialMigrationProgress {
|
|
212
|
+
totalChunks: number;
|
|
213
|
+
completedChunks: number;
|
|
214
|
+
currentChunk: number;
|
|
215
|
+
bytesTransferred: number;
|
|
216
|
+
totalBytes: number;
|
|
217
|
+
percentComplete: number;
|
|
218
|
+
estimatedTimeRemaining: number;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Migration event types
|
|
222
|
+
*/
|
|
223
|
+
export type MigrationEventType = 'migration:started' | 'migration:validated' | 'migration:checkpointed' | 'migration:in_progress' | 'migration:anchoring' | 'migration:completed' | 'migration:failed' | 'migration:rolledback' | 'migration:quarantine' | 'batch:progress';
|
|
224
|
+
/**
|
|
225
|
+
* Migration event payload
|
|
226
|
+
*/
|
|
227
|
+
export interface MigrationEvent {
|
|
228
|
+
type: MigrationEventType;
|
|
229
|
+
migrationId: string;
|
|
230
|
+
timestamp: number;
|
|
231
|
+
state: MigrationStateEnum;
|
|
232
|
+
data?: any;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Storage migration context
|
|
236
|
+
*/
|
|
237
|
+
export interface StorageMigrationContext {
|
|
238
|
+
sourceDid: string;
|
|
239
|
+
targetDid: string;
|
|
240
|
+
sourceLayer: DIDLayer;
|
|
241
|
+
targetLayer: DIDLayer;
|
|
242
|
+
resources: Array<{
|
|
243
|
+
id: string;
|
|
244
|
+
hash: string;
|
|
245
|
+
contentType: string;
|
|
246
|
+
size: number;
|
|
247
|
+
url?: string;
|
|
248
|
+
}>;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Bitcoin anchoring context
|
|
252
|
+
*/
|
|
253
|
+
export interface BitcoinAnchoringContext {
|
|
254
|
+
didDocument: DIDDocument;
|
|
255
|
+
migrationMetadata: Record<string, any>;
|
|
256
|
+
network: 'mainnet' | 'testnet' | 'signet';
|
|
257
|
+
feeRate?: number;
|
|
258
|
+
satoshi?: string;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Lifecycle migration context
|
|
262
|
+
*/
|
|
263
|
+
export interface LifecycleMigrationContext {
|
|
264
|
+
sourceDid: string;
|
|
265
|
+
targetDid: string;
|
|
266
|
+
currentState: any;
|
|
267
|
+
eventHistory: any[];
|
|
268
|
+
migrationId: string;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Validator interface
|
|
272
|
+
*/
|
|
273
|
+
export interface IValidator {
|
|
274
|
+
validate(options: MigrationOptions): Promise<MigrationValidationResult>;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Checkpoint manager interface
|
|
278
|
+
*/
|
|
279
|
+
export interface ICheckpointManager {
|
|
280
|
+
createCheckpoint(migrationId: string, options: MigrationOptions): Promise<MigrationCheckpoint>;
|
|
281
|
+
getCheckpoint(checkpointId: string): Promise<MigrationCheckpoint | null>;
|
|
282
|
+
deleteCheckpoint(checkpointId: string): Promise<void>;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Rollback manager interface
|
|
286
|
+
*/
|
|
287
|
+
export interface IRollbackManager {
|
|
288
|
+
rollback(migrationId: string, checkpointId: string): Promise<RollbackResult>;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* State tracker interface
|
|
292
|
+
*/
|
|
293
|
+
export interface IStateTracker {
|
|
294
|
+
createMigration(options: MigrationOptions): Promise<MigrationState>;
|
|
295
|
+
updateState(migrationId: string, updates: Partial<MigrationState>): Promise<void>;
|
|
296
|
+
getState(migrationId: string): Promise<MigrationState | null>;
|
|
297
|
+
queryStates(filters: Partial<MigrationState>): Promise<MigrationState[]>;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Audit logger interface
|
|
301
|
+
*/
|
|
302
|
+
export interface IAuditLogger {
|
|
303
|
+
logMigration(record: MigrationAuditRecord): Promise<void>;
|
|
304
|
+
getMigrationHistory(did: string): Promise<MigrationAuditRecord[]>;
|
|
305
|
+
getSystemMigrationLogs(filters: any): Promise<MigrationAuditRecord[]>;
|
|
306
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration system types and interfaces
|
|
3
|
+
* Defines all types used across the migration infrastructure
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Migration state enum
|
|
7
|
+
*/
|
|
8
|
+
export var MigrationStateEnum;
|
|
9
|
+
(function (MigrationStateEnum) {
|
|
10
|
+
MigrationStateEnum["PENDING"] = "pending";
|
|
11
|
+
MigrationStateEnum["VALIDATING"] = "validating";
|
|
12
|
+
MigrationStateEnum["CHECKPOINTED"] = "checkpointed";
|
|
13
|
+
MigrationStateEnum["IN_PROGRESS"] = "in_progress";
|
|
14
|
+
MigrationStateEnum["ANCHORING"] = "anchoring";
|
|
15
|
+
MigrationStateEnum["COMPLETED"] = "completed";
|
|
16
|
+
MigrationStateEnum["FAILED"] = "failed";
|
|
17
|
+
MigrationStateEnum["ROLLED_BACK"] = "rolled_back";
|
|
18
|
+
MigrationStateEnum["QUARANTINED"] = "quarantined"; // Rollback failed, needs manual intervention
|
|
19
|
+
})(MigrationStateEnum || (MigrationStateEnum = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Migration error types
|
|
22
|
+
*/
|
|
23
|
+
export var MigrationErrorType;
|
|
24
|
+
(function (MigrationErrorType) {
|
|
25
|
+
MigrationErrorType["VALIDATION_ERROR"] = "validation_error";
|
|
26
|
+
MigrationErrorType["STORAGE_ERROR"] = "storage_error";
|
|
27
|
+
MigrationErrorType["BITCOIN_ERROR"] = "bitcoin_error";
|
|
28
|
+
MigrationErrorType["CREDENTIAL_ERROR"] = "credential_error";
|
|
29
|
+
MigrationErrorType["NETWORK_ERROR"] = "network_error";
|
|
30
|
+
MigrationErrorType["ROLLBACK_ERROR"] = "rollback_error";
|
|
31
|
+
MigrationErrorType["TIMEOUT_ERROR"] = "timeout_error";
|
|
32
|
+
MigrationErrorType["UNKNOWN_ERROR"] = "unknown_error"; // Unexpected error
|
|
33
|
+
})(MigrationErrorType || (MigrationErrorType = {}));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BitcoinValidator - Validates Bitcoin network requirements for btco migrations
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
|
|
5
|
+
import { OriginalsConfig } from '../../types';
|
|
6
|
+
import { BitcoinManager } from '../../bitcoin/BitcoinManager';
|
|
7
|
+
export declare class BitcoinValidator implements IValidator {
|
|
8
|
+
private config;
|
|
9
|
+
private bitcoinManager;
|
|
10
|
+
constructor(config: OriginalsConfig, bitcoinManager: BitcoinManager);
|
|
11
|
+
validate(options: MigrationOptions): Promise<MigrationValidationResult>;
|
|
12
|
+
private createResult;
|
|
13
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BitcoinValidator - Validates Bitcoin network requirements for btco migrations
|
|
3
|
+
*/
|
|
4
|
+
export class BitcoinValidator {
|
|
5
|
+
constructor(config, bitcoinManager) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.bitcoinManager = bitcoinManager;
|
|
8
|
+
}
|
|
9
|
+
async validate(options) {
|
|
10
|
+
const errors = [];
|
|
11
|
+
const warnings = [];
|
|
12
|
+
try {
|
|
13
|
+
// Only validate for btco migrations
|
|
14
|
+
if (options.targetLayer !== 'btco') {
|
|
15
|
+
return this.createResult(true, errors, warnings, 0, 0);
|
|
16
|
+
}
|
|
17
|
+
// Check if Bitcoin provider is configured
|
|
18
|
+
const ordinalsProvider = this.config.ordinalsProvider;
|
|
19
|
+
if (!ordinalsProvider) {
|
|
20
|
+
errors.push({
|
|
21
|
+
code: 'BITCOIN_PROVIDER_REQUIRED',
|
|
22
|
+
message: 'Ordinals provider is required for btco migrations',
|
|
23
|
+
details: { targetLayer: options.targetLayer }
|
|
24
|
+
});
|
|
25
|
+
return this.createResult(false, errors, warnings, 0, 0);
|
|
26
|
+
}
|
|
27
|
+
// Estimate Bitcoin network fees
|
|
28
|
+
let networkFees = 0;
|
|
29
|
+
let estimatedDuration = 600000; // 10 minutes default
|
|
30
|
+
try {
|
|
31
|
+
// Estimate fee for a typical inscription (assume 1KB data)
|
|
32
|
+
const estimatedSize = 1024; // bytes
|
|
33
|
+
const feeRate = options.feeRate || 10; // sats/vB
|
|
34
|
+
networkFees = estimatedSize * feeRate;
|
|
35
|
+
// Check if fee is within reasonable limits
|
|
36
|
+
if (feeRate > 1000) {
|
|
37
|
+
warnings.push({
|
|
38
|
+
code: 'HIGH_FEE_RATE',
|
|
39
|
+
message: `Fee rate of ${feeRate} sat/vB is unusually high`,
|
|
40
|
+
field: 'feeRate'
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
warnings.push({
|
|
46
|
+
code: 'FEE_ESTIMATION_FAILED',
|
|
47
|
+
message: `Could not estimate Bitcoin network fees: ${error instanceof Error ? error.message : String(error)}`
|
|
48
|
+
});
|
|
49
|
+
networkFees = 10240; // Default fallback: ~1KB at 10 sat/vB
|
|
50
|
+
}
|
|
51
|
+
// Validate network (should be signet for testnet)
|
|
52
|
+
if (this.config.network !== 'mainnet' && this.config.network !== 'signet') {
|
|
53
|
+
warnings.push({
|
|
54
|
+
code: 'NETWORK_MISMATCH',
|
|
55
|
+
message: `Network '${this.config.network}' will use signet for Bitcoin anchoring`
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return this.createResult(true, errors, warnings, networkFees, estimatedDuration);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
errors.push({
|
|
62
|
+
code: 'BITCOIN_VALIDATION_ERROR',
|
|
63
|
+
message: 'Error validating Bitcoin requirements',
|
|
64
|
+
details: { error: error instanceof Error ? error.message : String(error) }
|
|
65
|
+
});
|
|
66
|
+
return this.createResult(false, errors, warnings, 0, 0);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
createResult(valid, errors, warnings, networkFees, duration) {
|
|
70
|
+
return {
|
|
71
|
+
valid,
|
|
72
|
+
errors,
|
|
73
|
+
warnings,
|
|
74
|
+
estimatedCost: {
|
|
75
|
+
storageCost: 0,
|
|
76
|
+
networkFees,
|
|
77
|
+
totalCost: networkFees,
|
|
78
|
+
currency: 'sats'
|
|
79
|
+
},
|
|
80
|
+
estimatedDuration: duration
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CredentialValidator - Validates credential compatibility for migration
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
|
|
5
|
+
import { OriginalsConfig } from '../../types';
|
|
6
|
+
import { CredentialManager } from '../../vc/CredentialManager';
|
|
7
|
+
export declare class CredentialValidator implements IValidator {
|
|
8
|
+
private config;
|
|
9
|
+
private credentialManager;
|
|
10
|
+
constructor(config: OriginalsConfig, credentialManager: CredentialManager);
|
|
11
|
+
validate(options: MigrationOptions): Promise<MigrationValidationResult>;
|
|
12
|
+
private createResult;
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CredentialValidator - Validates credential compatibility for migration
|
|
3
|
+
*/
|
|
4
|
+
export class CredentialValidator {
|
|
5
|
+
constructor(config, credentialManager) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.credentialManager = credentialManager;
|
|
8
|
+
}
|
|
9
|
+
async validate(options) {
|
|
10
|
+
const errors = [];
|
|
11
|
+
const warnings = [];
|
|
12
|
+
try {
|
|
13
|
+
// Credential validation is optional if credentialIssuance is false
|
|
14
|
+
if (options.credentialIssuance === false) {
|
|
15
|
+
return this.createResult(true, errors, warnings);
|
|
16
|
+
}
|
|
17
|
+
// All credential types are compatible with all layers
|
|
18
|
+
// This validator primarily checks that credential issuance is possible
|
|
19
|
+
// For now, credentials are always compatible
|
|
20
|
+
// Future enhancements could include schema validation
|
|
21
|
+
return this.createResult(true, errors, warnings);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
errors.push({
|
|
25
|
+
code: 'CREDENTIAL_VALIDATION_ERROR',
|
|
26
|
+
message: 'Error validating credential compatibility',
|
|
27
|
+
details: { error: error instanceof Error ? error.message : String(error) }
|
|
28
|
+
});
|
|
29
|
+
return this.createResult(false, errors, warnings);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
createResult(valid, errors, warnings) {
|
|
33
|
+
return {
|
|
34
|
+
valid,
|
|
35
|
+
errors,
|
|
36
|
+
warnings,
|
|
37
|
+
estimatedCost: {
|
|
38
|
+
storageCost: 0,
|
|
39
|
+
networkFees: 0,
|
|
40
|
+
totalCost: 0,
|
|
41
|
+
currency: 'sats'
|
|
42
|
+
},
|
|
43
|
+
estimatedDuration: 50 // Credential validation typically takes ~50ms
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DIDCompatibilityValidator - Validates DID document compatibility between layers
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
|
|
5
|
+
import { OriginalsConfig } from '../../types';
|
|
6
|
+
import { DIDManager } from '../../did/DIDManager';
|
|
7
|
+
export declare class DIDCompatibilityValidator implements IValidator {
|
|
8
|
+
private config;
|
|
9
|
+
private didManager;
|
|
10
|
+
constructor(config: OriginalsConfig, didManager: DIDManager);
|
|
11
|
+
validate(options: MigrationOptions): Promise<MigrationValidationResult>;
|
|
12
|
+
private extractLayer;
|
|
13
|
+
private validateMigrationPath;
|
|
14
|
+
private isVerificationMethodCompatible;
|
|
15
|
+
private createResult;
|
|
16
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DIDCompatibilityValidator - Validates DID document compatibility between layers
|
|
3
|
+
*/
|
|
4
|
+
export class DIDCompatibilityValidator {
|
|
5
|
+
constructor(config, didManager) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.didManager = didManager;
|
|
8
|
+
}
|
|
9
|
+
async validate(options) {
|
|
10
|
+
const errors = [];
|
|
11
|
+
const warnings = [];
|
|
12
|
+
try {
|
|
13
|
+
// Resolve source DID
|
|
14
|
+
const sourceDid = await this.didManager.resolveDID(options.sourceDid);
|
|
15
|
+
if (!sourceDid) {
|
|
16
|
+
errors.push({
|
|
17
|
+
code: 'SOURCE_DID_NOT_FOUND',
|
|
18
|
+
message: `Could not resolve source DID: ${options.sourceDid}`,
|
|
19
|
+
field: 'sourceDid'
|
|
20
|
+
});
|
|
21
|
+
return this.createResult(false, errors, warnings);
|
|
22
|
+
}
|
|
23
|
+
// Extract source layer from DID
|
|
24
|
+
const sourceLayer = this.extractLayer(options.sourceDid);
|
|
25
|
+
if (!sourceLayer) {
|
|
26
|
+
errors.push({
|
|
27
|
+
code: 'INVALID_SOURCE_DID_FORMAT',
|
|
28
|
+
message: 'Source DID has unsupported format',
|
|
29
|
+
field: 'sourceDid',
|
|
30
|
+
details: { did: options.sourceDid }
|
|
31
|
+
});
|
|
32
|
+
return this.createResult(false, errors, warnings);
|
|
33
|
+
}
|
|
34
|
+
// Validate migration path
|
|
35
|
+
const pathErrors = this.validateMigrationPath(sourceLayer, options.targetLayer);
|
|
36
|
+
errors.push(...pathErrors);
|
|
37
|
+
if (errors.length > 0) {
|
|
38
|
+
return this.createResult(false, errors, warnings);
|
|
39
|
+
}
|
|
40
|
+
// Validate verification methods compatibility
|
|
41
|
+
if (sourceDid.verificationMethod && Array.isArray(sourceDid.verificationMethod)) {
|
|
42
|
+
for (const vm of sourceDid.verificationMethod) {
|
|
43
|
+
if (!this.isVerificationMethodCompatible(vm, options.targetLayer)) {
|
|
44
|
+
warnings.push({
|
|
45
|
+
code: 'VERIFICATION_METHOD_INCOMPATIBLE',
|
|
46
|
+
message: `Verification method ${vm.id} may not be compatible with ${options.targetLayer}`,
|
|
47
|
+
field: 'verificationMethod'
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Validate service endpoints
|
|
53
|
+
if (sourceDid.service && Array.isArray(sourceDid.service)) {
|
|
54
|
+
if (options.targetLayer === 'peer' && sourceDid.service.length > 0) {
|
|
55
|
+
warnings.push({
|
|
56
|
+
code: 'SERVICE_ENDPOINTS_ON_PEER',
|
|
57
|
+
message: 'Service endpoints on peer DIDs may have limited discoverability'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return this.createResult(true, errors, warnings);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
errors.push({
|
|
65
|
+
code: 'DID_VALIDATION_ERROR',
|
|
66
|
+
message: 'Error validating DID compatibility',
|
|
67
|
+
details: { error: error instanceof Error ? error.message : String(error) }
|
|
68
|
+
});
|
|
69
|
+
return this.createResult(false, errors, warnings);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
extractLayer(did) {
|
|
73
|
+
if (did.startsWith('did:peer:'))
|
|
74
|
+
return 'peer';
|
|
75
|
+
if (did.startsWith('did:webvh:'))
|
|
76
|
+
return 'webvh';
|
|
77
|
+
if (did.startsWith('did:btco:'))
|
|
78
|
+
return 'btco';
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
validateMigrationPath(sourceLayer, targetLayer) {
|
|
82
|
+
const errors = [];
|
|
83
|
+
// Check for invalid reverse migrations
|
|
84
|
+
const layerOrder = { peer: 0, webvh: 1, btco: 2 };
|
|
85
|
+
const sourceOrder = layerOrder[sourceLayer];
|
|
86
|
+
const targetOrder = layerOrder[targetLayer];
|
|
87
|
+
if (sourceOrder === undefined || targetOrder === undefined) {
|
|
88
|
+
errors.push({
|
|
89
|
+
code: 'INVALID_LAYER',
|
|
90
|
+
message: 'Invalid source or target layer',
|
|
91
|
+
details: { sourceLayer, targetLayer }
|
|
92
|
+
});
|
|
93
|
+
return errors;
|
|
94
|
+
}
|
|
95
|
+
if (sourceOrder >= targetOrder) {
|
|
96
|
+
errors.push({
|
|
97
|
+
code: 'INVALID_MIGRATION_PATH',
|
|
98
|
+
message: `Cannot migrate from ${sourceLayer} to ${targetLayer}. Migrations must move forward through layers (peer → webvh → btco)`,
|
|
99
|
+
details: { sourceLayer, targetLayer }
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return errors;
|
|
103
|
+
}
|
|
104
|
+
isVerificationMethodCompatible(vm, targetLayer) {
|
|
105
|
+
// All verification method types are compatible with all layers
|
|
106
|
+
// This is a placeholder for more sophisticated compatibility checks
|
|
107
|
+
if (!vm.type)
|
|
108
|
+
return false;
|
|
109
|
+
// Common types that are widely supported
|
|
110
|
+
const supportedTypes = ['Multikey', 'Ed25519VerificationKey2020', 'EcdsaSecp256k1VerificationKey2019'];
|
|
111
|
+
return supportedTypes.includes(vm.type);
|
|
112
|
+
}
|
|
113
|
+
createResult(valid, errors, warnings) {
|
|
114
|
+
return {
|
|
115
|
+
valid,
|
|
116
|
+
errors,
|
|
117
|
+
warnings,
|
|
118
|
+
estimatedCost: {
|
|
119
|
+
storageCost: 0,
|
|
120
|
+
networkFees: 0,
|
|
121
|
+
totalCost: 0,
|
|
122
|
+
currency: 'sats'
|
|
123
|
+
},
|
|
124
|
+
estimatedDuration: 100 // DID validation typically takes ~100ms
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LifecycleValidator - Validates lifecycle state transitions
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
|
|
5
|
+
import { OriginalsConfig } from '../../types';
|
|
6
|
+
export declare class LifecycleValidator implements IValidator {
|
|
7
|
+
private config;
|
|
8
|
+
constructor(config: OriginalsConfig);
|
|
9
|
+
validate(options: MigrationOptions): Promise<MigrationValidationResult>;
|
|
10
|
+
}
|