@stacks/network 6.14.1-pr.94e49562.22 → 6.14.1-pr.f066584c.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.
@@ -0,0 +1,31 @@
1
+ import 'cross-fetch/polyfill';
2
+ export declare const getFetchOptions: () => RequestInit;
3
+ export declare const setFetchOptions: (ops: RequestInit) => RequestInit;
4
+ export type FetchFn = (url: string, init?: RequestInit) => Promise<Response>;
5
+ export interface RequestContext {
6
+ fetch: FetchFn;
7
+ url: string;
8
+ init: RequestInit;
9
+ }
10
+ export interface ResponseContext {
11
+ fetch: FetchFn;
12
+ url: string;
13
+ init: RequestInit;
14
+ response: Response;
15
+ }
16
+ export interface FetchParams {
17
+ url: string;
18
+ init: RequestInit;
19
+ }
20
+ export interface FetchMiddleware {
21
+ pre?: (context: RequestContext) => PromiseLike<FetchParams | void> | FetchParams | void;
22
+ post?: (context: ResponseContext) => Promise<Response | void> | Response | void;
23
+ }
24
+ export interface ApiKeyMiddlewareOpts {
25
+ host?: RegExp | string;
26
+ httpHeader?: string;
27
+ apiKey: string;
28
+ }
29
+ export declare function createApiKeyMiddleware({ apiKey, host, httpHeader, }: ApiKeyMiddlewareOpts): FetchMiddleware;
30
+ export declare function createFetchFn(fetchLib: FetchFn, ...middleware: FetchMiddleware[]): FetchFn;
31
+ export declare function createFetchFn(...middleware: FetchMiddleware[]): FetchFn;
@@ -0,0 +1,77 @@
1
+ import 'cross-fetch/polyfill';
2
+ const defaultFetchOpts = {
3
+ referrerPolicy: 'origin',
4
+ headers: {
5
+ 'x-hiro-product': 'stacksjs',
6
+ },
7
+ };
8
+ export const getFetchOptions = () => {
9
+ return defaultFetchOpts;
10
+ };
11
+ export const setFetchOptions = (ops) => {
12
+ return Object.assign(defaultFetchOpts, ops);
13
+ };
14
+ export async function fetchWrapper(input, init) {
15
+ const fetchOpts = {};
16
+ Object.assign(fetchOpts, defaultFetchOpts, init);
17
+ const fetchResult = await fetch(input, fetchOpts);
18
+ return fetchResult;
19
+ }
20
+ export function hostMatches(host, pattern) {
21
+ if (typeof pattern === 'string')
22
+ return pattern === host;
23
+ return pattern.exec(host);
24
+ }
25
+ export function createApiKeyMiddleware({ apiKey, host = /(.*)api(.*)(\.stacks\.co|\.hiro\.so)$/i, httpHeader = 'x-api-key', }) {
26
+ return {
27
+ pre: context => {
28
+ const reqUrl = new URL(context.url);
29
+ if (!hostMatches(reqUrl.host, host))
30
+ return;
31
+ const headers = new Headers(context.init.headers);
32
+ headers.set(httpHeader, apiKey);
33
+ context.init.headers = headers;
34
+ },
35
+ };
36
+ }
37
+ function argsForCreateFetchFn(args) {
38
+ let fetchLib = fetchWrapper;
39
+ let middlewares = [];
40
+ if (args.length > 0 && typeof args[0] === 'function') {
41
+ fetchLib = args.shift();
42
+ }
43
+ if (args.length > 0) {
44
+ middlewares = args;
45
+ }
46
+ return { fetchLib, middlewares };
47
+ }
48
+ export function createFetchFn(...args) {
49
+ const { fetchLib, middlewares } = argsForCreateFetchFn(args);
50
+ const fetchFn = async (url, init) => {
51
+ let fetchParams = { url, init: init ?? {} };
52
+ for (const middleware of middlewares) {
53
+ if (typeof middleware.pre === 'function') {
54
+ const result = await Promise.resolve(middleware.pre({
55
+ fetch: fetchLib,
56
+ ...fetchParams,
57
+ }));
58
+ fetchParams = result ?? fetchParams;
59
+ }
60
+ }
61
+ let response = await fetchLib(fetchParams.url, fetchParams.init);
62
+ for (const middleware of middlewares) {
63
+ if (typeof middleware.post === 'function') {
64
+ const result = await Promise.resolve(middleware.post({
65
+ fetch: fetchLib,
66
+ url: fetchParams.url,
67
+ init: fetchParams.init,
68
+ response: response?.clone() ?? response,
69
+ }));
70
+ response = result ?? response;
71
+ }
72
+ }
73
+ return response;
74
+ };
75
+ return fetchFn;
76
+ }
77
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/fetch.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from './constants';
1
+ export * from './fetch';
2
2
  export * from './network';
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from './constants';
1
+ export * from './fetch';
2
2
  export * from './network';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
