@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.
- package/.babelrc +7 -0
- package/.gitattributes +2 -0
- package/.github/workflows/node.js.yml +22 -0
- package/.idea/codeStyles/Project.xml +56 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/transaction.iml +16 -0
- package/.idea/vcs.xml +6 -0
- package/.prettierrc.json +12 -0
- package/CONTRIBUTING.md +71 -0
- package/LICENSE.md +16 -0
- package/README.md +213 -0
- package/browser/873e754d6c7c6e9361f1.module.wasm +0 -0
- package/browser/_version.d.ts +1 -0
- package/browser/bytecode/Compressor.d.ts +6 -0
- package/browser/crypto/crypto-browser.d.ts +40 -0
- package/browser/crypto/crypto.d.ts +2 -0
- package/browser/generators/Generator.d.ts +12 -0
- package/browser/generators/builders/CalldataGenerator.d.ts +8 -0
- package/browser/generators/builders/DeploymentGenerator.d.ts +7 -0
- package/browser/index.d.ts +3 -0
- package/browser/index.js +2 -0
- package/browser/index.js.LICENSE.txt +23 -0
- package/browser/keypair/EcKeyPair.d.ts +24 -0
- package/browser/keypair/Wallet.d.ts +16 -0
- package/browser/keypair/interfaces/IWallet.d.ts +5 -0
- package/browser/metadata/ContractBaseMetadata.d.ts +9 -0
- package/browser/metadata/ContractMetadataManager.d.ts +1 -0
- package/browser/metadata/contracts/wBTC.d.ts +12 -0
- package/browser/network/NetworkInformation.d.ts +6 -0
- package/browser/opnet.d.ts +22 -0
- package/browser/scripts/Regtest.d.ts +2 -0
- package/browser/scripts/test.d.ts +1 -0
- package/browser/signer/TweakedSigner.d.ts +9 -0
- package/browser/transaction/TransactionBuilder.d.ts +1 -0
- package/browser/transaction/TransactionFactory.d.ts +4 -0
- package/browser/transaction/builders/FundingTransaction.d.ts +11 -0
- package/browser/transaction/builders/InteractionTransaction.d.ts +47 -0
- package/browser/transaction/builders/TransactionBuilder.d.ts +64 -0
- package/browser/transaction/enums/TransactionType.d.ts +7 -0
- package/browser/transaction/interfaces/ITransactionParameters.d.ts +33 -0
- package/browser/transaction/interfaces/Tap.d.ts +22 -0
- package/browser/utils/BitcoinUtils.d.ts +5 -0
- package/browser/utxo/UTXOManager.d.ts +7 -0
- package/browser/utxo/interfaces/IUTXO.d.ts +19 -0
- package/build/Utils.d.ts +0 -0
- package/build/Utils.js +1 -0
- package/build/_version.d.ts +1 -0
- package/build/_version.js +1 -0
- package/build/bytecode/Compressor.d.ts +6 -0
- package/build/bytecode/Compressor.js +13 -0
- package/build/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/contracts/ContractMetadataManager.js +1 -0
- package/build/crypto/crypto.d.ts +2 -0
- package/build/crypto/crypto.js +1 -0
- package/build/generators/Generator.d.ts +12 -0
- package/build/generators/Generator.js +25 -0
- package/build/generators/builders/CalldataGenerator.d.ts +8 -0
- package/build/generators/builders/CalldataGenerator.js +79 -0
- package/build/generators/builders/DeploymentGenerator.d.ts +7 -0
- package/build/generators/builders/DeploymentGenerator.js +38 -0
- package/build/index.d.ts +3 -0
- package/build/index.js +3 -0
- package/build/keypair/EcKeyPair.d.ts +24 -0
- package/build/keypair/EcKeyPair.js +107 -0
- package/build/keypair/Wallet.d.ts +16 -0
- package/build/keypair/Wallet.js +30 -0
- package/build/keypair/interfaces/GeneratedWallet.d.ts +5 -0
- package/build/keypair/interfaces/GeneratedWallet.js +1 -0
- package/build/keypair/interfaces/IWallet.d.ts +5 -0
- package/build/keypair/interfaces/IWallet.js +1 -0
- package/build/metadata/ContractBaseMetadata.d.ts +9 -0
- package/build/metadata/ContractBaseMetadata.js +13 -0
- package/build/metadata/ContractMetadataManager.d.ts +1 -0
- package/build/metadata/ContractMetadataManager.js +9 -0
- package/build/metadata/contracts/ContractBase.d.ts +9 -0
- package/build/metadata/contracts/ContractBase.js +13 -0
- package/build/metadata/contracts/ContractBaseMetadata.d.ts +9 -0
- package/build/metadata/contracts/ContractBaseMetadata.js +13 -0
- package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/metadata/contracts/ContractMetadataManager.js +1 -0
- package/build/metadata/contracts/wBTC.d.ts +12 -0
- package/build/metadata/contracts/wBTC.js +26 -0
- package/build/network/NetworkConverter.d.ts +0 -0
- package/build/network/NetworkConverter.js +14 -0
- package/build/network/NetworkInformation.d.ts +6 -0
- package/build/network/NetworkInformation.js +1 -0
- package/build/opnet.d.ts +22 -0
- package/build/opnet.js +22 -0
- package/build/scripts/Regtest.d.ts +2 -0
- package/build/scripts/Regtest.js +15 -0
- package/build/scripts/test.d.ts +1 -0
- package/build/scripts/test.js +74 -0
- package/build/signer/Regtest.d.ts +2 -0
- package/build/signer/Regtest.js +15 -0
- package/build/signer/TweakedSigner.d.ts +9 -0
- package/build/signer/TweakedSigner.js +22 -0
- package/build/transaction/TransactionBuilder.d.ts +60 -0
- package/build/transaction/TransactionBuilder.js +244 -0
- package/build/transaction/TransactionFactory.d.ts +4 -0
- package/build/transaction/TransactionFactory.js +32 -0
- package/build/transaction/builders/FundingTransaction.d.ts +11 -0
- package/build/transaction/builders/FundingTransaction.js +23 -0
- package/build/transaction/builders/GenericTransaction.d.ts +11 -0
- package/build/transaction/builders/GenericTransaction.js +23 -0
- package/build/transaction/builders/InteractionTransaction.d.ts +47 -0
- package/build/transaction/builders/InteractionTransaction.js +219 -0
- package/build/transaction/builders/TransactionBuilder.d.ts +64 -0
- package/build/transaction/builders/TransactionBuilder.js +288 -0
- package/build/transaction/enums/TransactionType.d.ts +7 -0
- package/build/transaction/enums/TransactionType.js +8 -0
- package/build/transaction/interfaces/ITransactionParameters.d.ts +33 -0
- package/build/transaction/interfaces/ITransactionParameters.js +1 -0
- package/build/transaction/interfaces/ITransactions.d.ts +32 -0
- package/build/transaction/interfaces/ITransactions.js +1 -0
- package/build/transaction/interfaces/Tap.d.ts +22 -0
- package/build/transaction/interfaces/Tap.js +1 -0
- package/build/utils/BitcoinUtils.d.ts +5 -0
- package/build/utils/BitcoinUtils.js +9 -0
- package/build/utxo/IUTXO.d.ts +0 -0
- package/build/utxo/IUTXO.js +1 -0
- package/build/utxo/UTXOManager.d.ts +7 -0
- package/build/utxo/UTXOManager.js +47 -0
- package/build/utxo/interfaces/IUTXO.d.ts +19 -0
- package/build/utxo/interfaces/IUTXO.js +1 -0
- package/cjs/_version.d.ts +1 -0
- package/cjs/_version.js +4 -0
- package/cjs/bytecode/Compressor.d.ts +6 -0
- package/cjs/bytecode/Compressor.js +20 -0
- package/cjs/crypto/crypto.d.ts +2 -0
- package/cjs/crypto/crypto.js +8 -0
- package/cjs/generators/Generator.d.ts +13 -0
- package/cjs/generators/Generator.js +31 -0
- package/cjs/generators/builders/CalldataGenerator.d.ts +8 -0
- package/cjs/generators/builders/CalldataGenerator.js +83 -0
- package/cjs/generators/builders/DeploymentGenerator.d.ts +7 -0
- package/cjs/generators/builders/DeploymentGenerator.js +42 -0
- package/cjs/index.d.ts +3 -0
- package/cjs/index.js +32 -0
- package/cjs/keypair/EcKeyPair.d.ts +24 -0
- package/cjs/keypair/EcKeyPair.js +137 -0
- package/cjs/keypair/Wallet.d.ts +16 -0
- package/cjs/keypair/Wallet.js +34 -0
- package/cjs/keypair/interfaces/IWallet.d.ts +5 -0
- package/cjs/keypair/interfaces/IWallet.js +2 -0
- package/cjs/metadata/ContractBaseMetadata.d.ts +9 -0
- package/cjs/metadata/ContractBaseMetadata.js +17 -0
- package/cjs/metadata/ContractMetadataManager.d.ts +0 -0
- package/cjs/metadata/ContractMetadataManager.js +1 -0
- package/cjs/metadata/contracts/wBTC.d.ts +12 -0
- package/cjs/metadata/contracts/wBTC.js +30 -0
- package/cjs/network/NetworkInformation.d.ts +6 -0
- package/cjs/network/NetworkInformation.js +2 -0
- package/cjs/opnet.d.ts +1 -0
- package/cjs/opnet.js +5 -0
- package/cjs/scripts/Regtest.d.ts +2 -0
- package/cjs/scripts/Regtest.js +18 -0
- package/cjs/scripts/test.d.ts +1 -0
- package/cjs/scripts/test.js +44 -0
- package/cjs/signer/TweakedSigner.d.ts +9 -0
- package/cjs/signer/TweakedSigner.js +49 -0
- package/cjs/transaction/TransactionBuilder.d.ts +0 -0
- package/cjs/transaction/TransactionBuilder.js +1 -0
- package/cjs/transaction/TransactionFactory.d.ts +4 -0
- package/cjs/transaction/TransactionFactory.js +33 -0
- package/cjs/transaction/builders/FundingTransaction.d.ts +11 -0
- package/cjs/transaction/builders/FundingTransaction.js +27 -0
- package/cjs/transaction/builders/InteractionTransaction.d.ts +45 -0
- package/cjs/transaction/builders/InteractionTransaction.js +214 -0
- package/cjs/transaction/builders/TransactionBuilder.d.ts +64 -0
- package/cjs/transaction/builders/TransactionBuilder.js +304 -0
- package/cjs/transaction/enums/TransactionType.d.ts +7 -0
- package/cjs/transaction/enums/TransactionType.js +11 -0
- package/cjs/transaction/interfaces/ITransactionParameters.d.ts +32 -0
- package/cjs/transaction/interfaces/ITransactionParameters.js +2 -0
- package/cjs/transaction/interfaces/Tap.d.ts +22 -0
- package/cjs/transaction/interfaces/Tap.js +2 -0
- package/cjs/utils/BitcoinUtils.d.ts +5 -0
- package/cjs/utils/BitcoinUtils.js +13 -0
- package/cjs/utxo/UTXOManager.d.ts +7 -0
- package/cjs/utxo/UTXOManager.js +51 -0
- package/cjs/utxo/interfaces/IUTXO.d.ts +19 -0
- package/cjs/utxo/interfaces/IUTXO.js +2 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +92 -0
- package/docs/assets/icons.js +15 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +59 -0
- package/docs/assets/material-style.css +247 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1412 -0
- package/docs/classes/BitcoinUtils.html +183 -0
- package/docs/classes/CalldataGenerator.html +211 -0
- package/docs/classes/Compressor.html +185 -0
- package/docs/classes/ContractBaseMetadata.html +182 -0
- package/docs/classes/DeploymentGenerator.html +200 -0
- package/docs/classes/EcKeyPair.html +280 -0
- package/docs/classes/FundingTransaction.html +293 -0
- package/docs/classes/Generator.html +199 -0
- package/docs/classes/InteractionTransaction.html +365 -0
- package/docs/classes/TransactionBuilder.html +303 -0
- package/docs/classes/TransactionFactory.html +180 -0
- package/docs/classes/TweakedSigner.html +181 -0
- package/docs/classes/UTXOManager.html +187 -0
- package/docs/classes/Wallet.html +191 -0
- package/docs/classes/wBTC.html +189 -0
- package/docs/enums/TransactionType.html +179 -0
- package/docs/hierarchy.html +174 -0
- package/docs/index.html +237 -0
- package/docs/interfaces/FetchUTXOParams.html +178 -0
- package/docs/interfaces/IFundingTransactionParameters.html +182 -0
- package/docs/interfaces/IInteractionParameters.html +185 -0
- package/docs/interfaces/ITransactionDataContractDeployment.html +184 -0
- package/docs/interfaces/ITransactionDataContractInteractionWrap.html +186 -0
- package/docs/interfaces/ITransactionParameters.html +181 -0
- package/docs/interfaces/IWallet.html +181 -0
- package/docs/interfaces/NetworkInformation.html +176 -0
- package/docs/interfaces/PsbtInputExtended.html +194 -0
- package/docs/interfaces/PsbtOutputExtendedAddress.html +183 -0
- package/docs/interfaces/PsbtOutputExtendedScript.html +183 -0
- package/docs/interfaces/RawUTXOResponse.html +178 -0
- package/docs/interfaces/TapLeafScript.html +177 -0
- package/docs/interfaces/TweakSettings.html +179 -0
- package/docs/interfaces/UTXO.html +178 -0
- package/docs/interfaces/UpdateInput.html +175 -0
- package/docs/modules.html +208 -0
- package/docs/types/PsbtOutputExtended.html +174 -0
- package/docs/variables/version.html +174 -0
- package/gulpfile.js +152 -0
- package/jest.config.ts +52 -0
- package/package.json +116 -0
- package/src/_version.ts +1 -0
- package/src/bytecode/Compressor.ts +27 -0
- package/src/crypto/crypto-browser.js +71 -0
- package/src/crypto/crypto.ts +1 -0
- package/src/generators/Generator.ts +75 -0
- package/src/generators/builders/CalldataGenerator.ts +143 -0
- package/src/generators/builders/DeploymentGenerator.ts +63 -0
- package/src/index.ts +4 -0
- package/src/keypair/EcKeyPair.ts +265 -0
- package/src/keypair/Wallet.ts +75 -0
- package/src/keypair/interfaces/IWallet.ts +19 -0
- package/src/metadata/ContractBaseMetadata.ts +23 -0
- package/src/metadata/contracts/wBTC.ts +44 -0
- package/src/network/NetworkInformation.ts +7 -0
- package/src/opnet.ts +42 -0
- package/src/scripts/Regtest.ts +19 -0
- package/src/scripts/test.ts +98 -0
- package/src/signer/TweakedSigner.ts +57 -0
- package/src/transaction/TransactionFactory.ts +57 -0
- package/src/transaction/builders/FundingTransaction.ts +36 -0
- package/src/transaction/builders/InteractionTransaction.ts +439 -0
- package/src/transaction/builders/TransactionBuilder.ts +603 -0
- package/src/transaction/enums/TransactionType.ts +7 -0
- package/src/transaction/interfaces/ITransactionParameters.ts +41 -0
- package/src/transaction/interfaces/Tap.ts +26 -0
- package/src/utils/BitcoinUtils.ts +24 -0
- package/src/utxo/UTXOManager.ts +67 -0
- package/src/utxo/interfaces/IUTXO.ts +22 -0
- package/tests/TransactionBuilder.test.ts +58 -0
- package/tests/contracts/wbtc.wasm +0 -0
- package/tsconfig.base.json +43 -0
- package/tsconfig.cjs.json +9 -0
- package/tsconfig.json +8 -0
- package/tsconfig.webpack.json +11 -0
- 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
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -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
|
+
};
|