@bsv/sdk 1.0.0 → 1.0.1

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 (123) hide show
  1. package/README.md +25 -3
  2. package/package.json +9 -5
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
  4. package/.github/ISSUE_TEMPLATE/discussion.md +0 -24
  5. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -23
  6. package/CHANGELOG.md +0 -72
  7. package/CONTRIBUTING.md +0 -85
  8. package/ROADMAP.md +0 -3
  9. package/docs/getting-started/COMMONJS.md +0 -94
  10. package/docs/getting-started/REACT-TS.md +0 -131
  11. package/docs/getting-started/TS-NODE.md +0 -106
  12. package/docs/getting-started/VUE.md +0 -103
  13. package/jest.config.js +0 -6
  14. package/mod.ts +0 -8
  15. package/src/compat/BSM.ts +0 -51
  16. package/src/compat/ECIES.ts +0 -557
  17. package/src/compat/HD.ts +0 -348
  18. package/src/compat/Mnemonic.ts +0 -295
  19. package/src/compat/__tests/BSM.test.ts +0 -38
  20. package/src/compat/__tests/ECIES.test.ts +0 -90
  21. package/src/compat/__tests/HD.test.ts +0 -405
  22. package/src/compat/__tests/Mnemonic.test.ts +0 -177
  23. package/src/compat/__tests/Mnemonic.vectors.ts +0 -172
  24. package/src/compat/bip-39-wordlist-en.ts +0 -2053
  25. package/src/compat/index.ts +0 -4
  26. package/src/messages/EncryptedMessage.ts +0 -70
  27. package/src/messages/SignedMessage.ts +0 -87
  28. package/src/messages/__tests/EncryptedMessage.test.ts +0 -36
  29. package/src/messages/__tests/SignedMessage.test.ts +0 -53
  30. package/src/messages/index.ts +0 -2
  31. package/src/primitives/AESGCM.ts +0 -479
  32. package/src/primitives/BasePoint.ts +0 -21
  33. package/src/primitives/BigNumber.ts +0 -4619
  34. package/src/primitives/Curve.ts +0 -1163
  35. package/src/primitives/DRBG.ts +0 -102
  36. package/src/primitives/ECDSA.ts +0 -164
  37. package/src/primitives/Hash.ts +0 -1420
  38. package/src/primitives/JacobianPoint.ts +0 -410
  39. package/src/primitives/K256.ts +0 -116
  40. package/src/primitives/Mersenne.ts +0 -123
  41. package/src/primitives/MontgomoryMethod.ts +0 -160
  42. package/src/primitives/Point.ts +0 -852
  43. package/src/primitives/PrivateKey.ts +0 -195
  44. package/src/primitives/PublicKey.ts +0 -154
  45. package/src/primitives/Random.ts +0 -55
  46. package/src/primitives/ReductionContext.ts +0 -528
  47. package/src/primitives/Signature.ts +0 -235
  48. package/src/primitives/SymmetricKey.ts +0 -75
  49. package/src/primitives/TransactionSignature.ts +0 -189
  50. package/src/primitives/__tests/AESGCM.test.ts +0 -338
  51. package/src/primitives/__tests/BRC42.private.vectors.ts +0 -33
  52. package/src/primitives/__tests/BRC42.public.vectors.ts +0 -33
  53. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +0 -572
  54. package/src/primitives/__tests/BigNumber.binary.test.ts +0 -203
  55. package/src/primitives/__tests/BigNumber.constructor.test.ts +0 -176
  56. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +0 -18
  57. package/src/primitives/__tests/BigNumber.fixtures.ts +0 -264
  58. package/src/primitives/__tests/BigNumber.serializers.test.ts +0 -157
  59. package/src/primitives/__tests/BigNumber.utils.test.ts +0 -347
  60. package/src/primitives/__tests/Curve.unit.test.ts +0 -192
  61. package/src/primitives/__tests/DRBG.test.ts +0 -18
  62. package/src/primitives/__tests/DRBG.vectors.ts +0 -167
  63. package/src/primitives/__tests/ECDH.test.ts +0 -31
  64. package/src/primitives/__tests/ECDSA.test.ts +0 -58
  65. package/src/primitives/__tests/HMAC.test.ts +0 -59
  66. package/src/primitives/__tests/Hash.test.ts +0 -121
  67. package/src/primitives/__tests/PBKDF2.vectors.ts +0 -119
  68. package/src/primitives/__tests/PrivateKey.test.ts +0 -17
  69. package/src/primitives/__tests/PublicKey.test.ts +0 -66
  70. package/src/primitives/__tests/Random.test.ts +0 -14
  71. package/src/primitives/__tests/Reader.test.ts +0 -296
  72. package/src/primitives/__tests/ReductionContext.test.ts +0 -279
  73. package/src/primitives/__tests/SymmetricKey.test.ts +0 -58
  74. package/src/primitives/__tests/SymmetricKey.vectors.ts +0 -40
  75. package/src/primitives/__tests/Writer.test.ts +0 -198
  76. package/src/primitives/__tests/sighash.vectors.ts +0 -3503
  77. package/src/primitives/__tests/utils.test.ts +0 -108
  78. package/src/primitives/index.ts +0 -8
  79. package/src/primitives/utils.ts +0 -665
  80. package/src/script/LockingScript.ts +0 -30
  81. package/src/script/OP.ts +0 -219
  82. package/src/script/Script.ts +0 -426
  83. package/src/script/ScriptChunk.ts +0 -7
  84. package/src/script/ScriptTemplate.ts +0 -36
  85. package/src/script/Spend.ts +0 -1379
  86. package/src/script/UnlockingScript.ts +0 -30
  87. package/src/script/__tests/Script.test.ts +0 -369
  88. package/src/script/__tests/Spend.test.ts +0 -248
  89. package/src/script/__tests/script.invalid.vectors.ts +0 -925
  90. package/src/script/__tests/script.valid.vectors.ts +0 -1120
  91. package/src/script/__tests/scriptFromVector.ts +0 -42
  92. package/src/script/__tests/spend.valid.vectors.ts +0 -2288
  93. package/src/script/index.ts +0 -7
  94. package/src/script/templates/P2PKH.ts +0 -109
  95. package/src/script/templates/RPuzzle.ts +0 -140
  96. package/src/script/templates/index.ts +0 -2
  97. package/src/transaction/Broadcaster.ts +0 -42
  98. package/src/transaction/ChainTracker.ts +0 -22
  99. package/src/transaction/FeeModel.ts +0 -13
  100. package/src/transaction/MerklePath.ts +0 -259
  101. package/src/transaction/Transaction.ts +0 -602
  102. package/src/transaction/TransactionInput.ts +0 -63
  103. package/src/transaction/TransactionOutput.ts +0 -37
  104. package/src/transaction/__tests/MerklePath.test.ts +0 -181
  105. package/src/transaction/__tests/Transaction.test.ts +0 -413
  106. package/src/transaction/__tests/bigtx.vectors.ts +0 -4
  107. package/src/transaction/__tests/bump.invalid.vectors.ts +0 -8
  108. package/src/transaction/__tests/bump.valid.vectors.ts +0 -4
  109. package/src/transaction/__tests/tx.invalid.vectors.ts +0 -281
  110. package/src/transaction/__tests/tx.valid.vectors.ts +0 -364
  111. package/src/transaction/broadcasters/ARC.ts +0 -106
  112. package/src/transaction/broadcasters/__tests/ARC.test.ts +0 -115
  113. package/src/transaction/broadcasters/index.ts +0 -1
  114. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +0 -71
  115. package/src/transaction/fee-models/index.ts +0 -1
  116. package/src/transaction/index.ts +0 -6
  117. package/ts2md.json +0 -5
  118. package/tsconfig.base.json +0 -26
  119. package/tsconfig.cjs.json +0 -11
  120. package/tsconfig.eslint.json +0 -12
  121. package/tsconfig.esm.json +0 -9
  122. package/tsconfig.json +0 -17
  123. package/tsconfig.types.json +0 -11