@@ -1,15 +1,61 @@
1
- export interface StacksNetwork {
2
- chainId: number;
3
- transactionVersion: number;
4
- peerNetworkId: number;
5
- magicBytes: string;
6
- }
7
- export declare const STACKS_MAINNET: StacksNetwork;
8
- export declare const STACKS_TESTNET: StacksNetwork;
9
- export declare const STACKS_DEVNET: StacksNetwork;
10
- export declare const STACKS_MOCKNET: StacksNetwork;
1
+ import { TransactionVersion, ChainID } from '@stacks/common';
2
+ import { FetchFn } from './fetch';
3
+ export declare const HIRO_MAINNET_DEFAULT = "https://api.mainnet.hiro.so";
4
+ export declare const HIRO_TESTNET_DEFAULT = "https://api.testnet.hiro.so";
5
+ export declare const HIRO_MOCKNET_DEFAULT = "http://localhost:3999";
6
+ export interface NetworkConfig {
7
+ url: string;
8
+ fetchFn?: FetchFn;
9
+ }
11
10
  export declare const StacksNetworks: readonly ["mainnet", "testnet", "devnet", "mocknet"];
12
11
  export type StacksNetworkName = (typeof StacksNetworks)[number];
13
- export declare function networkFromName(name: StacksNetworkName): StacksNetwork;
14
- export declare function networkFrom(network: StacksNetworkName | StacksNetwork): StacksNetwork;
15
- export declare function deriveDefaultUrl(network: StacksNetwork | StacksNetworkName | undefined): "https://api.mainnet.hiro.so" | "http://localhost:3999" | "https://api.testnet.hiro.so";
12
+ export declare class StacksNetwork {
13
+ version: TransactionVersion;
14
+ chainId: ChainID;
15
+ bnsLookupUrl: string;
16
+ broadcastEndpoint: string;
17
+ transferFeeEstimateEndpoint: string;
18
+ transactionFeeEstimateEndpoint: string;
19
+ accountEndpoint: string;
20
+ contractAbiEndpoint: string;
21
+ readOnlyFunctionCallEndpoint: string;
22
+ readonly coreApiUrl: string;
23
+ fetchFn: FetchFn;
24
+ constructor(networkConfig: NetworkConfig);
25
+ static fromName: (networkName: StacksNetworkName) => StacksNetwork;
26
+ static fromNameOrNetwork: (network: StacksNetworkName | StacksNetwork) => StacksNetwork;
27
+ isMainnet: () => boolean;
28
+ getBroadcastApiUrl: () => string;
29
+ getTransferFeeEstimateApiUrl: () => string;
30
+ getTransactionFeeEstimateApiUrl: () => string;
31
+ getAccountApiUrl: (address: string) => string;
32
+ getAccountExtendedBalancesApiUrl: (address: string) => string;
33
+ getAbiApiUrl: (address: string, contract: string) => string;
34
+ getReadOnlyFunctionCallApiUrl: (contractAddress: string, contractName: string, functionName: string) => string;
35
+ getInfoUrl: () => string;
36
+ getBlockTimeInfoUrl: () => string;
37
+ getPoxInfoUrl: () => string;
38
+ getRewardsUrl: (address: string, options?: any) => string;
39
+ getRewardsTotalUrl: (address: string) => string;
40
+ getRewardHoldersUrl: (address: string, options?: any) => string;
41
+ getStackerInfoUrl: (contractAddress: string, contractName: string) => string;
42
+ getDataVarUrl: (contractAddress: string, contractName: string, dataVarName: string) => string;
43
+ getMapEntryUrl: (contractAddress: string, contractName: string, mapName: string) => string;
44
+ getNameInfo(fullyQualifiedName: string): Promise<any>;
45
+ }
46
+ export declare class StacksMainnet extends StacksNetwork {
47
+ version: TransactionVersion;
48
+ chainId: ChainID;
49
+ constructor(opts?: Partial<NetworkConfig>);
50
+ }
51
+ export declare class StacksTestnet extends StacksNetwork {
52
+ version: TransactionVersion;
53
+ chainId: ChainID;
54
+ constructor(opts?: Partial<NetworkConfig>);
55
+ }
56
+ export declare class StacksMocknet extends StacksNetwork {
57
+ version: TransactionVersion;
58
+ chainId: ChainID;
59
+ constructor(opts?: Partial<NetworkConfig>);
60
+ }
61
+ export declare const StacksDevnet: typeof StacksMocknet;
@@ -1,50 +1,126 @@
1
- import { DEVNET_URL, HIRO_MAINNET_URL, HIRO_TESTNET_URL } from '@stacks/common';
2
- import { ChainId, PeerNetworkId, TransactionVersion } from './constants';
3
- export const STACKS_MAINNET = {
4
- chainId: ChainId.Mainnet,
5
- transactionVersion: TransactionVersion.Mainnet,
6
- peerNetworkId: PeerNetworkId.Mainnet,
7
- magicBytes: 'X2',
8
- };
9
- export const STACKS_TESTNET = {
10
- chainId: ChainId.Testnet,
11
- transactionVersion: TransactionVersion.Testnet,
12
- peerNetworkId: PeerNetworkId.Testnet,
13
- magicBytes: 'T2',
14
- };
15
- export const STACKS_DEVNET = {
16
- ...STACKS_TESTNET,
17
- magicBytes: 'id',
18
- };
19
- export const STACKS_MOCKNET = { ...STACKS_DEVNET };
1
+ import { TransactionVersion, ChainID } from '@stacks/common';
2
+ import { createFetchFn } from './fetch';
3
+ export const HIRO_MAINNET_DEFAULT = 'https://api.mainnet.hiro.so';
4
+ export const HIRO_TESTNET_DEFAULT = 'https://api.testnet.hiro.so';
5
+ export const HIRO_MOCKNET_DEFAULT = 'http://localhost:3999';
20
6
  export const StacksNetworks = ['mainnet', 'testnet', 'devnet', 'mocknet'];
