@originals/sdk 1.4.2 → 1.4.3
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/package.json +4 -1
- package/.eslintrc.json +0 -33
- package/src/adapters/FeeOracleMock.ts +0 -9
- package/src/adapters/index.ts +0 -5
- package/src/adapters/providers/OrdHttpProvider.ts +0 -126
- package/src/adapters/providers/OrdMockProvider.ts +0 -101
- package/src/adapters/types.ts +0 -66
- package/src/bitcoin/BitcoinManager.ts +0 -330
- package/src/bitcoin/BroadcastClient.ts +0 -54
- package/src/bitcoin/OrdinalsClient.ts +0 -119
- package/src/bitcoin/PSBTBuilder.ts +0 -106
- package/src/bitcoin/fee-calculation.ts +0 -38
- package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
- package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
- package/src/bitcoin/providers/types.ts +0 -59
- package/src/bitcoin/transactions/commit.ts +0 -465
- package/src/bitcoin/transactions/index.ts +0 -13
- package/src/bitcoin/transfer.ts +0 -43
- package/src/bitcoin/utxo-selection.ts +0 -322
- package/src/bitcoin/utxo.ts +0 -113
- package/src/contexts/credentials-v1.json +0 -237
- package/src/contexts/credentials-v2-examples.json +0 -5
- package/src/contexts/credentials-v2.json +0 -340
- package/src/contexts/credentials.json +0 -237
- package/src/contexts/data-integrity-v2.json +0 -81
- package/src/contexts/dids.json +0 -58
- package/src/contexts/ed255192020.json +0 -93
- package/src/contexts/ordinals-plus.json +0 -23
- package/src/contexts/originals.json +0 -22
- package/src/core/OriginalsSDK.ts +0 -416
- package/src/crypto/Multikey.ts +0 -194
- package/src/crypto/Signer.ts +0 -254
- package/src/crypto/noble-init.ts +0 -121
- package/src/did/BtcoDidResolver.ts +0 -227
- package/src/did/DIDManager.ts +0 -694
- package/src/did/Ed25519Verifier.ts +0 -68
- package/src/did/KeyManager.ts +0 -236
- package/src/did/WebVHManager.ts +0 -498
- package/src/did/createBtcoDidDocument.ts +0 -59
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
- package/src/events/EventEmitter.ts +0 -222
- package/src/events/index.ts +0 -19
- package/src/events/types.ts +0 -331
- package/src/examples/basic-usage.ts +0 -78
- package/src/examples/create-module-original.ts +0 -435
- package/src/examples/full-lifecycle-flow.ts +0 -514
- package/src/examples/run.ts +0 -60
- package/src/index.ts +0 -150
- package/src/kinds/KindRegistry.ts +0 -290
- package/src/kinds/index.ts +0 -74
- package/src/kinds/types.ts +0 -470
- package/src/kinds/validators/AgentValidator.ts +0 -257
- package/src/kinds/validators/AppValidator.ts +0 -211
- package/src/kinds/validators/DatasetValidator.ts +0 -242
- package/src/kinds/validators/DocumentValidator.ts +0 -311
- package/src/kinds/validators/MediaValidator.ts +0 -269
- package/src/kinds/validators/ModuleValidator.ts +0 -225
- package/src/kinds/validators/base.ts +0 -276
- package/src/kinds/validators/index.ts +0 -12
- package/src/lifecycle/BatchOperations.ts +0 -373
- package/src/lifecycle/LifecycleManager.ts +0 -2126
- package/src/lifecycle/OriginalsAsset.ts +0 -524
- package/src/lifecycle/ProvenanceQuery.ts +0 -280
- package/src/lifecycle/ResourceVersioning.ts +0 -163
- package/src/migration/MigrationManager.ts +0 -527
- package/src/migration/audit/AuditLogger.ts +0 -176
- package/src/migration/checkpoint/CheckpointManager.ts +0 -112
- package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
- package/src/migration/index.ts +0 -33
- package/src/migration/operations/BaseMigration.ts +0 -126
- package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
- package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
- package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
- package/src/migration/rollback/RollbackManager.ts +0 -170
- package/src/migration/state/StateMachine.ts +0 -92
- package/src/migration/state/StateTracker.ts +0 -156
- package/src/migration/types.ts +0 -344
- package/src/migration/validation/BitcoinValidator.ts +0 -107
- package/src/migration/validation/CredentialValidator.ts +0 -62
- package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
- package/src/migration/validation/LifecycleValidator.ts +0 -64
- package/src/migration/validation/StorageValidator.ts +0 -79
- package/src/migration/validation/ValidationPipeline.ts +0 -213
- package/src/resources/ResourceManager.ts +0 -655
- package/src/resources/index.ts +0 -21
- package/src/resources/types.ts +0 -202
- package/src/storage/LocalStorageAdapter.ts +0 -61
- package/src/storage/MemoryStorageAdapter.ts +0 -29
- package/src/storage/StorageAdapter.ts +0 -25
- package/src/storage/index.ts +0 -3
- package/src/types/bitcoin.ts +0 -98
- package/src/types/common.ts +0 -92
- package/src/types/credentials.ts +0 -88
- package/src/types/did.ts +0 -31
- package/src/types/external-shims.d.ts +0 -53
- package/src/types/index.ts +0 -7
- package/src/types/network.ts +0 -175
- package/src/utils/EventLogger.ts +0 -298
- package/src/utils/Logger.ts +0 -322
- package/src/utils/MetricsCollector.ts +0 -358
- package/src/utils/bitcoin-address.ts +0 -130
- package/src/utils/cbor.ts +0 -12
- package/src/utils/encoding.ts +0 -127
- package/src/utils/hash.ts +0 -6
- package/src/utils/retry.ts +0 -46
- package/src/utils/satoshi-validation.ts +0 -196
- package/src/utils/serialization.ts +0 -96
- package/src/utils/telemetry.ts +0 -40
- package/src/utils/validation.ts +0 -119
- package/src/vc/CredentialManager.ts +0 -918
- package/src/vc/Issuer.ts +0 -100
- package/src/vc/Verifier.ts +0 -47
- package/src/vc/cryptosuites/bbs.ts +0 -253
- package/src/vc/cryptosuites/bbsSimple.ts +0 -21
- package/src/vc/cryptosuites/eddsa.ts +0 -99
- package/src/vc/documentLoader.ts +0 -67
- package/src/vc/proofs/data-integrity.ts +0 -33
- package/src/vc/utils/jsonld.ts +0 -18
- package/tests/__mocks__/bbs-signatures.js +0 -17
- package/tests/__mocks__/mf-base58.js +0 -24
- package/tests/fixtures/did-documents.ts +0 -247
- package/tests/index.test.ts +0 -21
- package/tests/integration/BatchOperations.test.ts +0 -531
- package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
- package/tests/integration/CredentialManager.test.ts +0 -42
- package/tests/integration/DIDManager.test.ts +0 -41
- package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
- package/tests/integration/Events.test.ts +0 -435
- package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
- package/tests/integration/LifecycleManager.test.ts +0 -21
- package/tests/integration/MultikeyFlow.test.ts +0 -52
- package/tests/integration/TelemetryIntegration.test.ts +0 -395
- package/tests/integration/WebVhPublish.test.ts +0 -48
- package/tests/integration/createTypedOriginal.test.ts +0 -379
- package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
- package/tests/manual/test-commit-creation.ts +0 -323
- package/tests/mocks/MockKeyStore.ts +0 -38
- package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
- package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
- package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
- package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
- package/tests/mocks/adapters/index.ts +0 -6
- package/tests/performance/BatchOperations.perf.test.ts +0 -403
- package/tests/performance/logging.perf.test.ts +0 -336
- package/tests/sdk.test.ts +0 -43
- package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
- package/tests/setup.bun.ts +0 -69
- package/tests/setup.jest.ts +0 -23
- package/tests/stress/batch-operations-stress.test.ts +0 -571
- package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
- package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
- package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
- package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
- package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
- package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
- package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
- package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
- package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
- package/tests/unit/bitcoin/transfer.test.ts +0 -31
- package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
- package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
- package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
- package/tests/unit/core/OriginalsSDK.test.ts +0 -152
- package/tests/unit/crypto/Multikey.test.ts +0 -206
- package/tests/unit/crypto/Signer.test.ts +0 -408
- package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
- package/tests/unit/did/DIDManager.more.test.ts +0 -43
- package/tests/unit/did/DIDManager.test.ts +0 -185
- package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
- package/tests/unit/did/KeyManager.test.ts +0 -452
- package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
- package/tests/unit/did/WebVHManager.test.ts +0 -435
- package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
- package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
- package/tests/unit/events/EventEmitter.test.ts +0 -407
- package/tests/unit/kinds/KindRegistry.test.ts +0 -329
- package/tests/unit/kinds/types.test.ts +0 -409
- package/tests/unit/kinds/validators.test.ts +0 -651
- package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
- package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
- package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
- package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
- package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
- package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
- package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
- package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
- package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
- package/tests/unit/resources/ResourceManager.test.ts +0 -740
- package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
- package/tests/unit/types/network.test.ts +0 -255
- package/tests/unit/utils/EventIntegration.test.ts +0 -384
- package/tests/unit/utils/Logger.test.ts +0 -473
- package/tests/unit/utils/MetricsCollector.test.ts +0 -358
- package/tests/unit/utils/bitcoin-address.test.ts +0 -250
- package/tests/unit/utils/cbor.test.ts +0 -35
- package/tests/unit/utils/encoding.test.ts +0 -318
- package/tests/unit/utils/hash.test.ts +0 -12
- package/tests/unit/utils/retry.test.ts +0 -100
- package/tests/unit/utils/satoshi-validation.test.ts +0 -354
- package/tests/unit/utils/serialization.test.ts +0 -124
- package/tests/unit/utils/telemetry.test.ts +0 -52
- package/tests/unit/utils/validation.test.ts +0 -141
- package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
- package/tests/unit/vc/CredentialManager.test.ts +0 -487
- package/tests/unit/vc/Issuer.test.ts +0 -107
- package/tests/unit/vc/Verifier.test.ts +0 -525
- package/tests/unit/vc/bbs.test.ts +0 -282
- package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
- package/tests/unit/vc/documentLoader.test.ts +0 -121
- package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
- package/tsconfig.json +0 -31
- package/tsconfig.test.json +0 -15
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { describe, test, expect } from 'bun:test';
|
|
2
|
-
import { MemoryStorageAdapter } from '../../../src/storage/MemoryStorageAdapter';
|
|
3
|
-
|
|
4
|
-
describe('MemoryStorageAdapter', () => {
|
|
5
|
-
test('putObject stores string content', async () => {
|
|
6
|
-
const adapter = new MemoryStorageAdapter();
|
|
7
|
-
const uri = await adapter.putObject('example.com', '/test.txt', 'hello world');
|
|
8
|
-
expect(uri).toBe('mem://example.com/test.txt');
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
test('putObject stores Uint8Array content', async () => {
|
|
12
|
-
const adapter = new MemoryStorageAdapter();
|
|
13
|
-
const data = new Uint8Array([1, 2, 3, 4]);
|
|
14
|
-
const uri = await adapter.putObject('example.com', '/test.bin', data);
|
|
15
|
-
expect(uri).toBe('mem://example.com/test.bin');
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test('getObject retrieves stored content', async () => {
|
|
19
|
-
const adapter = new MemoryStorageAdapter();
|
|
20
|
-
const data = new Uint8Array([5, 6, 7, 8]);
|
|
21
|
-
await adapter.putObject('example.com', '/data.bin', data);
|
|
22
|
-
|
|
23
|
-
const result = await adapter.getObject('example.com', '/data.bin');
|
|
24
|
-
expect(result).not.toBeNull();
|
|
25
|
-
expect(result?.content).toEqual(data);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
test('getObject returns null for non-existent object', async () => {
|
|
29
|
-
const adapter = new MemoryStorageAdapter();
|
|
30
|
-
const result = await adapter.getObject('example.com', '/nonexistent.txt');
|
|
31
|
-
expect(result).toBeNull();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('exists returns true for stored object', async () => {
|
|
35
|
-
const adapter = new MemoryStorageAdapter();
|
|
36
|
-
await adapter.putObject('example.com', '/test.txt', 'content');
|
|
37
|
-
|
|
38
|
-
const exists = await adapter.exists('example.com', '/test.txt');
|
|
39
|
-
expect(exists).toBe(true);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('exists returns false for non-existent object', async () => {
|
|
43
|
-
const adapter = new MemoryStorageAdapter();
|
|
44
|
-
const exists = await adapter.exists('example.com', '/nonexistent.txt');
|
|
45
|
-
expect(exists).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
test('putObject strips leading slashes from path', async () => {
|
|
49
|
-
const adapter = new MemoryStorageAdapter();
|
|
50
|
-
const uri = await adapter.putObject('example.com', '///test.txt', 'content');
|
|
51
|
-
expect(uri).toBe('mem://example.com/test.txt');
|
|
52
|
-
|
|
53
|
-
const result = await adapter.getObject('example.com', '/test.txt');
|
|
54
|
-
expect(result).not.toBeNull();
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
test('getObject works with paths that have leading slashes', async () => {
|
|
58
|
-
const adapter = new MemoryStorageAdapter();
|
|
59
|
-
await adapter.putObject('example.com', 'test.txt', 'content');
|
|
60
|
-
|
|
61
|
-
const result = await adapter.getObject('example.com', '/test.txt');
|
|
62
|
-
expect(result).not.toBeNull();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('multiple domains are isolated', async () => {
|
|
66
|
-
const adapter = new MemoryStorageAdapter();
|
|
67
|
-
await adapter.putObject('domain1.com', '/test.txt', 'content1');
|
|
68
|
-
await adapter.putObject('domain2.com', '/test.txt', 'content2');
|
|
69
|
-
|
|
70
|
-
const result1 = await adapter.getObject('domain1.com', '/test.txt');
|
|
71
|
-
const result2 = await adapter.getObject('domain2.com', '/test.txt');
|
|
72
|
-
|
|
73
|
-
expect(new TextDecoder().decode(result1?.content)).toBe('content1');
|
|
74
|
-
expect(new TextDecoder().decode(result2?.content)).toBe('content2');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
test('putObject overwrites existing content', async () => {
|
|
78
|
-
const adapter = new MemoryStorageAdapter();
|
|
79
|
-
await adapter.putObject('example.com', '/test.txt', 'original');
|
|
80
|
-
await adapter.putObject('example.com', '/test.txt', 'updated');
|
|
81
|
-
|
|
82
|
-
const result = await adapter.getObject('example.com', '/test.txt');
|
|
83
|
-
expect(new TextDecoder().decode(result?.content)).toBe('updated');
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
test('exists handles paths with leading slashes', async () => {
|
|
87
|
-
const adapter = new MemoryStorageAdapter();
|
|
88
|
-
await adapter.putObject('example.com', 'test.txt', 'content');
|
|
89
|
-
|
|
90
|
-
const exists = await adapter.exists('example.com', '/test.txt');
|
|
91
|
-
expect(exists).toBe(true);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'bun:test';
|
|
2
|
-
import {
|
|
3
|
-
WEBVH_NETWORKS,
|
|
4
|
-
DEFAULT_WEBVH_NETWORK,
|
|
5
|
-
getNetworkConfig,
|
|
6
|
-
getNetworkDomain,
|
|
7
|
-
getNetworkContextUrl,
|
|
8
|
-
validateVersionForNetwork,
|
|
9
|
-
getRecommendedNetworkForVersion,
|
|
10
|
-
getBitcoinNetworkForWebVH,
|
|
11
|
-
getWebVHNetworkForBitcoin,
|
|
12
|
-
type WebVHNetworkName,
|
|
13
|
-
type BitcoinNetworkName,
|
|
14
|
-
} from '../../../src/types/network';
|
|
15
|
-
|
|
16
|
-
describe('Network Configuration', () => {
|
|
17
|
-
describe('WEBVH_NETWORKS', () => {
|
|
18
|
-
it('should define all three networks', () => {
|
|
19
|
-
expect(WEBVH_NETWORKS.magby).toBeDefined();
|
|
20
|
-
expect(WEBVH_NETWORKS.cleffa).toBeDefined();
|
|
21
|
-
expect(WEBVH_NETWORKS.pichu).toBeDefined();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should have correct domains for each network', () => {
|
|
25
|
-
expect(WEBVH_NETWORKS.magby.domain).toBe('magby.originals.build');
|
|
26
|
-
expect(WEBVH_NETWORKS.cleffa.domain).toBe('cleffa.originals.build');
|
|
27
|
-
expect(WEBVH_NETWORKS.pichu.domain).toBe('pichu.originals.build');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('should have correct stability levels', () => {
|
|
31
|
-
expect(WEBVH_NETWORKS.magby.stability).toBe('patch');
|
|
32
|
-
expect(WEBVH_NETWORKS.cleffa.stability).toBe('minor');
|
|
33
|
-
expect(WEBVH_NETWORKS.pichu.stability).toBe('major');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should have correct context URLs', () => {
|
|
37
|
-
expect(WEBVH_NETWORKS.magby.contextUrl).toBe('https://magby.originals.build/context');
|
|
38
|
-
expect(WEBVH_NETWORKS.cleffa.contextUrl).toBe('https://cleffa.originals.build/context');
|
|
39
|
-
expect(WEBVH_NETWORKS.pichu.contextUrl).toBe('https://pichu.originals.build/context');
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
describe('DEFAULT_WEBVH_NETWORK', () => {
|
|
44
|
-
it('should default to pichu (production)', () => {
|
|
45
|
-
expect(DEFAULT_WEBVH_NETWORK).toBe('pichu');
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('getNetworkConfig', () => {
|
|
50
|
-
it('should return correct config for each network', () => {
|
|
51
|
-
const magbyConfig = getNetworkConfig('magby');
|
|
52
|
-
expect(magbyConfig.name).toBe('magby');
|
|
53
|
-
expect(magbyConfig.domain).toBe('magby.originals.build');
|
|
54
|
-
|
|
55
|
-
const cleffaConfig = getNetworkConfig('cleffa');
|
|
56
|
-
expect(cleffaConfig.name).toBe('cleffa');
|
|
57
|
-
expect(cleffaConfig.domain).toBe('cleffa.originals.build');
|
|
58
|
-
|
|
59
|
-
const pichuConfig = getNetworkConfig('pichu');
|
|
60
|
-
expect(pichuConfig.name).toBe('pichu');
|
|
61
|
-
expect(pichuConfig.domain).toBe('pichu.originals.build');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('should throw error for invalid network', () => {
|
|
65
|
-
expect(() => getNetworkConfig('invalid' as WebVHNetworkName)).toThrow(
|
|
66
|
-
'Invalid WebVH network: invalid'
|
|
67
|
-
);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
describe('getNetworkDomain', () => {
|
|
72
|
-
it('should return correct domain for each network', () => {
|
|
73
|
-
expect(getNetworkDomain('magby')).toBe('magby.originals.build');
|
|
74
|
-
expect(getNetworkDomain('cleffa')).toBe('cleffa.originals.build');
|
|
75
|
-
expect(getNetworkDomain('pichu')).toBe('pichu.originals.build');
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
describe('getNetworkContextUrl', () => {
|
|
80
|
-
it('should return correct context URL for each network', () => {
|
|
81
|
-
expect(getNetworkContextUrl('magby')).toBe('https://magby.originals.build/context');
|
|
82
|
-
expect(getNetworkContextUrl('cleffa')).toBe('https://cleffa.originals.build/context');
|
|
83
|
-
expect(getNetworkContextUrl('pichu')).toBe('https://pichu.originals.build/context');
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe('validateVersionForNetwork', () => {
|
|
88
|
-
describe('pichu (major releases only)', () => {
|
|
89
|
-
it('should accept major releases (X.0.0)', () => {
|
|
90
|
-
expect(validateVersionForNetwork('1.0.0', 'pichu')).toBe(true);
|
|
91
|
-
expect(validateVersionForNetwork('2.0.0', 'pichu')).toBe(true);
|
|
92
|
-
expect(validateVersionForNetwork('10.0.0', 'pichu')).toBe(true);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('should reject minor releases (X.Y.0 where Y > 0)', () => {
|
|
96
|
-
expect(validateVersionForNetwork('1.1.0', 'pichu')).toBe(false);
|
|
97
|
-
expect(validateVersionForNetwork('2.5.0', 'pichu')).toBe(false);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it('should reject patch releases (X.Y.Z where Z > 0)', () => {
|
|
101
|
-
expect(validateVersionForNetwork('1.0.1', 'pichu')).toBe(false);
|
|
102
|
-
expect(validateVersionForNetwork('1.1.1', 'pichu')).toBe(false);
|
|
103
|
-
expect(validateVersionForNetwork('2.3.4', 'pichu')).toBe(false);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('cleffa (minor releases)', () => {
|
|
108
|
-
it('should accept major releases (X.0.0)', () => {
|
|
109
|
-
expect(validateVersionForNetwork('1.0.0', 'cleffa')).toBe(true);
|
|
110
|
-
expect(validateVersionForNetwork('2.0.0', 'cleffa')).toBe(true);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('should accept minor releases (X.Y.0)', () => {
|
|
114
|
-
expect(validateVersionForNetwork('1.1.0', 'cleffa')).toBe(true);
|
|
115
|
-
expect(validateVersionForNetwork('2.5.0', 'cleffa')).toBe(true);
|
|
116
|
-
expect(validateVersionForNetwork('10.20.0', 'cleffa')).toBe(true);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('should reject patch releases (X.Y.Z where Z > 0)', () => {
|
|
120
|
-
expect(validateVersionForNetwork('1.0.1', 'cleffa')).toBe(false);
|
|
121
|
-
expect(validateVersionForNetwork('1.1.1', 'cleffa')).toBe(false);
|
|
122
|
-
expect(validateVersionForNetwork('2.3.4', 'cleffa')).toBe(false);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
describe('magby (all versions)', () => {
|
|
127
|
-
it('should accept major releases', () => {
|
|
128
|
-
expect(validateVersionForNetwork('1.0.0', 'magby')).toBe(true);
|
|
129
|
-
expect(validateVersionForNetwork('2.0.0', 'magby')).toBe(true);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('should accept minor releases', () => {
|
|
133
|
-
expect(validateVersionForNetwork('1.1.0', 'magby')).toBe(true);
|
|
134
|
-
expect(validateVersionForNetwork('2.5.0', 'magby')).toBe(true);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it('should accept patch releases', () => {
|
|
138
|
-
expect(validateVersionForNetwork('1.0.1', 'magby')).toBe(true);
|
|
139
|
-
expect(validateVersionForNetwork('1.1.1', 'magby')).toBe(true);
|
|
140
|
-
expect(validateVersionForNetwork('2.3.4', 'magby')).toBe(true);
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it('should handle pre-release versions', () => {
|
|
145
|
-
// Pre-release should still follow the same rules for the base version
|
|
146
|
-
expect(validateVersionForNetwork('1.0.0-beta.1', 'pichu')).toBe(true);
|
|
147
|
-
expect(validateVersionForNetwork('1.1.0-alpha', 'pichu')).toBe(false);
|
|
148
|
-
expect(validateVersionForNetwork('1.1.0-beta.1', 'cleffa')).toBe(true);
|
|
149
|
-
expect(validateVersionForNetwork('1.1.1-rc.1', 'cleffa')).toBe(false);
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it('should throw error for invalid version format', () => {
|
|
153
|
-
expect(() => validateVersionForNetwork('invalid', 'pichu')).toThrow('Invalid version format');
|
|
154
|
-
expect(() => validateVersionForNetwork('1.0', 'pichu')).toThrow('Invalid version format');
|
|
155
|
-
expect(() => validateVersionForNetwork('v1.0.0', 'pichu')).toThrow('Invalid version format');
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
describe('getRecommendedNetworkForVersion', () => {
|
|
160
|
-
it('should recommend pichu for major releases', () => {
|
|
161
|
-
expect(getRecommendedNetworkForVersion('1.0.0')).toBe('pichu');
|
|
162
|
-
expect(getRecommendedNetworkForVersion('2.0.0')).toBe('pichu');
|
|
163
|
-
expect(getRecommendedNetworkForVersion('10.0.0')).toBe('pichu');
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('should recommend cleffa for minor releases', () => {
|
|
167
|
-
expect(getRecommendedNetworkForVersion('1.1.0')).toBe('cleffa');
|
|
168
|
-
expect(getRecommendedNetworkForVersion('2.5.0')).toBe('cleffa');
|
|
169
|
-
expect(getRecommendedNetworkForVersion('10.20.0')).toBe('cleffa');
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
it('should recommend magby for patch releases', () => {
|
|
173
|
-
expect(getRecommendedNetworkForVersion('1.0.1')).toBe('magby');
|
|
174
|
-
expect(getRecommendedNetworkForVersion('1.1.1')).toBe('magby');
|
|
175
|
-
expect(getRecommendedNetworkForVersion('2.3.4')).toBe('magby');
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
it('should handle pre-release versions correctly', () => {
|
|
179
|
-
expect(getRecommendedNetworkForVersion('1.0.0-beta')).toBe('pichu');
|
|
180
|
-
expect(getRecommendedNetworkForVersion('1.1.0-alpha')).toBe('cleffa');
|
|
181
|
-
expect(getRecommendedNetworkForVersion('1.1.1-rc.1')).toBe('magby');
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
describe('Bitcoin Network Mapping', () => {
|
|
186
|
-
describe('WEBVH_NETWORKS Bitcoin mappings', () => {
|
|
187
|
-
it('should map magby to regtest', () => {
|
|
188
|
-
expect(WEBVH_NETWORKS.magby.bitcoinNetwork).toBe('regtest');
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it('should map cleffa to signet', () => {
|
|
192
|
-
expect(WEBVH_NETWORKS.cleffa.bitcoinNetwork).toBe('signet');
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it('should map pichu to mainnet', () => {
|
|
196
|
-
expect(WEBVH_NETWORKS.pichu.bitcoinNetwork).toBe('mainnet');
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
describe('getBitcoinNetworkForWebVH', () => {
|
|
201
|
-
it('should return regtest for magby', () => {
|
|
202
|
-
expect(getBitcoinNetworkForWebVH('magby')).toBe('regtest');
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it('should return signet for cleffa', () => {
|
|
206
|
-
expect(getBitcoinNetworkForWebVH('cleffa')).toBe('signet');
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
it('should return mainnet for pichu', () => {
|
|
210
|
-
expect(getBitcoinNetworkForWebVH('pichu')).toBe('mainnet');
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
describe('getWebVHNetworkForBitcoin', () => {
|
|
215
|
-
it('should return magby for regtest', () => {
|
|
216
|
-
expect(getWebVHNetworkForBitcoin('regtest')).toBe('magby');
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it('should return cleffa for signet', () => {
|
|
220
|
-
expect(getWebVHNetworkForBitcoin('signet')).toBe('cleffa');
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
it('should return pichu for mainnet', () => {
|
|
224
|
-
expect(getWebVHNetworkForBitcoin('mainnet')).toBe('pichu');
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
describe('Network mapping consistency', () => {
|
|
229
|
-
it('should have bidirectional mapping for all WebVH networks', () => {
|
|
230
|
-
// magby ↔ regtest
|
|
231
|
-
const magbyBitcoin = getBitcoinNetworkForWebVH('magby');
|
|
232
|
-
expect(getWebVHNetworkForBitcoin(magbyBitcoin)).toBe('magby');
|
|
233
|
-
|
|
234
|
-
// cleffa ↔ signet
|
|
235
|
-
const cleffaBitcoin = getBitcoinNetworkForWebVH('cleffa');
|
|
236
|
-
expect(getWebVHNetworkForBitcoin(cleffaBitcoin)).toBe('cleffa');
|
|
237
|
-
|
|
238
|
-
// pichu ↔ mainnet
|
|
239
|
-
const pichuBitcoin = getBitcoinNetworkForWebVH('pichu');
|
|
240
|
-
expect(getWebVHNetworkForBitcoin(pichuBitcoin)).toBe('pichu');
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
it('should maintain environment consistency across networks', () => {
|
|
244
|
-
// Development: magby → regtest
|
|
245
|
-
expect(getBitcoinNetworkForWebVH('magby')).toBe('regtest');
|
|
246
|
-
|
|
247
|
-
// Staging: cleffa → signet
|
|
248
|
-
expect(getBitcoinNetworkForWebVH('cleffa')).toBe('signet');
|
|
249
|
-
|
|
250
|
-
// Production: pichu → mainnet
|
|
251
|
-
expect(getBitcoinNetworkForWebVH('pichu')).toBe('mainnet');
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
});
|