@originals/sdk 1.1.0

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 (403) hide show
  1. package/.eslintrc.json +33 -0
  2. package/.turbo/turbo-build.log +1 -0
  3. package/.turbo/turbo-test.log +68353 -0
  4. package/dist/adapters/FeeOracleMock.d.ts +6 -0
  5. package/dist/adapters/FeeOracleMock.js +8 -0
  6. package/dist/adapters/index.d.ts +4 -0
  7. package/dist/adapters/index.js +4 -0
  8. package/dist/adapters/providers/OrdHttpProvider.d.ts +56 -0
  9. package/dist/adapters/providers/OrdHttpProvider.js +110 -0
  10. package/dist/adapters/providers/OrdMockProvider.d.ts +70 -0
  11. package/dist/adapters/providers/OrdMockProvider.js +75 -0
  12. package/dist/adapters/types.d.ts +71 -0
  13. package/dist/adapters/types.js +1 -0
  14. package/dist/bitcoin/BitcoinManager.d.ts +15 -0
  15. package/dist/bitcoin/BitcoinManager.js +262 -0
  16. package/dist/bitcoin/BroadcastClient.d.ts +30 -0
  17. package/dist/bitcoin/BroadcastClient.js +35 -0
  18. package/dist/bitcoin/OrdinalsClient.d.ts +21 -0
  19. package/dist/bitcoin/OrdinalsClient.js +105 -0
  20. package/dist/bitcoin/PSBTBuilder.d.ts +24 -0
  21. package/dist/bitcoin/PSBTBuilder.js +80 -0
  22. package/dist/bitcoin/fee-calculation.d.ts +14 -0
  23. package/dist/bitcoin/fee-calculation.js +31 -0
  24. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +38 -0
  25. package/dist/bitcoin/providers/OrdNodeProvider.js +67 -0
  26. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +33 -0
  27. package/dist/bitcoin/providers/OrdinalsProvider.js +50 -0
  28. package/dist/bitcoin/providers/types.d.ts +63 -0
  29. package/dist/bitcoin/providers/types.js +1 -0
  30. package/dist/bitcoin/transactions/commit.d.ts +89 -0
  31. package/dist/bitcoin/transactions/commit.js +311 -0
  32. package/dist/bitcoin/transactions/index.d.ts +7 -0
  33. package/dist/bitcoin/transactions/index.js +8 -0
  34. package/dist/bitcoin/transfer.d.ts +9 -0
  35. package/dist/bitcoin/transfer.js +26 -0
  36. package/dist/bitcoin/utxo-selection.d.ts +78 -0
  37. package/dist/bitcoin/utxo-selection.js +237 -0
  38. package/dist/bitcoin/utxo.d.ts +26 -0
  39. package/dist/bitcoin/utxo.js +78 -0
  40. package/dist/contexts/credentials-v1.json +195 -0
  41. package/dist/contexts/credentials-v2-examples.json +5 -0
  42. package/dist/contexts/credentials-v2.json +301 -0
  43. package/dist/contexts/credentials.json +195 -0
  44. package/dist/contexts/data-integrity-v2.json +81 -0
  45. package/dist/contexts/dids.json +57 -0
  46. package/dist/contexts/ed255192020.json +93 -0
  47. package/dist/contexts/ordinals-plus.json +23 -0
  48. package/dist/contexts/originals.json +22 -0
  49. package/dist/core/OriginalsSDK.d.ts +158 -0
  50. package/dist/core/OriginalsSDK.js +274 -0
  51. package/dist/crypto/Multikey.d.ts +30 -0
  52. package/dist/crypto/Multikey.js +149 -0
  53. package/dist/crypto/Signer.d.ts +21 -0
  54. package/dist/crypto/Signer.js +196 -0
  55. package/dist/crypto/noble-init.d.ts +18 -0
  56. package/dist/crypto/noble-init.js +106 -0
  57. package/dist/did/BtcoDidResolver.d.ts +57 -0
  58. package/dist/did/BtcoDidResolver.js +166 -0
  59. package/dist/did/DIDManager.d.ts +101 -0
  60. package/dist/did/DIDManager.js +493 -0
  61. package/dist/did/Ed25519Verifier.d.ts +30 -0
  62. package/dist/did/Ed25519Verifier.js +59 -0
  63. package/dist/did/KeyManager.d.ts +17 -0
  64. package/dist/did/KeyManager.js +207 -0
  65. package/dist/did/WebVHManager.d.ts +100 -0
  66. package/dist/did/WebVHManager.js +304 -0
  67. package/dist/did/createBtcoDidDocument.d.ts +10 -0
  68. package/dist/did/createBtcoDidDocument.js +42 -0
  69. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +23 -0
  70. package/dist/did/providers/OrdinalsClientProviderAdapter.js +51 -0
  71. package/dist/events/EventEmitter.d.ts +115 -0
  72. package/dist/events/EventEmitter.js +198 -0
  73. package/dist/events/index.d.ts +7 -0
  74. package/dist/events/index.js +6 -0
  75. package/dist/events/types.d.ts +286 -0
  76. package/dist/events/types.js +9 -0
  77. package/dist/examples/basic-usage.d.ts +3 -0
  78. package/dist/examples/basic-usage.js +62 -0
  79. package/dist/examples/run.d.ts +1 -0
  80. package/dist/examples/run.js +4 -0
  81. package/dist/index.d.ts +39 -0
  82. package/dist/index.js +47 -0
  83. package/dist/lifecycle/BatchOperations.d.ts +147 -0
  84. package/dist/lifecycle/BatchOperations.js +251 -0
  85. package/dist/lifecycle/LifecycleManager.d.ts +116 -0
  86. package/dist/lifecycle/LifecycleManager.js +971 -0
  87. package/dist/lifecycle/OriginalsAsset.d.ts +164 -0
  88. package/dist/lifecycle/OriginalsAsset.js +380 -0
  89. package/dist/lifecycle/ProvenanceQuery.d.ts +126 -0
  90. package/dist/lifecycle/ProvenanceQuery.js +220 -0
  91. package/dist/lifecycle/ResourceVersioning.d.ts +73 -0
  92. package/dist/lifecycle/ResourceVersioning.js +127 -0
  93. package/dist/migration/MigrationManager.d.ts +86 -0
  94. package/dist/migration/MigrationManager.js +412 -0
  95. package/dist/migration/audit/AuditLogger.d.ts +51 -0
  96. package/dist/migration/audit/AuditLogger.js +156 -0
  97. package/dist/migration/checkpoint/CheckpointManager.d.ts +31 -0
  98. package/dist/migration/checkpoint/CheckpointManager.js +96 -0
  99. package/dist/migration/checkpoint/CheckpointStorage.d.ts +26 -0
  100. package/dist/migration/checkpoint/CheckpointStorage.js +89 -0
  101. package/dist/migration/index.d.ts +22 -0
  102. package/dist/migration/index.js +27 -0
  103. package/dist/migration/operations/BaseMigration.d.ts +48 -0
  104. package/dist/migration/operations/BaseMigration.js +83 -0
  105. package/dist/migration/operations/PeerToBtcoMigration.d.ts +25 -0
  106. package/dist/migration/operations/PeerToBtcoMigration.js +67 -0
  107. package/dist/migration/operations/PeerToWebvhMigration.d.ts +19 -0
  108. package/dist/migration/operations/PeerToWebvhMigration.js +46 -0
  109. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +25 -0
  110. package/dist/migration/operations/WebvhToBtcoMigration.js +67 -0
  111. package/dist/migration/rollback/RollbackManager.d.ts +29 -0
  112. package/dist/migration/rollback/RollbackManager.js +146 -0
  113. package/dist/migration/state/StateMachine.d.ts +25 -0
  114. package/dist/migration/state/StateMachine.js +76 -0
  115. package/dist/migration/state/StateTracker.d.ts +36 -0
  116. package/dist/migration/state/StateTracker.js +123 -0
  117. package/dist/migration/types.d.ts +306 -0
  118. package/dist/migration/types.js +33 -0
  119. package/dist/migration/validation/BitcoinValidator.d.ts +13 -0
  120. package/dist/migration/validation/BitcoinValidator.js +83 -0
  121. package/dist/migration/validation/CredentialValidator.d.ts +13 -0
  122. package/dist/migration/validation/CredentialValidator.js +46 -0
  123. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +16 -0
  124. package/dist/migration/validation/DIDCompatibilityValidator.js +127 -0
  125. package/dist/migration/validation/LifecycleValidator.d.ts +10 -0
  126. package/dist/migration/validation/LifecycleValidator.js +52 -0
  127. package/dist/migration/validation/StorageValidator.d.ts +10 -0
  128. package/dist/migration/validation/StorageValidator.js +65 -0
  129. package/dist/migration/validation/ValidationPipeline.d.ts +29 -0
  130. package/dist/migration/validation/ValidationPipeline.js +180 -0
  131. package/dist/storage/LocalStorageAdapter.d.ts +11 -0
  132. package/dist/storage/LocalStorageAdapter.js +53 -0
  133. package/dist/storage/MemoryStorageAdapter.d.ts +6 -0
  134. package/dist/storage/MemoryStorageAdapter.js +21 -0
  135. package/dist/storage/StorageAdapter.d.ts +16 -0
  136. package/dist/storage/StorageAdapter.js +1 -0
  137. package/dist/storage/index.d.ts +2 -0
  138. package/dist/storage/index.js +2 -0
  139. package/dist/types/bitcoin.d.ts +84 -0
  140. package/dist/types/bitcoin.js +1 -0
  141. package/dist/types/common.d.ts +82 -0
  142. package/dist/types/common.js +1 -0
  143. package/dist/types/credentials.d.ts +75 -0
  144. package/dist/types/credentials.js +1 -0
  145. package/dist/types/did.d.ts +26 -0
  146. package/dist/types/did.js +1 -0
  147. package/dist/types/index.d.ts +5 -0
  148. package/dist/types/index.js +5 -0
  149. package/dist/types/network.d.ts +78 -0
  150. package/dist/types/network.js +145 -0
  151. package/dist/utils/EventLogger.d.ts +71 -0
  152. package/dist/utils/EventLogger.js +232 -0
  153. package/dist/utils/Logger.d.ts +106 -0
  154. package/dist/utils/Logger.js +257 -0
  155. package/dist/utils/MetricsCollector.d.ts +110 -0
  156. package/dist/utils/MetricsCollector.js +264 -0
  157. package/dist/utils/bitcoin-address.d.ts +38 -0
  158. package/dist/utils/bitcoin-address.js +113 -0
  159. package/dist/utils/cbor.d.ts +2 -0
  160. package/dist/utils/cbor.js +9 -0
  161. package/dist/utils/encoding.d.ts +37 -0
  162. package/dist/utils/encoding.js +120 -0
  163. package/dist/utils/hash.d.ts +1 -0
  164. package/dist/utils/hash.js +5 -0
  165. package/dist/utils/retry.d.ts +10 -0
  166. package/dist/utils/retry.js +35 -0
  167. package/dist/utils/satoshi-validation.d.ts +60 -0
  168. package/dist/utils/satoshi-validation.js +156 -0
  169. package/dist/utils/serialization.d.ts +14 -0
  170. package/dist/utils/serialization.js +76 -0
  171. package/dist/utils/telemetry.d.ts +17 -0
  172. package/dist/utils/telemetry.js +24 -0
  173. package/dist/utils/validation.d.ts +5 -0
  174. package/dist/utils/validation.js +98 -0
  175. package/dist/vc/CredentialManager.d.ts +22 -0
  176. package/dist/vc/CredentialManager.js +227 -0
  177. package/dist/vc/Issuer.d.ts +27 -0
  178. package/dist/vc/Issuer.js +70 -0
  179. package/dist/vc/Verifier.d.ts +16 -0
  180. package/dist/vc/Verifier.js +50 -0
  181. package/dist/vc/cryptosuites/bbs.d.ts +44 -0
  182. package/dist/vc/cryptosuites/bbs.js +213 -0
  183. package/dist/vc/cryptosuites/bbsSimple.d.ts +9 -0
  184. package/dist/vc/cryptosuites/bbsSimple.js +12 -0
  185. package/dist/vc/cryptosuites/eddsa.d.ts +30 -0
  186. package/dist/vc/cryptosuites/eddsa.js +81 -0
  187. package/dist/vc/documentLoader.d.ts +16 -0
  188. package/dist/vc/documentLoader.js +59 -0
  189. package/dist/vc/proofs/data-integrity.d.ts +21 -0
  190. package/dist/vc/proofs/data-integrity.js +15 -0
  191. package/dist/vc/utils/jsonld.d.ts +2 -0
  192. package/dist/vc/utils/jsonld.js +15 -0
  193. package/package.json +79 -0
  194. package/src/adapters/FeeOracleMock.ts +9 -0
  195. package/src/adapters/index.ts +5 -0
  196. package/src/adapters/providers/OrdHttpProvider.ts +126 -0
  197. package/src/adapters/providers/OrdMockProvider.ts +101 -0
  198. package/src/adapters/types.ts +66 -0
  199. package/src/bitcoin/BitcoinManager.ts +330 -0
  200. package/src/bitcoin/BroadcastClient.ts +54 -0
  201. package/src/bitcoin/OrdinalsClient.ts +119 -0
  202. package/src/bitcoin/PSBTBuilder.ts +106 -0
  203. package/src/bitcoin/fee-calculation.ts +38 -0
  204. package/src/bitcoin/providers/OrdNodeProvider.ts +92 -0
  205. package/src/bitcoin/providers/OrdinalsProvider.ts +56 -0
  206. package/src/bitcoin/providers/types.ts +59 -0
  207. package/src/bitcoin/transactions/commit.ts +465 -0
  208. package/src/bitcoin/transactions/index.ts +13 -0
  209. package/src/bitcoin/transfer.ts +43 -0
  210. package/src/bitcoin/utxo-selection.ts +322 -0
  211. package/src/bitcoin/utxo.ts +113 -0
  212. package/src/contexts/credentials-v1.json +237 -0
  213. package/src/contexts/credentials-v2-examples.json +5 -0
  214. package/src/contexts/credentials-v2.json +340 -0
  215. package/src/contexts/credentials.json +237 -0
  216. package/src/contexts/data-integrity-v2.json +81 -0
  217. package/src/contexts/dids.json +58 -0
  218. package/src/contexts/ed255192020.json +93 -0
  219. package/src/contexts/ordinals-plus.json +23 -0
  220. package/src/contexts/originals.json +22 -0
  221. package/src/core/OriginalsSDK.ts +416 -0
  222. package/src/crypto/Multikey.ts +194 -0
  223. package/src/crypto/Signer.ts +254 -0
  224. package/src/crypto/noble-init.ts +121 -0
  225. package/src/did/BtcoDidResolver.ts +227 -0
  226. package/src/did/DIDManager.ts +694 -0
  227. package/src/did/Ed25519Verifier.ts +68 -0
  228. package/src/did/KeyManager.ts +236 -0
  229. package/src/did/WebVHManager.ts +489 -0
  230. package/src/did/createBtcoDidDocument.ts +59 -0
  231. package/src/did/providers/OrdinalsClientProviderAdapter.ts +68 -0
  232. package/src/events/EventEmitter.ts +222 -0
  233. package/src/events/index.ts +19 -0
  234. package/src/events/types.ts +331 -0
  235. package/src/examples/basic-usage.ts +78 -0
  236. package/src/examples/run.ts +5 -0
  237. package/src/index.ts +84 -0
  238. package/src/lifecycle/BatchOperations.ts +373 -0
  239. package/src/lifecycle/LifecycleManager.ts +1218 -0
  240. package/src/lifecycle/OriginalsAsset.ts +524 -0
  241. package/src/lifecycle/ProvenanceQuery.ts +280 -0
  242. package/src/lifecycle/ResourceVersioning.ts +163 -0
  243. package/src/migration/MigrationManager.ts +527 -0
  244. package/src/migration/audit/AuditLogger.ts +176 -0
  245. package/src/migration/checkpoint/CheckpointManager.ts +112 -0
  246. package/src/migration/checkpoint/CheckpointStorage.ts +101 -0
  247. package/src/migration/index.ts +33 -0
  248. package/src/migration/operations/BaseMigration.ts +126 -0
  249. package/src/migration/operations/PeerToBtcoMigration.ts +105 -0
  250. package/src/migration/operations/PeerToWebvhMigration.ts +62 -0
  251. package/src/migration/operations/WebvhToBtcoMigration.ts +105 -0
  252. package/src/migration/rollback/RollbackManager.ts +170 -0
  253. package/src/migration/state/StateMachine.ts +92 -0
  254. package/src/migration/state/StateTracker.ts +156 -0
  255. package/src/migration/types.ts +344 -0
  256. package/src/migration/validation/BitcoinValidator.ts +107 -0
  257. package/src/migration/validation/CredentialValidator.ts +62 -0
  258. package/src/migration/validation/DIDCompatibilityValidator.ts +151 -0
  259. package/src/migration/validation/LifecycleValidator.ts +64 -0
  260. package/src/migration/validation/StorageValidator.ts +79 -0
  261. package/src/migration/validation/ValidationPipeline.ts +213 -0
  262. package/src/storage/LocalStorageAdapter.ts +61 -0
  263. package/src/storage/MemoryStorageAdapter.ts +29 -0
  264. package/src/storage/StorageAdapter.ts +25 -0
  265. package/src/storage/index.ts +3 -0
  266. package/src/types/bitcoin.ts +98 -0
  267. package/src/types/common.ts +92 -0
  268. package/src/types/credentials.ts +88 -0
  269. package/src/types/did.ts +31 -0
  270. package/src/types/external-shims.d.ts +53 -0
  271. package/src/types/index.ts +7 -0
  272. package/src/types/network.ts +175 -0
  273. package/src/utils/EventLogger.ts +298 -0
  274. package/src/utils/Logger.ts +322 -0
  275. package/src/utils/MetricsCollector.ts +358 -0
  276. package/src/utils/bitcoin-address.ts +130 -0
  277. package/src/utils/cbor.ts +12 -0
  278. package/src/utils/encoding.ts +127 -0
  279. package/src/utils/hash.ts +6 -0
  280. package/src/utils/retry.ts +46 -0
  281. package/src/utils/satoshi-validation.ts +196 -0
  282. package/src/utils/serialization.ts +96 -0
  283. package/src/utils/telemetry.ts +40 -0
  284. package/src/utils/validation.ts +119 -0
  285. package/src/vc/CredentialManager.ts +273 -0
  286. package/src/vc/Issuer.ts +100 -0
  287. package/src/vc/Verifier.ts +47 -0
  288. package/src/vc/cryptosuites/bbs.ts +253 -0
  289. package/src/vc/cryptosuites/bbsSimple.ts +21 -0
  290. package/src/vc/cryptosuites/eddsa.ts +99 -0
  291. package/src/vc/documentLoader.ts +67 -0
  292. package/src/vc/proofs/data-integrity.ts +33 -0
  293. package/src/vc/utils/jsonld.ts +18 -0
  294. package/test/logs/did_webvh_QmQsRNhXxPSCSeLjpbKYcNMZj8b1kBQAoC6cZmkFAgmpHt_example_com.jsonl +1 -0
  295. package/test/logs/did_webvh_QmSQkpD58qxcqMWHYcEmDUn3wk7hHvJwzYTrZmhh6zjPQ8_example_com_users_alice123_profile.jsonl +1 -0
  296. package/test/logs/did_webvh_QmTMda6VW3cUPdKk5Yc3onnv1vdgEumvWWdP2noAYFSjeG_example_com.jsonl +1 -0
  297. package/test/logs/did_webvh_QmTkb8KnCYcsnKKDCY4eUQuKQdKJLrCinvhw13v3zETxpE_example_com_users_etc_passwd.jsonl +1 -0
  298. package/test/logs/did_webvh_QmTn9FdCfpXFDrxHH52pwB4iNrDFVvNDjJ5FQTcDbmM3Fg_example_com.jsonl +1 -0
  299. package/test/logs/did_webvh_QmUCQUi1xjtJjnSQ1XJZgKqcWgErx1v7E2dz4DAPraAyJP_example_com_etc_passwd.jsonl +1 -0
  300. package/test/logs/did_webvh_QmUENQJCDKBJVRS5BkL6zjaUvcRjkb9xHmy7foCgRjmv3W_example_com.jsonl +1 -0
  301. package/test/logs/did_webvh_QmUPdGyjYBEnQ3aQUkmqyyBKTyjvCP5RZQGiaEDeTtf6dc_example_com.jsonl +1 -0
  302. package/test/logs/did_webvh_QmUoHTuHMWzQM29ZFrE9VLtMxkZ5u869yqee8LwcCLN39M_example_com.jsonl +1 -0
  303. package/test/logs/did_webvh_QmUrnms8G65ggVKsr9oQeWrLUBuGChwQPPb2LCFvaoNxaw_example_com_users_alice.jsonl +1 -0
  304. package/test/logs/did_webvh_QmUwiw3eSXdHG1hPvoAGu3cuK5jF4aXRYDLBAjPXfv1qzb_example_com_level1_level2.jsonl +1 -0
  305. package/test/logs/did_webvh_QmW7bzKh6yFEKNAtmVsrPGvvsMHTUQdzJSNsTZkbuGFpbj_example_com_secret.jsonl +1 -0
  306. package/test/logs/did_webvh_QmXbFTFBBJ8zpjdz9WE1DNN44A2wprFmdvAubjSffeyoAG_example_com.jsonl +1 -0
  307. package/test/logs/did_webvh_QmXyVXFPCTffGb2mTUFDeMCsScjnpLWkyUkVkB6q6QoeBf_example_com_C_Windows_System32.jsonl +1 -0
  308. package/test/logs/did_webvh_QmZK9B81gxZtvo5fYHYKDtKt8zZfZZPhmCMhbujBJuRRzE_example_com_etc_passwd.jsonl +1 -0
  309. package/test/logs/did_webvh_QmbNLCVSdXSVLrwFBvCBQPAabjtRb1SGHjkGVyw3QUbfBL_example_com_users_etc_passwd.jsonl +1 -0
  310. package/test/logs/did_webvh_QmbeaicmGW3Q7Yzbqmftc8a9jLBngokveb5A2KVKfVGZRb_example_com_my_org_user_name_test_123.jsonl +1 -0
  311. package/test/logs/did_webvh_Qmdv7c7AjUreUfoKyvkN2UpAWTozxKsv99srQetPJMJEnp_example_com_users_etc_passwd.jsonl +1 -0
  312. package/test/logs/did_webvh_QmeioWY3uypYLkYpCXe9eCYnn4xBVruP9C1d79azMrTEHG_example_com.jsonl +1 -0
  313. package/test/logs/did_webvh_Qmf4QH5dsA6Ecr5HJ6KaJL9uJRyY8RxrQdqoRCM25DzvPi_example_com_users_alice.jsonl +1 -0
  314. package/tests/__mocks__/bbs-signatures.js +17 -0
  315. package/tests/__mocks__/mf-base58.js +24 -0
  316. package/tests/e2e/README.md +97 -0
  317. package/tests/e2e/example.spec.ts +78 -0
  318. package/tests/fixtures/did-documents.ts +247 -0
  319. package/tests/index.test.ts +21 -0
  320. package/tests/integration/BatchOperations.test.ts +531 -0
  321. package/tests/integration/CompleteLifecycle.e2e.test.ts +735 -0
  322. package/tests/integration/CredentialManager.test.ts +42 -0
  323. package/tests/integration/DIDManager.test.ts +41 -0
  324. package/tests/integration/DidPeerToWebVhFlow.test.ts +351 -0
  325. package/tests/integration/Events.test.ts +435 -0
  326. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +25 -0
  327. package/tests/integration/LifecycleManager.test.ts +21 -0
  328. package/tests/integration/MultikeyFlow.test.ts +52 -0
  329. package/tests/integration/TelemetryIntegration.test.ts +395 -0
  330. package/tests/integration/WebVhPublish.test.ts +48 -0
  331. package/tests/integration/migration/peer-to-webvh.test.ts +172 -0
  332. package/tests/manual/test-commit-creation.ts +323 -0
  333. package/tests/mocks/MockKeyStore.ts +38 -0
  334. package/tests/mocks/adapters/MemoryStorageAdapter.ts +24 -0
  335. package/tests/mocks/adapters/MockFeeOracle.ts +11 -0
  336. package/tests/mocks/adapters/MockOrdinalsProvider.ts +76 -0
  337. package/tests/mocks/adapters/OrdMockProvider.test.ts +176 -0
  338. package/tests/mocks/adapters/index.ts +6 -0
  339. package/tests/performance/BatchOperations.perf.test.ts +403 -0
  340. package/tests/performance/logging.perf.test.ts +336 -0
  341. package/tests/sdk.test.ts +43 -0
  342. package/tests/security/bitcoin-penetration-tests.test.ts +622 -0
  343. package/tests/setup.bun.ts +69 -0
  344. package/tests/setup.jest.ts +23 -0
  345. package/tests/stress/batch-operations-stress.test.ts +571 -0
  346. package/tests/unit/adapters/FeeOracleMock.test.ts +40 -0
  347. package/tests/unit/bitcoin/BitcoinManager.test.ts +293 -0
  348. package/tests/unit/bitcoin/BroadcastClient.test.ts +52 -0
  349. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +53 -0
  350. package/tests/unit/bitcoin/OrdinalsClient.test.ts +381 -0
  351. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +102 -0
  352. package/tests/unit/bitcoin/PSBTBuilder.test.ts +84 -0
  353. package/tests/unit/bitcoin/fee-calculation.test.ts +261 -0
  354. package/tests/unit/bitcoin/transactions/commit.test.ts +649 -0
  355. package/tests/unit/bitcoin/transfer.test.ts +31 -0
  356. package/tests/unit/bitcoin/utxo-selection-new.test.ts +502 -0
  357. package/tests/unit/bitcoin/utxo.more.test.ts +39 -0
  358. package/tests/unit/bitcoin/utxo.selection.test.ts +38 -0
  359. package/tests/unit/core/OriginalsSDK.test.ts +152 -0
  360. package/tests/unit/crypto/Multikey.test.ts +206 -0
  361. package/tests/unit/crypto/Signer.test.ts +408 -0
  362. package/tests/unit/did/BtcoDidResolver.test.ts +611 -0
  363. package/tests/unit/did/DIDManager.more.test.ts +43 -0
  364. package/tests/unit/did/DIDManager.test.ts +185 -0
  365. package/tests/unit/did/Ed25519Verifier.test.ts +160 -0
  366. package/tests/unit/did/KeyManager.test.ts +452 -0
  367. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +45 -0
  368. package/tests/unit/did/WebVHManager.test.ts +435 -0
  369. package/tests/unit/did/createBtcoDidDocument.test.ts +67 -0
  370. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +159 -0
  371. package/tests/unit/events/EventEmitter.test.ts +407 -0
  372. package/tests/unit/lifecycle/BatchOperations.test.ts +527 -0
  373. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +312 -0
  374. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +18 -0
  375. package/tests/unit/lifecycle/LifecycleManager.test.ts +213 -0
  376. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +30 -0
  377. package/tests/unit/lifecycle/OriginalsAsset.test.ts +176 -0
  378. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +577 -0
  379. package/tests/unit/lifecycle/ResourceVersioning.test.ts +651 -0
  380. package/tests/unit/storage/MemoryStorageAdapter.test.ts +93 -0
  381. package/tests/unit/types/network.test.ts +255 -0
  382. package/tests/unit/utils/EventIntegration.test.ts +384 -0
  383. package/tests/unit/utils/Logger.test.ts +473 -0
  384. package/tests/unit/utils/MetricsCollector.test.ts +358 -0
  385. package/tests/unit/utils/bitcoin-address.test.ts +250 -0
  386. package/tests/unit/utils/cbor.test.ts +35 -0
  387. package/tests/unit/utils/encoding.test.ts +318 -0
  388. package/tests/unit/utils/hash.test.ts +12 -0
  389. package/tests/unit/utils/retry.test.ts +100 -0
  390. package/tests/unit/utils/satoshi-validation.test.ts +354 -0
  391. package/tests/unit/utils/serialization.test.ts +124 -0
  392. package/tests/unit/utils/telemetry.test.ts +52 -0
  393. package/tests/unit/utils/validation.test.ts +141 -0
  394. package/tests/unit/vc/CredentialManager.test.ts +487 -0
  395. package/tests/unit/vc/Issuer.test.ts +107 -0
  396. package/tests/unit/vc/Verifier.test.ts +525 -0
  397. package/tests/unit/vc/bbs.test.ts +282 -0
  398. package/tests/unit/vc/cryptosuites/eddsa.test.ts +398 -0
  399. package/tests/unit/vc/documentLoader.test.ts +121 -0
  400. package/tests/unit/vc/proofs/data-integrity.test.ts +24 -0
  401. package/tsconfig.json +32 -0
  402. package/tsconfig.test.json +15 -0
  403. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,106 @@
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
+ }
@@ -0,0 +1,257 @@
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
+ };
@@ -0,0 +1,110 @@
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
+ }