@originals/sdk 1.2.0 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/package.json +4 -1
  2. package/.eslintrc.json +0 -33
  3. package/.turbo/turbo-build.log +0 -1
  4. package/dist/adapters/FeeOracleMock.d.ts +0 -6
  5. package/dist/adapters/FeeOracleMock.js +0 -8
  6. package/dist/adapters/index.d.ts +0 -4
  7. package/dist/adapters/index.js +0 -4
  8. package/dist/adapters/providers/OrdHttpProvider.d.ts +0 -56
  9. package/dist/adapters/providers/OrdHttpProvider.js +0 -110
  10. package/dist/adapters/providers/OrdMockProvider.d.ts +0 -70
  11. package/dist/adapters/providers/OrdMockProvider.js +0 -75
  12. package/dist/adapters/types.d.ts +0 -71
  13. package/dist/adapters/types.js +0 -1
  14. package/dist/bitcoin/BitcoinManager.d.ts +0 -15
  15. package/dist/bitcoin/BitcoinManager.js +0 -262
  16. package/dist/bitcoin/BroadcastClient.d.ts +0 -30
  17. package/dist/bitcoin/BroadcastClient.js +0 -35
  18. package/dist/bitcoin/OrdinalsClient.d.ts +0 -21
  19. package/dist/bitcoin/OrdinalsClient.js +0 -105
  20. package/dist/bitcoin/PSBTBuilder.d.ts +0 -24
  21. package/dist/bitcoin/PSBTBuilder.js +0 -80
  22. package/dist/bitcoin/fee-calculation.d.ts +0 -14
  23. package/dist/bitcoin/fee-calculation.js +0 -31
  24. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +0 -38
  25. package/dist/bitcoin/providers/OrdNodeProvider.js +0 -67
  26. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +0 -33
  27. package/dist/bitcoin/providers/OrdinalsProvider.js +0 -50
  28. package/dist/bitcoin/providers/types.d.ts +0 -63
  29. package/dist/bitcoin/providers/types.js +0 -1
  30. package/dist/bitcoin/transactions/commit.d.ts +0 -89
  31. package/dist/bitcoin/transactions/commit.js +0 -311
  32. package/dist/bitcoin/transactions/index.d.ts +0 -7
  33. package/dist/bitcoin/transactions/index.js +0 -8
  34. package/dist/bitcoin/transfer.d.ts +0 -9
  35. package/dist/bitcoin/transfer.js +0 -26
  36. package/dist/bitcoin/utxo-selection.d.ts +0 -78
  37. package/dist/bitcoin/utxo-selection.js +0 -237
  38. package/dist/bitcoin/utxo.d.ts +0 -26
  39. package/dist/bitcoin/utxo.js +0 -78
  40. package/dist/contexts/credentials-v1.json +0 -195
  41. package/dist/contexts/credentials-v2-examples.json +0 -5
  42. package/dist/contexts/credentials-v2.json +0 -301
  43. package/dist/contexts/credentials.json +0 -195
  44. package/dist/contexts/data-integrity-v2.json +0 -81
  45. package/dist/contexts/dids.json +0 -57
  46. package/dist/contexts/ed255192020.json +0 -93
  47. package/dist/contexts/ordinals-plus.json +0 -23
  48. package/dist/contexts/originals.json +0 -22
  49. package/dist/core/OriginalsSDK.d.ts +0 -158
  50. package/dist/core/OriginalsSDK.js +0 -274
  51. package/dist/crypto/Multikey.d.ts +0 -30
  52. package/dist/crypto/Multikey.js +0 -149
  53. package/dist/crypto/Signer.d.ts +0 -21
  54. package/dist/crypto/Signer.js +0 -196
  55. package/dist/crypto/noble-init.d.ts +0 -18
  56. package/dist/crypto/noble-init.js +0 -106
  57. package/dist/did/BtcoDidResolver.d.ts +0 -57
  58. package/dist/did/BtcoDidResolver.js +0 -166
  59. package/dist/did/DIDManager.d.ts +0 -101
  60. package/dist/did/DIDManager.js +0 -493
  61. package/dist/did/Ed25519Verifier.d.ts +0 -30
  62. package/dist/did/Ed25519Verifier.js +0 -59
  63. package/dist/did/KeyManager.d.ts +0 -17
  64. package/dist/did/KeyManager.js +0 -207
  65. package/dist/did/WebVHManager.d.ts +0 -100
  66. package/dist/did/WebVHManager.js +0 -304
  67. package/dist/did/createBtcoDidDocument.d.ts +0 -10
  68. package/dist/did/createBtcoDidDocument.js +0 -42
  69. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +0 -23
  70. package/dist/did/providers/OrdinalsClientProviderAdapter.js +0 -51
  71. package/dist/events/EventEmitter.d.ts +0 -115
  72. package/dist/events/EventEmitter.js +0 -198
  73. package/dist/events/index.d.ts +0 -7
  74. package/dist/events/index.js +0 -6
  75. package/dist/events/types.d.ts +0 -286
  76. package/dist/events/types.js +0 -9
  77. package/dist/examples/basic-usage.d.ts +0 -3
  78. package/dist/examples/basic-usage.js +0 -62
  79. package/dist/examples/run.d.ts +0 -1
  80. package/dist/examples/run.js +0 -4
  81. package/dist/index.d.ts +0 -39
  82. package/dist/index.js +0 -47
  83. package/dist/lifecycle/BatchOperations.d.ts +0 -147
  84. package/dist/lifecycle/BatchOperations.js +0 -251
  85. package/dist/lifecycle/LifecycleManager.d.ts +0 -116
  86. package/dist/lifecycle/LifecycleManager.js +0 -971
  87. package/dist/lifecycle/OriginalsAsset.d.ts +0 -164
  88. package/dist/lifecycle/OriginalsAsset.js +0 -380
  89. package/dist/lifecycle/ProvenanceQuery.d.ts +0 -126
  90. package/dist/lifecycle/ProvenanceQuery.js +0 -220
  91. package/dist/lifecycle/ResourceVersioning.d.ts +0 -73
  92. package/dist/lifecycle/ResourceVersioning.js +0 -127
  93. package/dist/migration/MigrationManager.d.ts +0 -86
  94. package/dist/migration/MigrationManager.js +0 -412
  95. package/dist/migration/audit/AuditLogger.d.ts +0 -51
  96. package/dist/migration/audit/AuditLogger.js +0 -156
  97. package/dist/migration/checkpoint/CheckpointManager.d.ts +0 -31
  98. package/dist/migration/checkpoint/CheckpointManager.js +0 -96
  99. package/dist/migration/checkpoint/CheckpointStorage.d.ts +0 -26
  100. package/dist/migration/checkpoint/CheckpointStorage.js +0 -89
  101. package/dist/migration/index.d.ts +0 -22
  102. package/dist/migration/index.js +0 -27
  103. package/dist/migration/operations/BaseMigration.d.ts +0 -48
  104. package/dist/migration/operations/BaseMigration.js +0 -83
  105. package/dist/migration/operations/PeerToBtcoMigration.d.ts +0 -25
  106. package/dist/migration/operations/PeerToBtcoMigration.js +0 -67
  107. package/dist/migration/operations/PeerToWebvhMigration.d.ts +0 -19
  108. package/dist/migration/operations/PeerToWebvhMigration.js +0 -46
  109. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +0 -25
  110. package/dist/migration/operations/WebvhToBtcoMigration.js +0 -67
  111. package/dist/migration/rollback/RollbackManager.d.ts +0 -29
  112. package/dist/migration/rollback/RollbackManager.js +0 -146
  113. package/dist/migration/state/StateMachine.d.ts +0 -25
  114. package/dist/migration/state/StateMachine.js +0 -76
  115. package/dist/migration/state/StateTracker.d.ts +0 -36
  116. package/dist/migration/state/StateTracker.js +0 -123
  117. package/dist/migration/types.d.ts +0 -306
  118. package/dist/migration/types.js +0 -33
  119. package/dist/migration/validation/BitcoinValidator.d.ts +0 -13
  120. package/dist/migration/validation/BitcoinValidator.js +0 -83
  121. package/dist/migration/validation/CredentialValidator.d.ts +0 -13
  122. package/dist/migration/validation/CredentialValidator.js +0 -46
  123. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +0 -16
  124. package/dist/migration/validation/DIDCompatibilityValidator.js +0 -127
  125. package/dist/migration/validation/LifecycleValidator.d.ts +0 -10
  126. package/dist/migration/validation/LifecycleValidator.js +0 -52
  127. package/dist/migration/validation/StorageValidator.d.ts +0 -10
  128. package/dist/migration/validation/StorageValidator.js +0 -65
  129. package/dist/migration/validation/ValidationPipeline.d.ts +0 -29
  130. package/dist/migration/validation/ValidationPipeline.js +0 -180
  131. package/dist/storage/LocalStorageAdapter.d.ts +0 -11
  132. package/dist/storage/LocalStorageAdapter.js +0 -53
  133. package/dist/storage/MemoryStorageAdapter.d.ts +0 -6
  134. package/dist/storage/MemoryStorageAdapter.js +0 -21
  135. package/dist/storage/StorageAdapter.d.ts +0 -16
  136. package/dist/storage/StorageAdapter.js +0 -1
  137. package/dist/storage/index.d.ts +0 -2
  138. package/dist/storage/index.js +0 -2
  139. package/dist/types/bitcoin.d.ts +0 -84
  140. package/dist/types/bitcoin.js +0 -1
  141. package/dist/types/common.d.ts +0 -82
  142. package/dist/types/common.js +0 -1
  143. package/dist/types/credentials.d.ts +0 -75
  144. package/dist/types/credentials.js +0 -1
  145. package/dist/types/did.d.ts +0 -26
  146. package/dist/types/did.js +0 -1
  147. package/dist/types/index.d.ts +0 -5
  148. package/dist/types/index.js +0 -5
  149. package/dist/types/network.d.ts +0 -78
  150. package/dist/types/network.js +0 -145
  151. package/dist/utils/EventLogger.d.ts +0 -71
  152. package/dist/utils/EventLogger.js +0 -232
  153. package/dist/utils/Logger.d.ts +0 -106
  154. package/dist/utils/Logger.js +0 -257
  155. package/dist/utils/MetricsCollector.d.ts +0 -110
  156. package/dist/utils/MetricsCollector.js +0 -264
  157. package/dist/utils/bitcoin-address.d.ts +0 -38
  158. package/dist/utils/bitcoin-address.js +0 -113
  159. package/dist/utils/cbor.d.ts +0 -2
  160. package/dist/utils/cbor.js +0 -9
  161. package/dist/utils/encoding.d.ts +0 -37
  162. package/dist/utils/encoding.js +0 -120
  163. package/dist/utils/hash.d.ts +0 -1
  164. package/dist/utils/hash.js +0 -5
  165. package/dist/utils/retry.d.ts +0 -10
  166. package/dist/utils/retry.js +0 -35
  167. package/dist/utils/satoshi-validation.d.ts +0 -60
  168. package/dist/utils/satoshi-validation.js +0 -156
  169. package/dist/utils/serialization.d.ts +0 -14
  170. package/dist/utils/serialization.js +0 -76
  171. package/dist/utils/telemetry.d.ts +0 -17
  172. package/dist/utils/telemetry.js +0 -24
  173. package/dist/utils/validation.d.ts +0 -5
  174. package/dist/utils/validation.js +0 -98
  175. package/dist/vc/CredentialManager.d.ts +0 -22
  176. package/dist/vc/CredentialManager.js +0 -227
  177. package/dist/vc/Issuer.d.ts +0 -27
  178. package/dist/vc/Issuer.js +0 -70
  179. package/dist/vc/Verifier.d.ts +0 -16
  180. package/dist/vc/Verifier.js +0 -50
  181. package/dist/vc/cryptosuites/bbs.d.ts +0 -44
  182. package/dist/vc/cryptosuites/bbs.js +0 -213
  183. package/dist/vc/cryptosuites/bbsSimple.d.ts +0 -9
  184. package/dist/vc/cryptosuites/bbsSimple.js +0 -12
  185. package/dist/vc/cryptosuites/eddsa.d.ts +0 -30
  186. package/dist/vc/cryptosuites/eddsa.js +0 -81
  187. package/dist/vc/documentLoader.d.ts +0 -16
  188. package/dist/vc/documentLoader.js +0 -59
  189. package/dist/vc/proofs/data-integrity.d.ts +0 -21
  190. package/dist/vc/proofs/data-integrity.js +0 -15
  191. package/dist/vc/utils/jsonld.d.ts +0 -2
  192. package/dist/vc/utils/jsonld.js +0 -15
  193. package/src/adapters/FeeOracleMock.ts +0 -9
  194. package/src/adapters/index.ts +0 -5
  195. package/src/adapters/providers/OrdHttpProvider.ts +0 -126
  196. package/src/adapters/providers/OrdMockProvider.ts +0 -101
  197. package/src/adapters/types.ts +0 -66
  198. package/src/bitcoin/BitcoinManager.ts +0 -330
  199. package/src/bitcoin/BroadcastClient.ts +0 -54
  200. package/src/bitcoin/OrdinalsClient.ts +0 -119
  201. package/src/bitcoin/PSBTBuilder.ts +0 -106
  202. package/src/bitcoin/fee-calculation.ts +0 -38
  203. package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
  204. package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
  205. package/src/bitcoin/providers/types.ts +0 -59
  206. package/src/bitcoin/transactions/commit.ts +0 -465
  207. package/src/bitcoin/transactions/index.ts +0 -13
  208. package/src/bitcoin/transfer.ts +0 -43
  209. package/src/bitcoin/utxo-selection.ts +0 -322
  210. package/src/bitcoin/utxo.ts +0 -113
  211. package/src/contexts/credentials-v1.json +0 -237
  212. package/src/contexts/credentials-v2-examples.json +0 -5
  213. package/src/contexts/credentials-v2.json +0 -340
  214. package/src/contexts/credentials.json +0 -237
  215. package/src/contexts/data-integrity-v2.json +0 -81
  216. package/src/contexts/dids.json +0 -58
  217. package/src/contexts/ed255192020.json +0 -93
  218. package/src/contexts/ordinals-plus.json +0 -23
  219. package/src/contexts/originals.json +0 -22
  220. package/src/core/OriginalsSDK.ts +0 -416
  221. package/src/crypto/Multikey.ts +0 -194
  222. package/src/crypto/Signer.ts +0 -254
  223. package/src/crypto/noble-init.ts +0 -121
  224. package/src/did/BtcoDidResolver.ts +0 -227
  225. package/src/did/DIDManager.ts +0 -694
  226. package/src/did/Ed25519Verifier.ts +0 -68
  227. package/src/did/KeyManager.ts +0 -236
  228. package/src/did/WebVHManager.ts +0 -489
  229. package/src/did/createBtcoDidDocument.ts +0 -59
  230. package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
  231. package/src/events/EventEmitter.ts +0 -222
  232. package/src/events/index.ts +0 -19
  233. package/src/events/types.ts +0 -331
  234. package/src/examples/basic-usage.ts +0 -78
  235. package/src/examples/run.ts +0 -5
  236. package/src/index.ts +0 -84
  237. package/src/lifecycle/BatchOperations.ts +0 -373
  238. package/src/lifecycle/LifecycleManager.ts +0 -1218
  239. package/src/lifecycle/OriginalsAsset.ts +0 -524
  240. package/src/lifecycle/ProvenanceQuery.ts +0 -280
  241. package/src/lifecycle/ResourceVersioning.ts +0 -163
  242. package/src/migration/MigrationManager.ts +0 -527
  243. package/src/migration/audit/AuditLogger.ts +0 -176
  244. package/src/migration/checkpoint/CheckpointManager.ts +0 -112
  245. package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
  246. package/src/migration/index.ts +0 -33
  247. package/src/migration/operations/BaseMigration.ts +0 -126
  248. package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
  249. package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
  250. package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
  251. package/src/migration/rollback/RollbackManager.ts +0 -170
  252. package/src/migration/state/StateMachine.ts +0 -92
  253. package/src/migration/state/StateTracker.ts +0 -156
  254. package/src/migration/types.ts +0 -344
  255. package/src/migration/validation/BitcoinValidator.ts +0 -107
  256. package/src/migration/validation/CredentialValidator.ts +0 -62
  257. package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
  258. package/src/migration/validation/LifecycleValidator.ts +0 -64
  259. package/src/migration/validation/StorageValidator.ts +0 -79
  260. package/src/migration/validation/ValidationPipeline.ts +0 -213
  261. package/src/storage/LocalStorageAdapter.ts +0 -61
  262. package/src/storage/MemoryStorageAdapter.ts +0 -29
  263. package/src/storage/StorageAdapter.ts +0 -25
  264. package/src/storage/index.ts +0 -3
  265. package/src/types/bitcoin.ts +0 -98
  266. package/src/types/common.ts +0 -92
  267. package/src/types/credentials.ts +0 -88
  268. package/src/types/did.ts +0 -31
  269. package/src/types/external-shims.d.ts +0 -53
  270. package/src/types/index.ts +0 -7
  271. package/src/types/network.ts +0 -175
  272. package/src/utils/EventLogger.ts +0 -298
  273. package/src/utils/Logger.ts +0 -322
  274. package/src/utils/MetricsCollector.ts +0 -358
  275. package/src/utils/bitcoin-address.ts +0 -130
  276. package/src/utils/cbor.ts +0 -12
  277. package/src/utils/encoding.ts +0 -127
  278. package/src/utils/hash.ts +0 -6
  279. package/src/utils/retry.ts +0 -46
  280. package/src/utils/satoshi-validation.ts +0 -196
  281. package/src/utils/serialization.ts +0 -96
  282. package/src/utils/telemetry.ts +0 -40
  283. package/src/utils/validation.ts +0 -119
  284. package/src/vc/CredentialManager.ts +0 -273
  285. package/src/vc/Issuer.ts +0 -100
  286. package/src/vc/Verifier.ts +0 -47
  287. package/src/vc/cryptosuites/bbs.ts +0 -253
  288. package/src/vc/cryptosuites/bbsSimple.ts +0 -21
  289. package/src/vc/cryptosuites/eddsa.ts +0 -99
  290. package/src/vc/documentLoader.ts +0 -67
  291. package/src/vc/proofs/data-integrity.ts +0 -33
  292. package/src/vc/utils/jsonld.ts +0 -18
  293. package/test/logs/did_webvh_QmNTn9Kkp8dQ75WrF9xqJ2kuDp9QhKc3aPiERRMj8XoTBN_example_com.jsonl +0 -1
  294. package/test/logs/did_webvh_QmNu4MNr8Lr5txx5gYNhuhZDchXsZEu3hJXKYuphpWTPDp_example_com_users_etc_passwd.jsonl +0 -1
  295. package/test/logs/did_webvh_QmR9MrGZACzjKETA8SBRNCKG11HxU85c4bVR2qN5eDCfsD_example_com.jsonl +0 -1
  296. package/test/logs/did_webvh_QmUc5suaqRM2P4nrXxZwqYMfqzhdMqjuL7oJaJbEpCQVCd_example_com_users_etc_passwd.jsonl +0 -1
  297. package/test/logs/did_webvh_QmUkiB2RCV2VZ1RTXsCebWN25Eiy9TLvpzDWAJNjhgvB4X_example_com_etc_passwd.jsonl +0 -1
  298. package/test/logs/did_webvh_QmUoRTe8UMwpAQXZSAW7pjAgZK1tq2X3C6Kfxq3UXGcaGy_example_com_secret.jsonl +0 -1
  299. package/test/logs/did_webvh_QmWWot3chx1t6KwTmcE5i2FeDZ5JMkQw3qXycsKDVmJ9Be_example_com_users_alice.jsonl +0 -1
  300. package/test/logs/did_webvh_QmWvVgALL5kjZdpgR7KZay7J8UiiUr834kkRmWeFAxjAuC_example_com_users_etc_passwd.jsonl +0 -1
  301. package/test/logs/did_webvh_QmWwaRQHUZAFcKihFC6xR6tRTTrQhHPTku6azf1egWbpy1_example_com_users_alice.jsonl +0 -1
  302. package/test/logs/did_webvh_QmXJLtkz23r7AozbtXsZMKWnVU6rd38CkVtjdWuATU3Yp6_example_com_users_alice123_profile.jsonl +0 -1
  303. package/test/logs/did_webvh_QmYsce448po14oDE1wXbyaP6wY9HQgHSKLwdezn1k577SF_example_com_my_org_user_name_test_123.jsonl +0 -1
  304. package/test/logs/did_webvh_QmZBeNzzqajxdfwcDUPZ4P8C5YSXyRztrAwmPiKuKUxmAK_example_com.jsonl +0 -1
  305. package/test/logs/did_webvh_QmZhJsqxizwVbRtqCUkmE6XQunSxtxMt3gbTYadVBNAaEq_example_com.jsonl +0 -1
  306. package/test/logs/did_webvh_QmZk7NHU2D57RzzbMq4tWW9gBa9AqtVTWfiRM6RFdwGVj2_example_com.jsonl +0 -1
  307. package/test/logs/did_webvh_QmZshSXp9w8ovH62zGGBS1b5pGGPsuYiu1VQ935sga2hWF_example_com_level1_level2.jsonl +0 -1
  308. package/test/logs/did_webvh_QmbWAmw7HQL7vKJyCsctZihXf1rmT4sGvggKCPKWcUWjw1_example_com.jsonl +0 -1
  309. package/test/logs/did_webvh_QmbdLUMbYs3juR39TLB6hhrFWLcNg45ybUzeBJCS1MhCh1_example_com_C_Windows_System32.jsonl +0 -1
  310. package/test/logs/did_webvh_QmcaQ1Ma4gkSbae85aCm8Mv4rvdT2Sb2RR3JzYwrm5XBq8_example_com_etc_passwd.jsonl +0 -1
  311. package/test/logs/did_webvh_QmcbA7WQhsBqZSoDpKJHjV8Q5o53h8vmgJhQfo6rqTY5ho_example_com.jsonl +0 -1
  312. package/test/logs/did_webvh_Qmdy8uWr2gkUJrXsThynAug3DASTWwb3onEj89LKmMGZYB_example_com.jsonl +0 -1
  313. package/tests/__mocks__/bbs-signatures.js +0 -17
  314. package/tests/__mocks__/mf-base58.js +0 -24
  315. package/tests/e2e/README.md +0 -97
  316. package/tests/e2e/example.spec.ts +0 -78
  317. package/tests/fixtures/did-documents.ts +0 -247
  318. package/tests/index.test.ts +0 -21
  319. package/tests/integration/BatchOperations.test.ts +0 -531
  320. package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
  321. package/tests/integration/CredentialManager.test.ts +0 -42
  322. package/tests/integration/DIDManager.test.ts +0 -41
  323. package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
  324. package/tests/integration/Events.test.ts +0 -435
  325. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
  326. package/tests/integration/LifecycleManager.test.ts +0 -21
  327. package/tests/integration/MultikeyFlow.test.ts +0 -52
  328. package/tests/integration/TelemetryIntegration.test.ts +0 -395
  329. package/tests/integration/WebVhPublish.test.ts +0 -48
  330. package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
  331. package/tests/manual/test-commit-creation.ts +0 -323
  332. package/tests/mocks/MockKeyStore.ts +0 -38
  333. package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
  334. package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
  335. package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
  336. package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
  337. package/tests/mocks/adapters/index.ts +0 -6
  338. package/tests/performance/BatchOperations.perf.test.ts +0 -403
  339. package/tests/performance/logging.perf.test.ts +0 -336
  340. package/tests/sdk.test.ts +0 -43
  341. package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
  342. package/tests/setup.bun.ts +0 -69
  343. package/tests/setup.jest.ts +0 -23
  344. package/tests/stress/batch-operations-stress.test.ts +0 -571
  345. package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
  346. package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
  347. package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
  348. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
  349. package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
  350. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
  351. package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
  352. package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
  353. package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
  354. package/tests/unit/bitcoin/transfer.test.ts +0 -31
  355. package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
  356. package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
  357. package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
  358. package/tests/unit/core/OriginalsSDK.test.ts +0 -152
  359. package/tests/unit/crypto/Multikey.test.ts +0 -206
  360. package/tests/unit/crypto/Signer.test.ts +0 -408
  361. package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
  362. package/tests/unit/did/DIDManager.more.test.ts +0 -43
  363. package/tests/unit/did/DIDManager.test.ts +0 -185
  364. package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
  365. package/tests/unit/did/KeyManager.test.ts +0 -452
  366. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
  367. package/tests/unit/did/WebVHManager.test.ts +0 -435
  368. package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
  369. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
  370. package/tests/unit/events/EventEmitter.test.ts +0 -407
  371. package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
  372. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
  373. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
  374. package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
  375. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
  376. package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
  377. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
  378. package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
  379. package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
  380. package/tests/unit/types/network.test.ts +0 -255
  381. package/tests/unit/utils/EventIntegration.test.ts +0 -384
  382. package/tests/unit/utils/Logger.test.ts +0 -473
  383. package/tests/unit/utils/MetricsCollector.test.ts +0 -358
  384. package/tests/unit/utils/bitcoin-address.test.ts +0 -250
  385. package/tests/unit/utils/cbor.test.ts +0 -35
  386. package/tests/unit/utils/encoding.test.ts +0 -318
  387. package/tests/unit/utils/hash.test.ts +0 -12
  388. package/tests/unit/utils/retry.test.ts +0 -100
  389. package/tests/unit/utils/satoshi-validation.test.ts +0 -354
  390. package/tests/unit/utils/serialization.test.ts +0 -124
  391. package/tests/unit/utils/telemetry.test.ts +0 -52
  392. package/tests/unit/utils/validation.test.ts +0 -141
  393. package/tests/unit/vc/CredentialManager.test.ts +0 -487
  394. package/tests/unit/vc/Issuer.test.ts +0 -107
  395. package/tests/unit/vc/Verifier.test.ts +0 -525
  396. package/tests/unit/vc/bbs.test.ts +0 -282
  397. package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
  398. package/tests/unit/vc/documentLoader.test.ts +0 -121
  399. package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
  400. package/tsconfig.json +0 -31
  401. package/tsconfig.test.json +0 -15
