@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
package/src/types/network.ts
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebVH Network Configuration
|
|
3
|
-
*
|
|
4
|
-
* Defines the three deployment networks for the Originals Protocol:
|
|
5
|
-
* - magby: Development network (patch versions) → Bitcoin regtest
|
|
6
|
-
* - cleffa: Staging network (minor versions) → Bitcoin signet
|
|
7
|
-
* - pichu: Production network (major versions) → Bitcoin mainnet
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export type WebVHNetworkName = 'magby' | 'cleffa' | 'pichu';
|
|
11
|
-
|
|
12
|
-
export type BitcoinNetworkName = 'mainnet' | 'regtest' | 'signet';
|
|
13
|
-
|
|
14
|
-
export type VersionStability = 'patch' | 'minor' | 'major';
|
|
15
|
-
|
|
16
|
-
export interface WebVHNetworkConfig {
|
|
17
|
-
name: WebVHNetworkName;
|
|
18
|
-
domain: string;
|
|
19
|
-
stability: VersionStability;
|
|
20
|
-
description: string;
|
|
21
|
-
contextUrl: string;
|
|
22
|
-
bitcoinNetwork: BitcoinNetworkName; // Corresponding Bitcoin network for did:btco migrations
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Network configurations for the Originals Protocol WebVH deployments
|
|
27
|
-
*/
|
|
28
|
-
export const WEBVH_NETWORKS: Record<WebVHNetworkName, WebVHNetworkConfig> = {
|
|
29
|
-
magby: {
|
|
30
|
-
name: 'magby',
|
|
31
|
-
domain: 'magby.originals.build',
|
|
32
|
-
stability: 'patch',
|
|
33
|
-
description: 'Development network - accepts all patch versions (most unstable)',
|
|
34
|
-
contextUrl: 'https://magby.originals.build/context',
|
|
35
|
-
bitcoinNetwork: 'regtest', // Development → regtest
|
|
36
|
-
},
|
|
37
|
-
cleffa: {
|
|
38
|
-
name: 'cleffa',
|
|
39
|
-
domain: 'cleffa.originals.build',
|
|
40
|
-
stability: 'minor',
|
|
41
|
-
description: 'Staging network - accepts minor releases',
|
|
42
|
-
contextUrl: 'https://cleffa.originals.build/context',
|
|
43
|
-
bitcoinNetwork: 'signet', // Staging → signet
|
|
44
|
-
},
|
|
45
|
-
pichu: {
|
|
46
|
-
name: 'pichu',
|
|
47
|
-
domain: 'pichu.originals.build',
|
|
48
|
-
stability: 'major',
|
|
49
|
-
description: 'Production network - accepts major releases only (most stable)',
|
|
50
|
-
contextUrl: 'https://pichu.originals.build/context',
|
|
51
|
-
bitcoinNetwork: 'mainnet', // Production → mainnet
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Default network for backward compatibility
|
|
57
|
-
*/
|
|
58
|
-
export const DEFAULT_WEBVH_NETWORK: WebVHNetworkName = 'pichu';
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Get network configuration by name
|
|
62
|
-
* @param network - Network name
|
|
63
|
-
* @returns Network configuration
|
|
64
|
-
*/
|
|
65
|
-
export function getNetworkConfig(network: WebVHNetworkName): WebVHNetworkConfig {
|
|
66
|
-
const config = WEBVH_NETWORKS[network];
|
|
67
|
-
if (!config) {
|
|
68
|
-
throw new Error(`Invalid WebVH network: ${network}. Valid networks: magby, cleffa, pichu`);
|
|
69
|
-
}
|
|
70
|
-
return config;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Get network domain
|
|
75
|
-
* @param network - Network name
|
|
76
|
-
* @returns Network domain
|
|
77
|
-
*/
|
|
78
|
-
export function getNetworkDomain(network: WebVHNetworkName): string {
|
|
79
|
-
return getNetworkConfig(network).domain;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Get network context URL
|
|
84
|
-
* @param network - Network name
|
|
85
|
-
* @returns Context URL for the network
|
|
86
|
-
*/
|
|
87
|
-
export function getNetworkContextUrl(network: WebVHNetworkName): string {
|
|
88
|
-
return getNetworkConfig(network).contextUrl;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Validate that a version string matches the network's stability requirements
|
|
93
|
-
* @param version - Semver version string (e.g., "1.2.3")
|
|
94
|
-
* @param network - Network name
|
|
95
|
-
* @returns True if the version is allowed on this network
|
|
96
|
-
*/
|
|
97
|
-
export function validateVersionForNetwork(version: string, network: WebVHNetworkName): boolean {
|
|
98
|
-
const config = getNetworkConfig(network);
|
|
99
|
-
|
|
100
|
-
// Parse semver (basic parsing, assumes format X.Y.Z)
|
|
101
|
-
const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-.*)?$/);
|
|
102
|
-
if (!match) {
|
|
103
|
-
throw new Error(`Invalid version format: ${version}. Expected semver format (e.g., 1.2.3)`);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const [, major, minor, patch] = match;
|
|
107
|
-
|
|
108
|
-
switch (config.stability) {
|
|
109
|
-
case 'major':
|
|
110
|
-
// Pichu: Only allow major releases (X.0.0)
|
|
111
|
-
return minor === '0' && patch === '0';
|
|
112
|
-
|
|
113
|
-
case 'minor':
|
|
114
|
-
// Cleffa: Allow minor releases (X.Y.0)
|
|
115
|
-
return patch === '0';
|
|
116
|
-
|
|
117
|
-
case 'patch':
|
|
118
|
-
// Magby: Allow all versions including patches
|
|
119
|
-
return true;
|
|
120
|
-
|
|
121
|
-
default:
|
|
122
|
-
throw new Error(`Unknown stability level: ${config.stability}`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Get the appropriate network for a given version
|
|
128
|
-
* Returns the most restrictive network that accepts this version
|
|
129
|
-
* @param version - Semver version string
|
|
130
|
-
* @returns Recommended network name
|
|
131
|
-
*/
|
|
132
|
-
export function getRecommendedNetworkForVersion(version: string): WebVHNetworkName {
|
|
133
|
-
// Try networks from most restrictive to least restrictive
|
|
134
|
-
if (validateVersionForNetwork(version, 'pichu')) {
|
|
135
|
-
return 'pichu';
|
|
136
|
-
}
|
|
137
|
-
if (validateVersionForNetwork(version, 'cleffa')) {
|
|
138
|
-
return 'cleffa';
|
|
139
|
-
}
|
|
140
|
-
return 'magby';
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Get the corresponding Bitcoin network for a WebVH network
|
|
145
|
-
* This ensures consistent environment mapping across the stack:
|
|
146
|
-
* - magby (dev) → regtest (dev)
|
|
147
|
-
* - cleffa (staging) → signet (staging)
|
|
148
|
-
* - pichu (production) → mainnet (production)
|
|
149
|
-
*
|
|
150
|
-
* @param webvhNetwork - WebVH network name
|
|
151
|
-
* @returns Corresponding Bitcoin network name
|
|
152
|
-
*/
|
|
153
|
-
export function getBitcoinNetworkForWebVH(webvhNetwork: WebVHNetworkName): BitcoinNetworkName {
|
|
154
|
-
return getNetworkConfig(webvhNetwork).bitcoinNetwork;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Get the WebVH network that corresponds to a Bitcoin network
|
|
159
|
-
* This is the reverse mapping of getBitcoinNetworkForWebVH
|
|
160
|
-
*
|
|
161
|
-
* @param bitcoinNetwork - Bitcoin network name
|
|
162
|
-
* @returns Corresponding WebVH network name, or undefined if no mapping exists
|
|
163
|
-
*/
|
|
164
|
-
export function getWebVHNetworkForBitcoin(bitcoinNetwork: BitcoinNetworkName): WebVHNetworkName | undefined {
|
|
165
|
-
switch (bitcoinNetwork) {
|
|
166
|
-
case 'mainnet':
|
|
167
|
-
return 'pichu';
|
|
168
|
-
case 'signet':
|
|
169
|
-
return 'cleffa';
|
|
170
|
-
case 'regtest':
|
|
171
|
-
return 'magby';
|
|
172
|
-
default:
|
|
173
|
-
return undefined;
|
|
174
|
-
}
|
|
175
|
-
}
|
package/src/utils/EventLogger.ts
DELETED
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event Logger - Integration between Event System and Logger
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Auto-subscribe to EventEmitter events
|
|
6
|
-
* - Configurable logging levels per event type
|
|
7
|
-
* - Automatic metrics extraction from events
|
|
8
|
-
* - Performance tracking
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import type { EventEmitter } from '../events/EventEmitter';
|
|
12
|
-
import type { OriginalsEvent, EventTypeMap } from '../events/types';
|
|
13
|
-
import type { Logger, LogLevel } from './Logger';
|
|
14
|
-
import type { MetricsCollector } from './MetricsCollector';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Event logging configuration
|
|
18
|
-
*/
|
|
19
|
-
export interface EventLoggingConfig {
|
|
20
|
-
'asset:created'?: LogLevel | false;
|
|
21
|
-
'asset:migrated'?: LogLevel | false;
|
|
22
|
-
'asset:transferred'?: LogLevel | false;
|
|
23
|
-
'resource:published'?: LogLevel | false;
|
|
24
|
-
'credential:issued'?: LogLevel | false;
|
|
25
|
-
'resource:version:created'?: LogLevel | false;
|
|
26
|
-
'verification:completed'?: LogLevel | false;
|
|
27
|
-
'batch:started'?: LogLevel | false;
|
|
28
|
-
'batch:completed'?: LogLevel | false;
|
|
29
|
-
'batch:failed'?: LogLevel | false;
|
|
30
|
-
'migration:started'?: LogLevel | false;
|
|
31
|
-
'migration:validated'?: LogLevel | false;
|
|
32
|
-
'migration:checkpointed'?: LogLevel | false;
|
|
33
|
-
'migration:in_progress'?: LogLevel | false;
|
|
34
|
-
'migration:anchoring'?: LogLevel | false;
|
|
35
|
-
'migration:completed'?: LogLevel | false;
|
|
36
|
-
'migration:failed'?: LogLevel | false;
|
|
37
|
-
'migration:rolledback'?: LogLevel | false;
|
|
38
|
-
'migration:quarantine'?: LogLevel | false;
|
|
39
|
-
'batch:progress'?: LogLevel | false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Default event logging configuration
|
|
44
|
-
*/
|
|
45
|
-
const DEFAULT_EVENT_CONFIG: EventLoggingConfig = {
|
|
46
|
-
'asset:created': 'info',
|
|
47
|
-
'asset:migrated': 'info',
|
|
48
|
-
'asset:transferred': 'info',
|
|
49
|
-
'resource:published': 'info',
|
|
50
|
-
'credential:issued': 'info',
|
|
51
|
-
'resource:version:created': 'info',
|
|
52
|
-
'verification:completed': 'info',
|
|
53
|
-
'batch:started': 'info',
|
|
54
|
-
'batch:completed': 'info',
|
|
55
|
-
'batch:failed': 'warn',
|
|
56
|
-
'migration:started': 'info',
|
|
57
|
-
'migration:validated': 'info',
|
|
58
|
-
'migration:checkpointed': 'info',
|
|
59
|
-
'migration:in_progress': 'info',
|
|
60
|
-
'migration:anchoring': 'info',
|
|
61
|
-
'migration:completed': 'info',
|
|
62
|
-
'migration:failed': 'warn',
|
|
63
|
-
'migration:rolledback': 'warn',
|
|
64
|
-
'migration:quarantine': 'error',
|
|
65
|
-
'batch:progress': 'debug'
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* EventLogger class for integrating events with logging and metrics
|
|
70
|
-
*/
|
|
71
|
-
export class EventLogger {
|
|
72
|
-
private config: EventLoggingConfig;
|
|
73
|
-
private unsubscribeFns: Array<() => void> = [];
|
|
74
|
-
|
|
75
|
-
constructor(
|
|
76
|
-
private logger: Logger,
|
|
77
|
-
private metricsCollector: MetricsCollector
|
|
78
|
-
) {
|
|
79
|
-
this.config = { ...DEFAULT_EVENT_CONFIG };
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Subscribe to all events from an EventEmitter
|
|
84
|
-
*/
|
|
85
|
-
subscribeToEvents(eventEmitter: EventEmitter): void {
|
|
86
|
-
// Subscribe to each event type
|
|
87
|
-
const eventTypes: Array<keyof EventTypeMap> = [
|
|
88
|
-
'asset:created',
|
|
89
|
-
'asset:migrated',
|
|
90
|
-
'asset:transferred',
|
|
91
|
-
'resource:published',
|
|
92
|
-
'credential:issued',
|
|
93
|
-
'resource:version:created',
|
|
94
|
-
'verification:completed',
|
|
95
|
-
'batch:started',
|
|
96
|
-
'batch:completed',
|
|
97
|
-
'batch:failed'
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
for (const eventType of eventTypes) {
|
|
101
|
-
const unsubscribe = eventEmitter.on(eventType, (event) => {
|
|
102
|
-
this.handleEvent(event);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
this.unsubscribeFns.push(unsubscribe);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Configure which events to log at which levels
|
|
111
|
-
*/
|
|
112
|
-
configureEventLogging(config: EventLoggingConfig): void {
|
|
113
|
-
this.config = { ...this.config, ...config };
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Unsubscribe from all events
|
|
118
|
-
*/
|
|
119
|
-
unsubscribe(): void {
|
|
120
|
-
for (const unsubscribe of this.unsubscribeFns) {
|
|
121
|
-
unsubscribe();
|
|
122
|
-
}
|
|
123
|
-
this.unsubscribeFns = [];
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Handle an event - log and extract metrics
|
|
128
|
-
*/
|
|
129
|
-
private handleEvent(event: OriginalsEvent): void {
|
|
130
|
-
const eventType = event.type;
|
|
131
|
-
const logLevel = this.config[eventType];
|
|
132
|
-
|
|
133
|
-
// Always extract metrics from the event (even if logging is disabled)
|
|
134
|
-
this.extractMetrics(event);
|
|
135
|
-
|
|
136
|
-
// Skip logging if disabled for this event type
|
|
137
|
-
if (logLevel === false) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// Log the event
|
|
142
|
-
if (logLevel) {
|
|
143
|
-
this.logEvent(event, logLevel);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Log an event at the specified level
|
|
149
|
-
*/
|
|
150
|
-
private logEvent(event: OriginalsEvent, level: LogLevel): void {
|
|
151
|
-
let message: string;
|
|
152
|
-
let data: Record<string, any>;
|
|
153
|
-
|
|
154
|
-
switch (event.type) {
|
|
155
|
-
case 'asset:created':
|
|
156
|
-
message = 'Asset created';
|
|
157
|
-
data = {
|
|
158
|
-
assetId: event.asset.id,
|
|
159
|
-
layer: event.asset.layer,
|
|
160
|
-
resourceCount: event.asset.resourceCount
|
|
161
|
-
};
|
|
162
|
-
break;
|
|
163
|
-
|
|
164
|
-
case 'asset:migrated':
|
|
165
|
-
message = 'Asset migrated';
|
|
166
|
-
data = {
|
|
167
|
-
assetId: event.asset.id,
|
|
168
|
-
fromLayer: event.asset.fromLayer,
|
|
169
|
-
toLayer: event.asset.toLayer,
|
|
170
|
-
details: event.details
|
|
171
|
-
};
|
|
172
|
-
break;
|
|
173
|
-
|
|
174
|
-
case 'asset:transferred':
|
|
175
|
-
message = 'Asset transferred';
|
|
176
|
-
data = {
|
|
177
|
-
assetId: event.asset.id,
|
|
178
|
-
layer: event.asset.layer,
|
|
179
|
-
from: event.from,
|
|
180
|
-
to: event.to,
|
|
181
|
-
transactionId: event.transactionId
|
|
182
|
-
};
|
|
183
|
-
break;
|
|
184
|
-
|
|
185
|
-
case 'resource:published':
|
|
186
|
-
message = 'Resource published';
|
|
187
|
-
data = {
|
|
188
|
-
assetId: event.asset.id,
|
|
189
|
-
resourceId: event.resource.id,
|
|
190
|
-
url: event.resource.url,
|
|
191
|
-
publisherDid: event.publisherDid
|
|
192
|
-
};
|
|
193
|
-
break;
|
|
194
|
-
|
|
195
|
-
case 'credential:issued':
|
|
196
|
-
message = 'Credential issued';
|
|
197
|
-
data = {
|
|
198
|
-
assetId: event.asset.id,
|
|
199
|
-
credentialType: event.credential.type,
|
|
200
|
-
issuer: event.credential.issuer
|
|
201
|
-
};
|
|
202
|
-
break;
|
|
203
|
-
|
|
204
|
-
case 'resource:version:created':
|
|
205
|
-
message = 'Resource version created';
|
|
206
|
-
data = {
|
|
207
|
-
assetId: event.asset.id,
|
|
208
|
-
resourceId: event.resource.id,
|
|
209
|
-
fromVersion: event.resource.fromVersion,
|
|
210
|
-
toVersion: event.resource.toVersion,
|
|
211
|
-
changes: event.changes
|
|
212
|
-
};
|
|
213
|
-
break;
|
|
214
|
-
|
|
215
|
-
case 'verification:completed':
|
|
216
|
-
message = 'Verification completed';
|
|
217
|
-
data = {
|
|
218
|
-
assetId: event.asset.id,
|
|
219
|
-
result: event.result,
|
|
220
|
-
checks: event.checks
|
|
221
|
-
};
|
|
222
|
-
break;
|
|
223
|
-
|
|
224
|
-
case 'batch:started':
|
|
225
|
-
message = 'Batch operation started';
|
|
226
|
-
data = {
|
|
227
|
-
batchId: event.batchId,
|
|
228
|
-
operation: event.operation,
|
|
229
|
-
itemCount: event.itemCount
|
|
230
|
-
};
|
|
231
|
-
break;
|
|
232
|
-
|
|
233
|
-
case 'batch:completed':
|
|
234
|
-
message = 'Batch operation completed';
|
|
235
|
-
data = {
|
|
236
|
-
batchId: event.batchId,
|
|
237
|
-
operation: event.operation,
|
|
238
|
-
results: event.results
|
|
239
|
-
};
|
|
240
|
-
break;
|
|
241
|
-
|
|
242
|
-
case 'batch:failed':
|
|
243
|
-
message = 'Batch operation failed';
|
|
244
|
-
data = {
|
|
245
|
-
batchId: event.batchId,
|
|
246
|
-
operation: event.operation,
|
|
247
|
-
error: event.error,
|
|
248
|
-
partialResults: event.partialResults
|
|
249
|
-
};
|
|
250
|
-
break;
|
|
251
|
-
|
|
252
|
-
default:
|
|
253
|
-
return; // Unknown event type
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Call the appropriate log method based on level
|
|
257
|
-
switch (level) {
|
|
258
|
-
case 'debug':
|
|
259
|
-
this.logger.debug(message, data);
|
|
260
|
-
break;
|
|
261
|
-
case 'info':
|
|
262
|
-
this.logger.info(message, data);
|
|
263
|
-
break;
|
|
264
|
-
case 'warn':
|
|
265
|
-
this.logger.warn(message, data);
|
|
266
|
-
break;
|
|
267
|
-
case 'error':
|
|
268
|
-
this.logger.error(message, undefined, data);
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Extract metrics from an event
|
|
275
|
-
*/
|
|
276
|
-
private extractMetrics(event: OriginalsEvent): void {
|
|
277
|
-
switch (event.type) {
|
|
278
|
-
case 'asset:created':
|
|
279
|
-
this.metricsCollector.recordAssetCreated();
|
|
280
|
-
break;
|
|
281
|
-
|
|
282
|
-
case 'asset:migrated':
|
|
283
|
-
this.metricsCollector.recordMigration(
|
|
284
|
-
event.asset.fromLayer,
|
|
285
|
-
event.asset.toLayer
|
|
286
|
-
);
|
|
287
|
-
break;
|
|
288
|
-
|
|
289
|
-
case 'asset:transferred':
|
|
290
|
-
this.metricsCollector.recordTransfer();
|
|
291
|
-
break;
|
|
292
|
-
|
|
293
|
-
// Other events don't need explicit metric recording
|
|
294
|
-
// as they're tracked elsewhere
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|