21
- export function networkFromName(name) {
22
- switch (name) {
7
+ export class StacksNetwork {
8
+ constructor(networkConfig) {
9
+ this.version = TransactionVersion.Mainnet;
10
+ this.chainId = ChainID.Mainnet;
11
+ this.bnsLookupUrl = 'https://api.mainnet.hiro.so';
12
+ this.broadcastEndpoint = '/v2/transactions';
13
+ this.transferFeeEstimateEndpoint = '/v2/fees/transfer';
14
+ this.transactionFeeEstimateEndpoint = '/v2/fees/transaction';
15
+ this.accountEndpoint = '/v2/accounts';
16
+ this.contractAbiEndpoint = '/v2/contracts/interface';
17
+ this.readOnlyFunctionCallEndpoint = '/v2/contracts/call-read';
18
+ this.isMainnet = () => this.version === TransactionVersion.Mainnet;
19
+ this.getBroadcastApiUrl = () => `${this.coreApiUrl}${this.broadcastEndpoint}`;
20
+ this.getTransferFeeEstimateApiUrl = () => `${this.coreApiUrl}${this.transferFeeEstimateEndpoint}`;
21
+ this.getTransactionFeeEstimateApiUrl = () => `${this.coreApiUrl}${this.transactionFeeEstimateEndpoint}`;
22
+ this.getAccountApiUrl = (address) => `${this.coreApiUrl}${this.accountEndpoint}/${address}?proof=0`;
23
+ this.getAccountExtendedBalancesApiUrl = (address) => `${this.coreApiUrl}/extended/v1/address/${address}/balances`;
24
+ this.getAbiApiUrl = (address, contract) => `${this.coreApiUrl}${this.contractAbiEndpoint}/${address}/${contract}`;
25
+ this.getReadOnlyFunctionCallApiUrl = (contractAddress, contractName, functionName) => `${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint}/${contractAddress}/${contractName}/${encodeURIComponent(functionName)}`;
26
+ this.getInfoUrl = () => `${this.coreApiUrl}/v2/info`;
27
+ this.getBlockTimeInfoUrl = () => `${this.coreApiUrl}/extended/v1/info/network_block_times`;
28
+ this.getPoxInfoUrl = () => `${this.coreApiUrl}/v2/pox`;
29
+ this.getRewardsUrl = (address, options) => {
30
+ let url = `${this.coreApiUrl}/extended/v1/burnchain/rewards/${address}`;
31
+ if (options) {
32
+ url = `${url}?limit=${options.limit}&offset=${options.offset}`;
33
+ }
34
+ return url;
35
+ };
36
+ this.getRewardsTotalUrl = (address) => `${this.coreApiUrl}/extended/v1/burnchain/rewards/${address}/total`;
37
+ this.getRewardHoldersUrl = (address, options) => {
38
+ let url = `${this.coreApiUrl}/extended/v1/burnchain/reward_slot_holders/${address}`;
39
+ if (options) {
40
+ url = `${url}?limit=${options.limit}&offset=${options.offset}`;
41
+ }
42
+ return url;
43
+ };
44
+ this.getStackerInfoUrl = (contractAddress, contractName) => `${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint}
45
+ ${contractAddress}/${contractName}/get-stacker-info`;
46
+ this.getDataVarUrl = (contractAddress, contractName, dataVarName) => `${this.coreApiUrl}/v2/data_var/${contractAddress}/${contractName}/${dataVarName}?proof=0`;
47
+ this.getMapEntryUrl = (contractAddress, contractName, mapName) => `${this.coreApiUrl}/v2/map_entry/${contractAddress}/${contractName}/${mapName}?proof=0`;
48
+ this.coreApiUrl = networkConfig.url;
49
+ this.fetchFn = networkConfig.fetchFn ?? createFetchFn();
50
+ }
51
+ getNameInfo(fullyQualifiedName) {
52
+ const nameLookupURL = `${this.bnsLookupUrl}/v1/names/${fullyQualifiedName}`;
53
+ return this.fetchFn(nameLookupURL)
54
+ .then(resp => {
55
+ if (resp.status === 404) {
56
+ throw new Error('Name not found');
57
+ }
58
+ else if (resp.status !== 200) {
59
+ throw new Error(`Bad response status: ${resp.status}`);
60
+ }
61
+ else {
62
+ return resp.json();
63
+ }
64
+ })
65
+ .then(nameInfo => {
66
+ if (nameInfo.address) {
67
+ return Object.assign({}, nameInfo, { address: nameInfo.address });
68
+ }
69
+ else {
70
+ return nameInfo;
71
+ }
72
+ });
73
+ }
74
+ }
75
+ StacksNetwork.fromName = (networkName) => {
76
+ switch (networkName) {
23
77
  case 'mainnet':
24
- return STACKS_MAINNET;
78
+ return new StacksMainnet();
25
79
  case 'testnet':
26
- return STACKS_TESTNET;
80
+ return new StacksTestnet();
27
81
  case 'devnet':
28
- return STACKS_DEVNET;
82
+ return new StacksDevnet();
29
83
  case 'mocknet':
30
- return STACKS_MOCKNET;
84
+ return new StacksMocknet();
31
85
  default:
32
- throw new Error(`Unknown network name: ${name}`);
86
+ throw new Error(`Invalid network name provided. Must be one of the following: ${StacksNetworks.join(', ')}`);
87
+ }
88
+ };
89
+ StacksNetwork.fromNameOrNetwork = (network) => {
90
+ if (typeof network !== 'string' && 'version' in network) {
91
+ return network;
92
+ }
93
+ return StacksNetwork.fromName(network);
94
+ };
95
+ export class StacksMainnet extends StacksNetwork {
96
+ constructor(opts) {
97
+ super({
98
+ url: opts?.url ?? HIRO_MAINNET_DEFAULT,
99
+ fetchFn: opts?.fetchFn,
100
+ });
101
+ this.version = TransactionVersion.Mainnet;
102
+ this.chainId = ChainID.Mainnet;
33
103
  }
34
104
  }
35
- export function networkFrom(network) {
36
- if (typeof network === 'string')
37
- return networkFromName(network);
38
- return network;
105
+ export class StacksTestnet extends StacksNetwork {
106
+ constructor(opts) {
107
+ super({
108
+ url: opts?.url ?? HIRO_TESTNET_DEFAULT,
109
+ fetchFn: opts?.fetchFn,
110
+ });
111
+ this.version = TransactionVersion.Testnet;
112
+ this.chainId = ChainID.Testnet;
113
+ }
39
114
  }
40
- export function deriveDefaultUrl(network) {
41
- if (!network)
42
- return HIRO_MAINNET_URL;
43
- network = networkFrom(network);
44
- return !network || network.transactionVersion === TransactionVersion.Mainnet
45
- ? HIRO_MAINNET_URL
46
- : network.magicBytes === 'id'
47
- ? DEVNET_URL
48
- : HIRO_TESTNET_URL;
115
+ export class StacksMocknet extends StacksNetwork {
116
+ constructor(opts) {
117
+ super({
118
+ url: opts?.url ?? HIRO_MOCKNET_DEFAULT,
119
+ fetchFn: opts?.fetchFn,
120
+ });
121
+ this.version = TransactionVersion.Testnet;
122
+ this.chainId = ChainID.Testnet;
123
+ }
49
124
  }
125
+ export const StacksDevnet = StacksMocknet;
50
126
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAUzE,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,kBAAkB,EAAE,kBAAkB,CAAC,OAAO;IAC9C,aAAa,EAAE,aAAa,CAAC,OAAO;IACpC,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,kBAAkB,EAAE,kBAAkB,CAAC,OAAO;IAC9C,aAAa,EAAE,aAAa,CAAC,OAAO;IACpC,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,GAAG,cAAc;IACjB,UAAU,EAAE,IAAI;CACjB,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAkB,EAAE,GAAG,aAAa,EAAE,CAAC;AAGlE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAInF,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAA0C;IACpE,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAsD;IACrF,IAAI,CAAC,OAAO;QAAE,OAAO,gBAAgB,CAAC;IAEtC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,kBAAkB,KAAK,kBAAkB,CAAC,OAAO;QAC1E,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI;YAC3B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,gBAAgB,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import 'cross-fetch/polyfill';
2
+ export declare const getFetchOptions: () => RequestInit;
3
+ export declare const setFetchOptions: (ops: RequestInit) => RequestInit;
4
+ export type FetchFn = (url: string, init?: RequestInit) => Promise<Response>;
5
+ export interface RequestContext {
6
+ fetch: FetchFn;
7
+ url: string;
8
+ init: RequestInit;
9
+ }
10
+ export interface ResponseContext {
11
+ fetch: FetchFn;
12
+ url: string;
13
+ init: RequestInit;
14
+ response: Response;
15
+ }
16
+ export interface FetchParams {
17
+ url: string;
18
+ init: RequestInit;
19
+ }
20
+ export interface FetchMiddleware {
21
+ pre?: (context: RequestContext) => PromiseLike<FetchParams | void> | FetchParams | void;
22
+ post?: (context: ResponseContext) => Promise<Response | void> | Response | void;
23
+ }
24
+ export interface ApiKeyMiddlewareOpts {
25
+ host?: RegExp | string;
26
+ httpHeader?: string;
27
+ apiKey: string;
28
+ }
29
+ export declare function createApiKeyMiddleware({ apiKey, host, httpHeader, }: ApiKeyMiddlewareOpts): FetchMiddleware;
30
+ export declare function createFetchFn(fetchLib: FetchFn, ...middleware: FetchMiddleware[]): FetchFn;
31
+ export declare function createFetchFn(...middleware: FetchMiddleware[]): FetchFn;
package/dist/fetch.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFetchFn = exports.createApiKeyMiddleware = exports.hostMatches = exports.fetchWrapper = exports.setFetchOptions = exports.getFetchOptions = void 0;
4
+ require("cross-fetch/polyfill");
5
+ const defaultFetchOpts = {
6
+ referrerPolicy: 'origin',
7
+ headers: {
8
+ 'x-hiro-product': 'stacksjs',
9
+ },
10
+ };
11
+ const getFetchOptions = () => {
12
+ return defaultFetchOpts;
13
+ };
14
+ exports.getFetchOptions = getFetchOptions;
15
+ const setFetchOptions = (ops) => {
16
+ return Object.assign(defaultFetchOpts, ops);
17
+ };
18
+ exports.setFetchOptions = setFetchOptions;
19
+ async function fetchWrapper(input, init) {
20
+ const fetchOpts = {};
21
+ Object.assign(fetchOpts, defaultFetchOpts, init);
22
+ const fetchResult = await fetch(input, fetchOpts);
23
+ return fetchResult;
24
+ }
25
+ exports.fetchWrapper = fetchWrapper;
26
+ function hostMatches(host, pattern) {
27
+ if (typeof pattern === 'string')
28
+ return pattern === host;
29
+ return pattern.exec(host);
30
+ }
31
+ exports.hostMatches = hostMatches;
32
+ function createApiKeyMiddleware({ apiKey, host = /(.*)api(.*)(\.stacks\.co|\.hiro\.so)$/i, httpHeader = 'x-api-key', }) {
33
+ return {
34
+ pre: context => {
35
+ const reqUrl = new URL(context.url);
36
+ if (!hostMatches(reqUrl.host, host))
37
+ return;
38
+ const headers = new Headers(context.init.headers);
39
+ headers.set(httpHeader, apiKey);
40
+ context.init.headers = headers;
41
+ },
42
+ };
43
+ }
44
+ exports.createApiKeyMiddleware = createApiKeyMiddleware;
45
+ function argsForCreateFetchFn(args) {
46
+ let fetchLib = fetchWrapper;
47
+ let middlewares = [];
48
+ if (args.length > 0 && typeof args[0] === 'function') {
49
+ fetchLib = args.shift();
50
+ }
51
+ if (args.length > 0) {
52
+ middlewares = args;
53
+ }
54
+ return { fetchLib, middlewares };
55
+ }
56
+ function createFetchFn(...args) {
57
+ const { fetchLib, middlewares } = argsForCreateFetchFn(args);
58
+ const fetchFn = async (url, init) => {
59
+ let fetchParams = { url, init: init ?? {} };
60
+ for (const middleware of middlewares) {
61
+ if (typeof middleware.pre === 'function') {
62
+ const result = await Promise.resolve(middleware.pre({
63
+ fetch: fetchLib,
64
+ ...fetchParams,
65
+ }));
66
+ fetchParams = result ?? fetchParams;
67
+ }
68
+ }
69
+ let response = await fetchLib(fetchParams.url, fetchParams.init);
70
+ for (const middleware of middlewares) {
71
+ if (typeof middleware.post === 'function') {
72
+ const result = await Promise.resolve(middleware.post({
73
+ fetch: fetchLib,
74
+ url: fetchParams.url,
75
+ init: fetchParams.init,
76
+ response: response?.clone() ?? response,
77
+ }));
78
+ response = result ?? response;
79
+ }
80
+ }
81
+ return response;
82
+ };
83
+ return fetchFn;
84
+ }
85
+ exports.createFetchFn = createFetchFn;
86
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;AAAA,gCAA8B;AAI9B,MAAM,gBAAgB,GAAgB;IAGpC,cAAc,EAAE,QAAQ;IACxB,OAAO,EAAE;QACP,gBAAgB,EAAE,UAAU;KAC7B;CACF,CAAC;AAMK,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAiBK,MAAM,eAAe,GAAG,CAAC,GAAgB,EAAe,EAAE;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAGK,KAAK,UAAU,YAAY,CAAC,KAAkB,EAAE,IAAkB;IACvE,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,WAAW,CAAC;AACrB,CAAC;AAPD,oCAOC;AAoCD,SAAgB,WAAW,CAAC,IAAY,EAAE,OAAwB;IAChE,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,KAAK,IAAI,CAAC;IACzD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAHD,kCAGC;AAaD,SAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,IAAI,GAAG,wCAAwC,EAC/C,UAAU,GAAG,WAAW,GACH;IACrB,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,EAAE;YACb,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE,OAAO;YAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAfD,wDAeC;AAED,SAAS,oBAAoB,CAAC,IAAW;IACvC,IAAI,QAAQ,GAAY,YAAY,CAAC;IACrC,IAAI,WAAW,GAAsB,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;QACpD,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KACzB;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,WAAW,GAAG,IAAI,CAAC;KACpB;IACD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAcD,SAAgB,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,IAA8B,EAAqB,EAAE;QACvF,IAAI,WAAW,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,UAAU,EAAE;gBACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,UAAU,CAAC,GAAG,CAAC;oBACb,KAAK,EAAE,QAAQ;oBACf,GAAG,WAAW;iBACf,CAAC,CACH,CAAC;gBACF,WAAW,GAAG,MAAM,IAAI,WAAW,CAAC;aACrC;SACF;QAED,IAAI,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;gBACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,QAAQ;oBACf,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,QAAQ;iBACxC,CAAC,CACH,CAAC;gBACF,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC;aAC/B;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AApCD,sCAoCC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './constants';
1
+ export * from './fetch';
2
2
  export * from './network';
package/dist/index.js CHANGED
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./constants"), exports);
17
+ __exportStar(require("./fetch"), exports);
18
18
  __exportStar(require("./network"), exports);
19
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B"}
package/dist/network.d.ts CHANGED
@@ -1,15 +1,61 @@
1
- export interface StacksNetwork {
2
- chainId: number;
3
- transactionVersion: number;
4
- peerNetworkId: number;
5
- magicBytes: string;
6
- }
7
- export declare const STACKS_MAINNET: StacksNetwork;
8
- export declare const STACKS_TESTNET: StacksNetwork;
9
- export declare const STACKS_DEVNET: StacksNetwork;
10
- export declare const STACKS_MOCKNET: StacksNetwork;
1
+ import { TransactionVersion, ChainID } from '@stacks/common';
2
+ import { FetchFn } from './fetch';
3
+ export declare const HIRO_MAINNET_DEFAULT = "https://api.mainnet.hiro.so";
4
+ export declare const HIRO_TESTNET_DEFAULT = "https://api.testnet.hiro.so";
5
+ export declare const HIRO_MOCKNET_DEFAULT = "http://localhost:3999";
6
+ export interface NetworkConfig {
7
+ url: string;
8
+ fetchFn?: FetchFn;
9
+ }
11
10
  export declare const StacksNetworks: readonly ["mainnet", "testnet", "devnet", "mocknet"];
12
11
  export type StacksNetworkName = (typeof StacksNetworks)[number];
13
- export declare function networkFromName(name: StacksNetworkName): StacksNetwork;
14
- export declare function networkFrom(network: StacksNetworkName | StacksNetwork): StacksNetwork;
15
- export declare function deriveDefaultUrl(network: StacksNetwork | StacksNetworkName | undefined): "https://api.mainnet.hiro.so" | "http://localhost:3999" | "https://api.testnet.hiro.so";
12
+ export declare class StacksNetwork {
13
+ version: TransactionVersion;
14
+ chainId: ChainID;
15
+ bnsLookupUrl: string;
16
+ broadcastEndpoint: string;
17
+ transferFeeEstimateEndpoint: string;
18
+ transactionFeeEstimateEndpoint: string;
19
+ accountEndpoint: string;
20
+ contractAbiEndpoint: string;
21
+ readOnlyFunctionCallEndpoint: string;
22
+ readonly coreApiUrl: string;
23
+ fetchFn: FetchFn;
24
+ constructor(networkConfig: NetworkConfig);
25
+ static fromName: (networkName: StacksNetworkName) => StacksNetwork;
26
+ static fromNameOrNetwork: (network: StacksNetworkName | StacksNetwork) => StacksNetwork;
27
+ isMainnet: () => boolean;
28
+ getBroadcastApiUrl: () => string;
29
+ getTransferFeeEstimateApiUrl: () => string;
30
+ getTransactionFeeEstimateApiUrl: () => string;
31
+ getAccountApiUrl: (address: string) => string;
32
+ getAccountExtendedBalancesApiUrl: (address: string) => string;
33
+ getAbiApiUrl: (address: string, contract: string) => string;
34
+ getReadOnlyFunctionCallApiUrl: (contractAddress: string, contractName: string, functionName: string) => string;
35
+ getInfoUrl: () => string;
36
+ getBlockTimeInfoUrl: () => string;
37
+ getPoxInfoUrl: () => string;
38
+ getRewardsUrl: (address: string, options?: any) => string;
39
+ getRewardsTotalUrl: (address: string) => string;
40
+ getRewardHoldersUrl: (address: string, options?: any) => string;
41
+ getStackerInfoUrl: (contractAddress: string, contractName: string) => string;
42
+ getDataVarUrl: (contractAddress: string, contractName: string, dataVarName: string) => string;
43
+ getMapEntryUrl: (contractAddress: string, contractName: string, mapName: string) => string;
44
+ getNameInfo(fullyQualifiedName: string): Promise<any>;
45
+ }
46
+ export declare class StacksMainnet extends StacksNetwork {
47
+ version: TransactionVersion;
48
+ chainId: ChainID;
49
+ constructor(opts?: Partial<NetworkConfig>);
50
+ }
51
+ export declare class StacksTestnet extends StacksNetwork {
52
+ version: TransactionVersion;
53
+ chainId: ChainID;
54
+ constructor(opts?: Partial<NetworkConfig>);
55
+ }
56
+ export declare class StacksMocknet extends StacksNetwork {
57
+ version: TransactionVersion;
58
+ chainId: ChainID;
59
+ constructor(opts?: Partial<NetworkConfig>);
60
+ }
61
+ export declare const StacksDevnet: typeof StacksMocknet;