@@ -1,23 +0,0 @@
1
- // Ensure globalThis.crypto is available for noble libraries in Node test env
2
- import { webcrypto } from 'node:crypto';
3
- import * as ed25519 from '@noble/ed25519';
4
- import { createHash } from 'node:crypto';
5
-
6
- // Ensure Jest matchers are properly extended
7
- import 'jest';
8
-
9
- if (typeof globalThis.crypto === 'undefined') {
10
- // @ts-ignore
11
- globalThis.crypto = webcrypto as unknown as Crypto;
12
- }
13
-
14
- // Configure noble ed25519 to use sha512 via Node crypto
15
- // @ts-ignore
16
- ed25519.etc.sha512Sync = (...msgs: Uint8Array[]) => {
17
- const hasher = createHash('sha512');
18
- for (const m of msgs) hasher.update(Buffer.from(m));
19
- return new Uint8Array(hasher.digest());
20
- };
21
-
22
-
23
-
@@ -1,571 +0,0 @@
1
- /**
2
- * Batch Operations Stress and Load Testing
3
- *
4
- * This test suite performs stress testing on batch operations,
5
- * migration processes, and concurrent transaction handling.
6
- */
7
-
8
- import { describe, it, expect, beforeEach } from 'bun:test';
9
- import { OriginalsSDK } from '../../src/core/OriginalsSDK';
10
- import { OrdMockProvider } from '../../src/adapters/providers/OrdMockProvider';
11
- import { BatchOperationExecutor } from '../../src/lifecycle/BatchOperations';
12
- import { MemoryKeyStore } from '../../src/storage/MemoryKeyStore';
13
- import type { AssetResource, OriginalsConfig } from '../../src/types';
14
-
15
- describe('Batch Operations Stress Tests', () => {
16
- let sdk: OriginalsSDK;
17
- let config: OriginalsConfig;
18
-
19
- beforeEach(() => {
20
- config = {
21
- network: 'regtest',
22
- defaultKeyType: 'ES256K',
23
- ordinalsProvider: new OrdMockProvider(),
24
- enableLogging: false
25
- };
26
- sdk = OriginalsSDK.create(config);
27
- });
28
-
29
- describe('1. Batch Size Scaling Tests', () => {
30
- it('should handle 10 assets (baseline)', async () => {
31
- const batchSize = 10;
32
- const resourcesList = createTestResourcesList(batchSize);
33
-
34
- const startTime = Date.now();
35
- const result = await sdk.lifecycle.batchCreateAssets(resourcesList, {
36
- continueOnError: false,
37
- maxConcurrent: 1
38
- });
39
- const duration = Date.now() - startTime;
40
-
41
- expect(result.successful).toHaveLength(batchSize);
42
- expect(result.failed).toHaveLength(0);
43
-
44
- logPerformanceMetrics('10 assets batch', batchSize, duration, result);
45
- }, 30000);
46
-
47
- it('should handle 100 assets (typical load)', async () => {
48
- const batchSize = 100;
49
- const resourcesList = createTestResourcesList(batchSize);
50
-
51
- const startTime = Date.now();
52
- const result = await sdk.lifecycle.batchCreateAssets(resourcesList, {
53
- continueOnError: true,
54
- maxConcurrent: 5
55
- });
56
- const duration = Date.now() - startTime;
57
-
58
- expect(result.totalProcessed).toBe(batchSize);
59
- expect(result.successful.length + result.failed.length).toBe(batchSize);
60
-
61
- logPerformanceMetrics('100 assets batch', batchSize, duration, result);
62
- }, 60000);
63
-
64
- it('should handle 1000 assets (stress test)', async () => {
65
- const batchSize = 1000;
66
- const resourcesList = createTestResourcesList(batchSize);
67
-
68
- const startTime = Date.now();
69
- const result = await sdk.lifecycle.batchCreateAssets(resourcesList, {
70
- continueOnError: true,
71
- maxConcurrent: 10
72
- });
73
- const duration = Date.now() - startTime;
74
-
75
- expect(result.totalProcessed).toBe(batchSize);
76
-
77
- logPerformanceMetrics('1000 assets batch', batchSize, duration, result);
78
-
79
- // Performance expectations
80
- const avgTimePerAsset = duration / batchSize;
81
- expect(avgTimePerAsset).toBeLessThan(100); // Should average < 100ms per asset
82
-
83
- console.log(`[STRESS] Average time per asset: ${avgTimePerAsset.toFixed(2)}ms`);
84
- }, 120000);
85
-
86
- it('should handle 10000 assets (breaking point test)', async () => {
87
- const batchSize = 10000;
88
- const resourcesList = createTestResourcesList(batchSize);
89
-
90
- const startTime = Date.now();
91
- const startMemory = process.memoryUsage().heapUsed;
92
-
93
- const result = await sdk.lifecycle.batchCreateAssets(resourcesList, {
94
- continueOnError: true,
95
- maxConcurrent: 20,
96
- timeoutMs: 60000
97
- });
98
-
99
- const duration = Date.now() - startTime;
100
- const endMemory = process.memoryUsage().heapUsed;
101
- const memoryDelta = (endMemory - startMemory) / 1024 / 1024; // MB
102
-
103
- expect(result.totalProcessed).toBe(batchSize);
104
-
105
- logPerformanceMetrics('10000 assets batch', batchSize, duration, result);
106
-
107
- console.log(`[STRESS] Memory usage: ${memoryDelta.toFixed(2)}MB`);
108
- console.log(`[STRESS] Memory per asset: ${(memoryDelta / batchSize * 1024).toFixed(2)}KB`);
109
-
110
- // Memory should not grow unreasonably
111
- expect(memoryDelta).toBeLessThan(500); // Should use < 500MB for 10k assets
112
- }, 300000);
113
- });
114
-
115
- describe('2. Concurrent Batch Operation Tests', () => {
116
- it('should handle 1 concurrent batch (baseline)', async () => {
117
- const result = await runConcurrentBatches(1, 50);
118
-
119
- expect(result.allSuccessful).toBeGreaterThan(0);
120
-
121
- logConcurrencyMetrics('1 concurrent batch', 1, 50, result);
122
- }, 60000);
123
-
124
- it('should handle 10 concurrent batches', async () => {
125
- const result = await runConcurrentBatches(10, 20);
126
-
127
- expect(result.allSuccessful).toBeGreaterThan(0);
128
-
129
- logConcurrencyMetrics('10 concurrent batches', 10, 20, result);
130
- }, 120000);
131
-
132
- it('should handle 100 concurrent batches (high concurrency)', async () => {
133
- const result = await runConcurrentBatches(100, 10);
134
-
135
- expect(result.totalBatches).toBe(100);
136
-
137
- logConcurrencyMetrics('100 concurrent batches', 100, 10, result);
138
-
139
- // Calculate error rate
140
- const errorRate = (result.allFailed / result.totalItems) * 100;
141
- expect(errorRate).toBeLessThan(5); // < 5% error rate acceptable under high load
142
-
143
- console.log(`[STRESS] Error rate under high concurrency: ${errorRate.toFixed(2)}%`);
144
- }, 300000);
145
-
146
- it('should handle mixed concurrent operations', async () => {
147
- const operations = [
148
- sdk.lifecycle.batchCreateAssets(createTestResourcesList(50)),
149
- sdk.lifecycle.batchCreateAssets(createTestResourcesList(50)),
150
- sdk.lifecycle.batchCreateAssets(createTestResourcesList(50)),
151
- ];
152
-
153
- const startTime = Date.now();
154
- const results = await Promise.all(operations);
155
- const duration = Date.now() - startTime;
156
-
157
- const totalSuccessful = results.reduce((sum, r) => sum + r.successful.length, 0);
158
- const totalFailed = results.reduce((sum, r) => sum + r.failed.length, 0);
159
-
160
- console.log(`[STRESS] Mixed concurrent operations:`);
161
- console.log(` - Total successful: ${totalSuccessful}`);
162
- console.log(` - Total failed: ${totalFailed}`);
163
- console.log(` - Duration: ${duration}ms`);
164
- console.log(` - Throughput: ${(totalSuccessful / (duration / 1000)).toFixed(2)} assets/sec`);
165
- }, 120000);
166
- });
167
-
168
- describe('3. Batch Inscription Stress Tests', () => {
169
- it('should handle batch inscription with single transaction mode', async () => {
170
- // Create assets first
171
- const resourcesList = createTestResourcesList(10);
172
- const createResult = await sdk.lifecycle.batchCreateAssets(resourcesList);
173
-
174
- expect(createResult.successful).toHaveLength(10);
175
-
176
- const assets = createResult.successful.map(s => s.result);
177
-
178
- // Inscribe in batch with single transaction
179
- const startTime = Date.now();
180
- const inscribeResult = await sdk.lifecycle.batchInscribeOnBitcoin(assets, {
181
- singleTransaction: true,
182
- feeRate: 10,
183
- continueOnError: false
184
- });
185
- const duration = Date.now() - startTime;
186
-
187
- expect(inscribeResult.successful).toHaveLength(10);
188
-
189
- console.log(`[STRESS] Batch inscription (single tx):`);
190
- console.log(` - Assets: 10`);
191
- console.log(` - Duration: ${duration}ms`);
192
- console.log(` - Mode: Single transaction`);
193
- }, 60000);
194
-
195
- it('should handle batch inscription with individual transactions', async () => {
196
- const resourcesList = createTestResourcesList(10);
197
- const createResult = await sdk.lifecycle.batchCreateAssets(resourcesList);
198
- const assets = createResult.successful.map(s => s.result);
199
-
200
- const startTime = Date.now();
201
- const inscribeResult = await sdk.lifecycle.batchInscribeOnBitcoin(assets, {
202
- singleTransaction: false,
203
- feeRate: 10,
204
- continueOnError: true,
205
- maxConcurrent: 3
206
- });
207
- const duration = Date.now() - startTime;
208
-
209
- expect(inscribeResult.totalProcessed).toBe(10);
210
-
211
- console.log(`[STRESS] Batch inscription (individual txs):`);
212
- console.log(` - Assets: 10`);
213
- console.log(` - Duration: ${duration}ms`);
214
- console.log(` - Mode: Individual transactions`);
215
- console.log(` - Concurrency: 3`);
216
- }, 60000);
217
-
218
- it('should compare cost savings between modes', async () => {
219
- const resourcesList = createTestResourcesList(50);
220
- const createResult = await sdk.lifecycle.batchCreateAssets(resourcesList);
221
- const assets = createResult.successful.map(s => s.result);
222
-
223
- // Test single transaction mode
224
- const singleTxStart = Date.now();
225
- const singleTxResult = await sdk.lifecycle.batchInscribeOnBitcoin(
226
- assets.slice(0, 25),
227
- {
228
- singleTransaction: true,
229
- feeRate: 10
230
- }
231
- );
232
- const singleTxDuration = Date.now() - singleTxStart;
233
-
234
- // Test individual transaction mode
235
- const individualTxStart = Date.now();
236
- const individualTxResult = await sdk.lifecycle.batchInscribeOnBitcoin(
237
- assets.slice(25, 50),
238
- {
239
- singleTransaction: false,
240
- feeRate: 10,
241
- maxConcurrent: 5
242
- }
243
- );
244
- const individualTxDuration = Date.now() - individualTxStart;
245
-
246
- console.log(`[STRESS] Cost comparison:`);
247
- console.log(` Single TX mode:`);
248
- console.log(` - Duration: ${singleTxDuration}ms`);
249
- console.log(` - Assets: 25`);
250
- console.log(` Individual TX mode:`);
251
- console.log(` - Duration: ${individualTxDuration}ms`);
252
- console.log(` - Assets: 25`);
253
- console.log(` - Concurrency: 5`);
254
- console.log(` Performance ratio: ${(individualTxDuration / singleTxDuration).toFixed(2)}x`);
255
- }, 120000);
256
- });
257
-
258
- describe('4. Migration Operation Stress Tests', () => {
259
- it('should handle 1000 assets migrating through layers', async () => {
260
- const batchSize = 1000;
261
- const resourcesList = createTestResourcesList(batchSize);
262
-
263
- // Create assets (did:peer layer)
264
- const createResult = await sdk.lifecycle.batchCreateAssets(resourcesList, {
265
- maxConcurrent: 10
266
- });
267
-
268
- expect(createResult.successful).toHaveLength(batchSize);
269
-
270
- const startTime = Date.now();
271
- let migratedCount = 0;
272
-
273
- // Migrate to did:webvh layer
274
- for (const { result: asset } of createResult.successful.slice(0, 100)) {
275
- try {
276
- await sdk.lifecycle.publishToWeb(asset, 'localhost:3000');
277
- migratedCount++;
278
- } catch (error) {
279
- // Expected to fail in test environment
280
- }
281
- }
282
-
283
- const duration = Date.now() - startTime;
284
-
285
- console.log(`[STRESS] Migration stress test:`);
286
- console.log(` - Assets created: ${batchSize}`);
287
- console.log(` - Assets migrated: ${migratedCount}`);
288
- console.log(` - Duration: ${duration}ms`);
289
- console.log(` - Avg time per migration: ${migratedCount > 0 ? (duration / migratedCount).toFixed(2) : 'N/A'}ms`);
290
- }, 120000);
291
-
292
- it('should handle concurrent migrations', async () => {
293
- const resourcesList = createTestResourcesList(30);
294
- const createResult = await sdk.lifecycle.batchCreateAssets(resourcesList);
295
- const assets = createResult.successful.map(s => s.result);
296
-
297
- const startTime = Date.now();
298
-
299
- // Attempt concurrent migrations
300
- const migrations = assets.slice(0, 10).map(asset =>
301
- sdk.lifecycle.publishToWeb(asset, 'localhost:3000').catch(e => e)
302
- );
303
-
304
- await Promise.allSettled(migrations);
305
-
306
- const duration = Date.now() - startTime;
307
-
308
- console.log(`[STRESS] Concurrent migrations:`);
309
- console.log(` - Concurrent operations: 10`);
310
- console.log(` - Duration: ${duration}ms`);
311
- }, 60000);
312
- });
313
-
314
- describe('5. Error Recovery and Retry Stress Tests', () => {
315
- it('should handle batch with 50% failure rate and retry', async () => {
316
- const executor = new BatchOperationExecutor();
317
- let callCount = 0;
318
-
319
- const items = Array.from({ length: 100 }, (_, i) => i);
320
-
321
- const result = await executor.execute(
322
- items,
323
- async (item) => {
324
- callCount++;
325
- // Simulate 50% failure on first attempt
326
- if (callCount % 2 === 0 && callCount <= 100) {
327
- throw new Error('Simulated failure');
328
- }
329
- return item * 2;
330
- },
331
- {
332
- continueOnError: true,
333
- retryCount: 2,
334
- retryDelay: 10,
335
- maxConcurrent: 5
336
- }
337
- );
338
-
339
- console.log(`[STRESS] Error recovery test:`);
340
- console.log(` - Total items: 100`);
341
- console.log(` - Successful: ${result.successful.length}`);
342
- console.log(` - Failed: ${result.failed.length}`);
343
- console.log(` - Total calls (with retries): ${callCount}`);
344
- console.log(` - Duration: ${result.totalDuration}ms`);
345
- }, 60000);
346
-
347
- it('should handle exponential backoff under stress', async () => {
348
- const executor = new BatchOperationExecutor();
349
- const retryTimes: number[] = [];
350
-
351
- const items = Array.from({ length: 10 }, (_, i) => i);
352
-
353
- await executor.execute(
354
- items,
355
- async (item, index) => {
356
- retryTimes.push(Date.now());
357
- if (retryTimes.length <= 20) { // Fail first few
358
- throw new Error('Force retry');
359
- }
360
- return item;
361
- },
362
- {
363
- continueOnError: true,
364
- retryCount: 3,
365
- retryDelay: 100,
366
- maxConcurrent: 1
367
- }
368
- );
369
-
370
- // Analyze retry delays
371
- const delays: number[] = [];
372
- for (let i = 1; i < Math.min(retryTimes.length, 10); i++) {
373
- delays.push(retryTimes[i] - retryTimes[i - 1]);
374
- }
375
-
376
- console.log(`[STRESS] Exponential backoff analysis:`);
377
- console.log(` - Retry delays: ${delays.map(d => d + 'ms').join(', ')}`);
378
- console.log(` - Average delay: ${(delays.reduce((a, b) => a + b, 0) / delays.length).toFixed(2)}ms`);
379
- }, 30000);
380
- });
381
-
382
- describe('6. Memory and Resource Tests', () => {
383
- it('should not leak memory during repeated batch operations', async () => {
384
- const iterations = 10;
385
- const batchSize = 100;
386
-
387
- const memoryReadings: number[] = [];
388
-
389
- for (let i = 0; i < iterations; i++) {
390
- const resourcesList = createTestResourcesList(batchSize);
391
-
392
- await sdk.lifecycle.batchCreateAssets(resourcesList, {
393
- maxConcurrent: 5
394
- });
395
-
396
- // Force garbage collection if available
397
- if (global.gc) {
398
- global.gc();
399
- }
400
-
401
- const memUsage = process.memoryUsage().heapUsed / 1024 / 1024; // MB
402
- memoryReadings.push(memUsage);
403
-
404
- console.log(`[STRESS] Iteration ${i + 1}: ${memUsage.toFixed(2)}MB`);
405
- }
406
-
407
- // Check for memory leak (memory shouldn't grow linearly)
408
- const firstHalf = memoryReadings.slice(0, 5).reduce((a, b) => a + b) / 5;
409
- const secondHalf = memoryReadings.slice(5).reduce((a, b) => a + b) / 5;
410
- const growth = ((secondHalf - firstHalf) / firstHalf) * 100;
411
-
412
- console.log(`[STRESS] Memory growth: ${growth.toFixed(2)}%`);
413
- expect(Math.abs(growth)).toBeLessThan(50); // Memory shouldn't grow > 50%
414
- }, 180000);
415
-
416
- it('should handle resource cleanup after timeout', async () => {
417
- const executor = new BatchOperationExecutor();
418
-
419
- const result = await executor.execute(
420
- [1, 2, 3, 4, 5],
421
- async (item) => {
422
- // Simulate long-running operation
423
- await new Promise(resolve => setTimeout(resolve, 100));
424
- return item * 2;
425
- },
426
- {
427
- timeoutMs: 50, // Timeout before completion
428
- continueOnError: true
429
- }
430
- );
431
-
432
- expect(result.failed.length).toBeGreaterThan(0);
433
- console.log(`[STRESS] Timeout handling: ${result.failed.length} operations timed out`);
434
- }, 10000);
435
- });
436
-
437
- describe('7. Throughput Benchmarks', () => {
438
- it('should measure peak throughput for asset creation', async () => {
439
- const testDuration = 5000; // 5 seconds
440
- const startTime = Date.now();
441
- let totalCreated = 0;
442
-
443
- while (Date.now() - startTime < testDuration) {
444
- const batch = createTestResourcesList(10);
445
- const result = await sdk.lifecycle.batchCreateAssets(batch, {
446
- maxConcurrent: 5
447
- });
448
- totalCreated += result.successful.length;
449
- }
450
-
451
- const actualDuration = Date.now() - startTime;
452
- const throughput = (totalCreated / actualDuration) * 1000; // per second
453
-
454
- console.log(`[BENCHMARK] Asset creation throughput:`);
455
- console.log(` - Total created: ${totalCreated}`);
456
- console.log(` - Duration: ${actualDuration}ms`);
457
- console.log(` - Throughput: ${throughput.toFixed(2)} assets/sec`);
458
-
459
- expect(throughput).toBeGreaterThan(10); // Should create at least 10 assets/sec
460
- }, 10000);
461
- });
462
- });
463
-
464
- // Helper functions
465
-
466
- function createTestResourcesList(count: number): AssetResource[][] {
467
- return Array.from({ length: count }, (_, i) => [
468
- {
469
- id: `resource-${i}-${Date.now()}`,
470
- type: 'DigitalArt',
471
- contentType: 'application/json',
472
- hash: Buffer.from(`hash-${i}`).toString('hex'),
473
- content: JSON.stringify({ test: `data-${i}` })
474
- }
475
- ]);
476
- }
477
-
478
- interface ConcurrencyResult {
479
- totalBatches: number;
480
- totalItems: number;
481
- allSuccessful: number;
482
- allFailed: number;
483
- duration: number;
484
- avgBatchDuration: number;
485
- }
486
-
487
- async function runConcurrentBatches(
488
- batchCount: number,
489
- itemsPerBatch: number
490
- ): Promise<ConcurrencyResult> {
491
- const config: OriginalsConfig = {
492
- network: 'regtest',
493
- defaultKeyType: 'ES256K',
494
- ordinalsProvider: new OrdMockProvider(),
495
- enableLogging: false
496
- };
497
-
498
- const startTime = Date.now();
499
-
500
- const batches = Array.from({ length: batchCount }, () => {
501
- const sdk = OriginalsSDK.create(config);
502
- const resourcesList = createTestResourcesList(itemsPerBatch);
503
- return sdk.lifecycle.batchCreateAssets(resourcesList, {
504
- maxConcurrent: 1,
505
- continueOnError: true
506
- });
507
- });
508
-
509
- const results = await Promise.all(batches);
510
- const duration = Date.now() - startTime;
511
-
512
- const allSuccessful = results.reduce((sum, r) => sum + r.successful.length, 0);
513
- const allFailed = results.reduce((sum, r) => sum + r.failed.length, 0);
514
- const avgBatchDuration = results.reduce((sum, r) => sum + r.totalDuration, 0) / batchCount;
515
-
516
- return {
517
- totalBatches: batchCount,
518
- totalItems: batchCount * itemsPerBatch,
519
- allSuccessful,
520
- allFailed,
521
- duration,
522
- avgBatchDuration
523
- };
524
- }
525
-
526
- function logPerformanceMetrics(
527
- testName: string,
528
- itemCount: number,
529
- duration: number,
530
- result: any
531
- ): void {
532
- const throughput = (itemCount / duration) * 1000; // items per second
533
-
534
- console.log(`\n[PERFORMANCE] ${testName}:`);
535
- console.log(` - Total items: ${itemCount}`);
536
- console.log(` - Successful: ${result.successful.length}`);
537
- console.log(` - Failed: ${result.failed.length}`);
538
- console.log(` - Duration: ${duration}ms`);
539
- console.log(` - Throughput: ${throughput.toFixed(2)} items/sec`);
540
- console.log(` - Avg time per item: ${(duration / itemCount).toFixed(2)}ms`);
541
- }
542
-
543
- function logConcurrencyMetrics(
544
- testName: string,
545
- batchCount: number,
546
- itemsPerBatch: number,
547
- result: ConcurrencyResult
548
- ): void {
549
- const throughput = (result.totalItems / result.duration) * 1000;
550
-
551
- console.log(`\n[CONCURRENCY] ${testName}:`);
552
- console.log(` - Concurrent batches: ${batchCount}`);
553
- console.log(` - Items per batch: ${itemsPerBatch}`);
554
- console.log(` - Total items: ${result.totalItems}`);
555
- console.log(` - Successful: ${result.allSuccessful}`);
556
- console.log(` - Failed: ${result.allFailed}`);
557
- console.log(` - Total duration: ${result.duration}ms`);
558
- console.log(` - Avg batch duration: ${result.avgBatchDuration.toFixed(2)}ms`);
559
- console.log(` - Overall throughput: ${throughput.toFixed(2)} items/sec`);
560
- }
561
-
562
- console.log('\n=== Batch Operations Stress Test Suite Complete ===\n');
563
- console.log('This test suite validates performance and stability under:');
564
- console.log('- Varying batch sizes (10 to 10,000 assets)');
565
- console.log('- High concurrency (up to 100 concurrent batches)');
566
- console.log('- Batch inscription modes (single tx vs individual txs)');
567
- console.log('- Migration operations under load');
568
- console.log('- Error recovery and retry mechanisms');
569
- console.log('- Memory and resource management');
570
- console.log('- Throughput benchmarks');
571
- console.log('\n=================================================\n');
@@ -1,40 +0,0 @@
1
- import { describe, test, expect } from 'bun:test';
2
- import { FeeOracleMock } from '../../../src/adapters/FeeOracleMock';
3
-
4
- describe('FeeOracleMock', () => {
5
- test('constructor initializes with default fee rate', async () => {
6
- const oracle = new FeeOracleMock();
7
- const rate = await oracle.estimateFeeRate();
8
- expect(rate).toBe(7);
9
- });
10
-
11
- test('constructor accepts custom fee rate', async () => {
12
- const oracle = new FeeOracleMock(10);
13
- const rate = await oracle.estimateFeeRate();
14
- expect(rate).toBe(10);
15
- });
16
-
17
- test('estimateFeeRate returns rate for 1 block', async () => {
18
- const oracle = new FeeOracleMock(7);
19
- const rate = await oracle.estimateFeeRate(1);
20
- expect(rate).toBe(7);
21
- });
22
-
23
- test('estimateFeeRate decreases for higher target blocks', async () => {
24
- const oracle = new FeeOracleMock(7);
25
- const rate = await oracle.estimateFeeRate(3);
26
- expect(rate).toBe(5); // 7 - (3 - 1) = 5
27
- });
28
-
29
- test('estimateFeeRate returns minimum of 1', async () => {
30
- const oracle = new FeeOracleMock(2);
31
- const rate = await oracle.estimateFeeRate(10);
32
- expect(rate).toBe(1); // Math.max(1, 2 - 9) = 1
33
- });
34
-
35
- test('estimateFeeRate works without target blocks parameter', async () => {
36
- const oracle = new FeeOracleMock(5);
37
- const rate = await oracle.estimateFeeRate();
38
- expect(rate).toBe(5);
39
- });
40
- });