@originals/sdk 1.2.0 → 1.4.2

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 (244) hide show
  1. package/package.json +1 -1
  2. package/src/did/DIDManager.ts +1 -1
  3. package/src/did/WebVHManager.ts +11 -2
  4. package/src/examples/create-module-original.ts +435 -0
  5. package/src/examples/full-lifecycle-flow.ts +514 -0
  6. package/src/examples/run.ts +59 -4
  7. package/src/index.ts +69 -3
  8. package/src/kinds/KindRegistry.ts +290 -0
  9. package/src/kinds/index.ts +74 -0
  10. package/src/kinds/types.ts +470 -0
  11. package/src/kinds/validators/AgentValidator.ts +257 -0
  12. package/src/kinds/validators/AppValidator.ts +211 -0
  13. package/src/kinds/validators/DatasetValidator.ts +242 -0
  14. package/src/kinds/validators/DocumentValidator.ts +311 -0
  15. package/src/kinds/validators/MediaValidator.ts +269 -0
  16. package/src/kinds/validators/ModuleValidator.ts +225 -0
  17. package/src/kinds/validators/base.ts +276 -0
  18. package/src/kinds/validators/index.ts +12 -0
  19. package/src/lifecycle/LifecycleManager.ts +909 -1
  20. package/src/resources/ResourceManager.ts +655 -0
  21. package/src/resources/index.ts +21 -0
  22. package/src/resources/types.ts +202 -0
  23. package/src/types/common.ts +1 -1
  24. package/src/vc/CredentialManager.ts +647 -2
  25. package/tests/integration/createTypedOriginal.test.ts +379 -0
  26. package/tests/performance/BatchOperations.perf.test.ts +2 -2
  27. package/tests/unit/kinds/KindRegistry.test.ts +329 -0
  28. package/tests/unit/kinds/types.test.ts +409 -0
  29. package/tests/unit/kinds/validators.test.ts +651 -0
  30. package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +441 -0
  31. package/tests/unit/resources/ResourceManager.test.ts +740 -0
  32. package/tests/unit/vc/CredentialManager.helpers.test.ts +527 -0
  33. package/.turbo/turbo-build.log +0 -1
  34. package/dist/adapters/FeeOracleMock.d.ts +0 -6
  35. package/dist/adapters/FeeOracleMock.js +0 -8
  36. package/dist/adapters/index.d.ts +0 -4
  37. package/dist/adapters/index.js +0 -4
  38. package/dist/adapters/providers/OrdHttpProvider.d.ts +0 -56
  39. package/dist/adapters/providers/OrdHttpProvider.js +0 -110
  40. package/dist/adapters/providers/OrdMockProvider.d.ts +0 -70
  41. package/dist/adapters/providers/OrdMockProvider.js +0 -75
  42. package/dist/adapters/types.d.ts +0 -71
  43. package/dist/adapters/types.js +0 -1
  44. package/dist/bitcoin/BitcoinManager.d.ts +0 -15
  45. package/dist/bitcoin/BitcoinManager.js +0 -262
  46. package/dist/bitcoin/BroadcastClient.d.ts +0 -30
  47. package/dist/bitcoin/BroadcastClient.js +0 -35
  48. package/dist/bitcoin/OrdinalsClient.d.ts +0 -21
  49. package/dist/bitcoin/OrdinalsClient.js +0 -105
  50. package/dist/bitcoin/PSBTBuilder.d.ts +0 -24
  51. package/dist/bitcoin/PSBTBuilder.js +0 -80
  52. package/dist/bitcoin/fee-calculation.d.ts +0 -14
  53. package/dist/bitcoin/fee-calculation.js +0 -31
  54. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +0 -38
  55. package/dist/bitcoin/providers/OrdNodeProvider.js +0 -67
  56. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +0 -33
  57. package/dist/bitcoin/providers/OrdinalsProvider.js +0 -50
  58. package/dist/bitcoin/providers/types.d.ts +0 -63
  59. package/dist/bitcoin/providers/types.js +0 -1
  60. package/dist/bitcoin/transactions/commit.d.ts +0 -89
  61. package/dist/bitcoin/transactions/commit.js +0 -311
  62. package/dist/bitcoin/transactions/index.d.ts +0 -7
  63. package/dist/bitcoin/transactions/index.js +0 -8
  64. package/dist/bitcoin/transfer.d.ts +0 -9
  65. package/dist/bitcoin/transfer.js +0 -26
  66. package/dist/bitcoin/utxo-selection.d.ts +0 -78
  67. package/dist/bitcoin/utxo-selection.js +0 -237
  68. package/dist/bitcoin/utxo.d.ts +0 -26
  69. package/dist/bitcoin/utxo.js +0 -78
  70. package/dist/contexts/credentials-v1.json +0 -195
  71. package/dist/contexts/credentials-v2-examples.json +0 -5
  72. package/dist/contexts/credentials-v2.json +0 -301
  73. package/dist/contexts/credentials.json +0 -195
  74. package/dist/contexts/data-integrity-v2.json +0 -81
  75. package/dist/contexts/dids.json +0 -57
  76. package/dist/contexts/ed255192020.json +0 -93
  77. package/dist/contexts/ordinals-plus.json +0 -23
  78. package/dist/contexts/originals.json +0 -22
  79. package/dist/core/OriginalsSDK.d.ts +0 -158
  80. package/dist/core/OriginalsSDK.js +0 -274
  81. package/dist/crypto/Multikey.d.ts +0 -30
  82. package/dist/crypto/Multikey.js +0 -149
  83. package/dist/crypto/Signer.d.ts +0 -21
  84. package/dist/crypto/Signer.js +0 -196
  85. package/dist/crypto/noble-init.d.ts +0 -18
  86. package/dist/crypto/noble-init.js +0 -106
  87. package/dist/did/BtcoDidResolver.d.ts +0 -57
  88. package/dist/did/BtcoDidResolver.js +0 -166
  89. package/dist/did/DIDManager.d.ts +0 -101
  90. package/dist/did/DIDManager.js +0 -493
  91. package/dist/did/Ed25519Verifier.d.ts +0 -30
  92. package/dist/did/Ed25519Verifier.js +0 -59
  93. package/dist/did/KeyManager.d.ts +0 -17
  94. package/dist/did/KeyManager.js +0 -207
  95. package/dist/did/WebVHManager.d.ts +0 -100
  96. package/dist/did/WebVHManager.js +0 -304
  97. package/dist/did/createBtcoDidDocument.d.ts +0 -10
  98. package/dist/did/createBtcoDidDocument.js +0 -42
  99. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +0 -23
  100. package/dist/did/providers/OrdinalsClientProviderAdapter.js +0 -51
  101. package/dist/events/EventEmitter.d.ts +0 -115
  102. package/dist/events/EventEmitter.js +0 -198
  103. package/dist/events/index.d.ts +0 -7
  104. package/dist/events/index.js +0 -6
  105. package/dist/events/types.d.ts +0 -286
  106. package/dist/events/types.js +0 -9
  107. package/dist/examples/basic-usage.d.ts +0 -3
  108. package/dist/examples/basic-usage.js +0 -62
  109. package/dist/examples/run.d.ts +0 -1
  110. package/dist/examples/run.js +0 -4
  111. package/dist/index.d.ts +0 -39
  112. package/dist/index.js +0 -47
  113. package/dist/lifecycle/BatchOperations.d.ts +0 -147
  114. package/dist/lifecycle/BatchOperations.js +0 -251
  115. package/dist/lifecycle/LifecycleManager.d.ts +0 -116
  116. package/dist/lifecycle/LifecycleManager.js +0 -971
  117. package/dist/lifecycle/OriginalsAsset.d.ts +0 -164
  118. package/dist/lifecycle/OriginalsAsset.js +0 -380
  119. package/dist/lifecycle/ProvenanceQuery.d.ts +0 -126
  120. package/dist/lifecycle/ProvenanceQuery.js +0 -220
  121. package/dist/lifecycle/ResourceVersioning.d.ts +0 -73
  122. package/dist/lifecycle/ResourceVersioning.js +0 -127
  123. package/dist/migration/MigrationManager.d.ts +0 -86
  124. package/dist/migration/MigrationManager.js +0 -412
  125. package/dist/migration/audit/AuditLogger.d.ts +0 -51
  126. package/dist/migration/audit/AuditLogger.js +0 -156
  127. package/dist/migration/checkpoint/CheckpointManager.d.ts +0 -31
  128. package/dist/migration/checkpoint/CheckpointManager.js +0 -96
  129. package/dist/migration/checkpoint/CheckpointStorage.d.ts +0 -26
  130. package/dist/migration/checkpoint/CheckpointStorage.js +0 -89
  131. package/dist/migration/index.d.ts +0 -22
  132. package/dist/migration/index.js +0 -27
  133. package/dist/migration/operations/BaseMigration.d.ts +0 -48
  134. package/dist/migration/operations/BaseMigration.js +0 -83
  135. package/dist/migration/operations/PeerToBtcoMigration.d.ts +0 -25
  136. package/dist/migration/operations/PeerToBtcoMigration.js +0 -67
  137. package/dist/migration/operations/PeerToWebvhMigration.d.ts +0 -19
  138. package/dist/migration/operations/PeerToWebvhMigration.js +0 -46
  139. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +0 -25
  140. package/dist/migration/operations/WebvhToBtcoMigration.js +0 -67
  141. package/dist/migration/rollback/RollbackManager.d.ts +0 -29
  142. package/dist/migration/rollback/RollbackManager.js +0 -146
  143. package/dist/migration/state/StateMachine.d.ts +0 -25
  144. package/dist/migration/state/StateMachine.js +0 -76
  145. package/dist/migration/state/StateTracker.d.ts +0 -36
  146. package/dist/migration/state/StateTracker.js +0 -123
  147. package/dist/migration/types.d.ts +0 -306
  148. package/dist/migration/types.js +0 -33
  149. package/dist/migration/validation/BitcoinValidator.d.ts +0 -13
  150. package/dist/migration/validation/BitcoinValidator.js +0 -83
  151. package/dist/migration/validation/CredentialValidator.d.ts +0 -13
  152. package/dist/migration/validation/CredentialValidator.js +0 -46
  153. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +0 -16
  154. package/dist/migration/validation/DIDCompatibilityValidator.js +0 -127
  155. package/dist/migration/validation/LifecycleValidator.d.ts +0 -10
  156. package/dist/migration/validation/LifecycleValidator.js +0 -52
  157. package/dist/migration/validation/StorageValidator.d.ts +0 -10
  158. package/dist/migration/validation/StorageValidator.js +0 -65
  159. package/dist/migration/validation/ValidationPipeline.d.ts +0 -29
  160. package/dist/migration/validation/ValidationPipeline.js +0 -180
  161. package/dist/storage/LocalStorageAdapter.d.ts +0 -11
  162. package/dist/storage/LocalStorageAdapter.js +0 -53
  163. package/dist/storage/MemoryStorageAdapter.d.ts +0 -6
  164. package/dist/storage/MemoryStorageAdapter.js +0 -21
  165. package/dist/storage/StorageAdapter.d.ts +0 -16
  166. package/dist/storage/StorageAdapter.js +0 -1
  167. package/dist/storage/index.d.ts +0 -2
  168. package/dist/storage/index.js +0 -2
  169. package/dist/types/bitcoin.d.ts +0 -84
  170. package/dist/types/bitcoin.js +0 -1
  171. package/dist/types/common.d.ts +0 -82
  172. package/dist/types/common.js +0 -1
  173. package/dist/types/credentials.d.ts +0 -75
  174. package/dist/types/credentials.js +0 -1
  175. package/dist/types/did.d.ts +0 -26
  176. package/dist/types/did.js +0 -1
  177. package/dist/types/index.d.ts +0 -5
  178. package/dist/types/index.js +0 -5
  179. package/dist/types/network.d.ts +0 -78
  180. package/dist/types/network.js +0 -145
  181. package/dist/utils/EventLogger.d.ts +0 -71
  182. package/dist/utils/EventLogger.js +0 -232
  183. package/dist/utils/Logger.d.ts +0 -106
  184. package/dist/utils/Logger.js +0 -257
  185. package/dist/utils/MetricsCollector.d.ts +0 -110
  186. package/dist/utils/MetricsCollector.js +0 -264
  187. package/dist/utils/bitcoin-address.d.ts +0 -38
  188. package/dist/utils/bitcoin-address.js +0 -113
  189. package/dist/utils/cbor.d.ts +0 -2
  190. package/dist/utils/cbor.js +0 -9
  191. package/dist/utils/encoding.d.ts +0 -37
  192. package/dist/utils/encoding.js +0 -120
  193. package/dist/utils/hash.d.ts +0 -1
  194. package/dist/utils/hash.js +0 -5
  195. package/dist/utils/retry.d.ts +0 -10
  196. package/dist/utils/retry.js +0 -35
  197. package/dist/utils/satoshi-validation.d.ts +0 -60
  198. package/dist/utils/satoshi-validation.js +0 -156
  199. package/dist/utils/serialization.d.ts +0 -14
  200. package/dist/utils/serialization.js +0 -76
  201. package/dist/utils/telemetry.d.ts +0 -17
  202. package/dist/utils/telemetry.js +0 -24
  203. package/dist/utils/validation.d.ts +0 -5
  204. package/dist/utils/validation.js +0 -98
  205. package/dist/vc/CredentialManager.d.ts +0 -22
  206. package/dist/vc/CredentialManager.js +0 -227
  207. package/dist/vc/Issuer.d.ts +0 -27
  208. package/dist/vc/Issuer.js +0 -70
  209. package/dist/vc/Verifier.d.ts +0 -16
  210. package/dist/vc/Verifier.js +0 -50
  211. package/dist/vc/cryptosuites/bbs.d.ts +0 -44
  212. package/dist/vc/cryptosuites/bbs.js +0 -213
  213. package/dist/vc/cryptosuites/bbsSimple.d.ts +0 -9
  214. package/dist/vc/cryptosuites/bbsSimple.js +0 -12
  215. package/dist/vc/cryptosuites/eddsa.d.ts +0 -30
  216. package/dist/vc/cryptosuites/eddsa.js +0 -81
  217. package/dist/vc/documentLoader.d.ts +0 -16
  218. package/dist/vc/documentLoader.js +0 -59
  219. package/dist/vc/proofs/data-integrity.d.ts +0 -21
  220. package/dist/vc/proofs/data-integrity.js +0 -15
  221. package/dist/vc/utils/jsonld.d.ts +0 -2
  222. package/dist/vc/utils/jsonld.js +0 -15
  223. package/test/logs/did_webvh_QmNTn9Kkp8dQ75WrF9xqJ2kuDp9QhKc3aPiERRMj8XoTBN_example_com.jsonl +0 -1
  224. package/test/logs/did_webvh_QmNu4MNr8Lr5txx5gYNhuhZDchXsZEu3hJXKYuphpWTPDp_example_com_users_etc_passwd.jsonl +0 -1
  225. package/test/logs/did_webvh_QmR9MrGZACzjKETA8SBRNCKG11HxU85c4bVR2qN5eDCfsD_example_com.jsonl +0 -1
  226. package/test/logs/did_webvh_QmUc5suaqRM2P4nrXxZwqYMfqzhdMqjuL7oJaJbEpCQVCd_example_com_users_etc_passwd.jsonl +0 -1
  227. package/test/logs/did_webvh_QmUkiB2RCV2VZ1RTXsCebWN25Eiy9TLvpzDWAJNjhgvB4X_example_com_etc_passwd.jsonl +0 -1
  228. package/test/logs/did_webvh_QmUoRTe8UMwpAQXZSAW7pjAgZK1tq2X3C6Kfxq3UXGcaGy_example_com_secret.jsonl +0 -1
  229. package/test/logs/did_webvh_QmWWot3chx1t6KwTmcE5i2FeDZ5JMkQw3qXycsKDVmJ9Be_example_com_users_alice.jsonl +0 -1
  230. package/test/logs/did_webvh_QmWvVgALL5kjZdpgR7KZay7J8UiiUr834kkRmWeFAxjAuC_example_com_users_etc_passwd.jsonl +0 -1
  231. package/test/logs/did_webvh_QmWwaRQHUZAFcKihFC6xR6tRTTrQhHPTku6azf1egWbpy1_example_com_users_alice.jsonl +0 -1
  232. package/test/logs/did_webvh_QmXJLtkz23r7AozbtXsZMKWnVU6rd38CkVtjdWuATU3Yp6_example_com_users_alice123_profile.jsonl +0 -1
  233. package/test/logs/did_webvh_QmYsce448po14oDE1wXbyaP6wY9HQgHSKLwdezn1k577SF_example_com_my_org_user_name_test_123.jsonl +0 -1
  234. package/test/logs/did_webvh_QmZBeNzzqajxdfwcDUPZ4P8C5YSXyRztrAwmPiKuKUxmAK_example_com.jsonl +0 -1
  235. package/test/logs/did_webvh_QmZhJsqxizwVbRtqCUkmE6XQunSxtxMt3gbTYadVBNAaEq_example_com.jsonl +0 -1
  236. package/test/logs/did_webvh_QmZk7NHU2D57RzzbMq4tWW9gBa9AqtVTWfiRM6RFdwGVj2_example_com.jsonl +0 -1
  237. package/test/logs/did_webvh_QmZshSXp9w8ovH62zGGBS1b5pGGPsuYiu1VQ935sga2hWF_example_com_level1_level2.jsonl +0 -1
  238. package/test/logs/did_webvh_QmbWAmw7HQL7vKJyCsctZihXf1rmT4sGvggKCPKWcUWjw1_example_com.jsonl +0 -1
  239. package/test/logs/did_webvh_QmbdLUMbYs3juR39TLB6hhrFWLcNg45ybUzeBJCS1MhCh1_example_com_C_Windows_System32.jsonl +0 -1
  240. package/test/logs/did_webvh_QmcaQ1Ma4gkSbae85aCm8Mv4rvdT2Sb2RR3JzYwrm5XBq8_example_com_etc_passwd.jsonl +0 -1
  241. package/test/logs/did_webvh_QmcbA7WQhsBqZSoDpKJHjV8Q5o53h8vmgJhQfo6rqTY5ho_example_com.jsonl +0 -1
  242. package/test/logs/did_webvh_Qmdy8uWr2gkUJrXsThynAug3DASTWwb3onEj89LKmMGZYB_example_com.jsonl +0 -1
  243. package/tests/e2e/README.md +0 -97
  244. package/tests/e2e/example.spec.ts +0 -78
