@btc-vision/transaction 1.0.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 (270) hide show
  1. package/.babelrc +7 -0
  2. package/.gitattributes +2 -0
  3. package/.github/workflows/node.js.yml +22 -0
  4. package/.idea/codeStyles/Project.xml +56 -0
  5. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  6. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  7. package/.idea/jsLibraryMappings.xml +6 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/prettier.xml +6 -0
  10. package/.idea/transaction.iml +16 -0
  11. package/.idea/vcs.xml +6 -0
  12. package/.prettierrc.json +12 -0
  13. package/CONTRIBUTING.md +71 -0
  14. package/LICENSE.md +16 -0
  15. package/README.md +213 -0
  16. package/browser/873e754d6c7c6e9361f1.module.wasm +0 -0
  17. package/browser/_version.d.ts +1 -0
  18. package/browser/bytecode/Compressor.d.ts +6 -0
  19. package/browser/crypto/crypto-browser.d.ts +40 -0
  20. package/browser/crypto/crypto.d.ts +2 -0
  21. package/browser/generators/Generator.d.ts +12 -0
  22. package/browser/generators/builders/CalldataGenerator.d.ts +8 -0
  23. package/browser/generators/builders/DeploymentGenerator.d.ts +7 -0
  24. package/browser/index.d.ts +3 -0
  25. package/browser/index.js +2 -0
  26. package/browser/index.js.LICENSE.txt +23 -0
  27. package/browser/keypair/EcKeyPair.d.ts +24 -0
  28. package/browser/keypair/Wallet.d.ts +16 -0
  29. package/browser/keypair/interfaces/IWallet.d.ts +5 -0
  30. package/browser/metadata/ContractBaseMetadata.d.ts +9 -0
  31. package/browser/metadata/ContractMetadataManager.d.ts +1 -0
  32. package/browser/metadata/contracts/wBTC.d.ts +12 -0
  33. package/browser/network/NetworkInformation.d.ts +6 -0
  34. package/browser/opnet.d.ts +22 -0
  35. package/browser/scripts/Regtest.d.ts +2 -0
  36. package/browser/scripts/test.d.ts +1 -0
  37. package/browser/signer/TweakedSigner.d.ts +9 -0
  38. package/browser/transaction/TransactionBuilder.d.ts +1 -0
  39. package/browser/transaction/TransactionFactory.d.ts +4 -0
  40. package/browser/transaction/builders/FundingTransaction.d.ts +11 -0
  41. package/browser/transaction/builders/InteractionTransaction.d.ts +47 -0
  42. package/browser/transaction/builders/TransactionBuilder.d.ts +64 -0
  43. package/browser/transaction/enums/TransactionType.d.ts +7 -0
  44. package/browser/transaction/interfaces/ITransactionParameters.d.ts +33 -0
  45. package/browser/transaction/interfaces/Tap.d.ts +22 -0
  46. package/browser/utils/BitcoinUtils.d.ts +5 -0
  47. package/browser/utxo/UTXOManager.d.ts +7 -0
  48. package/browser/utxo/interfaces/IUTXO.d.ts +19 -0
  49. package/build/Utils.d.ts +0 -0
  50. package/build/Utils.js +1 -0
  51. package/build/_version.d.ts +1 -0
  52. package/build/_version.js +1 -0
  53. package/build/bytecode/Compressor.d.ts +6 -0
  54. package/build/bytecode/Compressor.js +13 -0
  55. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  56. package/build/contracts/ContractMetadataManager.js +1 -0
  57. package/build/crypto/crypto.d.ts +2 -0
  58. package/build/crypto/crypto.js +1 -0
  59. package/build/generators/Generator.d.ts +12 -0
  60. package/build/generators/Generator.js +25 -0
  61. package/build/generators/builders/CalldataGenerator.d.ts +8 -0
  62. package/build/generators/builders/CalldataGenerator.js +79 -0
  63. package/build/generators/builders/DeploymentGenerator.d.ts +7 -0
  64. package/build/generators/builders/DeploymentGenerator.js +38 -0
  65. package/build/index.d.ts +3 -0
  66. package/build/index.js +3 -0
  67. package/build/keypair/EcKeyPair.d.ts +24 -0
  68. package/build/keypair/EcKeyPair.js +107 -0
  69. package/build/keypair/Wallet.d.ts +16 -0
  70. package/build/keypair/Wallet.js +30 -0
  71. package/build/keypair/interfaces/GeneratedWallet.d.ts +5 -0
  72. package/build/keypair/interfaces/GeneratedWallet.js +1 -0
  73. package/build/keypair/interfaces/IWallet.d.ts +5 -0
  74. package/build/keypair/interfaces/IWallet.js +1 -0
  75. package/build/metadata/ContractBaseMetadata.d.ts +9 -0
  76. package/build/metadata/ContractBaseMetadata.js +13 -0
  77. package/build/metadata/ContractMetadataManager.d.ts +1 -0
  78. package/build/metadata/ContractMetadataManager.js +9 -0
  79. package/build/metadata/contracts/ContractBase.d.ts +9 -0
  80. package/build/metadata/contracts/ContractBase.js +13 -0
  81. package/build/metadata/contracts/ContractBaseMetadata.d.ts +9 -0
  82. package/build/metadata/contracts/ContractBaseMetadata.js +13 -0
  83. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  84. package/build/metadata/contracts/ContractMetadataManager.js +1 -0
  85. package/build/metadata/contracts/wBTC.d.ts +12 -0
  86. package/build/metadata/contracts/wBTC.js +26 -0
  87. package/build/network/NetworkConverter.d.ts +0 -0
  88. package/build/network/NetworkConverter.js +14 -0
  89. package/build/network/NetworkInformation.d.ts +6 -0
  90. package/build/network/NetworkInformation.js +1 -0
  91. package/build/opnet.d.ts +22 -0
  92. package/build/opnet.js +22 -0
  93. package/build/scripts/Regtest.d.ts +2 -0
  94. package/build/scripts/Regtest.js +15 -0
  95. package/build/scripts/test.d.ts +1 -0
  96. package/build/scripts/test.js +74 -0
  97. package/build/signer/Regtest.d.ts +2 -0
  98. package/build/signer/Regtest.js +15 -0
  99. package/build/signer/TweakedSigner.d.ts +9 -0
  100. package/build/signer/TweakedSigner.js +22 -0
  101. package/build/transaction/TransactionBuilder.d.ts +60 -0
  102. package/build/transaction/TransactionBuilder.js +244 -0
  103. package/build/transaction/TransactionFactory.d.ts +4 -0
  104. package/build/transaction/TransactionFactory.js +32 -0
  105. package/build/transaction/builders/FundingTransaction.d.ts +11 -0
  106. package/build/transaction/builders/FundingTransaction.js +23 -0
  107. package/build/transaction/builders/GenericTransaction.d.ts +11 -0
  108. package/build/transaction/builders/GenericTransaction.js +23 -0
  109. package/build/transaction/builders/InteractionTransaction.d.ts +47 -0
  110. package/build/transaction/builders/InteractionTransaction.js +219 -0
  111. package/build/transaction/builders/TransactionBuilder.d.ts +64 -0
  112. package/build/transaction/builders/TransactionBuilder.js +288 -0
  113. package/build/transaction/enums/TransactionType.d.ts +7 -0
  114. package/build/transaction/enums/TransactionType.js +8 -0
  115. package/build/transaction/interfaces/ITransactionParameters.d.ts +33 -0
  116. package/build/transaction/interfaces/ITransactionParameters.js +1 -0
  117. package/build/transaction/interfaces/ITransactions.d.ts +32 -0
  118. package/build/transaction/interfaces/ITransactions.js +1 -0
  119. package/build/transaction/interfaces/Tap.d.ts +22 -0
  120. package/build/transaction/interfaces/Tap.js +1 -0
  121. package/build/utils/BitcoinUtils.d.ts +5 -0
  122. package/build/utils/BitcoinUtils.js +9 -0
  123. package/build/utxo/IUTXO.d.ts +0 -0
  124. package/build/utxo/IUTXO.js +1 -0
  125. package/build/utxo/UTXOManager.d.ts +7 -0
  126. package/build/utxo/UTXOManager.js +47 -0
  127. package/build/utxo/interfaces/IUTXO.d.ts +19 -0
  128. package/build/utxo/interfaces/IUTXO.js +1 -0
  129. package/cjs/_version.d.ts +1 -0
  130. package/cjs/_version.js +4 -0
  131. package/cjs/bytecode/Compressor.d.ts +6 -0
  132. package/cjs/bytecode/Compressor.js +20 -0
  133. package/cjs/crypto/crypto.d.ts +2 -0
  134. package/cjs/crypto/crypto.js +8 -0
  135. package/cjs/generators/Generator.d.ts +13 -0
  136. package/cjs/generators/Generator.js +31 -0
  137. package/cjs/generators/builders/CalldataGenerator.d.ts +8 -0
  138. package/cjs/generators/builders/CalldataGenerator.js +83 -0
  139. package/cjs/generators/builders/DeploymentGenerator.d.ts +7 -0
  140. package/cjs/generators/builders/DeploymentGenerator.js +42 -0
  141. package/cjs/index.d.ts +3 -0
  142. package/cjs/index.js +32 -0
  143. package/cjs/keypair/EcKeyPair.d.ts +24 -0
  144. package/cjs/keypair/EcKeyPair.js +137 -0
  145. package/cjs/keypair/Wallet.d.ts +16 -0
  146. package/cjs/keypair/Wallet.js +34 -0
  147. package/cjs/keypair/interfaces/IWallet.d.ts +5 -0
  148. package/cjs/keypair/interfaces/IWallet.js +2 -0
  149. package/cjs/metadata/ContractBaseMetadata.d.ts +9 -0
  150. package/cjs/metadata/ContractBaseMetadata.js +17 -0
  151. package/cjs/metadata/ContractMetadataManager.d.ts +0 -0
  152. package/cjs/metadata/ContractMetadataManager.js +1 -0
  153. package/cjs/metadata/contracts/wBTC.d.ts +12 -0
  154. package/cjs/metadata/contracts/wBTC.js +30 -0
  155. package/cjs/network/NetworkInformation.d.ts +6 -0
  156. package/cjs/network/NetworkInformation.js +2 -0
  157. package/cjs/opnet.d.ts +1 -0
  158. package/cjs/opnet.js +5 -0
  159. package/cjs/scripts/Regtest.d.ts +2 -0
  160. package/cjs/scripts/Regtest.js +18 -0
  161. package/cjs/scripts/test.d.ts +1 -0
  162. package/cjs/scripts/test.js +44 -0
  163. package/cjs/signer/TweakedSigner.d.ts +9 -0
  164. package/cjs/signer/TweakedSigner.js +49 -0
  165. package/cjs/transaction/TransactionBuilder.d.ts +0 -0
  166. package/cjs/transaction/TransactionBuilder.js +1 -0
  167. package/cjs/transaction/TransactionFactory.d.ts +4 -0
  168. package/cjs/transaction/TransactionFactory.js +33 -0
  169. package/cjs/transaction/builders/FundingTransaction.d.ts +11 -0
  170. package/cjs/transaction/builders/FundingTransaction.js +27 -0
  171. package/cjs/transaction/builders/InteractionTransaction.d.ts +45 -0
  172. package/cjs/transaction/builders/InteractionTransaction.js +214 -0
  173. package/cjs/transaction/builders/TransactionBuilder.d.ts +64 -0
  174. package/cjs/transaction/builders/TransactionBuilder.js +304 -0
  175. package/cjs/transaction/enums/TransactionType.d.ts +7 -0
  176. package/cjs/transaction/enums/TransactionType.js +11 -0
  177. package/cjs/transaction/interfaces/ITransactionParameters.d.ts +32 -0
  178. package/cjs/transaction/interfaces/ITransactionParameters.js +2 -0
  179. package/cjs/transaction/interfaces/Tap.d.ts +22 -0
  180. package/cjs/transaction/interfaces/Tap.js +2 -0
  181. package/cjs/utils/BitcoinUtils.d.ts +5 -0
  182. package/cjs/utils/BitcoinUtils.js +13 -0
  183. package/cjs/utxo/UTXOManager.d.ts +7 -0
  184. package/cjs/utxo/UTXOManager.js +51 -0
  185. package/cjs/utxo/interfaces/IUTXO.d.ts +19 -0
  186. package/cjs/utxo/interfaces/IUTXO.js +2 -0
  187. package/docs/.nojekyll +1 -0
  188. package/docs/assets/highlight.css +92 -0
  189. package/docs/assets/icons.js +15 -0
  190. package/docs/assets/icons.svg +1 -0
  191. package/docs/assets/main.js +59 -0
  192. package/docs/assets/material-style.css +247 -0
  193. package/docs/assets/navigation.js +1 -0
  194. package/docs/assets/search.js +1 -0
  195. package/docs/assets/style.css +1412 -0
  196. package/docs/classes/BitcoinUtils.html +183 -0
  197. package/docs/classes/CalldataGenerator.html +211 -0
  198. package/docs/classes/Compressor.html +185 -0
  199. package/docs/classes/ContractBaseMetadata.html +182 -0
  200. package/docs/classes/DeploymentGenerator.html +200 -0
  201. package/docs/classes/EcKeyPair.html +280 -0
  202. package/docs/classes/FundingTransaction.html +293 -0
  203. package/docs/classes/Generator.html +199 -0
  204. package/docs/classes/InteractionTransaction.html +365 -0
  205. package/docs/classes/TransactionBuilder.html +303 -0
  206. package/docs/classes/TransactionFactory.html +180 -0
  207. package/docs/classes/TweakedSigner.html +181 -0
  208. package/docs/classes/UTXOManager.html +187 -0
  209. package/docs/classes/Wallet.html +191 -0
  210. package/docs/classes/wBTC.html +189 -0
  211. package/docs/enums/TransactionType.html +179 -0
  212. package/docs/hierarchy.html +174 -0
  213. package/docs/index.html +237 -0
  214. package/docs/interfaces/FetchUTXOParams.html +178 -0
  215. package/docs/interfaces/IFundingTransactionParameters.html +182 -0
  216. package/docs/interfaces/IInteractionParameters.html +185 -0
  217. package/docs/interfaces/ITransactionDataContractDeployment.html +184 -0
  218. package/docs/interfaces/ITransactionDataContractInteractionWrap.html +186 -0
  219. package/docs/interfaces/ITransactionParameters.html +181 -0
  220. package/docs/interfaces/IWallet.html +181 -0
  221. package/docs/interfaces/NetworkInformation.html +176 -0
  222. package/docs/interfaces/PsbtInputExtended.html +194 -0
  223. package/docs/interfaces/PsbtOutputExtendedAddress.html +183 -0
  224. package/docs/interfaces/PsbtOutputExtendedScript.html +183 -0
  225. package/docs/interfaces/RawUTXOResponse.html +178 -0
  226. package/docs/interfaces/TapLeafScript.html +177 -0
  227. package/docs/interfaces/TweakSettings.html +179 -0
  228. package/docs/interfaces/UTXO.html +178 -0
  229. package/docs/interfaces/UpdateInput.html +175 -0
  230. package/docs/modules.html +208 -0
  231. package/docs/types/PsbtOutputExtended.html +174 -0
  232. package/docs/variables/version.html +174 -0
  233. package/gulpfile.js +152 -0
  234. package/jest.config.ts +52 -0
  235. package/package.json +116 -0
  236. package/src/_version.ts +1 -0
  237. package/src/bytecode/Compressor.ts +27 -0
  238. package/src/crypto/crypto-browser.js +71 -0
  239. package/src/crypto/crypto.ts +1 -0
  240. package/src/generators/Generator.ts +75 -0
  241. package/src/generators/builders/CalldataGenerator.ts +143 -0
  242. package/src/generators/builders/DeploymentGenerator.ts +63 -0
  243. package/src/index.ts +4 -0
  244. package/src/keypair/EcKeyPair.ts +265 -0
  245. package/src/keypair/Wallet.ts +75 -0
  246. package/src/keypair/interfaces/IWallet.ts +19 -0
  247. package/src/metadata/ContractBaseMetadata.ts +23 -0
  248. package/src/metadata/contracts/wBTC.ts +44 -0
  249. package/src/network/NetworkInformation.ts +7 -0
  250. package/src/opnet.ts +42 -0
  251. package/src/scripts/Regtest.ts +19 -0
  252. package/src/scripts/test.ts +98 -0
  253. package/src/signer/TweakedSigner.ts +57 -0
  254. package/src/transaction/TransactionFactory.ts +57 -0
  255. package/src/transaction/builders/FundingTransaction.ts +36 -0
  256. package/src/transaction/builders/InteractionTransaction.ts +439 -0
  257. package/src/transaction/builders/TransactionBuilder.ts +603 -0
  258. package/src/transaction/enums/TransactionType.ts +7 -0
  259. package/src/transaction/interfaces/ITransactionParameters.ts +41 -0
  260. package/src/transaction/interfaces/Tap.ts +26 -0
  261. package/src/utils/BitcoinUtils.ts +24 -0
  262. package/src/utxo/UTXOManager.ts +67 -0
  263. package/src/utxo/interfaces/IUTXO.ts +22 -0
  264. package/tests/TransactionBuilder.test.ts +58 -0
  265. package/tests/contracts/wbtc.wasm +0 -0
  266. package/tsconfig.base.json +43 -0
  267. package/tsconfig.cjs.json +9 -0
  268. package/tsconfig.json +8 -0
  269. package/tsconfig.webpack.json +11 -0
  270. package/webpack.config.js +77 -0
