@originals/sdk 1.1.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 (247) hide show
  1. package/package.json +3 -2
  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/tsconfig.json +0 -1
  34. package/.turbo/turbo-build.log +0 -1
  35. package/.turbo/turbo-test.log +0 -68353
  36. package/dist/adapters/FeeOracleMock.d.ts +0 -6
  37. package/dist/adapters/FeeOracleMock.js +0 -8
  38. package/dist/adapters/index.d.ts +0 -4
  39. package/dist/adapters/index.js +0 -4
  40. package/dist/adapters/providers/OrdHttpProvider.d.ts +0 -56
  41. package/dist/adapters/providers/OrdHttpProvider.js +0 -110
  42. package/dist/adapters/providers/OrdMockProvider.d.ts +0 -70
  43. package/dist/adapters/providers/OrdMockProvider.js +0 -75
  44. package/dist/adapters/types.d.ts +0 -71
  45. package/dist/adapters/types.js +0 -1
  46. package/dist/bitcoin/BitcoinManager.d.ts +0 -15
  47. package/dist/bitcoin/BitcoinManager.js +0 -262
  48. package/dist/bitcoin/BroadcastClient.d.ts +0 -30
  49. package/dist/bitcoin/BroadcastClient.js +0 -35
  50. package/dist/bitcoin/OrdinalsClient.d.ts +0 -21
  51. package/dist/bitcoin/OrdinalsClient.js +0 -105
  52. package/dist/bitcoin/PSBTBuilder.d.ts +0 -24
  53. package/dist/bitcoin/PSBTBuilder.js +0 -80
  54. package/dist/bitcoin/fee-calculation.d.ts +0 -14
  55. package/dist/bitcoin/fee-calculation.js +0 -31
  56. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +0 -38
  57. package/dist/bitcoin/providers/OrdNodeProvider.js +0 -67
  58. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +0 -33
  59. package/dist/bitcoin/providers/OrdinalsProvider.js +0 -50
  60. package/dist/bitcoin/providers/types.d.ts +0 -63
  61. package/dist/bitcoin/providers/types.js +0 -1
  62. package/dist/bitcoin/transactions/commit.d.ts +0 -89
  63. package/dist/bitcoin/transactions/commit.js +0 -311
  64. package/dist/bitcoin/transactions/index.d.ts +0 -7
  65. package/dist/bitcoin/transactions/index.js +0 -8
  66. package/dist/bitcoin/transfer.d.ts +0 -9
  67. package/dist/bitcoin/transfer.js +0 -26
  68. package/dist/bitcoin/utxo-selection.d.ts +0 -78
  69. package/dist/bitcoin/utxo-selection.js +0 -237
  70. package/dist/bitcoin/utxo.d.ts +0 -26
  71. package/dist/bitcoin/utxo.js +0 -78
  72. package/dist/contexts/credentials-v1.json +0 -195
  73. package/dist/contexts/credentials-v2-examples.json +0 -5
  74. package/dist/contexts/credentials-v2.json +0 -301
  75. package/dist/contexts/credentials.json +0 -195
  76. package/dist/contexts/data-integrity-v2.json +0 -81
  77. package/dist/contexts/dids.json +0 -57
  78. package/dist/contexts/ed255192020.json +0 -93
  79. package/dist/contexts/ordinals-plus.json +0 -23
  80. package/dist/contexts/originals.json +0 -22
  81. package/dist/core/OriginalsSDK.d.ts +0 -158
  82. package/dist/core/OriginalsSDK.js +0 -274
  83. package/dist/crypto/Multikey.d.ts +0 -30
  84. package/dist/crypto/Multikey.js +0 -149
  85. package/dist/crypto/Signer.d.ts +0 -21
  86. package/dist/crypto/Signer.js +0 -196
  87. package/dist/crypto/noble-init.d.ts +0 -18
  88. package/dist/crypto/noble-init.js +0 -106
  89. package/dist/did/BtcoDidResolver.d.ts +0 -57
  90. package/dist/did/BtcoDidResolver.js +0 -166
  91. package/dist/did/DIDManager.d.ts +0 -101
  92. package/dist/did/DIDManager.js +0 -493
  93. package/dist/did/Ed25519Verifier.d.ts +0 -30
  94. package/dist/did/Ed25519Verifier.js +0 -59
  95. package/dist/did/KeyManager.d.ts +0 -17
  96. package/dist/did/KeyManager.js +0 -207
  97. package/dist/did/WebVHManager.d.ts +0 -100
  98. package/dist/did/WebVHManager.js +0 -304
  99. package/dist/did/createBtcoDidDocument.d.ts +0 -10
  100. package/dist/did/createBtcoDidDocument.js +0 -42
  101. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +0 -23
  102. package/dist/did/providers/OrdinalsClientProviderAdapter.js +0 -51
  103. package/dist/events/EventEmitter.d.ts +0 -115
  104. package/dist/events/EventEmitter.js +0 -198
  105. package/dist/events/index.d.ts +0 -7
  106. package/dist/events/index.js +0 -6
  107. package/dist/events/types.d.ts +0 -286
  108. package/dist/events/types.js +0 -9
  109. package/dist/examples/basic-usage.d.ts +0 -3
  110. package/dist/examples/basic-usage.js +0 -62
  111. package/dist/examples/run.d.ts +0 -1
  112. package/dist/examples/run.js +0 -4
  113. package/dist/index.d.ts +0 -39
  114. package/dist/index.js +0 -47
  115. package/dist/lifecycle/BatchOperations.d.ts +0 -147
  116. package/dist/lifecycle/BatchOperations.js +0 -251
  117. package/dist/lifecycle/LifecycleManager.d.ts +0 -116
  118. package/dist/lifecycle/LifecycleManager.js +0 -971
  119. package/dist/lifecycle/OriginalsAsset.d.ts +0 -164
  120. package/dist/lifecycle/OriginalsAsset.js +0 -380
  121. package/dist/lifecycle/ProvenanceQuery.d.ts +0 -126
  122. package/dist/lifecycle/ProvenanceQuery.js +0 -220
  123. package/dist/lifecycle/ResourceVersioning.d.ts +0 -73
  124. package/dist/lifecycle/ResourceVersioning.js +0 -127
  125. package/dist/migration/MigrationManager.d.ts +0 -86
  126. package/dist/migration/MigrationManager.js +0 -412
  127. package/dist/migration/audit/AuditLogger.d.ts +0 -51
  128. package/dist/migration/audit/AuditLogger.js +0 -156
  129. package/dist/migration/checkpoint/CheckpointManager.d.ts +0 -31
  130. package/dist/migration/checkpoint/CheckpointManager.js +0 -96
  131. package/dist/migration/checkpoint/CheckpointStorage.d.ts +0 -26
  132. package/dist/migration/checkpoint/CheckpointStorage.js +0 -89
  133. package/dist/migration/index.d.ts +0 -22
  134. package/dist/migration/index.js +0 -27
  135. package/dist/migration/operations/BaseMigration.d.ts +0 -48
  136. package/dist/migration/operations/BaseMigration.js +0 -83
  137. package/dist/migration/operations/PeerToBtcoMigration.d.ts +0 -25
  138. package/dist/migration/operations/PeerToBtcoMigration.js +0 -67
  139. package/dist/migration/operations/PeerToWebvhMigration.d.ts +0 -19
  140. package/dist/migration/operations/PeerToWebvhMigration.js +0 -46
  141. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +0 -25
  142. package/dist/migration/operations/WebvhToBtcoMigration.js +0 -67
  143. package/dist/migration/rollback/RollbackManager.d.ts +0 -29
  144. package/dist/migration/rollback/RollbackManager.js +0 -146
  145. package/dist/migration/state/StateMachine.d.ts +0 -25
  146. package/dist/migration/state/StateMachine.js +0 -76
  147. package/dist/migration/state/StateTracker.d.ts +0 -36
  148. package/dist/migration/state/StateTracker.js +0 -123
  149. package/dist/migration/types.d.ts +0 -306
  150. package/dist/migration/types.js +0 -33
  151. package/dist/migration/validation/BitcoinValidator.d.ts +0 -13
  152. package/dist/migration/validation/BitcoinValidator.js +0 -83
  153. package/dist/migration/validation/CredentialValidator.d.ts +0 -13
  154. package/dist/migration/validation/CredentialValidator.js +0 -46
  155. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +0 -16
  156. package/dist/migration/validation/DIDCompatibilityValidator.js +0 -127
  157. package/dist/migration/validation/LifecycleValidator.d.ts +0 -10
  158. package/dist/migration/validation/LifecycleValidator.js +0 -52
  159. package/dist/migration/validation/StorageValidator.d.ts +0 -10
  160. package/dist/migration/validation/StorageValidator.js +0 -65
  161. package/dist/migration/validation/ValidationPipeline.d.ts +0 -29
  162. package/dist/migration/validation/ValidationPipeline.js +0 -180
  163. package/dist/storage/LocalStorageAdapter.d.ts +0 -11
  164. package/dist/storage/LocalStorageAdapter.js +0 -53
  165. package/dist/storage/MemoryStorageAdapter.d.ts +0 -6
  166. package/dist/storage/MemoryStorageAdapter.js +0 -21
  167. package/dist/storage/StorageAdapter.d.ts +0 -16
  168. package/dist/storage/StorageAdapter.js +0 -1
  169. package/dist/storage/index.d.ts +0 -2
  170. package/dist/storage/index.js +0 -2
  171. package/dist/types/bitcoin.d.ts +0 -84
  172. package/dist/types/bitcoin.js +0 -1
  173. package/dist/types/common.d.ts +0 -82
  174. package/dist/types/common.js +0 -1
  175. package/dist/types/credentials.d.ts +0 -75
  176. package/dist/types/credentials.js +0 -1
  177. package/dist/types/did.d.ts +0 -26
  178. package/dist/types/did.js +0 -1
  179. package/dist/types/index.d.ts +0 -5
  180. package/dist/types/index.js +0 -5
  181. package/dist/types/network.d.ts +0 -78
  182. package/dist/types/network.js +0 -145
  183. package/dist/utils/EventLogger.d.ts +0 -71
  184. package/dist/utils/EventLogger.js +0 -232
  185. package/dist/utils/Logger.d.ts +0 -106
  186. package/dist/utils/Logger.js +0 -257
  187. package/dist/utils/MetricsCollector.d.ts +0 -110
  188. package/dist/utils/MetricsCollector.js +0 -264
  189. package/dist/utils/bitcoin-address.d.ts +0 -38
  190. package/dist/utils/bitcoin-address.js +0 -113
  191. package/dist/utils/cbor.d.ts +0 -2
  192. package/dist/utils/cbor.js +0 -9
  193. package/dist/utils/encoding.d.ts +0 -37
  194. package/dist/utils/encoding.js +0 -120
  195. package/dist/utils/hash.d.ts +0 -1
  196. package/dist/utils/hash.js +0 -5
  197. package/dist/utils/retry.d.ts +0 -10
  198. package/dist/utils/retry.js +0 -35
  199. package/dist/utils/satoshi-validation.d.ts +0 -60
  200. package/dist/utils/satoshi-validation.js +0 -156
  201. package/dist/utils/serialization.d.ts +0 -14
  202. package/dist/utils/serialization.js +0 -76
  203. package/dist/utils/telemetry.d.ts +0 -17
  204. package/dist/utils/telemetry.js +0 -24
  205. package/dist/utils/validation.d.ts +0 -5
  206. package/dist/utils/validation.js +0 -98
  207. package/dist/vc/CredentialManager.d.ts +0 -22
  208. package/dist/vc/CredentialManager.js +0 -227
  209. package/dist/vc/Issuer.d.ts +0 -27
  210. package/dist/vc/Issuer.js +0 -70
  211. package/dist/vc/Verifier.d.ts +0 -16
  212. package/dist/vc/Verifier.js +0 -50
  213. package/dist/vc/cryptosuites/bbs.d.ts +0 -44
  214. package/dist/vc/cryptosuites/bbs.js +0 -213
  215. package/dist/vc/cryptosuites/bbsSimple.d.ts +0 -9
  216. package/dist/vc/cryptosuites/bbsSimple.js +0 -12
  217. package/dist/vc/cryptosuites/eddsa.d.ts +0 -30
  218. package/dist/vc/cryptosuites/eddsa.js +0 -81
  219. package/dist/vc/documentLoader.d.ts +0 -16
  220. package/dist/vc/documentLoader.js +0 -59
  221. package/dist/vc/proofs/data-integrity.d.ts +0 -21
  222. package/dist/vc/proofs/data-integrity.js +0 -15
  223. package/dist/vc/utils/jsonld.d.ts +0 -2
  224. package/dist/vc/utils/jsonld.js +0 -15
  225. package/test/logs/did_webvh_QmQsRNhXxPSCSeLjpbKYcNMZj8b1kBQAoC6cZmkFAgmpHt_example_com.jsonl +0 -1
  226. package/test/logs/did_webvh_QmSQkpD58qxcqMWHYcEmDUn3wk7hHvJwzYTrZmhh6zjPQ8_example_com_users_alice123_profile.jsonl +0 -1
  227. package/test/logs/did_webvh_QmTMda6VW3cUPdKk5Yc3onnv1vdgEumvWWdP2noAYFSjeG_example_com.jsonl +0 -1
  228. package/test/logs/did_webvh_QmTkb8KnCYcsnKKDCY4eUQuKQdKJLrCinvhw13v3zETxpE_example_com_users_etc_passwd.jsonl +0 -1
  229. package/test/logs/did_webvh_QmTn9FdCfpXFDrxHH52pwB4iNrDFVvNDjJ5FQTcDbmM3Fg_example_com.jsonl +0 -1
  230. package/test/logs/did_webvh_QmUCQUi1xjtJjnSQ1XJZgKqcWgErx1v7E2dz4DAPraAyJP_example_com_etc_passwd.jsonl +0 -1
  231. package/test/logs/did_webvh_QmUENQJCDKBJVRS5BkL6zjaUvcRjkb9xHmy7foCgRjmv3W_example_com.jsonl +0 -1
  232. package/test/logs/did_webvh_QmUPdGyjYBEnQ3aQUkmqyyBKTyjvCP5RZQGiaEDeTtf6dc_example_com.jsonl +0 -1
  233. package/test/logs/did_webvh_QmUoHTuHMWzQM29ZFrE9VLtMxkZ5u869yqee8LwcCLN39M_example_com.jsonl +0 -1
  234. package/test/logs/did_webvh_QmUrnms8G65ggVKsr9oQeWrLUBuGChwQPPb2LCFvaoNxaw_example_com_users_alice.jsonl +0 -1
  235. package/test/logs/did_webvh_QmUwiw3eSXdHG1hPvoAGu3cuK5jF4aXRYDLBAjPXfv1qzb_example_com_level1_level2.jsonl +0 -1
  236. package/test/logs/did_webvh_QmW7bzKh6yFEKNAtmVsrPGvvsMHTUQdzJSNsTZkbuGFpbj_example_com_secret.jsonl +0 -1
  237. package/test/logs/did_webvh_QmXbFTFBBJ8zpjdz9WE1DNN44A2wprFmdvAubjSffeyoAG_example_com.jsonl +0 -1
  238. package/test/logs/did_webvh_QmXyVXFPCTffGb2mTUFDeMCsScjnpLWkyUkVkB6q6QoeBf_example_com_C_Windows_System32.jsonl +0 -1
  239. package/test/logs/did_webvh_QmZK9B81gxZtvo5fYHYKDtKt8zZfZZPhmCMhbujBJuRRzE_example_com_etc_passwd.jsonl +0 -1
  240. package/test/logs/did_webvh_QmbNLCVSdXSVLrwFBvCBQPAabjtRb1SGHjkGVyw3QUbfBL_example_com_users_etc_passwd.jsonl +0 -1
  241. package/test/logs/did_webvh_QmbeaicmGW3Q7Yzbqmftc8a9jLBngokveb5A2KVKfVGZRb_example_com_my_org_user_name_test_123.jsonl +0 -1
  242. package/test/logs/did_webvh_Qmdv7c7AjUreUfoKyvkN2UpAWTozxKsv99srQetPJMJEnp_example_com_users_etc_passwd.jsonl +0 -1
  243. package/test/logs/did_webvh_QmeioWY3uypYLkYpCXe9eCYnn4xBVruP9C1d79azMrTEHG_example_com.jsonl +0 -1
  244. package/test/logs/did_webvh_Qmf4QH5dsA6Ecr5HJ6KaJL9uJRyY8RxrQdqoRCM25DzvPi_example_com_users_alice.jsonl +0 -1
  245. package/tests/e2e/README.md +0 -97
  246. package/tests/e2e/example.spec.ts +0 -78
  247. package/tsconfig.tsbuildinfo +0 -1
@@ -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
- }