@@ -1,106 +0,0 @@
1
- /**
2
- * Enhanced Logger for Originals SDK
3
- *
4
- * Features:
5
- * - Multiple log levels (debug, info, warn, error)
6
- * - Child loggers with hierarchical context
7
- * - Performance timing with startTimer
8
- * - Multiple output destinations
9
- * - Data sanitization for sensitive information
10
- * - Async-safe operations
11
- */
12
- import type { OriginalsConfig } from '../types';
13
- /**
14
- * Log level type
15
- */
16
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
17
- /**
18
- * Structured log entry
19
- */
20
- export interface LogEntry {
21
- timestamp: string;
22
- level: LogLevel;
23
- context: string;
24
- message: string;
25
- data?: any;
26
- duration?: number;
27
- traceId?: string;
28
- }
29
- /**
30
- * Log output interface for custom outputs
31
- */
32
- export interface LogOutput {
33
- write(entry: LogEntry): void | Promise<void>;
34
- }
35
- /**
36
- * Console log output implementation
37
- */
38
- export declare class ConsoleLogOutput implements LogOutput {
39
- write(entry: LogEntry): void;
40
- }
41
- /**
42
- * File log output implementation (async)
43
- */
44
- export declare class FileLogOutput implements LogOutput {
45
- private filePath;
46
- private buffer;
47
- private flushTimeout;
48
- private readonly flushInterval;
49
- constructor(filePath: string);
50
- write(entry: LogEntry): Promise<void>;
51
- private flush;
52
- }
53
- /**
54
- * Main Logger class
55
- */
56
- export declare class Logger {
57
- private context;
58
- private outputs;
59
- private minLevel;
60
- private includeTimestamps;
61
- private includeContext;
62
- private sanitizeLogs;
63
- private static readonly LEVEL_PRIORITY;
64
- constructor(context: string, config: OriginalsConfig);
65
- /**
66
- * Log a debug message
67
- */
68
- debug(message: string, data?: any): void;
69
- /**
70
- * Log an info message
71
- */
72
- info(message: string, data?: any): void;
73
- /**
74
- * Log a warning message
75
- */
76
- warn(message: string, data?: any): void;
77
- /**
78
- * Log an error message
79
- */
80
- error(message: string, error?: Error, data?: any): void;
81
- /**
82
- * Start a timer for performance tracking
83
- * Returns a function that stops the timer and logs the duration
84
- */
85
- startTimer(operation: string): () => void;
86
- /**
87
- * Create a child logger with nested context
88
- */
89
- child(childContext: string): Logger;
90
- /**
91
- * Set a single output (replaces existing outputs)
92
- */
93
- setOutput(output: LogOutput): void;
94
- /**
95
- * Add an output to the existing outputs
96
- */
97
- addOutput(output: LogOutput): void;
98
- /**
99
- * Internal log method
100
- */
101
- private log;
102
- /**
103
- * Sanitize sensitive data from logs
104
- */
105
- private sanitize;
106
- }
@@ -1,257 +0,0 @@
1
- /**
2
- * Enhanced Logger for Originals SDK
3
- *
4
- * Features:
5
- * - Multiple log levels (debug, info, warn, error)
6
- * - Child loggers with hierarchical context
7
- * - Performance timing with startTimer
8
- * - Multiple output destinations
9
- * - Data sanitization for sensitive information
10
- * - Async-safe operations
11
- */
12
- /**
13
- * Console log output implementation
14
- */
15
- export class ConsoleLogOutput {
16
- write(entry) {
17
- const timestamp = entry.timestamp;
18
- const level = entry.level.toUpperCase().padEnd(5);
19
- const context = entry.context;
20
- const message = entry.message;
21
- const durationStr = entry.duration !== undefined ? ` (${entry.duration.toFixed(2)}ms)` : '';
22
- const dataStr = entry.data ? ` ${JSON.stringify(entry.data)}` : '';
23
- const logMessage = `[${timestamp}] ${level} [${context}] ${message}${durationStr}${dataStr}`;
24
- switch (entry.level) {
25
- case 'debug':
26
- console.debug(logMessage);
27
- break;
28
- case 'info':
29
- console.info(logMessage);
30
- break;
31
- case 'warn':
32
- console.warn(logMessage);
33
- break;
34
- case 'error':
35
- console.error(logMessage);
36
- break;
37
- }
38
- }
39
- }
40
- /**
41
- * File log output implementation (async)
42
- */
43
- export class FileLogOutput {
44
- constructor(filePath) {
45
- this.filePath = filePath;
46
- this.buffer = [];
47
- this.flushTimeout = null;
48
- this.flushInterval = 1000; // Flush every 1 second
49
- }
50
- async write(entry) {
51
- // Format as JSON line
52
- const line = JSON.stringify(entry) + '\n';
53
- this.buffer.push(line);
54
- // Schedule flush
55
- if (!this.flushTimeout) {
56
- this.flushTimeout = setTimeout(() => this.flush(), this.flushInterval);
57
- }
58
- }
59
- async flush() {
60
- if (this.buffer.length === 0) {
61
- return;
62
- }
63
- const lines = this.buffer.join('');
64
- this.buffer = [];
65
- this.flushTimeout = null;
66
- try {
67
- // Use Bun's file API for efficient file writing
68
- const file = Bun.file(this.filePath);
69
- const exists = await file.exists();
70
- if (exists) {
71
- // Append to existing file
72
- const content = await file.text();
73
- await Bun.write(this.filePath, content + lines);
74
- }
75
- else {
76
- // Create new file
77
- await Bun.write(this.filePath, lines);
78
- }
79
- }
80
- catch (err) {
81
- // Fallback to console on file write error
82
- console.error('Failed to write log file:', err);
83
- }
84
- }
85
- }
86
- /**
87
- * Main Logger class
88
- */
89
- export class Logger {
90
- constructor(context, config) {
91
- this.context = context;
92
- this.outputs = [];
93
- this.minLevel = config.logging?.level || 'info';
94
- this.includeTimestamps = config.logging?.includeTimestamps !== false;
95
- this.includeContext = config.logging?.includeContext !== false;
96
- this.sanitizeLogs = config.logging?.sanitizeLogs !== false;
97
- // Set up default outputs
98
- if (config.logging?.outputs && config.logging.outputs.length > 0) {
99
- this.outputs = [...config.logging.outputs];
100
- }
101
- else {
102
- // Default to console output
103
- this.outputs = [new ConsoleLogOutput()];
104
- }
105
- }
106
- /**
107
- * Log a debug message
108
- */
109
- debug(message, data) {
110
- this.log('debug', message, data);
111
- }
112
- /**
113
- * Log an info message
114
- */
115
- info(message, data) {
116
- this.log('info', message, data);
117
- }
118
- /**
119
- * Log a warning message
120
- */
121
- warn(message, data) {
122
- this.log('warn', message, data);
123
- }
124
- /**
125
- * Log an error message
126
- */
127
- error(message, error, data) {
128
- const errorData = error ? {
129
- ...data,
130
- error: {
131
- name: error.name,
132
- message: error.message,
133
- stack: error.stack
134
- }
135
- } : data;
136
- this.log('error', message, errorData);
137
- }
138
- /**
139
- * Start a timer for performance tracking
140
- * Returns a function that stops the timer and logs the duration
141
- */
142
- startTimer(operation) {
143
- const startTime = performance.now();
144
- return () => {
145
- const duration = performance.now() - startTime;
146
- this.log('debug', `${operation} completed`, undefined, duration);
147
- };
148
- }
149
- /**
150
- * Create a child logger with nested context
151
- */
152
- child(childContext) {
153
- const newLogger = Object.create(Logger.prototype);
154
- newLogger.context = `${this.context}:${childContext}`;
155
- newLogger.outputs = this.outputs;
156
- newLogger.minLevel = this.minLevel;
157
- newLogger.includeTimestamps = this.includeTimestamps;
158
- newLogger.includeContext = this.includeContext;
159
- newLogger.sanitizeLogs = this.sanitizeLogs;
160
- return newLogger;
161
- }
162
- /**
163
- * Set a single output (replaces existing outputs)
164
- */
165
- setOutput(output) {
166
- this.outputs = [output];
167
- }
168
- /**
169
- * Add an output to the existing outputs
170
- */
171
- addOutput(output) {
172
- this.outputs.push(output);
173
- }
174
- /**
175
- * Internal log method
176
- */
177
- log(level, message, data, duration) {
178
- // Check if we should log this level
179
- if (Logger.LEVEL_PRIORITY[level] < Logger.LEVEL_PRIORITY[this.minLevel]) {
180
- return;
181
- }
182
- // Sanitize data if needed
183
- const sanitizedData = this.sanitizeLogs ? this.sanitize(data) : data;
184
- // Create log entry
185
- const entry = {
186
- timestamp: this.includeTimestamps ? new Date().toISOString() : '',
187
- level,
188
- context: this.includeContext ? this.context : '',
189
- message,
190
- data: sanitizedData,
191
- duration
192
- };
193
- // Write to all outputs (fire and forget for async outputs)
194
- for (const output of this.outputs) {
195
- try {
196
- const result = output.write(entry);
197
- // If result is a promise, don't await it (non-blocking)
198
- if (result instanceof Promise) {
199
- result.catch(err => {
200
- // Silently fail for async outputs to avoid blocking
201
- if (typeof console !== 'undefined' && console.error) {
202
- console.error('Log output error:', err);
203
- }
204
- });
205
- }
206
- }
207
- catch (err) {
208
- // Continue even if one output fails
209
- if (typeof console !== 'undefined' && console.error) {
210
- console.error('Log output error:', err);
211
- }
212
- }
213
- }
214
- }
215
- /**
216
- * Sanitize sensitive data from logs
217
- */
218
- sanitize(data) {
219
- if (!data) {
220
- return data;
221
- }
222
- // Handle arrays
223
- if (Array.isArray(data)) {
224
- return data.map(item => this.sanitize(item));
225
- }
226
- // Handle objects
227
- if (typeof data === 'object') {
228
- const sanitized = {};
229
- for (const [key, value] of Object.entries(data)) {
230
- const lowerKey = key.toLowerCase();
231
- // Sanitize sensitive keys
232
- if (lowerKey.includes('private') ||
233
- lowerKey.includes('key') ||
234
- lowerKey.includes('secret') ||
235
- lowerKey.includes('password') ||
236
- lowerKey.includes('token') ||
237
- lowerKey.includes('credential')) {
238
- sanitized[key] = '[REDACTED]';
239
- }
240
- else {
241
- // Recursively sanitize nested objects
242
- sanitized[key] = this.sanitize(value);
243
- }
244
- }
245
- return sanitized;
246
- }
247
- // Return primitive values as-is
248
- return data;
249
- }
250
- }
251
- // Log level priorities
252
- Logger.LEVEL_PRIORITY = {
253
- debug: 0,
254
- info: 1,
255
- warn: 2,
256
- error: 3
257
- };
@@ -1,110 +0,0 @@
1
- /**
2
- * Metrics Collector for Originals SDK
3
- *
4
- * Features:
5
- * - Track operation counts and performance
6
- * - Asset lifecycle metrics (created, migrated, transferred)
7
- * - Error tracking by error code
8
- * - Cache statistics (optional)
9
- * - Export in JSON and Prometheus formats
10
- * - Memory-efficient storage
11
- */
12
- import type { LayerType } from '../types';
13
- /**
14
- * Operation-specific metrics
15
- */
16
- export interface OperationMetrics {
17
- count: number;
18
- totalTime: number;
19
- avgTime: number;
20
- minTime: number;
21
- maxTime: number;
22
- errorCount: number;
23
- }
24
- /**
25
- * Complete metrics snapshot
26
- */
27
- export interface Metrics {
28
- assetsCreated: number;
29
- assetsMigrated: Record<string, number>;
30
- assetsTransferred: number;
31
- operationTimes: Record<string, OperationMetrics>;
32
- errors: Record<string, number>;
33
- cacheStats?: {
34
- hits: number;
35
- misses: number;
36
- hitRate: number;
37
- };
38
- startTime: string;
39
- uptime: number;
40
- }
41
- /**
42
- * MetricsCollector class
43
- */
44
- export declare class MetricsCollector {
45
- private assetsCreatedCount;
46
- private assetsMigratedMap;
47
- private assetsTransferredCount;
48
- private operationMetrics;
49
- private errorCounts;
50
- private cacheHits;
51
- private cacheMisses;
52
- private readonly startTime;
53
- constructor();
54
- /**
55
- * Record an operation with timing and success status
56
- */
57
- recordOperation(operation: string, duration: number, success: boolean): void;
58
- /**
59
- * Start tracking an operation, returns completion function
60
- */
61
- startOperation(operation: string): () => void;
62
- /**
63
- * Record an asset creation
64
- */
65
- recordAssetCreated(): void;
66
- /**
67
- * Record an asset migration between layers
68
- */
69
- recordMigration(from: LayerType, to: LayerType): void;
70
- /**
71
- * Record an asset transfer
72
- */
73
- recordTransfer(): void;
74
- /**
75
- * Record an error by error code
76
- */
77
- recordError(code: string, operation?: string): void;
78
- /**
79
- * Record a cache hit
80
- */
81
- recordCacheHit(): void;
82
- /**
83
- * Record a cache miss
84
- */
85
- recordCacheMiss(): void;
86
- /**
87
- * Get a snapshot of all metrics
88
- */
89
- getMetrics(): Metrics;
90
- /**
91
- * Get metrics for a specific operation
92
- */
93
- getOperationMetrics(operation: string): OperationMetrics | null;
94
- /**
95
- * Reset all metrics
96
- */
97
- reset(): void;
98
- /**
99
- * Export metrics in the specified format
100
- */
101
- export(format: 'json' | 'prometheus'): string;
102
- /**
103
- * Export metrics as JSON
104
- */
105
- private exportJSON;
106
- /**
107
- * Export metrics in Prometheus format
108
- */
109
- private exportPrometheus;
110
- }