@@ -0,0 +1,67 @@
1
+ import { FetchUTXOParams, RawUTXOResponse, UTXO } from './interfaces/IUTXO.js';
2
+
3
+ /**
4
+ * Allows to fetch UTXO data from any OPNET node
5
+ */
6
+ export class UTXOManager {
7
+ private readonly utxoPath: string = 'address/utxos';
8
+
9
+ constructor(private readonly opnetAPIUrl: string) {}
10
+
11
+ /**
12
+ * Fetches UTXO data from the OPNET node
13
+ * @param {FetchUTXOParams} settings - The settings to fetch UTXO data
14
+ * @returns {Promise<UTXO[]>} - The UTXOs fetched
15
+ * @throws {Error} - If UTXOs could not be fetched
16
+ */
17
+ public async fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]> {
18
+ const params = {
19
+ method: 'GET',
20
+ headers: {
21
+ 'Content-Type': 'application/json',
22
+ },
23
+ };
24
+
25
+ const url: string = `${this.opnetAPIUrl}/api/v1/${this.utxoPath}?address=${settings.address}`;
26
+ const resp: Response = await fetch(url, params);
27
+
28
+ if (!resp.ok) {
29
+ throw new Error(`Failed to fetch UTXO data: ${resp.statusText}`);
30
+ }
31
+
32
+ const fetchedData: RawUTXOResponse[] = await resp.json();
33
+ if (fetchedData.length === 0) {
34
+ throw new Error('No UTXO found');
35
+ }
36
+
37
+ const meetCriteria: RawUTXOResponse[] = fetchedData.filter((utxo: RawUTXOResponse) => {
38
+ return BigInt(utxo.value) >= settings.minAmount;
39
+ });
40
+
41
+ if (meetCriteria.length === 0) {
42
+ throw new Error('No UTXO found (minAmount)');
43
+ }
44
+
45
+ let finalUTXOs: UTXO[] = [];
46
+ let currentAmount: bigint = 0n;
47
+
48
+ const amountRequested: bigint = settings.requestedAmount;
49
+ for (const utxo of meetCriteria) {
50
+ const utxoValue: bigint = BigInt(utxo.value);
51
+
52
+ currentAmount += utxoValue;
53
+ finalUTXOs.push({
54
+ transactionId: utxo.transactionId,
55
+ outputIndex: utxo.outputIndex,
56
+ value: utxoValue,
57
+ scriptPubKey: utxo.scriptPubKey,
58
+ });
59
+
60
+ if (currentAmount + utxoValue > amountRequested) {
61
+ break;
62
+ }
63
+ }
64
+
65
+ return finalUTXOs;
66
+ }
67
+ }
@@ -0,0 +1,22 @@
1
+ import { ScriptPubKey } from '@btc-vision/bsi-bitcoin-rpc';
2
+
3
+ export interface UTXO {
4
+ readonly transactionId: string;
5
+ readonly outputIndex: number;
6
+ readonly value: bigint;
7
+ readonly scriptPubKey: ScriptPubKey;
8
+ }
9
+
10
+ export interface FetchUTXOParams {
11
+ readonly address: string;
12
+ readonly minAmount: bigint;
13
+ readonly requestedAmount: bigint;
14
+ readonly optimized?: boolean;
15
+ }
16
+
17
+ export interface RawUTXOResponse {
18
+ readonly transactionId: string;
19
+ readonly outputIndex: number;
20
+ readonly value: string;
21
+ readonly scriptPubKey: ScriptPubKey;
22
+ }
@@ -0,0 +1,58 @@
1
+ import 'jest';
2
+ import { Regtest } from '../src/scripts/Regtest.js';
3
+ import { Logger } from '@btc-vision/logger';
4
+ import { networks } from 'bitcoinjs-lib';
5
+ import {
6
+ FetchUTXOParams,
7
+ IInteractionParameters,
8
+ TransactionFactory,
9
+ UTXO,
10
+ UTXOManager,
11
+ Wallet,
12
+ wBTC,
13
+ } from '../src/index.js';
14
+
15
+ const logger: Logger = new Logger();
16
+ const network: networks.Network = networks.regtest;
17
+
18
+ describe('Transaction Builder', () => {
19
+ const wBtc: wBTC = new wBTC(network);
20
+
21
+ const wallet: Wallet = new Wallet(Regtest.wallet, network);
22
+ logger.log(`Loaded wallet: ${wallet.p2tr} - ${wallet.p2wpkh}`);
23
+
24
+ const utxoManager: UTXOManager = new UTXOManager('http://localhost:9001');
25
+ const factory: TransactionFactory = new TransactionFactory();
26
+
27
+ /** @test {TransactionBuilder#build} */
28
+ test('should be able to build a transaction', async () => {
29
+ const utxoSetting: FetchUTXOParams = {
30
+ address: wallet.p2wpkh,
31
+ minAmount: 10000n,
32
+ requestedAmount: 100000n,
33
+ };
34
+
35
+ const utxos: UTXO[] = await utxoManager.fetchUTXO(utxoSetting);
36
+ console.log(`UTXOs:`, utxos);
37
+
38
+ if (!utxos) {
39
+ throw new Error('No UTXOs found');
40
+ }
41
+
42
+ logger.log(`UTXOs fetched. Count: ${utxos.length}`);
43
+
44
+ const interactionParameters: IInteractionParameters = {
45
+ from: wallet.p2wpkh,
46
+ to: wBtc.getAddress(),
47
+ utxos: utxos,
48
+ signer: wallet.keypair,
49
+ network: network,
50
+ feeRate: 150,
51
+ priorityFee: 500n,
52
+ calldata: Buffer.from('test'),
53
+ };
54
+
55
+ const finalTx = factory.signInteraction(interactionParameters);
56
+ console.log(`Transaction:`, finalTx);
57
+ });
58
+ });
Binary file
@@ -0,0 +1,43 @@
1
+ {
2
+ "compilerOptions": {
3
+ "declaration": true,
4
+ "noImplicitAny": true,
5
+ "removeComments": true,
6
+ "suppressImplicitAnyIndexErrors": false,
7
+ "preserveConstEnums": true,
8
+ "resolveJsonModule": true,
9
+ "skipLibCheck": true,
10
+ "sourceMap": false,
11
+ "moduleDetection": "force",
12
+ "experimentalDecorators": true,
13
+ "lib": [
14
+ "es6",
15
+ "es2020",
16
+ "es2021",
17
+ "es2022",
18
+ "esnext",
19
+ "webworker",
20
+ "dom",
21
+ "scripthost"
22
+ ],
23
+ "strict": true,
24
+ "strictNullChecks": true,
25
+ "strictFunctionTypes": true,
26
+ "strictBindCallApply": true,
27
+ "strictPropertyInitialization": true,
28
+ "alwaysStrict": true,
29
+ "moduleResolution": "node",
30
+ "allowJs": true,
31
+ "incremental": true,
32
+ "allowSyntheticDefaultImports": true,
33
+ "esModuleInterop": true
34
+ },
35
+ "include": [
36
+ "src/**/*.ts",
37
+ "src/*",
38
+ "src/**/*.js",
39
+ "src/*.ts",
40
+ "src/*.js",
41
+ "src/*.cjs"
42
+ ]
43
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "module": "CommonJS",
5
+ "outDir": "cjs",
6
+ "esModuleInterop": true,
7
+ "target": "esnext"
8
+ }
9
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "module": "esnext",
5
+ "outDir": "build",
6
+ "target": "esnext"
7
+ }
8
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "esnext",
5
+ "outDir": "browser",
6
+ "target": "esnext",
7
+ "declaration": true,
8
+ "esModuleInterop": true,
9
+ "moduleResolution": "bundler"
10
+ }
11
+ }
@@ -0,0 +1,77 @@
1
+ import webpack from 'webpack';
2
+
3
+ export default {
4
+ mode: 'production',
5
+ entry: {
6
+ index: {
7
+ import: './src/index.ts',
8
+ },
9
+ },
10
+ watch: false,
11
+ output: {
12
+ filename: 'index.js',
13
+ path: import.meta.dirname + '/browser',
14
+ libraryTarget: 'module',
15
+ },
16
+ node: {
17
+ __dirname: false,
18
+ },
19
+ experiments: {
20
+ outputModule: true,
21
+ asyncWebAssembly: true,
22
+ syncWebAssembly: true,
23
+ },
24
+ resolve: {
25
+ extensionAlias: {
26
+ '.js': ['.js', '.ts'],
27
+ },
28
+ modules: ['.', 'node_modules'],
29
+ extensions: ['.*', '.js', '.jsx', '.tsx', '.ts', '.wasm'],
30
+ fallback: {
31
+ buffer: import.meta.resolve('buffer/'),
32
+
33
+ assert: import.meta.resolve('assert/'),
34
+ crypto: import.meta.resolve('./src/crypto/crypto-browser.js'),
35
+ http: import.meta.resolve('stream-http/'),
36
+ https: import.meta.resolve('https-browserify/'),
37
+ os: import.meta.resolve('os-browserify/browser/'),
38
+ stream: import.meta.resolve('stream-browserify'),
39
+ process: import.meta.resolve('process/browser'),
40
+ zlib: import.meta.resolve('browserify-zlib'),
41
+ },
42
+ },
43
+ cache: false,
44
+ module: {
45
+ rules: [
46
+ {
47
+ test: /\.(js|jsx|tsx|ts)$/,
48
+ exclude: /node_modules/,
49
+ resolve: {
50
+ fullySpecified: false,
51
+ },
52
+ use: [
53
+ {
54
+ loader: 'babel-loader',
55
+ },
56
+ {
57
+ loader: 'ts-loader',
58
+ options: {
59
+ configFile: 'tsconfig.webpack.json',
60
+ },
61
+ },
62
+ ],
63
+ },
64
+ ],
65
+ },
66
+ optimization: {
67
+ usedExports: true,
68
+ },
69
+ plugins: [
70
+ new webpack.ProvidePlugin({
71
+ Buffer: ['buffer', 'Buffer'],
72
+ process: 'process/browser',
73
+ stream: 'stream-browserify',
74
+ zlib: 'browserify-zlib',
75
+ }),
76
+ ],
77
+ };