@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.
Files changed (212) hide show
  1. package/package.json +4 -1
  2. package/.eslintrc.json +0 -33
  3. package/src/adapters/FeeOracleMock.ts +0 -9
  4. package/src/adapters/index.ts +0 -5
  5. package/src/adapters/providers/OrdHttpProvider.ts +0 -126
  6. package/src/adapters/providers/OrdMockProvider.ts +0 -101
  7. package/src/adapters/types.ts +0 -66
  8. package/src/bitcoin/BitcoinManager.ts +0 -330
  9. package/src/bitcoin/BroadcastClient.ts +0 -54
  10. package/src/bitcoin/OrdinalsClient.ts +0 -119
  11. package/src/bitcoin/PSBTBuilder.ts +0 -106
  12. package/src/bitcoin/fee-calculation.ts +0 -38
  13. package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
  14. package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
  15. package/src/bitcoin/providers/types.ts +0 -59
  16. package/src/bitcoin/transactions/commit.ts +0 -465
  17. package/src/bitcoin/transactions/index.ts +0 -13
  18. package/src/bitcoin/transfer.ts +0 -43
  19. package/src/bitcoin/utxo-selection.ts +0 -322
  20. package/src/bitcoin/utxo.ts +0 -113
  21. package/src/contexts/credentials-v1.json +0 -237
  22. package/src/contexts/credentials-v2-examples.json +0 -5
  23. package/src/contexts/credentials-v2.json +0 -340
  24. package/src/contexts/credentials.json +0 -237
  25. package/src/contexts/data-integrity-v2.json +0 -81
  26. package/src/contexts/dids.json +0 -58
  27. package/src/contexts/ed255192020.json +0 -93
  28. package/src/contexts/ordinals-plus.json +0 -23
  29. package/src/contexts/originals.json +0 -22
  30. package/src/core/OriginalsSDK.ts +0 -416
  31. package/src/crypto/Multikey.ts +0 -194
  32. package/src/crypto/Signer.ts +0 -254
  33. package/src/crypto/noble-init.ts +0 -121
  34. package/src/did/BtcoDidResolver.ts +0 -227
  35. package/src/did/DIDManager.ts +0 -694
  36. package/src/did/Ed25519Verifier.ts +0 -68
  37. package/src/did/KeyManager.ts +0 -236
  38. package/src/did/WebVHManager.ts +0 -498
  39. package/src/did/createBtcoDidDocument.ts +0 -59
  40. package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
  41. package/src/events/EventEmitter.ts +0 -222
  42. package/src/events/index.ts +0 -19
  43. package/src/events/types.ts +0 -331
  44. package/src/examples/basic-usage.ts +0 -78
  45. package/src/examples/create-module-original.ts +0 -435
  46. package/src/examples/full-lifecycle-flow.ts +0 -514
  47. package/src/examples/run.ts +0 -60
  48. package/src/index.ts +0 -150
  49. package/src/kinds/KindRegistry.ts +0 -290
  50. package/src/kinds/index.ts +0 -74
  51. package/src/kinds/types.ts +0 -470
  52. package/src/kinds/validators/AgentValidator.ts +0 -257
  53. package/src/kinds/validators/AppValidator.ts +0 -211
  54. package/src/kinds/validators/DatasetValidator.ts +0 -242
  55. package/src/kinds/validators/DocumentValidator.ts +0 -311
  56. package/src/kinds/validators/MediaValidator.ts +0 -269
  57. package/src/kinds/validators/ModuleValidator.ts +0 -225
  58. package/src/kinds/validators/base.ts +0 -276
  59. package/src/kinds/validators/index.ts +0 -12
  60. package/src/lifecycle/BatchOperations.ts +0 -373
  61. package/src/lifecycle/LifecycleManager.ts +0 -2126
  62. package/src/lifecycle/OriginalsAsset.ts +0 -524
  63. package/src/lifecycle/ProvenanceQuery.ts +0 -280
  64. package/src/lifecycle/ResourceVersioning.ts +0 -163
  65. package/src/migration/MigrationManager.ts +0 -527
  66. package/src/migration/audit/AuditLogger.ts +0 -176
  67. package/src/migration/checkpoint/CheckpointManager.ts +0 -112
  68. package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
  69. package/src/migration/index.ts +0 -33
  70. package/src/migration/operations/BaseMigration.ts +0 -126
  71. package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
  72. package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
  73. package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
  74. package/src/migration/rollback/RollbackManager.ts +0 -170
  75. package/src/migration/state/StateMachine.ts +0 -92
  76. package/src/migration/state/StateTracker.ts +0 -156
  77. package/src/migration/types.ts +0 -344
  78. package/src/migration/validation/BitcoinValidator.ts +0 -107
  79. package/src/migration/validation/CredentialValidator.ts +0 -62
  80. package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
  81. package/src/migration/validation/LifecycleValidator.ts +0 -64
  82. package/src/migration/validation/StorageValidator.ts +0 -79
  83. package/src/migration/validation/ValidationPipeline.ts +0 -213
  84. package/src/resources/ResourceManager.ts +0 -655
  85. package/src/resources/index.ts +0 -21
  86. package/src/resources/types.ts +0 -202
  87. package/src/storage/LocalStorageAdapter.ts +0 -61
  88. package/src/storage/MemoryStorageAdapter.ts +0 -29
  89. package/src/storage/StorageAdapter.ts +0 -25
  90. package/src/storage/index.ts +0 -3
  91. package/src/types/bitcoin.ts +0 -98
  92. package/src/types/common.ts +0 -92
  93. package/src/types/credentials.ts +0 -88
  94. package/src/types/did.ts +0 -31
  95. package/src/types/external-shims.d.ts +0 -53
  96. package/src/types/index.ts +0 -7
  97. package/src/types/network.ts +0 -175
  98. package/src/utils/EventLogger.ts +0 -298
  99. package/src/utils/Logger.ts +0 -322
  100. package/src/utils/MetricsCollector.ts +0 -358
  101. package/src/utils/bitcoin-address.ts +0 -130
  102. package/src/utils/cbor.ts +0 -12
  103. package/src/utils/encoding.ts +0 -127
  104. package/src/utils/hash.ts +0 -6
  105. package/src/utils/retry.ts +0 -46
  106. package/src/utils/satoshi-validation.ts +0 -196
  107. package/src/utils/serialization.ts +0 -96
  108. package/src/utils/telemetry.ts +0 -40
  109. package/src/utils/validation.ts +0 -119
  110. package/src/vc/CredentialManager.ts +0 -918
  111. package/src/vc/Issuer.ts +0 -100
  112. package/src/vc/Verifier.ts +0 -47
  113. package/src/vc/cryptosuites/bbs.ts +0 -253
  114. package/src/vc/cryptosuites/bbsSimple.ts +0 -21
  115. package/src/vc/cryptosuites/eddsa.ts +0 -99
  116. package/src/vc/documentLoader.ts +0 -67
  117. package/src/vc/proofs/data-integrity.ts +0 -33
  118. package/src/vc/utils/jsonld.ts +0 -18
  119. package/tests/__mocks__/bbs-signatures.js +0 -17
  120. package/tests/__mocks__/mf-base58.js +0 -24
  121. package/tests/fixtures/did-documents.ts +0 -247
  122. package/tests/index.test.ts +0 -21
  123. package/tests/integration/BatchOperations.test.ts +0 -531
  124. package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
  125. package/tests/integration/CredentialManager.test.ts +0 -42
  126. package/tests/integration/DIDManager.test.ts +0 -41
  127. package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
  128. package/tests/integration/Events.test.ts +0 -435
  129. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
  130. package/tests/integration/LifecycleManager.test.ts +0 -21
  131. package/tests/integration/MultikeyFlow.test.ts +0 -52
  132. package/tests/integration/TelemetryIntegration.test.ts +0 -395
  133. package/tests/integration/WebVhPublish.test.ts +0 -48
  134. package/tests/integration/createTypedOriginal.test.ts +0 -379
  135. package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
  136. package/tests/manual/test-commit-creation.ts +0 -323
  137. package/tests/mocks/MockKeyStore.ts +0 -38
  138. package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
  139. package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
  140. package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
  141. package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
  142. package/tests/mocks/adapters/index.ts +0 -6
  143. package/tests/performance/BatchOperations.perf.test.ts +0 -403
  144. package/tests/performance/logging.perf.test.ts +0 -336
  145. package/tests/sdk.test.ts +0 -43
  146. package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
  147. package/tests/setup.bun.ts +0 -69
  148. package/tests/setup.jest.ts +0 -23
  149. package/tests/stress/batch-operations-stress.test.ts +0 -571
  150. package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
  151. package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
  152. package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
  153. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
  154. package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
  155. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
  156. package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
  157. package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
  158. package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
  159. package/tests/unit/bitcoin/transfer.test.ts +0 -31
  160. package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
  161. package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
  162. package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
  163. package/tests/unit/core/OriginalsSDK.test.ts +0 -152
  164. package/tests/unit/crypto/Multikey.test.ts +0 -206
  165. package/tests/unit/crypto/Signer.test.ts +0 -408
  166. package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
  167. package/tests/unit/did/DIDManager.more.test.ts +0 -43
  168. package/tests/unit/did/DIDManager.test.ts +0 -185
  169. package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
  170. package/tests/unit/did/KeyManager.test.ts +0 -452
  171. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
  172. package/tests/unit/did/WebVHManager.test.ts +0 -435
  173. package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
  174. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
  175. package/tests/unit/events/EventEmitter.test.ts +0 -407
  176. package/tests/unit/kinds/KindRegistry.test.ts +0 -329
  177. package/tests/unit/kinds/types.test.ts +0 -409
  178. package/tests/unit/kinds/validators.test.ts +0 -651
  179. package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
  180. package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
  181. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
  182. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
  183. package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
  184. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
  185. package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
  186. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
  187. package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
  188. package/tests/unit/resources/ResourceManager.test.ts +0 -740
  189. package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
  190. package/tests/unit/types/network.test.ts +0 -255
  191. package/tests/unit/utils/EventIntegration.test.ts +0 -384
  192. package/tests/unit/utils/Logger.test.ts +0 -473
  193. package/tests/unit/utils/MetricsCollector.test.ts +0 -358
  194. package/tests/unit/utils/bitcoin-address.test.ts +0 -250
  195. package/tests/unit/utils/cbor.test.ts +0 -35
  196. package/tests/unit/utils/encoding.test.ts +0 -318
  197. package/tests/unit/utils/hash.test.ts +0 -12
  198. package/tests/unit/utils/retry.test.ts +0 -100
  199. package/tests/unit/utils/satoshi-validation.test.ts +0 -354
  200. package/tests/unit/utils/serialization.test.ts +0 -124
  201. package/tests/unit/utils/telemetry.test.ts +0 -52
  202. package/tests/unit/utils/validation.test.ts +0 -141
  203. package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
  204. package/tests/unit/vc/CredentialManager.test.ts +0 -487
  205. package/tests/unit/vc/Issuer.test.ts +0 -107
  206. package/tests/unit/vc/Verifier.test.ts +0 -525
  207. package/tests/unit/vc/bbs.test.ts +0 -282
  208. package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
  209. package/tests/unit/vc/documentLoader.test.ts +0 -121
  210. package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
  211. package/tsconfig.json +0 -31
  212. package/tsconfig.test.json +0 -15
@@ -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
- }
@@ -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
-