@@ -1,115 +0,0 @@
1
- import ARC from '../../../../dist/cjs/src/transaction/broadcasters/ARC.js'
2
- import Transaction from '../../../../dist/cjs/src/transaction/Transaction.js'
3
-
4
- // Mock Transaction
5
- jest.mock('../../Transaction', () => {
6
- return {
7
- default: jest.fn().mockImplementation(() => {
8
- return {
9
- toHex: () => 'mocked_transaction_hex'
10
- }
11
- })
12
- }
13
- })
14
-
15
- describe('ARC Broadcaster', () => {
16
- const URL = 'https://example.com'
17
- const apiKey = 'test_api_key'
18
- let broadcaster: ARC
19
- let transaction: Transaction
20
-
21
- beforeEach(() => {
22
- broadcaster = new ARC(URL, apiKey)
23
- transaction = new Transaction()
24
- })
25
-
26
- it('should broadcast successfully using window.fetch', async () => {
27
- // Mocking window.fetch
28
- const mockFetch = jest.fn().mockResolvedValue({
29
- ok: true,
30
- json: async () => await Promise.resolve({
31
- txid: 'mocked_txid',
32
- txStatus: 'success',
33
- extraInfo: 'received'
34
- })
35
- })
36
- global.window = { fetch: mockFetch } as any
37
-
38
- const response = await broadcaster.broadcast(transaction)
39
-
40
- expect(mockFetch).toHaveBeenCalled()
41
- expect(response).toEqual({
42
- status: 'success',
43
- txid: 'mocked_txid',
44
- message: 'success received'
45
- })
46
- })
47
-
48
- it('should broadcast successfully using Node.js https', async () => {
49
- // Mocking Node.js https module
50
- jest.mock('https', () => ({
51
- request: (url, options, callback) => {
52
- // eslint-disable-next-line
53
- callback({
54
- statusCode: 200,
55
- on: (event, handler) => {
56
- if (event === 'data') handler(JSON.stringify({
57
- txid: 'mocked_txid',
58
- txStatus: 'success',
59
- extraInfo: 'received'
60
- }))
61
- if (event === 'end') handler()
62
- }
63
- })
64
- return {
65
- on: jest.fn(),
66
- write: jest.fn(),
67
- end: jest.fn()
68
- }
69
- }
70
- }))
71
-
72
- delete global.window
73
- const response = await broadcaster.broadcast(transaction)
74
-
75
- expect(response).toEqual({
76
- status: 'success',
77
- txid: 'mocked_txid',
78
- message: 'success received'
79
- })
80
- })
81
-
82
- it('should handle network errors', async () => {
83
- const mockFetch = jest.fn().mockRejectedValue(new Error('Network error'))
84
- global.window = { fetch: mockFetch } as any
85
-
86
- const response = await broadcaster.broadcast(transaction)
87
-
88
- expect(mockFetch).toHaveBeenCalled()
89
- expect(response).toEqual({
90
- status: 'error',
91
- code: '500',
92
- description: 'Network error'
93
- })
94
- })
95
-
96
- it('should handle non-200 responses', async () => {
97
- const mockFetch = jest.fn().mockResolvedValue({
98
- ok: false,
99
- json: async () => await Promise.resolve({
100
- status: '400',
101
- detail: 'Bad request'
102
- })
103
- })
104
- global.window = { fetch: mockFetch } as any
105
-
106
- const response = await broadcaster.broadcast(transaction)
107
-
108
- expect(mockFetch).toHaveBeenCalled()
109
- expect(response).toEqual({
110
- status: 'error',
111
- code: '400',
112
- description: 'Bad request'
113
- })
114
- })
115
- })
@@ -1 +0,0 @@
1
- export { default as ARC } from './ARC.js'
@@ -1,71 +0,0 @@
1
- import FeeModel from '../FeeModel.js'
2
- import Transaction from '../Transaction.js'
3
- import BigNumber from '../../primitives/BigNumber.js'
4
-
5
- /**
6
- * Represents the "satoshis per kilobyte" transaction fee model.
7
- */
8
- export default class SatoshisPerKilobyte implements FeeModel {
9
- /**
10
- * @property
11
- * Denotes the number of satoshis paid per kilobyte of transaction size.
12
- */
13
- value: number
14
-
15
- /**
16
- * Constructs an instance of the sat/kb fee model.
17
- *
18
- * @param {number} value - The number of satoshis per kilobyte to charge as a fee.
19
- */
20
- constructor(value: number) {
21
- this.value = value
22
- }
23
-
24
- /**
25
- * Computes the fee for a given transaction.
26
- *
27
- * @param tx The transaction for which a fee is to be computed.
28
- * @returns The fee in satoshis for the transaction, as a BigNumber.
29
- */
30
- async computeFee(tx: Transaction): Promise<number> {
31
- const getVarIntSize = (i: number): number => {
32
- if (i > 2 ** 32) {
33
- return 9
34
- } else if (i > 2 ** 16) {
35
- return 5
36
- } else if (i > 253) {
37
- return 3
38
- } else {
39
- return 1
40
- }
41
- }
42
- // Compute the (potentially estimated) size of the transaction
43
- let size = 4 // version
44
- size += getVarIntSize(tx.inputs.length) // number of inputs
45
- for (let i = 0; i < tx.inputs.length; i++) {
46
- const input = tx.inputs[i]
47
- size += 40 // txid, output index, sequence number
48
- let scriptLength: number
49
- if (typeof input.unlockingScript === 'object') {
50
- scriptLength = input.unlockingScript.toBinary().length
51
- } else if (typeof input.unlockingScriptTemplate === 'object') {
52
- scriptLength = await input.unlockingScriptTemplate.estimateLength(tx, i)
53
- } else {
54
- throw new Error('All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.')
55
- }
56
- size += getVarIntSize(scriptLength) // unlocking script length
57
- size += scriptLength // unlocking script
58
- }
59
- size += getVarIntSize(tx.outputs.length) // number of outputs
60
- for (const out of tx.outputs) {
61
- size += 8 // satoshis
62
- const length = out.lockingScript.toBinary().length
63
- size += getVarIntSize(length) // script length
64
- size += length // script
65
- }
66
- size += 4 // lock time
67
- // We'll use Math.ceil to ensure the miners get the extra satoshi.
68
- const fee = Math.ceil((size / 1000) * this.value)
69
- return fee
70
- }
71
- }
@@ -1 +0,0 @@
1
- export { default as SatoshisPerKilobyte } from './SatoshisPerKilobyte.js'
@@ -1,6 +0,0 @@
1
- export { default as Transaction } from './Transaction.js'
2
- export { default as MerklePath } from './MerklePath.js'
3
- export type { default as TransactionInput } from './TransactionInput.js'
4
- export type { default as TransactionOutput } from './TransactionOutput.js'
5
- export type * as Broadcaster from './Broadcaster.js'
6
- export type { default as ChainTracker } from './ChainTracker.js'
package/ts2md.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "inputFilename": "mod.ts",
3
- "outputFilename": "./API.md",
4
- "firstHeadingLevel": 1
5
- }
@@ -1,26 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "lib": ["dom", "ESNext"],
4
- "module": "NodeNext",
5
- "target": "esnext",
6
- "moduleResolution": "NodeNext",
7
- "moduleDetection": "force",
8
- "rootDir": "./",
9
- "baseUrl": "./",
10
- "strict": false,
11
- "isolatedModules": true,
12
- "strictNullChecks": false,
13
- "downlevelIteration": false,
14
- "skipLibCheck": true,
15
- "forceConsistentCasingInFileNames": true,
16
- "incremental": true,
17
- "sourceMap": true,
18
- "emitDecoratorMetadata": true,
19
- "experimentalDecorators": true,
20
- "resolveJsonModule": true,
21
- "esModuleInterop": true
22
- },
23
- "files": ["mod.ts"],
24
- "include": ["src"],
25
- "exclude": ["dist", "*/**/__tests"]
26
- }
package/tsconfig.cjs.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "compilerOptions": {
4
- "target": "es2019",
5
- "module": "commonjs",
6
- "moduleResolution": "node",
7
- "rootDir": "./",
8
- "baseUrl": "./",
9
- "outDir": "./dist/cjs"
10
- }
11
- }
@@ -1,12 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "types": ["@types/node"],
4
- "noEmit": true,
5
- "allowJs": true
6
- },
7
- "include": [
8
- "./src/**/*.ts",
9
- ".eslintrc.js",
10
- "jest.config.js",
11
- ]
12
- }
package/tsconfig.esm.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "compilerOptions": {
4
- "rootDir": "./",
5
- "baseUrl": "./",
6
- "outDir": "./dist/esm",
7
- "allowSyntheticDefaultImports": true
8
- }
9
- }
package/tsconfig.json DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "files": [],
3
- "compilerOptions": {
4
- "esModuleInterop": true
5
- },
6
- "references": [
7
- {
8
- "path": "tsconfig.esm.json"
9
- },
10
- {
11
- "path": "tsconfig.cjs.json"
12
- },
13
- {
14
- "path": "tsconfig.types.json"
15
- }
16
- ]
17
- }
@@ -1,11 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "compilerOptions": {
4
- "rootDir": "./",
5
- "baseUrl": "./",
6
- "outDir": "./dist/types",
7
- "emitDeclarationOnly": true,
8
- "declaration": true,
9
- "declarationMap": true
10
- }
11
- }