@stellar/stellar-sdk 16.0.1 → 16.2.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/README.md +41 -2
- package/dist/stellar-sdk-axios.js +5401 -3690
- package/dist/stellar-sdk-axios.js.map +1 -1
- package/dist/stellar-sdk-axios.min.js +12 -11
- package/dist/stellar-sdk-axios.min.js.map +1 -1
- package/dist/stellar-sdk.js +4850 -3681
- package/dist/stellar-sdk.js.map +1 -1
- package/dist/stellar-sdk.min.js +17 -17
- package/dist/stellar-sdk.min.js.map +1 -1
- package/lib/axios/cjs/base/auth.js +147 -30
- package/lib/axios/cjs/base/auth.js.map +1 -1
- package/lib/axios/cjs/base/index.js +113 -0
- package/lib/axios/cjs/base/index.js.map +1 -0
- package/lib/axios/cjs/base/keypair.js +39 -0
- package/lib/axios/cjs/base/keypair.js.map +1 -1
- package/lib/axios/cjs/base/scval.js +34 -0
- package/lib/axios/cjs/base/scval.js.map +1 -1
- package/lib/axios/cjs/bindings/client.js +170 -0
- package/lib/axios/cjs/bindings/client.js.map +1 -1
- package/lib/axios/cjs/bindings/config.js +1 -1
- package/lib/axios/cjs/bindings/generator.js +45 -16
- package/lib/axios/cjs/bindings/generator.js.map +1 -1
- package/lib/axios/cjs/bindings/types.js +151 -1
- package/lib/axios/cjs/bindings/types.js.map +1 -1
- package/lib/axios/cjs/bindings/utils.js +10 -0
- package/lib/axios/cjs/bindings/utils.js.map +1 -1
- package/lib/axios/cjs/cli/index.js +19 -22
- package/lib/axios/cjs/cli/index.js.map +1 -1
- package/lib/axios/cjs/cli/util.js +1 -20
- package/lib/axios/cjs/cli/util.js.map +1 -1
- package/lib/axios/cjs/contract/assembled_transaction.js +39 -17
- package/lib/axios/cjs/contract/assembled_transaction.js.map +1 -1
- package/lib/axios/cjs/contract/basic_node_signer.js +8 -42
- package/lib/axios/cjs/contract/basic_node_signer.js.map +1 -1
- package/lib/axios/cjs/contract/client.js +56 -3
- package/lib/axios/cjs/contract/client.js.map +1 -1
- package/lib/axios/cjs/contract/event_spec.js +164 -0
- package/lib/axios/cjs/contract/event_spec.js.map +1 -0
- package/lib/axios/cjs/contract/index.js +2 -0
- package/lib/axios/cjs/contract/index.js.map +1 -1
- package/lib/axios/cjs/contract/sent_transaction.js +0 -20
- package/lib/axios/cjs/contract/sent_transaction.js.map +1 -1
- package/lib/axios/cjs/contract/signer.js +96 -0
- package/lib/axios/cjs/contract/signer.js.map +1 -0
- package/lib/axios/cjs/contract/spec.js +107 -3
- package/lib/axios/cjs/contract/spec.js.map +1 -1
- package/lib/axios/cjs/contract/types.js.map +1 -1
- package/lib/axios/cjs/errors/transaction_failed.js +62 -0
- package/lib/axios/cjs/errors/transaction_failed.js.map +1 -0
- package/lib/axios/cjs/errors/wrap_http_error.js +20 -0
- package/lib/axios/cjs/errors/wrap_http_error.js.map +1 -0
- package/lib/axios/cjs/federation/server.js +15 -35
- package/lib/axios/cjs/federation/server.js.map +1 -1
- package/lib/axios/cjs/horizon/account_response.js +0 -20
- package/lib/axios/cjs/horizon/account_response.js.map +1 -1
- package/lib/axios/cjs/horizon/horizon_api.js +5 -0
- package/lib/axios/cjs/horizon/horizon_api.js.map +1 -1
- package/lib/axios/cjs/horizon/horizon_axios_client.js +1 -1
- package/lib/axios/cjs/horizon/server.js +20 -26
- package/lib/axios/cjs/horizon/server.js.map +1 -1
- package/lib/axios/cjs/index.js +66 -65
- package/lib/axios/cjs/index.js.map +1 -1
- package/lib/axios/cjs/rpc/api.js.map +1 -1
- package/lib/axios/cjs/rpc/axios.js +1 -1
- package/lib/axios/cjs/rpc/server.js +181 -13
- package/lib/axios/cjs/rpc/server.js.map +1 -1
- package/lib/axios/cjs/rpc/transaction.js +2 -20
- package/lib/axios/cjs/rpc/transaction.js.map +1 -1
- package/lib/axios/cjs/webauth/challenge_transaction.js +7 -22
- package/lib/axios/cjs/webauth/challenge_transaction.js.map +1 -1
- package/lib/axios/cjs/webauth/utils.js +1 -20
- package/lib/axios/cjs/webauth/utils.js.map +1 -1
- package/lib/axios/esm/base/auth.d.ts +181 -13
- package/lib/axios/esm/base/auth.js +146 -31
- package/lib/axios/esm/base/auth.js.map +1 -1
- package/lib/axios/esm/base/index.d.ts +2 -2
- package/lib/axios/esm/base/index.js +44 -0
- package/lib/axios/esm/base/index.js.map +1 -0
- package/lib/axios/esm/base/keypair.d.ts +27 -0
- package/lib/axios/esm/base/keypair.js +39 -0
- package/lib/axios/esm/base/keypair.js.map +1 -1
- package/lib/axios/esm/base/scval.d.ts +4 -0
- package/lib/axios/esm/base/scval.js +34 -0
- package/lib/axios/esm/base/scval.js.map +1 -1
- package/lib/axios/esm/bindings/client.d.ts +39 -0
- package/lib/axios/esm/bindings/client.js +171 -1
- package/lib/axios/esm/bindings/client.js.map +1 -1
- package/lib/axios/esm/bindings/config.js +1 -1
- package/lib/axios/esm/bindings/generator.d.ts +34 -0
- package/lib/axios/esm/bindings/generator.js +45 -16
- package/lib/axios/esm/bindings/generator.js.map +1 -1
- package/lib/axios/esm/bindings/types.d.ts +42 -0
- package/lib/axios/esm/bindings/types.js +153 -3
- package/lib/axios/esm/bindings/types.js.map +1 -1
- package/lib/axios/esm/bindings/utils.d.ts +10 -0
- package/lib/axios/esm/bindings/utils.js +9 -1
- package/lib/axios/esm/bindings/utils.js.map +1 -1
- package/lib/axios/esm/cli/index.js +19 -22
- package/lib/axios/esm/cli/index.js.map +1 -1
- package/lib/axios/esm/cli/util.d.ts +1 -1
- package/lib/axios/esm/cli/util.js +1 -20
- package/lib/axios/esm/cli/util.js.map +1 -1
- package/lib/axios/esm/contract/assembled_transaction.d.ts +7 -5
- package/lib/axios/esm/contract/assembled_transaction.js +39 -17
- package/lib/axios/esm/contract/assembled_transaction.js.map +1 -1
- package/lib/axios/esm/contract/basic_node_signer.d.ts +3 -0
- package/lib/axios/esm/contract/basic_node_signer.js +8 -42
- package/lib/axios/esm/contract/basic_node_signer.js.map +1 -1
- package/lib/axios/esm/contract/client.d.ts +49 -3
- package/lib/axios/esm/contract/client.js +56 -3
- package/lib/axios/esm/contract/client.js.map +1 -1
- package/lib/axios/esm/contract/event_spec.d.ts +78 -0
- package/lib/axios/esm/contract/event_spec.js +159 -0
- package/lib/axios/esm/contract/event_spec.js.map +1 -0
- package/lib/axios/esm/contract/index.d.ts +3 -0
- package/lib/axios/esm/contract/index.js +1 -0
- package/lib/axios/esm/contract/index.js.map +1 -1
- package/lib/axios/esm/contract/sent_transaction.js +0 -20
- package/lib/axios/esm/contract/sent_transaction.js.map +1 -1
- package/lib/axios/esm/contract/signer.d.ts +104 -0
- package/lib/axios/esm/contract/signer.js +91 -0
- package/lib/axios/esm/contract/signer.js.map +1 -0
- package/lib/axios/esm/contract/spec.d.ts +84 -0
- package/lib/axios/esm/contract/spec.js +107 -3
- package/lib/axios/esm/contract/spec.js.map +1 -1
- package/lib/axios/esm/contract/types.d.ts +25 -8
- package/lib/axios/esm/contract/types.js.map +1 -1
- package/lib/axios/esm/errors/index.d.ts +1 -0
- package/lib/axios/esm/errors/transaction_failed.d.ts +55 -0
- package/lib/axios/esm/errors/transaction_failed.js +60 -0
- package/lib/axios/esm/errors/transaction_failed.js.map +1 -0
- package/lib/axios/esm/errors/wrap_http_error.d.ts +20 -0
- package/lib/axios/esm/errors/wrap_http_error.js +18 -0
- package/lib/axios/esm/errors/wrap_http_error.js.map +1 -0
- package/lib/axios/esm/federation/server.js +15 -35
- package/lib/axios/esm/federation/server.js.map +1 -1
- package/lib/axios/esm/horizon/account_response.js +0 -20
- package/lib/axios/esm/horizon/account_response.js.map +1 -1
- package/lib/axios/esm/horizon/horizon_api.d.ts +12 -1
- package/lib/axios/esm/horizon/horizon_api.js +5 -0
- package/lib/axios/esm/horizon/horizon_api.js.map +1 -1
- package/lib/axios/esm/horizon/horizon_axios_client.js +1 -1
- package/lib/axios/esm/horizon/server.d.ts +10 -4
- package/lib/axios/esm/horizon/server.js +20 -26
- package/lib/axios/esm/horizon/server.js.map +1 -1
- package/lib/axios/esm/index.js +27 -29
- package/lib/axios/esm/index.js.map +1 -1
- package/lib/axios/esm/rpc/api.d.ts +21 -0
- package/lib/axios/esm/rpc/api.js.map +1 -1
- package/lib/axios/esm/rpc/axios.js +1 -1
- package/lib/axios/esm/rpc/server.d.ts +115 -3
- package/lib/axios/esm/rpc/server.js +181 -13
- package/lib/axios/esm/rpc/server.js.map +1 -1
- package/lib/axios/esm/rpc/transaction.js +2 -20
- package/lib/axios/esm/rpc/transaction.js.map +1 -1
- package/lib/axios/esm/webauth/challenge_transaction.js +7 -22
- package/lib/axios/esm/webauth/challenge_transaction.js.map +1 -1
- package/lib/axios/esm/webauth/utils.js +1 -20
- package/lib/axios/esm/webauth/utils.js.map +1 -1
- package/lib/cjs/base/auth.js +147 -30
- package/lib/cjs/base/auth.js.map +1 -1
- package/lib/cjs/base/index.js +113 -0
- package/lib/cjs/base/index.js.map +1 -0
- package/lib/cjs/base/keypair.js +39 -0
- package/lib/cjs/base/keypair.js.map +1 -1
- package/lib/cjs/base/scval.js +34 -0
- package/lib/cjs/base/scval.js.map +1 -1
- package/lib/cjs/bindings/client.js +170 -0
- package/lib/cjs/bindings/client.js.map +1 -1
- package/lib/cjs/bindings/config.js +1 -1
- package/lib/cjs/bindings/generator.js +45 -16
- package/lib/cjs/bindings/generator.js.map +1 -1
- package/lib/cjs/bindings/types.js +151 -1
- package/lib/cjs/bindings/types.js.map +1 -1
- package/lib/cjs/bindings/utils.js +10 -0
- package/lib/cjs/bindings/utils.js.map +1 -1
- package/lib/cjs/cli/index.js +19 -22
- package/lib/cjs/cli/index.js.map +1 -1
- package/lib/cjs/cli/util.js +1 -20
- package/lib/cjs/cli/util.js.map +1 -1
- package/lib/cjs/contract/assembled_transaction.js +39 -17
- package/lib/cjs/contract/assembled_transaction.js.map +1 -1
- package/lib/cjs/contract/basic_node_signer.js +8 -42
- package/lib/cjs/contract/basic_node_signer.js.map +1 -1
- package/lib/cjs/contract/client.js +56 -3
- package/lib/cjs/contract/client.js.map +1 -1
- package/lib/cjs/contract/event_spec.js +164 -0
- package/lib/cjs/contract/event_spec.js.map +1 -0
- package/lib/cjs/contract/index.js +2 -0
- package/lib/cjs/contract/index.js.map +1 -1
- package/lib/cjs/contract/sent_transaction.js +0 -20
- package/lib/cjs/contract/sent_transaction.js.map +1 -1
- package/lib/cjs/contract/signer.js +96 -0
- package/lib/cjs/contract/signer.js.map +1 -0
- package/lib/cjs/contract/spec.js +107 -3
- package/lib/cjs/contract/spec.js.map +1 -1
- package/lib/cjs/contract/types.js.map +1 -1
- package/lib/cjs/errors/transaction_failed.js +62 -0
- package/lib/cjs/errors/transaction_failed.js.map +1 -0
- package/lib/cjs/errors/wrap_http_error.js +20 -0
- package/lib/cjs/errors/wrap_http_error.js.map +1 -0
- package/lib/cjs/federation/server.js +15 -35
- package/lib/cjs/federation/server.js.map +1 -1
- package/lib/cjs/horizon/account_response.js +0 -20
- package/lib/cjs/horizon/account_response.js.map +1 -1
- package/lib/cjs/horizon/horizon_api.js +5 -0
- package/lib/cjs/horizon/horizon_api.js.map +1 -1
- package/lib/cjs/horizon/horizon_axios_client.js +1 -1
- package/lib/cjs/horizon/server.js +20 -26
- package/lib/cjs/horizon/server.js.map +1 -1
- package/lib/cjs/index.js +66 -65
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/rpc/api.js.map +1 -1
- package/lib/cjs/rpc/axios.js +1 -1
- package/lib/cjs/rpc/server.js +181 -13
- package/lib/cjs/rpc/server.js.map +1 -1
- package/lib/cjs/rpc/transaction.js +2 -20
- package/lib/cjs/rpc/transaction.js.map +1 -1
- package/lib/cjs/webauth/challenge_transaction.js +7 -22
- package/lib/cjs/webauth/challenge_transaction.js.map +1 -1
- package/lib/cjs/webauth/utils.js +1 -20
- package/lib/cjs/webauth/utils.js.map +1 -1
- package/lib/esm/base/auth.d.ts +181 -13
- package/lib/esm/base/auth.js +146 -31
- package/lib/esm/base/auth.js.map +1 -1
- package/lib/esm/base/index.d.ts +2 -2
- package/lib/esm/base/index.js +44 -0
- package/lib/esm/base/index.js.map +1 -0
- package/lib/esm/base/keypair.d.ts +27 -0
- package/lib/esm/base/keypair.js +39 -0
- package/lib/esm/base/keypair.js.map +1 -1
- package/lib/esm/base/scval.d.ts +4 -0
- package/lib/esm/base/scval.js +34 -0
- package/lib/esm/base/scval.js.map +1 -1
- package/lib/esm/bindings/client.d.ts +39 -0
- package/lib/esm/bindings/client.js +171 -1
- package/lib/esm/bindings/client.js.map +1 -1
- package/lib/esm/bindings/config.js +1 -1
- package/lib/esm/bindings/generator.d.ts +34 -0
- package/lib/esm/bindings/generator.js +45 -16
- package/lib/esm/bindings/generator.js.map +1 -1
- package/lib/esm/bindings/types.d.ts +42 -0
- package/lib/esm/bindings/types.js +153 -3
- package/lib/esm/bindings/types.js.map +1 -1
- package/lib/esm/bindings/utils.d.ts +10 -0
- package/lib/esm/bindings/utils.js +9 -1
- package/lib/esm/bindings/utils.js.map +1 -1
- package/lib/esm/cli/index.js +19 -22
- package/lib/esm/cli/index.js.map +1 -1
- package/lib/esm/cli/util.d.ts +1 -1
- package/lib/esm/cli/util.js +1 -20
- package/lib/esm/cli/util.js.map +1 -1
- package/lib/esm/contract/assembled_transaction.d.ts +7 -5
- package/lib/esm/contract/assembled_transaction.js +39 -17
- package/lib/esm/contract/assembled_transaction.js.map +1 -1
- package/lib/esm/contract/basic_node_signer.d.ts +3 -0
- package/lib/esm/contract/basic_node_signer.js +8 -42
- package/lib/esm/contract/basic_node_signer.js.map +1 -1
- package/lib/esm/contract/client.d.ts +49 -3
- package/lib/esm/contract/client.js +56 -3
- package/lib/esm/contract/client.js.map +1 -1
- package/lib/esm/contract/event_spec.d.ts +78 -0
- package/lib/esm/contract/event_spec.js +159 -0
- package/lib/esm/contract/event_spec.js.map +1 -0
- package/lib/esm/contract/index.d.ts +3 -0
- package/lib/esm/contract/index.js +1 -0
- package/lib/esm/contract/index.js.map +1 -1
- package/lib/esm/contract/sent_transaction.js +0 -20
- package/lib/esm/contract/sent_transaction.js.map +1 -1
- package/lib/esm/contract/signer.d.ts +104 -0
- package/lib/esm/contract/signer.js +91 -0
- package/lib/esm/contract/signer.js.map +1 -0
- package/lib/esm/contract/spec.d.ts +84 -0
- package/lib/esm/contract/spec.js +107 -3
- package/lib/esm/contract/spec.js.map +1 -1
- package/lib/esm/contract/types.d.ts +25 -8
- package/lib/esm/contract/types.js.map +1 -1
- package/lib/esm/errors/index.d.ts +1 -0
- package/lib/esm/errors/transaction_failed.d.ts +55 -0
- package/lib/esm/errors/transaction_failed.js +60 -0
- package/lib/esm/errors/transaction_failed.js.map +1 -0
- package/lib/esm/errors/wrap_http_error.d.ts +20 -0
- package/lib/esm/errors/wrap_http_error.js +18 -0
- package/lib/esm/errors/wrap_http_error.js.map +1 -0
- package/lib/esm/federation/server.js +15 -35
- package/lib/esm/federation/server.js.map +1 -1
- package/lib/esm/horizon/account_response.js +0 -20
- package/lib/esm/horizon/account_response.js.map +1 -1
- package/lib/esm/horizon/horizon_api.d.ts +12 -1
- package/lib/esm/horizon/horizon_api.js +5 -0
- package/lib/esm/horizon/horizon_api.js.map +1 -1
- package/lib/esm/horizon/horizon_axios_client.js +1 -1
- package/lib/esm/horizon/server.d.ts +10 -4
- package/lib/esm/horizon/server.js +20 -26
- package/lib/esm/horizon/server.js.map +1 -1
- package/lib/esm/index.js +27 -29
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/rpc/api.d.ts +21 -0
- package/lib/esm/rpc/api.js.map +1 -1
- package/lib/esm/rpc/axios.js +1 -1
- package/lib/esm/rpc/server.d.ts +115 -3
- package/lib/esm/rpc/server.js +181 -13
- package/lib/esm/rpc/server.js.map +1 -1
- package/lib/esm/rpc/transaction.js +2 -20
- package/lib/esm/rpc/transaction.js.map +1 -1
- package/lib/esm/webauth/challenge_transaction.js +7 -22
- package/lib/esm/webauth/challenge_transaction.js.map +1 -1
- package/lib/esm/webauth/utils.js +1 -20
- package/lib/esm/webauth/utils.js.map +1 -1
- package/package.json +35 -30
package/lib/esm/cli/index.js
CHANGED
|
@@ -2,27 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { WasmFetchError } from '../bindings/wasm_fetcher.js';
|
|
4
4
|
import { createGenerator, logSourceInfo, deriveContractName, generateAndWrite } from './util.js';
|
|
5
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js';
|
|
6
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js';
|
|
7
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js';
|
|
8
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js';
|
|
9
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js';
|
|
10
|
-
import 'buffer';
|
|
11
|
-
import '../base/generated/curr_generated.js';
|
|
12
|
-
import '@noble/hashes/sha2.js';
|
|
13
|
-
import '../base/signing.js';
|
|
14
|
-
import '../base/keypair.js';
|
|
15
|
-
import 'base32.js';
|
|
16
|
-
import '../base/util/continued_fraction.js';
|
|
17
|
-
import '../base/util/bignumber.js';
|
|
18
|
-
import '../base/transaction_builder.js';
|
|
19
|
-
import '../base/muxed_account.js';
|
|
20
5
|
import { Networks } from '../base/network.js';
|
|
21
|
-
import '../base/scval.js';
|
|
22
|
-
import '../base/numbers/uint128.js';
|
|
23
|
-
import '../base/numbers/uint256.js';
|
|
24
|
-
import '../base/numbers/int128.js';
|
|
25
|
-
import '../base/numbers/int256.js';
|
|
26
6
|
|
|
27
7
|
const NETWORK_CONFIG = {
|
|
28
8
|
testnet: {
|
|
@@ -104,7 +84,7 @@ function runCli() {
|
|
|
104
84
|
let timeout;
|
|
105
85
|
if (options.timeout) {
|
|
106
86
|
timeout = parseInt(options.timeout, 10);
|
|
107
|
-
if (
|
|
87
|
+
if (!/^\d+$/.test(options.timeout.trim()) || timeout <= 0) {
|
|
108
88
|
throw new Error(
|
|
109
89
|
`Invalid timeout value: ${options.timeout}. Must be a positive integer.`
|
|
110
90
|
);
|
|
@@ -125,11 +105,28 @@ function runCli() {
|
|
|
125
105
|
`
|
|
126
106
|
\u2713 Generating TypeScript bindings for "${contractName}"...`
|
|
127
107
|
);
|
|
128
|
-
await generateAndWrite(generator, {
|
|
108
|
+
const bindings = await generateAndWrite(generator, {
|
|
129
109
|
contractName,
|
|
130
110
|
outputDir: path.resolve(options.outputDir),
|
|
131
111
|
overwrite: options.overwrite
|
|
132
112
|
});
|
|
113
|
+
for (const d of bindings.diagnostics) {
|
|
114
|
+
if (d.declarations > 1) {
|
|
115
|
+
console.warn(
|
|
116
|
+
`
|
|
117
|
+
\u26A0 Event "${d.rawName}" is declared ${d.declarations} times; declaration ${d.occurrence + 1} generated as ${d.interfaceName} with filter ${d.filterMethodName}(). Review the generated bindings to confirm which declaration you need.`
|
|
118
|
+
);
|
|
119
|
+
} else {
|
|
120
|
+
const renamed = [
|
|
121
|
+
...d.interfaceRenamed ? [d.interfaceName] : [],
|
|
122
|
+
...d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []
|
|
123
|
+
];
|
|
124
|
+
console.warn(
|
|
125
|
+
`
|
|
126
|
+
\u26A0 Event "${d.rawName}": generated name${renamed.length > 1 ? "s" : ""} ${renamed.join(" and ")} ${renamed.length > 1 ? "were" : "was"} renamed to avoid a collision with another generated name.`
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
133
130
|
console.log(
|
|
134
131
|
`
|
|
135
132
|
\u2713 Successfully generated bindings in ${options.outputDir}`
|
package/lib/esm/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n if (Number.isNaN(timeout) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n // require digits only, so values parseInt would otherwise silently\n // truncate (\"10abc\" -> 10, \"10.9\" -> 10) are rejected\n if (!/^\\d+$/.test(options.timeout.trim()) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n const bindings = await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n for (const d of bindings.diagnostics) {\n if (d.declarations > 1) {\n console.warn(\n `\\n⚠ Event \"${d.rawName}\" is declared ${d.declarations} times; ` +\n `declaration ${d.occurrence + 1} generated as ` +\n `${d.interfaceName} with filter ${d.filterMethodName}(). ` +\n `Review the generated bindings to confirm which declaration ` +\n `you need.`,\n );\n } else {\n const renamed = [\n ...(d.interfaceRenamed ? [d.interfaceName] : []),\n ...(d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []),\n ];\n console.warn(\n `\\n⚠ Event \"${d.rawName}\": generated name` +\n `${renamed.length > 1 ? \"s\" : \"\"} ${renamed.join(\" and \")} ` +\n `${renamed.length > 1 ? \"were\" : \"was\"} renamed to avoid a ` +\n `collision with another generated name.`,\n );\n }\n }\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":[],"mappings":"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"}
|
package/lib/esm/cli/util.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export declare function writeBindings(outputDir: string, bindings: GeneratedBind
|
|
|
44
44
|
/**
|
|
45
45
|
* Generate and write bindings to disk
|
|
46
46
|
*/
|
|
47
|
-
export declare function generateAndWrite(generator: BindingGenerator, options: GenerateAndWriteOptions): Promise<
|
|
47
|
+
export declare function generateAndWrite(generator: BindingGenerator, options: GenerateAndWriteOptions): Promise<GeneratedBindings>;
|
|
48
48
|
/**
|
|
49
49
|
* Log source information
|
|
50
50
|
*/
|
package/lib/esm/cli/util.js
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs/promises';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { BindingGenerator } from '../bindings/generator.js';
|
|
4
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js';
|
|
5
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js';
|
|
6
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js';
|
|
7
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js';
|
|
8
|
-
import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js';
|
|
9
|
-
import 'buffer';
|
|
10
|
-
import '../base/generated/curr_generated.js';
|
|
11
|
-
import '@noble/hashes/sha2.js';
|
|
12
|
-
import '../base/signing.js';
|
|
13
|
-
import '../base/keypair.js';
|
|
14
|
-
import 'base32.js';
|
|
15
|
-
import '../base/util/continued_fraction.js';
|
|
16
|
-
import '../base/util/bignumber.js';
|
|
17
|
-
import '../base/transaction_builder.js';
|
|
18
|
-
import '../base/muxed_account.js';
|
|
19
|
-
import '../base/scval.js';
|
|
20
|
-
import '../base/numbers/uint128.js';
|
|
21
|
-
import '../base/numbers/uint256.js';
|
|
22
|
-
import '../base/numbers/int128.js';
|
|
23
|
-
import '../base/numbers/int256.js';
|
|
24
4
|
import { WasmFetchError } from '../bindings/wasm_fetcher.js';
|
|
25
5
|
import { RpcServer } from '../rpc/server.js';
|
|
26
6
|
|
|
@@ -124,6 +104,7 @@ async function generateAndWrite(generator, options) {
|
|
|
124
104
|
const { outputDir, overwrite = false, ...genOptions } = options;
|
|
125
105
|
const bindings = generator.generate(genOptions);
|
|
126
106
|
await writeBindings(outputDir, bindings, overwrite);
|
|
107
|
+
return bindings;
|
|
127
108
|
}
|
|
128
109
|
function logSourceInfo(source) {
|
|
129
110
|
console.log("\nSource:");
|
package/lib/esm/cli/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sources":["../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<void> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sources":["../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<GeneratedBindings> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n return bindings;\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -205,7 +205,7 @@ import { ExpiredStateError, ExternalServiceError, FakeAccountError, InternalWall
|
|
|
205
205
|
*
|
|
206
206
|
* To see an even more complicated example, where Alice swaps with Bob but the
|
|
207
207
|
* transaction is invoked by yet another party, check out
|
|
208
|
-
* [test-swap.js](https://github.com/stellar/js-stellar-sdk/blob/
|
|
208
|
+
* [test-swap.js](https://github.com/stellar/js-stellar-sdk/blob/main/test/e2e/src/test-swap.js).
|
|
209
209
|
*
|
|
210
210
|
*/
|
|
211
211
|
export declare class AssembledTransaction<T> {
|
|
@@ -373,8 +373,9 @@ export declare class AssembledTransaction<T> {
|
|
|
373
373
|
*/
|
|
374
374
|
static buildWithOp<T>(operation: xdr.Operation, options: AssembledTransactionOptions<T>): Promise<AssembledTransaction<T>>;
|
|
375
375
|
private static buildFootprintRestoreTransaction;
|
|
376
|
-
simulate: ({ restore }?: {
|
|
376
|
+
simulate: ({ restore, useUpgradedAuth, }?: {
|
|
377
377
|
restore?: boolean;
|
|
378
|
+
useUpgradedAuth?: boolean;
|
|
378
379
|
}) => Promise<this>;
|
|
379
380
|
get simulationData(): {
|
|
380
381
|
result: Api.SimulateHostFunctionResult;
|
|
@@ -477,12 +478,13 @@ export declare class AssembledTransaction<T> {
|
|
|
477
478
|
*/
|
|
478
479
|
expiration?: number | Promise<number>;
|
|
479
480
|
/**
|
|
480
|
-
* Sign all auth entries for this account. Default:
|
|
481
|
-
*
|
|
481
|
+
* Sign all auth entries for this account. Default: when `signAuthEntry`
|
|
482
|
+
* is a `Signer` or `Keypair`, its own address; otherwise the account that
|
|
483
|
+
* constructed the transaction (`publicKey`).
|
|
482
484
|
*/
|
|
483
485
|
address?: string;
|
|
484
486
|
/**
|
|
485
|
-
* You must provide this here if you did not provide one before and you are not passing `authorizeEntry`. Default: the `signAuthEntry`
|
|
487
|
+
* You must provide this here if you did not provide one before and you are not passing `authorizeEntry`. Default: the `signAuthEntry` from the `Client` options. Must sign things as the given `address`.
|
|
486
488
|
*/
|
|
487
489
|
signAuthEntry?: ClientOptions["signAuthEntry"];
|
|
488
490
|
/**
|
|
@@ -17,11 +17,12 @@ import { Contract } from '../base/contract.js';
|
|
|
17
17
|
import { Address } from '../base/address.js';
|
|
18
18
|
import '../base/scval.js';
|
|
19
19
|
import { SorobanDataBuilder } from '../base/sorobandata_builder.js';
|
|
20
|
-
import {
|
|
20
|
+
import { inspectAuthEntry, authorizeEntry, getAddressCredentials } from '../base/auth.js';
|
|
21
21
|
import '../base/numbers/uint128.js';
|
|
22
22
|
import '../base/numbers/uint256.js';
|
|
23
23
|
import '../base/numbers/int128.js';
|
|
24
24
|
import '../base/numbers/int256.js';
|
|
25
|
+
import { toSignTransaction, toSignAuthEntry, signerAddress } from './signer.js';
|
|
25
26
|
import { Api } from '../rpc/api.js';
|
|
26
27
|
import { RpcServer } from '../rpc/server.js';
|
|
27
28
|
import { assembleTransaction } from '../rpc/transaction.js';
|
|
@@ -339,7 +340,10 @@ class AssembledTransaction {
|
|
|
339
340
|
await tx.simulate({ restore: false });
|
|
340
341
|
return tx;
|
|
341
342
|
}
|
|
342
|
-
simulate = async ({
|
|
343
|
+
simulate = async ({
|
|
344
|
+
restore,
|
|
345
|
+
useUpgradedAuth
|
|
346
|
+
} = {}) => {
|
|
343
347
|
if (!this.built) {
|
|
344
348
|
if (!this.raw) {
|
|
345
349
|
throw new Error(
|
|
@@ -349,9 +353,15 @@ class AssembledTransaction {
|
|
|
349
353
|
this.built = this.raw.build();
|
|
350
354
|
}
|
|
351
355
|
restore = restore ?? this.options.restore;
|
|
356
|
+
useUpgradedAuth = useUpgradedAuth ?? this.options.useUpgradedAuth;
|
|
352
357
|
delete this.simulationResult;
|
|
353
358
|
delete this.simulationTransactionData;
|
|
354
|
-
this.simulation = await this.server.simulateTransaction(
|
|
359
|
+
this.simulation = await this.server.simulateTransaction(
|
|
360
|
+
this.built,
|
|
361
|
+
void 0,
|
|
362
|
+
void 0,
|
|
363
|
+
useUpgradedAuth
|
|
364
|
+
);
|
|
355
365
|
if (restore && Api.isSimulationRestore(this.simulation)) {
|
|
356
366
|
const account = await getAccount(this.options, this.server);
|
|
357
367
|
const result = await this.restoreFootprint(
|
|
@@ -368,7 +378,7 @@ class AssembledTransaction {
|
|
|
368
378
|
networkPassphrase: this.options.networkPassphrase
|
|
369
379
|
}).addOperation(op).setTimeout(this.options.timeoutInSeconds ?? DEFAULT_TIMEOUT);
|
|
370
380
|
delete this.built;
|
|
371
|
-
await this.simulate();
|
|
381
|
+
await this.simulate({ useUpgradedAuth });
|
|
372
382
|
return this;
|
|
373
383
|
}
|
|
374
384
|
throw new AssembledTransaction.Errors.RestorationFailure(
|
|
@@ -453,7 +463,11 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
453
463
|
"This is a read call. It requires no signature or sending. Use `force: true` to sign and send anyway."
|
|
454
464
|
);
|
|
455
465
|
}
|
|
456
|
-
|
|
466
|
+
const signTx = toSignTransaction(
|
|
467
|
+
signTransaction,
|
|
468
|
+
this.options.networkPassphrase
|
|
469
|
+
);
|
|
470
|
+
if (!signTx) {
|
|
457
471
|
throw new AssembledTransaction.Errors.NoSigner(
|
|
458
472
|
"You must provide a signTransaction function, either when calling `signAndSend` or when initializing your Client"
|
|
459
473
|
);
|
|
@@ -484,7 +498,7 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
484
498
|
if (this.options.submit !== void 0)
|
|
485
499
|
signOpts.submit = this.options.submit;
|
|
486
500
|
if (this.options.submitUrl) signOpts.submitUrl = this.options.submitUrl;
|
|
487
|
-
const { signedTxXdr: signature, error } = await
|
|
501
|
+
const { signedTxXdr: signature, error } = await signTx(
|
|
488
502
|
this.built.toXDR(),
|
|
489
503
|
signOpts
|
|
490
504
|
);
|
|
@@ -523,7 +537,10 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
523
537
|
watcher
|
|
524
538
|
} = {}) => {
|
|
525
539
|
if (!this.signed) {
|
|
526
|
-
const signer =
|
|
540
|
+
const signer = toSignTransaction(
|
|
541
|
+
signTransaction || this.options.signTransaction,
|
|
542
|
+
this.options.networkPassphrase
|
|
543
|
+
);
|
|
527
544
|
const wrappedSignTransaction = this.options.submit && signer ? (tx, opts) => signer(tx, { ...opts, submit: false }) : signTransaction;
|
|
528
545
|
await this.sign({ force, signTransaction: wrappedSignTransaction });
|
|
529
546
|
}
|
|
@@ -564,15 +581,16 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
564
581
|
const rawInvokeHostFunctionOp = this.built.operations[0];
|
|
565
582
|
return [
|
|
566
583
|
...new Set(
|
|
567
|
-
(rawInvokeHostFunctionOp.auth ?? []).map((entry) =>
|
|
568
|
-
(
|
|
584
|
+
(rawInvokeHostFunctionOp.auth ?? []).map((entry) => inspectAuthEntry(entry)).filter(
|
|
585
|
+
(info) => (
|
|
569
586
|
// skip source-account credentials (no address payload), which
|
|
570
|
-
// are covered by the envelope signature on the source account
|
|
571
|
-
|
|
587
|
+
// are covered by the envelope signature on the source account.
|
|
588
|
+
// Only the top-level credentials (signers[0]) matter here — this
|
|
589
|
+
// method reports (and signAuthEntries signs) the top-level
|
|
590
|
+
// address, so unsigned delegate nodes must not keep it listed.
|
|
591
|
+
info.address !== null && (includeAlreadySigned || !info.signers[0].signed)
|
|
572
592
|
)
|
|
573
|
-
).map(
|
|
574
|
-
(addrAuth) => Address.fromScAddress(addrAuth.address()).toString()
|
|
575
|
-
)
|
|
593
|
+
).map((info) => info.address)
|
|
576
594
|
)
|
|
577
595
|
];
|
|
578
596
|
};
|
|
@@ -595,11 +613,15 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
595
613
|
signAuthEntries = async ({
|
|
596
614
|
expiration = (async () => (await this.server.getLatestLedger()).sequence + 100)(),
|
|
597
615
|
signAuthEntry = this.options.signAuthEntry,
|
|
598
|
-
address = this.options.publicKey,
|
|
616
|
+
address = signerAddress(signAuthEntry) ?? this.options.publicKey,
|
|
599
617
|
authorizeEntry: authorizeEntry$1 = authorizeEntry
|
|
600
618
|
} = {}) => {
|
|
601
619
|
if (!this.built)
|
|
602
620
|
throw new Error("Transaction has not yet been assembled or simulated");
|
|
621
|
+
const signAuth = toSignAuthEntry(
|
|
622
|
+
signAuthEntry,
|
|
623
|
+
this.options.networkPassphrase
|
|
624
|
+
);
|
|
603
625
|
if (authorizeEntry$1 === authorizeEntry) {
|
|
604
626
|
const needsNonInvokerSigningBy = this.needsNonInvokerSigningBy();
|
|
605
627
|
if (needsNonInvokerSigningBy.length === 0) {
|
|
@@ -612,7 +634,7 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
612
634
|
`No auth entries for public key "${address}"`
|
|
613
635
|
);
|
|
614
636
|
}
|
|
615
|
-
if (!
|
|
637
|
+
if (!signAuth) {
|
|
616
638
|
throw new AssembledTransaction.Errors.NoSigner(
|
|
617
639
|
"You must provide `signAuthEntry` or a custom `authorizeEntry`"
|
|
618
640
|
);
|
|
@@ -632,7 +654,7 @@ You can set \`restore\` to true in the method options in order to automatically
|
|
|
632
654
|
addrAuth.address()
|
|
633
655
|
).toString();
|
|
634
656
|
if (authEntryAddress !== address) continue;
|
|
635
|
-
const sign =
|
|
657
|
+
const sign = signAuth ?? Promise.resolve;
|
|
636
658
|
authEntries[i] = await authorizeEntry$1(
|
|
637
659
|
entry,
|
|
638
660
|
async (preimage) => {
|