@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,170 @@
1
+ /**
2
+ * RollbackManager - Handles migration rollbacks
3
+ */
4
+
5
+ import {
6
+ MigrationStateEnum,
7
+ RollbackResult,
8
+ MigrationError,
9
+ MigrationErrorType,
10
+ IRollbackManager
11
+ } from '../types';
12
+ import { OriginalsConfig } from '../../types';
13
+ import { CheckpointManager } from '../checkpoint/CheckpointManager';
14
+ import { DIDManager } from '../../did/DIDManager';
15
+
16
+ export class RollbackManager implements IRollbackManager {
17
+ constructor(
18
+ private config: OriginalsConfig,
19
+ private checkpointManager: CheckpointManager,
20
+ private didManager: DIDManager
21
+ ) {}
22
+
23
+ /**
24
+ * Rollback a migration to its checkpoint state
25
+ */
26
+ async rollback(migrationId: string, checkpointId: string): Promise<RollbackResult> {
27
+ const startTime = Date.now();
28
+ const errors: MigrationError[] = [];
29
+
30
+ try {
31
+ // Retrieve checkpoint
32
+ const checkpoint = await this.checkpointManager.getCheckpoint(checkpointId);
33
+ if (!checkpoint) {
34
+ const error: MigrationError = {
35
+ type: MigrationErrorType.ROLLBACK_ERROR,
36
+ code: 'CHECKPOINT_NOT_FOUND',
37
+ message: `Checkpoint ${checkpointId} not found`,
38
+ migrationId,
39
+ timestamp: Date.now()
40
+ };
41
+ errors.push(error);
42
+
43
+ return {
44
+ success: false,
45
+ migrationId,
46
+ checkpointId,
47
+ restoredState: MigrationStateEnum.QUARANTINED,
48
+ duration: Date.now() - startTime,
49
+ errors
50
+ };
51
+ }
52
+
53
+ // Verify checkpoint belongs to this migration
54
+ if (checkpoint.migrationId !== migrationId) {
55
+ const error: MigrationError = {
56
+ type: MigrationErrorType.ROLLBACK_ERROR,
57
+ code: 'CHECKPOINT_MISMATCH',
58
+ message: `Checkpoint ${checkpointId} does not belong to migration ${migrationId}`,
59
+ migrationId,
60
+ timestamp: Date.now()
61
+ };
62
+ errors.push(error);
63
+
64
+ return {
65
+ success: false,
66
+ migrationId,
67
+ checkpointId,
68
+ restoredState: MigrationStateEnum.QUARANTINED,
69
+ duration: Date.now() - startTime,
70
+ errors
71
+ };
72
+ }
73
+
74
+ // Perform rollback based on source layer
75
+ await this.performLayerSpecificRollback(checkpoint);
76
+
77
+ // Clean up any partial migration artifacts
78
+ await this.cleanupMigrationArtifacts(migrationId);
79
+
80
+ const duration = Date.now() - startTime;
81
+
82
+ // Verify rollback success
83
+ if (errors.length === 0) {
84
+ return {
85
+ success: true,
86
+ migrationId,
87
+ checkpointId,
88
+ restoredState: MigrationStateEnum.ROLLED_BACK,
89
+ duration,
90
+ errors: []
91
+ };
92
+ } else {
93
+ return {
94
+ success: false,
95
+ migrationId,
96
+ checkpointId,
97
+ restoredState: MigrationStateEnum.QUARANTINED,
98
+ duration,
99
+ errors
100
+ };
101
+ }
102
+ } catch (error) {
103
+ const rollbackError: MigrationError = {
104
+ type: MigrationErrorType.ROLLBACK_ERROR,
105
+ code: 'ROLLBACK_FAILED',
106
+ message: 'Rollback operation failed',
107
+ technicalDetails: error instanceof Error ? error.message : String(error),
108
+ migrationId,
109
+ timestamp: Date.now()
110
+ };
111
+ errors.push(rollbackError);
112
+
113
+ return {
114
+ success: false,
115
+ migrationId,
116
+ checkpointId,
117
+ restoredState: MigrationStateEnum.QUARANTINED,
118
+ duration: Date.now() - startTime,
119
+ errors
120
+ };
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Perform layer-specific rollback operations
126
+ */
127
+ private async performLayerSpecificRollback(checkpoint: any): Promise<void> {
128
+ // For now, rollback mainly involves:
129
+ // 1. Ensuring source DID is still valid (it should be, as we don't delete it)
130
+ // 2. Cleaning up any partial artifacts on target layer
131
+ // 3. Restoring any modified state
132
+
133
+ // Verify source DID still resolves
134
+ const sourceDid = await this.didManager.resolveDID(checkpoint.sourceDid);
135
+ if (!sourceDid) {
136
+ throw new Error(`Source DID ${checkpoint.sourceDid} could not be resolved during rollback`);
137
+ }
138
+
139
+ // Layer-specific cleanup would go here
140
+ // For peer → webvh: Remove any published resources
141
+ // For webvh → btco: Nothing to do (Bitcoin tx cannot be reversed)
142
+ // For peer → btco: Nothing to do (Bitcoin tx cannot be reversed)
143
+ }
144
+
145
+ /**
146
+ * Clean up migration artifacts
147
+ */
148
+ private async cleanupMigrationArtifacts(migrationId: string): Promise<void> {
149
+ // Clean up any temporary files, partial uploads, etc.
150
+ // This is a placeholder for actual cleanup logic
151
+ }
152
+
153
+ /**
154
+ * Check if a rollback is possible
155
+ */
156
+ async canRollback(migrationId: string, checkpointId: string): Promise<boolean> {
157
+ try {
158
+ const checkpoint = await this.checkpointManager.getCheckpoint(checkpointId);
159
+ if (!checkpoint || checkpoint.migrationId !== migrationId) {
160
+ return false;
161
+ }
162
+
163
+ // Bitcoin transactions cannot be rolled back
164
+ // But we can still restore the source DID to working state
165
+ return true;
166
+ } catch (error) {
167
+ return false;
168
+ }
169
+ }
170
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * StateMachine - Defines valid migration state transitions
3
+ */
4
+
5
+ import { MigrationStateEnum } from '../types';
6
+
7
+ export class StateMachine {
8
+ private transitions: Map<MigrationStateEnum, MigrationStateEnum[]>;
9
+
10
+ constructor() {
11
+ this.transitions = this.initializeTransitions();
12
+ }
13
+
14
+ /**
15
+ * Initialize valid state transitions
16
+ */
17
+ private initializeTransitions(): Map<MigrationStateEnum, MigrationStateEnum[]> {
18
+ const transitions = new Map<MigrationStateEnum, MigrationStateEnum[]>();
19
+
20
+ // PENDING can transition to VALIDATING or FAILED
21
+ transitions.set(MigrationStateEnum.PENDING, [
22
+ MigrationStateEnum.VALIDATING,
23
+ MigrationStateEnum.FAILED
24
+ ]);
25
+
26
+ // VALIDATING can transition to CHECKPOINTED or FAILED
27
+ transitions.set(MigrationStateEnum.VALIDATING, [
28
+ MigrationStateEnum.CHECKPOINTED,
29
+ MigrationStateEnum.FAILED
30
+ ]);
31
+
32
+ // CHECKPOINTED can transition to IN_PROGRESS or FAILED
33
+ transitions.set(MigrationStateEnum.CHECKPOINTED, [
34
+ MigrationStateEnum.IN_PROGRESS,
35
+ MigrationStateEnum.FAILED
36
+ ]);
37
+
38
+ // IN_PROGRESS can transition to ANCHORING (for btco), COMPLETED, or FAILED
39
+ transitions.set(MigrationStateEnum.IN_PROGRESS, [
40
+ MigrationStateEnum.ANCHORING,
41
+ MigrationStateEnum.COMPLETED,
42
+ MigrationStateEnum.FAILED
43
+ ]);
44
+
45
+ // ANCHORING can transition to COMPLETED or FAILED
46
+ transitions.set(MigrationStateEnum.ANCHORING, [
47
+ MigrationStateEnum.COMPLETED,
48
+ MigrationStateEnum.FAILED
49
+ ]);
50
+
51
+ // FAILED can transition to ROLLED_BACK or QUARANTINED
52
+ transitions.set(MigrationStateEnum.FAILED, [
53
+ MigrationStateEnum.ROLLED_BACK,
54
+ MigrationStateEnum.QUARANTINED
55
+ ]);
56
+
57
+ // COMPLETED, ROLLED_BACK, and QUARANTINED are terminal states
58
+ transitions.set(MigrationStateEnum.COMPLETED, []);
59
+ transitions.set(MigrationStateEnum.ROLLED_BACK, []);
60
+ transitions.set(MigrationStateEnum.QUARANTINED, []);
61
+
62
+ return transitions;
63
+ }
64
+
65
+ /**
66
+ * Check if a state transition is valid
67
+ */
68
+ canTransition(fromState: MigrationStateEnum, toState: MigrationStateEnum): boolean {
69
+ const validTransitions = this.transitions.get(fromState);
70
+ if (!validTransitions) {
71
+ return false;
72
+ }
73
+ return validTransitions.includes(toState);
74
+ }
75
+
76
+ /**
77
+ * Get all valid transitions from a given state
78
+ * Returns a copy to prevent external mutation of the transition table
79
+ */
80
+ getValidTransitions(fromState: MigrationStateEnum): MigrationStateEnum[] {
81
+ const transitions = this.transitions.get(fromState);
82
+ return transitions ? [...transitions] : [];
83
+ }
84
+
85
+ /**
86
+ * Check if a state is terminal (no further transitions)
87
+ */
88
+ isTerminalState(state: MigrationStateEnum): boolean {
89
+ const validTransitions = this.transitions.get(state);
90
+ return !validTransitions || validTransitions.length === 0;
91
+ }
92
+ }
@@ -0,0 +1,156 @@
1
+ /**
2
+ * StateTracker - Tracks migration state throughout the migration lifecycle
3
+ */
4
+
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ import {
7
+ MigrationOptions,
8
+ MigrationState,
9
+ MigrationStateEnum,
10
+ IStateTracker
11
+ } from '../types';
12
+ import { OriginalsConfig } from '../../types';
13
+ import { StateMachine } from './StateMachine';
14
+
15
+ export class StateTracker implements IStateTracker {
16
+ private states: Map<string, MigrationState>;
17
+ private stateMachine: StateMachine;
18
+
19
+ constructor(private config: OriginalsConfig) {
20
+ this.states = new Map();
21
+ this.stateMachine = new StateMachine();
22
+ }
23
+
24
+ /**
25
+ * Create a new migration state
26
+ */
27
+ async createMigration(options: MigrationOptions): Promise<MigrationState> {
28
+ const migrationId = `mig_${uuidv4()}`;
29
+ const sourceLayer = this.extractLayer(options.sourceDid);
30
+
31
+ if (!sourceLayer) {
32
+ throw new Error(`Invalid source DID format: ${options.sourceDid}`);
33
+ }
34
+
35
+ const state: MigrationState = {
36
+ migrationId,
37
+ state: MigrationStateEnum.PENDING,
38
+ sourceDid: options.sourceDid,
39
+ sourceLayer,
40
+ targetLayer: options.targetLayer,
41
+ progress: 0,
42
+ currentOperation: 'Initializing migration',
43
+ startTime: Date.now()
44
+ };
45
+
46
+ this.states.set(migrationId, state);
47
+ return state;
48
+ }
49
+
50
+ /**
51
+ * Update migration state
52
+ */
53
+ async updateState(migrationId: string, updates: Partial<MigrationState>): Promise<void> {
54
+ const currentState = this.states.get(migrationId);
55
+ if (!currentState) {
56
+ throw new Error(`Migration ${migrationId} not found`);
57
+ }
58
+
59
+ // Validate state transition if state is being updated
60
+ if (updates.state && updates.state !== currentState.state) {
61
+ if (!this.stateMachine.canTransition(currentState.state, updates.state)) {
62
+ throw new Error(
63
+ `Invalid state transition from ${currentState.state} to ${updates.state}`
64
+ );
65
+ }
66
+ }
67
+
68
+ // Update the state
69
+ const updatedState = {
70
+ ...currentState,
71
+ ...updates
72
+ };
73
+
74
+ // Set end time if migration is completed, failed, or rolled back
75
+ if (
76
+ updatedState.state === MigrationStateEnum.COMPLETED ||
77
+ updatedState.state === MigrationStateEnum.FAILED ||
78
+ updatedState.state === MigrationStateEnum.ROLLED_BACK ||
79
+ updatedState.state === MigrationStateEnum.QUARANTINED
80
+ ) {
81
+ updatedState.endTime = Date.now();
82
+ }
83
+
84
+ this.states.set(migrationId, updatedState);
85
+ }
86
+
87
+ /**
88
+ * Get migration state
89
+ */
90
+ async getState(migrationId: string): Promise<MigrationState | null> {
91
+ return this.states.get(migrationId) || null;
92
+ }
93
+
94
+ /**
95
+ * Query migration states by filters
96
+ */
97
+ async queryStates(filters: Partial<MigrationState>): Promise<MigrationState[]> {
98
+ const results: MigrationState[] = [];
99
+
100
+ for (const state of this.states.values()) {
101
+ let matches = true;
102
+
103
+ for (const [key, value] of Object.entries(filters)) {
104
+ if (state[key as keyof MigrationState] !== value) {
105
+ matches = false;
106
+ break;
107
+ }
108
+ }
109
+
110
+ if (matches) {
111
+ results.push(state);
112
+ }
113
+ }
114
+
115
+ return results;
116
+ }
117
+
118
+ /**
119
+ * Get all active migrations
120
+ */
121
+ async getActiveMigrations(): Promise<MigrationState[]> {
122
+ return this.queryStates({
123
+ state: MigrationStateEnum.IN_PROGRESS
124
+ });
125
+ }
126
+
127
+ /**
128
+ * Clean up old completed migrations
129
+ */
130
+ async cleanupOldStates(olderThanMs: number = 7 * 24 * 60 * 60 * 1000): Promise<void> {
131
+ const cutoffTime = Date.now() - olderThanMs;
132
+ const toDelete: string[] = [];
133
+
134
+ for (const [id, state] of this.states.entries()) {
135
+ if (
136
+ state.endTime &&
137
+ state.endTime < cutoffTime &&
138
+ (state.state === MigrationStateEnum.COMPLETED ||
139
+ state.state === MigrationStateEnum.ROLLED_BACK)
140
+ ) {
141
+ toDelete.push(id);
142
+ }
143
+ }
144
+
145
+ for (const id of toDelete) {
146
+ this.states.delete(id);
147
+ }
148
+ }
149
+
150
+ private extractLayer(did: string): 'peer' | 'webvh' | 'btco' | null {
151
+ if (did.startsWith('did:peer:')) return 'peer';
152
+ if (did.startsWith('did:webvh:')) return 'webvh';
153
+ if (did.startsWith('did:btco:')) return 'btco';
154
+ return null;
155
+ }
156
+ }