@cardano-sdk/util-dev 0.22.6 → 0.22.7
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/dist/cjs/k6-utils.d.ts +65 -0
- package/dist/cjs/k6-utils.d.ts.map +1 -0
- package/dist/cjs/k6-utils.js +177 -0
- package/dist/cjs/k6-utils.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/k6-utils.d.ts +65 -0
- package/dist/esm/k6-utils.d.ts.map +1 -0
- package/dist/esm/k6-utils.js +171 -0
- package/dist/esm/k6-utils.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Cardano } from '@cardano-sdk/core';
|
|
2
|
+
import http from 'k6/http';
|
|
3
|
+
export declare enum Environment {
|
|
4
|
+
dev = "dev",
|
|
5
|
+
ops = "ops",
|
|
6
|
+
staging = "staging",
|
|
7
|
+
live = "live"
|
|
8
|
+
}
|
|
9
|
+
export declare enum Network {
|
|
10
|
+
mainnet = "mainnet",
|
|
11
|
+
preprod = "preprod",
|
|
12
|
+
preview = "preview",
|
|
13
|
+
sanchonet = "sanchonet"
|
|
14
|
+
}
|
|
15
|
+
export declare const getDut: (k6Env: {
|
|
16
|
+
TARGET_ENV?: string;
|
|
17
|
+
TARGET_NET?: string;
|
|
18
|
+
DUT?: string;
|
|
19
|
+
}, options?: {
|
|
20
|
+
environments?: Environment[];
|
|
21
|
+
networks?: Network[];
|
|
22
|
+
}) => string;
|
|
23
|
+
export declare const chunkArray: <T>(array: T[], chunkSize: number) => T[][];
|
|
24
|
+
declare type ApiVersion = {
|
|
25
|
+
assetInfo: string;
|
|
26
|
+
chainHistory: string;
|
|
27
|
+
handle: string;
|
|
28
|
+
networkInfo: string;
|
|
29
|
+
rewards: string;
|
|
30
|
+
root: string;
|
|
31
|
+
stakePool: string;
|
|
32
|
+
txSubmit: string;
|
|
33
|
+
utxo: string;
|
|
34
|
+
};
|
|
35
|
+
declare type ServiceName = keyof ApiVersion;
|
|
36
|
+
export declare class SdkCom {
|
|
37
|
+
#private;
|
|
38
|
+
constructor({ dut, secure, apiVersion, k6Http }: {
|
|
39
|
+
dut: string;
|
|
40
|
+
secure?: boolean;
|
|
41
|
+
apiVersion: ApiVersion;
|
|
42
|
+
k6Http: {
|
|
43
|
+
post: typeof http.post;
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
tip(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
47
|
+
eraSummaries(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
48
|
+
genesisParameters(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
49
|
+
protocolParameters(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
50
|
+
lovelaceSupply(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
51
|
+
stake(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
52
|
+
stakePoolStats(): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
53
|
+
httpPost(url: string, serviceName: ServiceName, body?: {}): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
54
|
+
txsByAddress(addresses: Cardano.Address[], takeOne?: boolean, pageSize?: number): void;
|
|
55
|
+
utxosByAddresses(addresses: Cardano.Address[]): void;
|
|
56
|
+
rewardsAccBalance(rewardAccount: Cardano.RewardAccount): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
57
|
+
stakePoolSearch(poolAddress: Cardano.PoolId): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
58
|
+
getAssets({ assetIds, nftMetadata, tokenMetadata }: {
|
|
59
|
+
assetIds: Cardano.AssetId[];
|
|
60
|
+
nftMetadata: boolean;
|
|
61
|
+
tokenMetadata: boolean;
|
|
62
|
+
}): import("k6/http").RefinedResponse<import("k6/http").ResponseType | undefined>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=k6-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"k6-utils.d.ts","sourceRoot":"","sources":["../../src/k6-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAiBD,eAAO,MAAM,MAAM,UACV;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,YACvD;IAAE,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,WAyEjE,CAAC;AAGF,eAAO,MAAM,UAAU,6BAA8B,MAAM,UAO1D,CAAC;AAGF,aAAK,UAAU,GAAG;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,WAAW,GAAG,MAAM,UAAU,CAAC;AAGpC,qBAAa,MAAM;;gBAML,EACV,GAAG,EACH,MAAa,EACb,UAAU,EACV,MAAM,EACP,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAA;SAAE,CAAC;KACpC;IAOD,GAAG;IAIH,YAAY;IAIZ,iBAAiB;IAIjB,kBAAkB;IAIlB,cAAc;IAId,KAAK;IAIL,cAAc;IAKd,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,KAAK;IAWzD,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,UAAQ,EAAE,QAAQ,SAAK,GAAG,IAAI;IA0BhF,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI;IAOpD,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa;IAItD,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM;IAO3C,SAAS,CAAC,EACR,QAAQ,EACR,WAAW,EACX,aAAa,EACd,EAAE;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;KACxB;CAMF"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _SdkCom_httpUrl, _SdkCom_apiVersion, _SdkCom_k6Http;
|
|
13
|
+
export var Environment;
|
|
14
|
+
(function (Environment) {
|
|
15
|
+
Environment["dev"] = "dev";
|
|
16
|
+
Environment["ops"] = "ops";
|
|
17
|
+
Environment["staging"] = "staging";
|
|
18
|
+
Environment["live"] = "live";
|
|
19
|
+
})(Environment || (Environment = {}));
|
|
20
|
+
export var Network;
|
|
21
|
+
(function (Network) {
|
|
22
|
+
Network["mainnet"] = "mainnet";
|
|
23
|
+
Network["preprod"] = "preprod";
|
|
24
|
+
Network["preview"] = "preview";
|
|
25
|
+
Network["sanchonet"] = "sanchonet";
|
|
26
|
+
})(Network || (Network = {}));
|
|
27
|
+
export const getDut = (k6Env, options) => {
|
|
28
|
+
const allowedEnvironments = new Set([
|
|
29
|
+
Environment.dev,
|
|
30
|
+
Environment.ops,
|
|
31
|
+
Environment.staging,
|
|
32
|
+
Environment.live
|
|
33
|
+
]);
|
|
34
|
+
const allowedNetworks = new Set([Network.mainnet, Network.preprod, Network.preview, Network.sanchonet]);
|
|
35
|
+
const allowedOptions = new Set(['environments', 'networks']);
|
|
36
|
+
const { TARGET_ENV, TARGET_NET, DUT } = k6Env;
|
|
37
|
+
if (!(TARGET_ENV && TARGET_NET) && !DUT)
|
|
38
|
+
throw new Error('Please specify both TARGET_ENV and TARGET_NET or DUT (Domain Under Test');
|
|
39
|
+
let urlEnvironments = [...allowedEnvironments];
|
|
40
|
+
let urlNetworks = [...allowedNetworks];
|
|
41
|
+
if (options) {
|
|
42
|
+
if (typeof options !== 'object')
|
|
43
|
+
throw new Error(`${typeof options}: not allowed type for options`);
|
|
44
|
+
for (const option of Object.keys(options))
|
|
45
|
+
if (!allowedOptions.has(option))
|
|
46
|
+
throw new Error(`${options}: not allowed option`);
|
|
47
|
+
const { environments, networks } = options;
|
|
48
|
+
switch (typeof environments) {
|
|
49
|
+
case 'undefined':
|
|
50
|
+
break;
|
|
51
|
+
case 'object':
|
|
52
|
+
if (!Array.isArray(environments))
|
|
53
|
+
throw new Error('options.environments must be an array');
|
|
54
|
+
for (const environment of environments)
|
|
55
|
+
if (!allowedEnvironments.has(environment))
|
|
56
|
+
throw new Error(`${environment}: not allowed environment`);
|
|
57
|
+
urlEnvironments = environments;
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
throw new Error(`${typeof environments}: not allowed type for options.environments`);
|
|
61
|
+
}
|
|
62
|
+
switch (typeof networks) {
|
|
63
|
+
case 'undefined':
|
|
64
|
+
break;
|
|
65
|
+
case 'object':
|
|
66
|
+
if (!Array.isArray(networks))
|
|
67
|
+
throw new Error('options.networks must be an array');
|
|
68
|
+
for (const network of networks)
|
|
69
|
+
if (!allowedNetworks.has(network))
|
|
70
|
+
throw new Error(`${network}: not allowed network`);
|
|
71
|
+
urlNetworks = networks;
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
throw new Error(`${typeof networks}: not allowed type for options.networks`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (TARGET_ENV && !urlEnvironments.includes(TARGET_ENV))
|
|
78
|
+
throw new Error(`${TARGET_ENV}: not allowed environment`);
|
|
79
|
+
if (TARGET_NET && !urlNetworks.includes(TARGET_NET))
|
|
80
|
+
throw new Error(`${TARGET_NET}: not allowed network`);
|
|
81
|
+
const domainUnderTest = DUT || `${TARGET_ENV}-${TARGET_NET}${TARGET_ENV === 'ops' ? '-1' : ''}.lw.iog.io`;
|
|
82
|
+
console.log(`Domain under test is: ${domainUnderTest}`);
|
|
83
|
+
return domainUnderTest;
|
|
84
|
+
};
|
|
85
|
+
export const chunkArray = (array, chunkSize) => {
|
|
86
|
+
const arrayCopy = [...array];
|
|
87
|
+
const chunked = [];
|
|
88
|
+
while (arrayCopy.length > 0) {
|
|
89
|
+
chunked.push(arrayCopy.splice(0, chunkSize));
|
|
90
|
+
}
|
|
91
|
+
return chunked;
|
|
92
|
+
};
|
|
93
|
+
export class SdkCom {
|
|
94
|
+
constructor({ dut, secure = true, apiVersion, k6Http }) {
|
|
95
|
+
_SdkCom_httpUrl.set(this, void 0);
|
|
96
|
+
_SdkCom_apiVersion.set(this, void 0);
|
|
97
|
+
_SdkCom_k6Http.set(this, void 0);
|
|
98
|
+
const scheme = secure ? 'https' : 'http';
|
|
99
|
+
__classPrivateFieldSet(this, _SdkCom_httpUrl, `${scheme}://${dut}`, "f");
|
|
100
|
+
__classPrivateFieldSet(this, _SdkCom_apiVersion, apiVersion, "f");
|
|
101
|
+
__classPrivateFieldSet(this, _SdkCom_k6Http, k6Http, "f");
|
|
102
|
+
}
|
|
103
|
+
tip() {
|
|
104
|
+
return this.httpPost('network-info/ledger-tip', 'networkInfo');
|
|
105
|
+
}
|
|
106
|
+
eraSummaries() {
|
|
107
|
+
return this.httpPost('network-info/era-summaries', 'networkInfo');
|
|
108
|
+
}
|
|
109
|
+
genesisParameters() {
|
|
110
|
+
return this.httpPost('network-info/genesis-parameters', 'networkInfo');
|
|
111
|
+
}
|
|
112
|
+
protocolParameters() {
|
|
113
|
+
return this.httpPost('network-info/protocol-parameters', 'networkInfo');
|
|
114
|
+
}
|
|
115
|
+
lovelaceSupply() {
|
|
116
|
+
return this.httpPost('network-info/lovelace-supply', 'networkInfo');
|
|
117
|
+
}
|
|
118
|
+
stake() {
|
|
119
|
+
return this.httpPost('network-info/stake', 'networkInfo');
|
|
120
|
+
}
|
|
121
|
+
stakePoolStats() {
|
|
122
|
+
return this.httpPost('stake-pool/stats', 'stakePool');
|
|
123
|
+
}
|
|
124
|
+
httpPost(url, serviceName, body = {}) {
|
|
125
|
+
const opts = { headers: { 'content-type': 'application/json' }, timeout: '1m' };
|
|
126
|
+
return __classPrivateFieldGet(this, _SdkCom_k6Http, "f").post(`${__classPrivateFieldGet(this, _SdkCom_httpUrl, "f")}/v${__classPrivateFieldGet(this, _SdkCom_apiVersion, "f")[serviceName]}/${url}`, JSON.stringify(body), opts);
|
|
127
|
+
}
|
|
128
|
+
txsByAddress(addresses, takeOne = false, pageSize = 25) {
|
|
129
|
+
const addressChunks = chunkArray(addresses, pageSize);
|
|
130
|
+
for (const chunk of addressChunks) {
|
|
131
|
+
let startAt = 0;
|
|
132
|
+
let txCount = 0;
|
|
133
|
+
do {
|
|
134
|
+
const resp = this.httpPost('chain-history/txs/by-addresses', 'chainHistory', {
|
|
135
|
+
addresses: chunk,
|
|
136
|
+
blockRange: { lowerBound: { __type: 'undefined' } },
|
|
137
|
+
pagination: { limit: pageSize, startAt }
|
|
138
|
+
});
|
|
139
|
+
if (resp.status !== 200 || typeof resp.body !== 'string') {
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
const { pageResults } = JSON.parse(resp.body);
|
|
143
|
+
startAt += pageSize;
|
|
144
|
+
txCount = pageResults.length;
|
|
145
|
+
} while (txCount === pageSize && !takeOne);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
utxosByAddresses(addresses) {
|
|
149
|
+
const addressChunks = chunkArray(addresses, 25);
|
|
150
|
+
for (const chunk of addressChunks) {
|
|
151
|
+
this.httpPost('utxo/utxo-by-addresses', 'utxo', { addresses: chunk });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
rewardsAccBalance(rewardAccount) {
|
|
155
|
+
return this.httpPost('rewards/account-balance', 'rewards', { rewardAccount });
|
|
156
|
+
}
|
|
157
|
+
stakePoolSearch(poolAddress) {
|
|
158
|
+
return this.httpPost('stake-pool/search', 'stakePool', {
|
|
159
|
+
filters: { identifier: { values: [{ id: poolAddress }] } },
|
|
160
|
+
pagination: { limit: 1, startAt: 0 }
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
getAssets({ assetIds, nftMetadata, tokenMetadata }) {
|
|
164
|
+
return this.httpPost('asset/get-assets', 'assetInfo', {
|
|
165
|
+
assetIds,
|
|
166
|
+
extraData: { nftMetadata, tokenMetadata }
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
_SdkCom_httpUrl = new WeakMap(), _SdkCom_apiVersion = new WeakMap(), _SdkCom_k6Http = new WeakMap();
|
|
171
|
+
//# sourceMappingURL=k6-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"k6-utils.js","sourceRoot":"","sources":["../../src/k6-utils.ts"],"names":[],"mappings":"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"}
|